@wix/ditto-codegen-public 1.0.456 → 1.0.457

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 +615 -607
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -10460,9 +10460,9 @@ var require_cjs3 = __commonJS({
10460
10460
  }
10461
10461
  });
10462
10462
 
10463
- // dist/job-context-storage.js
10463
+ // dist/jobs/job-context-storage.js
10464
10464
  var require_job_context_storage = __commonJS({
10465
- "dist/job-context-storage.js"(exports2) {
10465
+ "dist/jobs/job-context-storage.js"(exports2) {
10466
10466
  "use strict";
10467
10467
  Object.defineProperty(exports2, "__esModule", { value: true });
10468
10468
  exports2.jobContextStorage = void 0;
@@ -10471,9 +10471,9 @@ var require_job_context_storage = __commonJS({
10471
10471
  }
10472
10472
  });
10473
10473
 
10474
- // dist/logger.js
10474
+ // dist/telemetry/logger.js
10475
10475
  var require_logger = __commonJS({
10476
- "dist/logger.js"(exports2) {
10476
+ "dist/telemetry/logger.js"(exports2) {
10477
10477
  "use strict";
10478
10478
  Object.defineProperty(exports2, "__esModule", { value: true });
10479
10479
  exports2.logger = void 0;
@@ -11566,7 +11566,6 @@ var require_codegen_prompt = __commonJS({
11566
11566
  "use strict";
11567
11567
  Object.defineProperty(exports2, "__esModule", { value: true });
11568
11568
  exports2.buildInitPrompt = buildInitPrompt;
11569
- exports2.buildIterationBasePrompt = buildIterationBasePrompt;
11570
11569
  exports2.buildIterationPrompt = buildIterationPrompt;
11571
11570
  exports2.buildRecoveryPrompt = buildRecoveryPrompt;
11572
11571
  var prompt_utils_1 = require_prompt_utils();
@@ -11705,131 +11704,19 @@ var require_prompts = __commonJS({
11705
11704
  }
11706
11705
  });
11707
11706
 
11708
- // dist/opencode-integration/task-tracker/constants.js
11707
+ // dist/opencode-integration/configuration/constants.js
11709
11708
  var require_constants5 = __commonJS({
11710
- "dist/opencode-integration/task-tracker/constants.js"(exports2) {
11709
+ "dist/opencode-integration/configuration/constants.js"(exports2) {
11711
11710
  "use strict";
11712
11711
  Object.defineProperty(exports2, "__esModule", { value: true });
11713
- exports2.BUILDER_EXTENSION_TYPES = exports2.WIX_MCP_SERVER_NAME = exports2.CONTAINER_ROOT_PREFIX = void 0;
11714
- exports2.resolveFileOperation = resolveFileOperation;
11715
- exports2.isSpiExtension = isSpiExtension;
11716
- exports2.normalizeFilePath = normalizeFilePath;
11717
- exports2.isExtensionsFile = isExtensionsFile;
11718
- exports2.detectExtension = detectExtension;
11719
- exports2.toTitleCase = toTitleCase;
11720
- exports2.extractExtensionName = extractExtensionName;
11721
- exports2.matchQuotedExtensionConfigProperty = matchQuotedExtensionConfigProperty;
11722
- exports2.extractExtensionDisplayTitle = extractExtensionDisplayTitle;
11723
- exports2.injectCreatedBy = injectCreatedBy;
11724
- var ditto_codegen_types_12 = require_dist4();
11725
- exports2.CONTAINER_ROOT_PREFIX = /^\/user-code\//;
11712
+ exports2.WIX_MCP_SERVER_NAME = void 0;
11726
11713
  exports2.WIX_MCP_SERVER_NAME = "wix-mcp";
11727
- var EXTENSION_FILE_PATTERN = /\/extensions\.ts$|\.extension\.ts$/;
11728
- function resolveFileOperation(tool, metadata) {
11729
- if (tool === "write") {
11730
- return metadata?.exists ? ditto_codegen_types_12.ExtensionGenerationOperation.EDIT : ditto_codegen_types_12.ExtensionGenerationOperation.INSERT;
11731
- }
11732
- if (tool === "edit") {
11733
- return ditto_codegen_types_12.ExtensionGenerationOperation.EDIT;
11734
- }
11735
- return null;
11736
- }
11737
- var SPI_EXTENSION_TYPES = [
11738
- "ecomShippingRates",
11739
- "ecomAdditionalFees",
11740
- "ecomValidations",
11741
- "ecomDiscountTriggers",
11742
- "ecomGiftCards",
11743
- "ecomPaymentSettings",
11744
- "bookingsStaffSortingProvider"
11745
- ];
11746
- exports2.BUILDER_EXTENSION_TYPES = [
11747
- "dashboardPage",
11748
- "dashboardModal",
11749
- "dashboardPlugin",
11750
- "dashboardMenuPlugin",
11751
- "embeddedScript",
11752
- "event",
11753
- "customElement",
11754
- "siteComponent",
11755
- "editorReactComponent",
11756
- "sitePlugin",
11757
- ...SPI_EXTENSION_TYPES,
11758
- "contextProvider",
11759
- "functionLibrary",
11760
- "dataCollections"
11761
- ];
11762
- var SPI_EXTENSION_TYPE_SET = new Set(SPI_EXTENSION_TYPES);
11763
- function isSpiExtension(extensionType) {
11764
- return SPI_EXTENSION_TYPE_SET.has(extensionType);
11765
- }
11766
- function normalizeFilePath(filePath) {
11767
- return filePath.replace(exports2.CONTAINER_ROOT_PREFIX, "");
11768
- }
11769
- function isExtensionsFile(filePath) {
11770
- return EXTENSION_FILE_PATTERN.test(filePath);
11771
- }
11772
- function detectExtension(content) {
11773
- for (const extensionType of exports2.BUILDER_EXTENSION_TYPES) {
11774
- if (content.includes(`extensions.${extensionType}(`) || content.includes(`experimentalExtensions.${extensionType}(`)) {
11775
- return extensionType;
11776
- }
11777
- }
11778
- return null;
11779
- }
11780
- function toTitleCase(str) {
11781
- return str.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
11782
- }
11783
- function extractExtensionName(filePath) {
11784
- const parts = normalizeFilePath(filePath).split("/");
11785
- const folderName = parts[parts.length - 2] || "";
11786
- return toTitleCase(folderName);
11787
- }
11788
- function matchQuotedExtensionConfigProperty(content, propName) {
11789
- const objectPropertyQuotedStringValuePattern = `\\b${propName}\\s*:\\s*(?:"([^"\\\\]*)"|'([^'\\\\]*)')`;
11790
- const objectPropertyQuotedStringValueRegex = new RegExp(
11791
- objectPropertyQuotedStringValuePattern,
11792
- // `m` = multiline: `^` / `$` match line starts/ends, not only the whole string.
11793
- "m"
11794
- );
11795
- const quotedStringValueMatch = content.match(objectPropertyQuotedStringValueRegex);
11796
- if (!quotedStringValueMatch)
11797
- return null;
11798
- return quotedStringValueMatch[1] ?? quotedStringValueMatch[2] ?? null;
11799
- }
11800
- function extractExtensionDisplayTitle(content, filePath) {
11801
- const title = matchQuotedExtensionConfigProperty(content, "title");
11802
- if (title)
11803
- return title;
11804
- const name = matchQuotedExtensionConfigProperty(content, "name");
11805
- if (name)
11806
- return name;
11807
- const displayName = matchQuotedExtensionConfigProperty(content, "displayName");
11808
- if (displayName)
11809
- return displayName;
11810
- const idSuffix = matchQuotedExtensionConfigProperty(content, "idSuffix");
11811
- if (idSuffix)
11812
- return idSuffix;
11813
- return extractExtensionName(filePath);
11814
- }
11815
- function injectCreatedBy(content) {
11816
- if (content.includes("createdBy"))
11817
- return content;
11818
- const isGeneric = content.includes("genericExtension(");
11819
- const createdByValue = isGeneric ? ' createdBy: "CODE_GEN",' : ' createdBy: {\n author: "CODE_GEN",\n },';
11820
- return content.replace(/(\S)(\n)(}\))(;?\s*)$/, (_match, preChar, newline, closeBrace, tail) => {
11821
- const needsComma = preChar !== "," && preChar !== "{";
11822
- const separator = needsComma ? `${preChar},` : preChar;
11823
- return `${separator}${newline}${createdByValue}
11824
- ${closeBrace}${tail}`;
11825
- });
11826
- }
11827
11714
  }
11828
11715
  });
11829
11716
 
11830
- // dist/opencode-integration/model-knobs.js
11717
+ // dist/opencode-integration/configuration/model-knobs.js
11831
11718
  var require_model_knobs = __commonJS({
11832
- "dist/opencode-integration/model-knobs.js"(exports2) {
11719
+ "dist/opencode-integration/configuration/model-knobs.js"(exports2) {
11833
11720
  "use strict";
11834
11721
  Object.defineProperty(exports2, "__esModule", { value: true });
11835
11722
  exports2.DEFAULT_SMALL_MODEL = exports2.DEFAULT_MODEL = void 0;
@@ -11931,9 +11818,9 @@ var require_types4 = __commonJS({
11931
11818
  }
11932
11819
  });
11933
11820
 
11934
- // dist/opencode-integration/agents.js
11935
- var require_agents = __commonJS({
11936
- "dist/opencode-integration/agents.js"(exports2) {
11821
+ // dist/opencode-integration/configuration/subagents.js
11822
+ var require_subagents = __commonJS({
11823
+ "dist/opencode-integration/configuration/subagents.js"(exports2) {
11937
11824
  "use strict";
11938
11825
  Object.defineProperty(exports2, "__esModule", { value: true });
11939
11826
  exports2.SUBAGENT_AGENT_NAMES = exports2.WDS_DOCS_SUBAGENT_NAME = exports2.WIX_DOCS_SUBAGENT_NAME = exports2.VALIDATOR_SUBAGENT_NAME = exports2.PRIMARY_AGENT_NAME = void 0;
@@ -12225,9 +12112,9 @@ skills already cover. Read-only.`;
12225
12112
  }
12226
12113
  });
12227
12114
 
12228
- // dist/opencode-integration/rules-writer.js
12115
+ // dist/opencode-integration/configuration/rules-writer.js
12229
12116
  var require_rules_writer = __commonJS({
12230
- "dist/opencode-integration/rules-writer.js"(exports2) {
12117
+ "dist/opencode-integration/configuration/rules-writer.js"(exports2) {
12231
12118
  "use strict";
12232
12119
  Object.defineProperty(exports2, "__esModule", { value: true });
12233
12120
  exports2.getRulePath = getRulePath;
@@ -15297,14 +15184,13 @@ WORKFLOW:
15297
15184
  }
15298
15185
  });
15299
15186
 
15300
- // dist/job-decision-manager.js
15187
+ // dist/jobs/job-decision-manager.js
15301
15188
  var require_job_decision_manager = __commonJS({
15302
- "dist/job-decision-manager.js"(exports2) {
15189
+ "dist/jobs/job-decision-manager.js"(exports2) {
15303
15190
  "use strict";
15304
15191
  Object.defineProperty(exports2, "__esModule", { value: true });
15305
15192
  exports2.pauseForUserDecision = pauseForUserDecision;
15306
15193
  exports2.askJobChoice = askJobChoice;
15307
- exports2.askJobConfirmation = askJobConfirmation;
15308
15194
  var types_1 = require_types_impl();
15309
15195
  var codeGenerationService_12 = require_codeGenerationService();
15310
15196
  var types_2 = require_types_impl();
@@ -15369,18 +15255,6 @@ var require_job_decision_manager = __commonJS({
15369
15255
  }
15370
15256
  return response.selectedOptionId;
15371
15257
  }
15372
- async function askJobConfirmation(jobId, question, context) {
15373
- const response = await pauseForUserDecision(jobId, {
15374
- question,
15375
- questionType: types_1.UserDecisionQuestionType.UI_COMPONENT_TYPE,
15376
- options: [
15377
- { id: "yes", label: "Yes" },
15378
- { id: "no", label: "No" }
15379
- ],
15380
- context
15381
- });
15382
- return response.selectedOptionId === "yes";
15383
- }
15384
15258
  }
15385
15259
  });
15386
15260
 
@@ -15455,9 +15329,9 @@ var require_environments = __commonJS({
15455
15329
  }
15456
15330
  });
15457
15331
 
15458
- // dist/opencode-integration/config.js
15332
+ // dist/opencode-integration/configuration/config.js
15459
15333
  var require_config = __commonJS({
15460
- "dist/opencode-integration/config.js"(exports2) {
15334
+ "dist/opencode-integration/configuration/config.js"(exports2) {
15461
15335
  "use strict";
15462
15336
  Object.defineProperty(exports2, "__esModule", { value: true });
15463
15337
  exports2.DEFAULT_TIMEOUT_MS = void 0;
@@ -15471,7 +15345,7 @@ var require_config = __commonJS({
15471
15345
  var ditto_codegen_types_12 = require_dist4();
15472
15346
  var constants_1 = require_constants5();
15473
15347
  var model_knobs_1 = require_model_knobs();
15474
- var agents_1 = require_agents();
15348
+ var subagents_1 = require_subagents();
15475
15349
  var rules_writer_12 = require_rules_writer();
15476
15350
  var environments_12 = require_environments();
15477
15351
  var CodeGenService_12 = require_CodeGenService();
@@ -15657,8 +15531,8 @@ var require_config = __commonJS({
15657
15531
  external_directory: READABLE_EXTERNAL_DIRS
15658
15532
  };
15659
15533
  function buildConfig(projectId, instructionPaths, permission, { isCodeWritingFlow = false, withAgents = false } = {}) {
15660
- const main2 = (0, agents_1.getMainAgentModel)();
15661
- const subagent = (0, agents_1.getSubagentModel)();
15534
+ const main2 = (0, subagents_1.getMainAgentModel)();
15535
+ const subagent = (0, subagents_1.getSubagentModel)();
15662
15536
  return {
15663
15537
  model: (0, model_knobs_1.getModel)(),
15664
15538
  small_model: (0, model_knobs_1.getSmallModel)(),
@@ -15675,8 +15549,8 @@ var require_config = __commonJS({
15675
15549
  // not: its primary agent re-opens `task`, which would let the write-capable
15676
15550
  // validator subagent run in a flow meant to stay read-only.
15677
15551
  ...withAgents ? {
15678
- agent: (0, agents_1.getAgentConfig)(main2, subagent),
15679
- default_agent: agents_1.PRIMARY_AGENT_NAME
15552
+ agent: (0, subagents_1.getAgentConfig)(main2, subagent),
15553
+ default_agent: subagents_1.PRIMARY_AGENT_NAME
15680
15554
  } : {}
15681
15555
  };
15682
15556
  }
@@ -15731,44 +15605,43 @@ var require_config = __commonJS({
15731
15605
  }
15732
15606
  });
15733
15607
 
15734
- // dist/opencode-integration/generated-plugins.js
15735
- var require_generated_plugins = __commonJS({
15736
- "dist/opencode-integration/generated-plugins.js"(exports2) {
15608
+ // dist/opencode-integration/plugins/write-plugin.js
15609
+ var require_write_plugin = __commonJS({
15610
+ "dist/opencode-integration/plugins/write-plugin.js"(exports2) {
15737
15611
  "use strict";
15738
15612
  Object.defineProperty(exports2, "__esModule", { value: true });
15739
- exports2.OPENCODE_PLUGIN_DIR = void 0;
15740
15613
  exports2.writeGeneratedPlugin = writeGeneratedPlugin;
15741
15614
  var promises_1 = require("fs/promises");
15742
15615
  var os_1 = require("os");
15743
15616
  var path_12 = require("path");
15744
15617
  var logger_12 = require_logger();
15745
- exports2.OPENCODE_PLUGIN_DIR = (0, path_12.join)((0, os_1.homedir)(), ".config", "opencode", "plugin");
15618
+ var OPENCODE_PLUGIN_DIR = (0, path_12.join)((0, os_1.homedir)(), ".config", "opencode", "plugin");
15746
15619
  async function writeGeneratedPlugin(filename, source) {
15747
- await (0, promises_1.mkdir)(exports2.OPENCODE_PLUGIN_DIR, { recursive: true });
15748
- await (0, promises_1.writeFile)((0, path_12.join)(exports2.OPENCODE_PLUGIN_DIR, filename), source, "utf-8");
15620
+ await (0, promises_1.mkdir)(OPENCODE_PLUGIN_DIR, { recursive: true });
15621
+ await (0, promises_1.writeFile)((0, path_12.join)(OPENCODE_PLUGIN_DIR, filename), source, "utf-8");
15749
15622
  logger_12.logger.info("[OpenCode] Wrote generated plugin", { plugin: filename });
15750
15623
  }
15751
15624
  }
15752
15625
  });
15753
15626
 
15754
- // dist/opencode-integration/subagent-tool-logger.js
15627
+ // dist/opencode-integration/plugins/subagent-tool-logger.js
15755
15628
  var require_subagent_tool_logger = __commonJS({
15756
- "dist/opencode-integration/subagent-tool-logger.js"(exports2) {
15629
+ "dist/opencode-integration/plugins/subagent-tool-logger.js"(exports2) {
15757
15630
  "use strict";
15758
15631
  Object.defineProperty(exports2, "__esModule", { value: true });
15759
- exports2.SUBAGENT_STARTED_EVENT_TYPE = exports2.SUBAGENT_TOOL_EVENT_TYPE = void 0;
15632
+ exports2.SUBAGENT_TOOL_LOGGER_FILENAME = exports2.SUBAGENT_STARTED_EVENT_TYPE = exports2.SUBAGENT_TOOL_EVENT_TYPE = void 0;
15760
15633
  exports2.buildSubagentToolLoggerPluginSource = buildSubagentToolLoggerPluginSource;
15761
15634
  exports2.writeSubagentToolLoggerPlugin = writeSubagentToolLoggerPlugin;
15762
- var generated_plugins_1 = require_generated_plugins();
15763
- var agents_1 = require_agents();
15635
+ var write_plugin_1 = require_write_plugin();
15636
+ var subagents_1 = require_subagents();
15764
15637
  exports2.SUBAGENT_TOOL_EVENT_TYPE = "subagent_tool_use";
15765
15638
  exports2.SUBAGENT_STARTED_EVENT_TYPE = "subagent_started";
15766
- var PLUGIN_FILENAME = "subagent-tool-logger.ts";
15639
+ exports2.SUBAGENT_TOOL_LOGGER_FILENAME = "subagent-tool-logger.ts";
15767
15640
  function buildSubagentToolLoggerPluginSource() {
15768
15641
  return `// Generated by @wix/ditto-codegen (subagent-tool-logger) \u2014 do not edit.
15769
15642
  const EVENT_TYPE = ${JSON.stringify(exports2.SUBAGENT_TOOL_EVENT_TYPE)};
15770
15643
  const STARTED_EVENT_TYPE = ${JSON.stringify(exports2.SUBAGENT_STARTED_EVENT_TYPE)};
15771
- const SUBAGENT_AGENTS = new Set(${JSON.stringify(agents_1.SUBAGENT_AGENT_NAMES)});
15644
+ const SUBAGENT_AGENTS = new Set(${JSON.stringify(subagents_1.SUBAGENT_AGENT_NAMES)});
15772
15645
 
15773
15646
  export const SubagentToolLogger = async () => {
15774
15647
  // sessionID -> agent name, learned from session.* / message.updated (both
@@ -15877,14 +15750,14 @@ export const SubagentToolLogger = async () => {
15877
15750
  `;
15878
15751
  }
15879
15752
  async function writeSubagentToolLoggerPlugin() {
15880
- await (0, generated_plugins_1.writeGeneratedPlugin)(PLUGIN_FILENAME, buildSubagentToolLoggerPluginSource());
15753
+ await (0, write_plugin_1.writeGeneratedPlugin)(exports2.SUBAGENT_TOOL_LOGGER_FILENAME, buildSubagentToolLoggerPluginSource());
15881
15754
  }
15882
15755
  }
15883
15756
  });
15884
15757
 
15885
- // dist/opencode-integration/parser.js
15758
+ // dist/opencode-integration/execution/parser.js
15886
15759
  var require_parser = __commonJS({
15887
- "dist/opencode-integration/parser.js"(exports2) {
15760
+ "dist/opencode-integration/execution/parser.js"(exports2) {
15888
15761
  "use strict";
15889
15762
  Object.defineProperty(exports2, "__esModule", { value: true });
15890
15763
  exports2.parseRequiredPermissions = parseRequiredPermissions;
@@ -15898,8 +15771,8 @@ var require_parser = __commonJS({
15898
15771
  exports2.parseValidatorTaskOutputs = parseValidatorTaskOutputs;
15899
15772
  exports2.summarizeOpenCodeLine = summarizeOpenCodeLine;
15900
15773
  var types_1 = require_types4();
15901
- var agents_1 = require_agents();
15902
- var subagent_tool_logger_12 = require_subagent_tool_logger();
15774
+ var subagents_1 = require_subagents();
15775
+ var subagent_tool_logger_1 = require_subagent_tool_logger();
15903
15776
  function parseRequiredPermissions(output) {
15904
15777
  let permissions = [];
15905
15778
  const lines = output.split("\n");
@@ -16042,7 +15915,7 @@ var require_parser = __commonJS({
16042
15915
  continue;
16043
15916
  }
16044
15917
  const { title, output, input } = event.part.state;
16045
- const isValidator = input?.subagent_type === agents_1.VALIDATOR_SUBAGENT_NAME || title?.includes(agents_1.VALIDATOR_SUBAGENT_NAME);
15918
+ const isValidator = input?.subagent_type === subagents_1.VALIDATOR_SUBAGENT_NAME || title?.includes(subagents_1.VALIDATOR_SUBAGENT_NAME);
16046
15919
  if (isValidator && output) {
16047
15920
  outputs.push(output.trim());
16048
15921
  }
@@ -16050,7 +15923,7 @@ var require_parser = __commonJS({
16050
15923
  return outputs;
16051
15924
  }
16052
15925
  function summarizeOpenCodeLine(line) {
16053
- if (line.type !== "tool_use" && line.type !== subagent_tool_logger_12.SUBAGENT_TOOL_EVENT_TYPE) {
15926
+ if (line.type !== "tool_use" && line.type !== subagent_tool_logger_1.SUBAGENT_TOOL_EVENT_TYPE) {
16054
15927
  return line;
16055
15928
  }
16056
15929
  const { part } = line;
@@ -16072,9 +15945,9 @@ var require_parser = __commonJS({
16072
15945
  }
16073
15946
  });
16074
15947
 
16075
- // dist/opencode-integration/internal-paths.js
15948
+ // dist/git/internal-paths.js
16076
15949
  var require_internal_paths = __commonJS({
16077
- "dist/opencode-integration/internal-paths.js"(exports2) {
15950
+ "dist/git/internal-paths.js"(exports2) {
16078
15951
  "use strict";
16079
15952
  Object.defineProperty(exports2, "__esModule", { value: true });
16080
15953
  exports2.isInternalPath = isInternalPath;
@@ -16085,9 +15958,9 @@ var require_internal_paths = __commonJS({
16085
15958
  }
16086
15959
  });
16087
15960
 
16088
- // dist/opencode-integration/git-file-changes.js
16089
- var require_git_file_changes = __commonJS({
16090
- "dist/opencode-integration/git-file-changes.js"(exports2) {
15961
+ // dist/git/file-changes.js
15962
+ var require_file_changes = __commonJS({
15963
+ "dist/git/file-changes.js"(exports2) {
16091
15964
  "use strict";
16092
15965
  Object.defineProperty(exports2, "__esModule", { value: true });
16093
15966
  exports2.captureGitBaseline = captureGitBaseline;
@@ -16166,9 +16039,9 @@ var require_git_file_changes = __commonJS({
16166
16039
  }
16167
16040
  });
16168
16041
 
16169
- // dist/opencode-integration/cost-tracker.js
16042
+ // dist/opencode-integration/execution/cost-tracker.js
16170
16043
  var require_cost_tracker = __commonJS({
16171
- "dist/opencode-integration/cost-tracker.js"(exports2) {
16044
+ "dist/opencode-integration/execution/cost-tracker.js"(exports2) {
16172
16045
  "use strict";
16173
16046
  Object.defineProperty(exports2, "__esModule", { value: true });
16174
16047
  exports2.fetchOpenCodeStats = fetchOpenCodeStats;
@@ -16287,6 +16160,113 @@ var require_progress_handler = __commonJS({
16287
16160
  }
16288
16161
  });
16289
16162
 
16163
+ // dist/extension-reporting/detect.js
16164
+ var require_detect = __commonJS({
16165
+ "dist/extension-reporting/detect.js"(exports2) {
16166
+ "use strict";
16167
+ Object.defineProperty(exports2, "__esModule", { value: true });
16168
+ exports2.BUILDER_EXTENSION_TYPES = void 0;
16169
+ exports2.isSpiExtension = isSpiExtension;
16170
+ exports2.isExtensionsFile = isExtensionsFile;
16171
+ exports2.detectExtension = detectExtension;
16172
+ exports2.matchQuotedExtensionConfigProperty = matchQuotedExtensionConfigProperty;
16173
+ exports2.extractExtensionDisplayTitle = extractExtensionDisplayTitle;
16174
+ exports2.injectCreatedBy = injectCreatedBy;
16175
+ var CONTAINER_ROOT_PREFIX = /^\/user-code\//;
16176
+ var EXTENSION_FILE_PATTERN = /\/extensions\.ts$|\.extension\.ts$/;
16177
+ var SPI_EXTENSION_TYPES = [
16178
+ "ecomShippingRates",
16179
+ "ecomAdditionalFees",
16180
+ "ecomValidations",
16181
+ "ecomDiscountTriggers",
16182
+ "ecomGiftCards",
16183
+ "ecomPaymentSettings",
16184
+ "bookingsStaffSortingProvider"
16185
+ ];
16186
+ exports2.BUILDER_EXTENSION_TYPES = [
16187
+ "dashboardPage",
16188
+ "dashboardModal",
16189
+ "dashboardPlugin",
16190
+ "dashboardMenuPlugin",
16191
+ "embeddedScript",
16192
+ "event",
16193
+ "customElement",
16194
+ "siteComponent",
16195
+ "editorReactComponent",
16196
+ "sitePlugin",
16197
+ ...SPI_EXTENSION_TYPES,
16198
+ "contextProvider",
16199
+ "functionLibrary",
16200
+ "dataCollections"
16201
+ ];
16202
+ var SPI_EXTENSION_TYPE_SET = new Set(SPI_EXTENSION_TYPES);
16203
+ function isSpiExtension(extensionType) {
16204
+ return SPI_EXTENSION_TYPE_SET.has(extensionType);
16205
+ }
16206
+ function normalizeFilePath(filePath) {
16207
+ return filePath.replace(CONTAINER_ROOT_PREFIX, "");
16208
+ }
16209
+ function isExtensionsFile(filePath) {
16210
+ return EXTENSION_FILE_PATTERN.test(filePath);
16211
+ }
16212
+ function detectExtension(content) {
16213
+ for (const extensionType of exports2.BUILDER_EXTENSION_TYPES) {
16214
+ if (content.includes(`extensions.${extensionType}(`) || content.includes(`experimentalExtensions.${extensionType}(`)) {
16215
+ return extensionType;
16216
+ }
16217
+ }
16218
+ return null;
16219
+ }
16220
+ function toTitleCase(str) {
16221
+ return str.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
16222
+ }
16223
+ function extractExtensionName(filePath) {
16224
+ const parts = normalizeFilePath(filePath).split("/");
16225
+ const folderName = parts[parts.length - 2] || "";
16226
+ return toTitleCase(folderName);
16227
+ }
16228
+ function matchQuotedExtensionConfigProperty(content, propName) {
16229
+ const objectPropertyQuotedStringValuePattern = `\\b${propName}\\s*:\\s*(?:"([^"\\\\]*)"|'([^'\\\\]*)')`;
16230
+ const objectPropertyQuotedStringValueRegex = new RegExp(
16231
+ objectPropertyQuotedStringValuePattern,
16232
+ // `m` = multiline: `^` / `$` match line starts/ends, not only the whole string.
16233
+ "m"
16234
+ );
16235
+ const quotedStringValueMatch = content.match(objectPropertyQuotedStringValueRegex);
16236
+ if (!quotedStringValueMatch)
16237
+ return null;
16238
+ return quotedStringValueMatch[1] ?? quotedStringValueMatch[2] ?? null;
16239
+ }
16240
+ function extractExtensionDisplayTitle(content, filePath) {
16241
+ const title = matchQuotedExtensionConfigProperty(content, "title");
16242
+ if (title)
16243
+ return title;
16244
+ const name = matchQuotedExtensionConfigProperty(content, "name");
16245
+ if (name)
16246
+ return name;
16247
+ const displayName = matchQuotedExtensionConfigProperty(content, "displayName");
16248
+ if (displayName)
16249
+ return displayName;
16250
+ const idSuffix = matchQuotedExtensionConfigProperty(content, "idSuffix");
16251
+ if (idSuffix)
16252
+ return idSuffix;
16253
+ return extractExtensionName(filePath);
16254
+ }
16255
+ function injectCreatedBy(content) {
16256
+ if (content.includes("createdBy"))
16257
+ return content;
16258
+ const isGeneric = content.includes("genericExtension(");
16259
+ const createdByValue = isGeneric ? ' createdBy: "CODE_GEN",' : ' createdBy: {\n author: "CODE_GEN",\n },';
16260
+ return content.replace(/(\S)(\n)(}\))(;?\s*)$/, (_match, preChar, newline, closeBrace, tail) => {
16261
+ const needsComma = preChar !== "," && preChar !== "{";
16262
+ const separator = needsComma ? `${preChar},` : preChar;
16263
+ return `${separator}${newline}${createdByValue}
16264
+ ${closeBrace}${tail}`;
16265
+ });
16266
+ }
16267
+ }
16268
+ });
16269
+
16290
16270
  // dist/opencode-integration/task-tracker/derived-progress.js
16291
16271
  var require_derived_progress = __commonJS({
16292
16272
  "dist/opencode-integration/task-tracker/derived-progress.js"(exports2) {
@@ -16295,12 +16275,12 @@ var require_derived_progress = __commonJS({
16295
16275
  exports2.DerivedProgressReporter = void 0;
16296
16276
  exports2.deriveProgressSteps = deriveProgressSteps;
16297
16277
  var ditto_codegen_types_12 = require_dist4();
16298
- var constants_1 = require_constants5();
16299
- var agents_1 = require_agents();
16278
+ var detect_1 = require_detect();
16279
+ var subagents_1 = require_subagents();
16300
16280
  var SUBAGENT_STEPS = {
16301
- [agents_1.VALIDATOR_SUBAGENT_NAME]: "Building project",
16302
- [agents_1.WIX_DOCS_SUBAGENT_NAME]: "Reading documentation",
16303
- [agents_1.WDS_DOCS_SUBAGENT_NAME]: "Reading documentation"
16281
+ [subagents_1.VALIDATOR_SUBAGENT_NAME]: "Building project",
16282
+ [subagents_1.WIX_DOCS_SUBAGENT_NAME]: "Reading documentation",
16283
+ [subagents_1.WDS_DOCS_SUBAGENT_NAME]: "Reading documentation"
16304
16284
  };
16305
16285
  var REGISTRY_FILE_PATTERN = /(^|\/)extensions\.ts$/;
16306
16286
  var EXTENSION_DEFINITION_PATTERN = /\.extension\.ts$/;
@@ -16308,7 +16288,7 @@ var require_derived_progress = __commonJS({
16308
16288
  return token.replace(/[_-]+/g, " ").replace(/([a-z\d])([A-Z])/g, "$1 $2").split(/\s+/).filter(Boolean).map((word) => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(" ");
16309
16289
  }
16310
16290
  function humanizeExtensionType(type) {
16311
- return (0, constants_1.isSpiExtension)(type) ? "Service Plugin" : toTitleCaseWords(type);
16291
+ return (0, detect_1.isSpiExtension)(type) ? "Service Plugin" : toTitleCaseWords(type);
16312
16292
  }
16313
16293
  function extensionStep(verb, type) {
16314
16294
  return `${verb} ${humanizeExtensionType(type)}`;
@@ -16357,7 +16337,7 @@ var require_derived_progress = __commonJS({
16357
16337
  if (REGISTRY_FILE_PATTERN.test(file.path)) {
16358
16338
  steps.push("Registering extensions");
16359
16339
  } else if (EXTENSION_DEFINITION_PATTERN.test(file.path) && file.content) {
16360
- const type = (0, constants_1.detectExtension)(file.content);
16340
+ const type = (0, detect_1.detectExtension)(file.content);
16361
16341
  if (type)
16362
16342
  steps.push(extensionStep("Editing", type));
16363
16343
  }
@@ -16464,9 +16444,9 @@ var require_utils9 = __commonJS({
16464
16444
  }
16465
16445
  });
16466
16446
 
16467
- // dist/plugins-runtime.js
16447
+ // dist/plugin-system/plugins-runtime.js
16468
16448
  var require_plugins_runtime = __commonJS({
16469
- "dist/plugins-runtime.js"(exports2) {
16449
+ "dist/plugin-system/plugins-runtime.js"(exports2) {
16470
16450
  "use strict";
16471
16451
  Object.defineProperty(exports2, "__esModule", { value: true });
16472
16452
  exports2.getActivePlugins = getActivePlugins;
@@ -16616,15 +16596,15 @@ var require_task_tracker2 = __commonJS({
16616
16596
  }
16617
16597
  });
16618
16598
 
16619
- // dist/opencode-integration/tool-usage.js
16599
+ // dist/opencode-integration/execution/tool-usage.js
16620
16600
  var require_tool_usage = __commonJS({
16621
- "dist/opencode-integration/tool-usage.js"(exports2) {
16601
+ "dist/opencode-integration/execution/tool-usage.js"(exports2) {
16622
16602
  "use strict";
16623
16603
  Object.defineProperty(exports2, "__esModule", { value: true });
16624
16604
  exports2.ToolUsageCollector = void 0;
16625
16605
  exports2.commandSignature = commandSignature;
16626
16606
  exports2.emptyToolUsage = emptyToolUsage;
16627
- var subagent_tool_logger_12 = require_subagent_tool_logger();
16607
+ var subagent_tool_logger_1 = require_subagent_tool_logger();
16628
16608
  var MAX_REPORTED_TOOLS = 50;
16629
16609
  var MAX_DETAIL_CHARS = 200;
16630
16610
  var MAX_DETAIL_LABELS = 2;
@@ -16661,7 +16641,7 @@ var require_tool_usage = __commonJS({
16661
16641
  return duration > 0 ? duration : 0;
16662
16642
  }
16663
16643
  function isCompletedToolCall(event) {
16664
- if (event.type !== "tool_use" && event.type !== subagent_tool_logger_12.SUBAGENT_TOOL_EVENT_TYPE) {
16644
+ if (event.type !== "tool_use" && event.type !== subagent_tool_logger_1.SUBAGENT_TOOL_EVENT_TYPE) {
16665
16645
  return false;
16666
16646
  }
16667
16647
  if (!event.part?.tool)
@@ -16717,18 +16697,18 @@ var require_tool_usage = __commonJS({
16717
16697
  }
16718
16698
  });
16719
16699
 
16720
- // dist/opencode-integration/process-manager.js
16700
+ // dist/opencode-integration/execution/process-manager.js
16721
16701
  var require_process_manager = __commonJS({
16722
- "dist/opencode-integration/process-manager.js"(exports2) {
16702
+ "dist/opencode-integration/execution/process-manager.js"(exports2) {
16723
16703
  "use strict";
16724
16704
  Object.defineProperty(exports2, "__esModule", { value: true });
16725
- exports2.MAX_STARTS_WITHOUT_FINISH = exports2.KILL_GRACE_PERIOD_MS = exports2.IDLE_CHECK_INTERVAL_MS = exports2.IDLE_TIMEOUT_MS = void 0;
16705
+ exports2.MAX_STARTS_WITHOUT_FINISH = exports2.IDLE_CHECK_INTERVAL_MS = exports2.IDLE_TIMEOUT_MS = void 0;
16726
16706
  exports2.clearTimers = clearTimers;
16727
16707
  exports2.killProcess = killProcess;
16728
16708
  var logger_12 = require_logger();
16729
16709
  exports2.IDLE_TIMEOUT_MS = 6e5;
16730
16710
  exports2.IDLE_CHECK_INTERVAL_MS = 15e3;
16731
- exports2.KILL_GRACE_PERIOD_MS = 5e3;
16711
+ var KILL_GRACE_PERIOD_MS = 5e3;
16732
16712
  exports2.MAX_STARTS_WITHOUT_FINISH = 3;
16733
16713
  function clearTimers(timers) {
16734
16714
  if (timers.timeoutId) {
@@ -16764,14 +16744,14 @@ var require_process_manager = __commonJS({
16764
16744
  if (child && !resolved) {
16765
16745
  killSignal("SIGKILL");
16766
16746
  }
16767
- }, exports2.KILL_GRACE_PERIOD_MS);
16747
+ }, KILL_GRACE_PERIOD_MS);
16768
16748
  }
16769
16749
  }
16770
16750
  });
16771
16751
 
16772
- // dist/opencode-integration/result-builder.js
16752
+ // dist/opencode-integration/execution/result-builder.js
16773
16753
  var require_result_builder = __commonJS({
16774
- "dist/opencode-integration/result-builder.js"(exports2) {
16754
+ "dist/opencode-integration/execution/result-builder.js"(exports2) {
16775
16755
  "use strict";
16776
16756
  Object.defineProperty(exports2, "__esModule", { value: true });
16777
16757
  exports2.createTimeoutResult = createTimeoutResult;
@@ -16839,9 +16819,9 @@ var require_result_builder = __commonJS({
16839
16819
  }
16840
16820
  });
16841
16821
 
16842
- // dist/opencode-integration/process-handlers.js
16822
+ // dist/opencode-integration/execution/process-handlers.js
16843
16823
  var require_process_handlers = __commonJS({
16844
- "dist/opencode-integration/process-handlers.js"(exports2) {
16824
+ "dist/opencode-integration/execution/process-handlers.js"(exports2) {
16845
16825
  "use strict";
16846
16826
  Object.defineProperty(exports2, "__esModule", { value: true });
16847
16827
  exports2.setupTotalTimeout = setupTotalTimeout;
@@ -16971,12 +16951,11 @@ var require_process_handlers = __commonJS({
16971
16951
  }
16972
16952
  });
16973
16953
 
16974
- // dist/opencode-integration/executor.js
16954
+ // dist/opencode-integration/execution/executor.js
16975
16955
  var require_executor = __commonJS({
16976
- "dist/opencode-integration/executor.js"(exports2) {
16956
+ "dist/opencode-integration/execution/executor.js"(exports2) {
16977
16957
  "use strict";
16978
16958
  Object.defineProperty(exports2, "__esModule", { value: true });
16979
- exports2.notifyValidatorOutputsToSlack = notifyValidatorOutputsToSlack;
16980
16959
  exports2.classifyAttempt = classifyAttempt;
16981
16960
  exports2.executeOpenCode = executeOpenCode;
16982
16961
  exports2.resolveFinalRunCost = resolveFinalRunCost;
@@ -16986,9 +16965,8 @@ var require_executor = __commonJS({
16986
16965
  var model_knobs_1 = require_model_knobs();
16987
16966
  var job_context_storage_12 = require_job_context_storage();
16988
16967
  var parser_1 = require_parser();
16989
- var codeGenerationService_12 = require_codeGenerationService();
16990
16968
  var prompts_1 = require_prompts();
16991
- var git_file_changes_1 = require_git_file_changes();
16969
+ var file_changes_1 = require_file_changes();
16992
16970
  var cost_tracker_1 = require_cost_tracker();
16993
16971
  var task_tracker_1 = require_task_tracker2();
16994
16972
  var tool_usage_1 = require_tool_usage();
@@ -16997,37 +16975,6 @@ var require_executor = __commonJS({
16997
16975
  var logger_12 = require_logger();
16998
16976
  var MAX_RETRIES = 5;
16999
16977
  var MAX_STALL_ATTEMPTS = 2;
17000
- async function notifyValidatorOutputsToSlack(stdout, costUsd) {
17001
- try {
17002
- const store = job_context_storage_12.jobContextStorage.getStore();
17003
- const outputs = (0, parser_1.parseValidatorTaskOutputs)(stdout);
17004
- if (outputs.length === 0)
17005
- return;
17006
- const durationMs = store?.flowStartTime ? Date.now() - store.flowStartTime : void 0;
17007
- const context = {
17008
- jobId: store?.jobId,
17009
- metasiteId: store?.metasiteId,
17010
- costUsd: costUsd > 0 ? costUsd : void 0,
17011
- durationMs
17012
- };
17013
- for (const output of outputs) {
17014
- if (!(0, parser_1.shouldReportValidatorOutput)(output)) {
17015
- continue;
17016
- }
17017
- try {
17018
- await codeGenerationService_12.codeGenerationService.handleValidationErrors(output, context);
17019
- } catch (err) {
17020
- logger_12.logger.warn("[OpenCode] Failed to report validator output to Slack", {
17021
- error: err instanceof Error ? err.message : String(err)
17022
- });
17023
- }
17024
- }
17025
- } catch (err) {
17026
- logger_12.logger.warn("[OpenCode] Unexpected error in notifyValidatorOutputsToSlack", {
17027
- error: err instanceof Error ? err.message : String(err)
17028
- });
17029
- }
17030
- }
17031
16978
  function failureReason(result) {
17032
16979
  if (result.stalled)
17033
16980
  return "stall";
@@ -17064,7 +17011,7 @@ var require_executor = __commonJS({
17064
17011
  if (attempt > 1) {
17065
17012
  const failureDetail = lastResult?.error?.message || lastResult?.stderr || "Process timed out";
17066
17013
  logger_12.logger.info(`[OpenCode] Retry attempt ${attempt}/${MAX_RETRIES} after ${lastFailureReason} - starting fresh session with recovery context`, { reason: lastFailureReason, detail: failureDetail.slice(0, 500) });
17067
- const filesChanged = await (0, git_file_changes_1.collectGitFileChanges)(options.outputPath, options.gitBaseline);
17014
+ const filesChanged = await (0, file_changes_1.collectGitFileChanges)(options.outputPath, options.gitBaseline);
17068
17015
  currentPrompt = (0, prompts_1.buildRecoveryPrompt)(options.prompt, filesChanged, failureDetail, lastFailureReason);
17069
17016
  continueSession = false;
17070
17017
  }
@@ -17218,9 +17165,9 @@ var require_executor = __commonJS({
17218
17165
  }
17219
17166
  });
17220
17167
 
17221
- // dist/opencode-integration/opencode-runner.js
17168
+ // dist/opencode-integration/execution/opencode-runner.js
17222
17169
  var require_opencode_runner = __commonJS({
17223
- "dist/opencode-integration/opencode-runner.js"(exports2) {
17170
+ "dist/opencode-integration/execution/opencode-runner.js"(exports2) {
17224
17171
  "use strict";
17225
17172
  Object.defineProperty(exports2, "__esModule", { value: true });
17226
17173
  exports2.runOpenCodeInit = runOpenCodeInit;
@@ -17289,20 +17236,106 @@ var require_opencode_runner = __commonJS({
17289
17236
  }
17290
17237
  });
17291
17238
 
17292
- // dist/opencode-integration/extension-metadata.js
17293
- var require_extension_metadata = __commonJS({
17294
- "dist/opencode-integration/extension-metadata.js"(exports2) {
17239
+ // dist/opencode-integration/index.js
17240
+ var require_opencode_integration = __commonJS({
17241
+ "dist/opencode-integration/index.js"(exports2) {
17242
+ "use strict";
17243
+ Object.defineProperty(exports2, "__esModule", { value: true });
17244
+ exports2.OpenCodeTaskTracker = exports2.runOpenCodeGitConflicts = exports2.runOpenCodeAsk = exports2.runOpenCodeIteration = exports2.runOpenCodeInit = void 0;
17245
+ var opencode_runner_1 = require_opencode_runner();
17246
+ Object.defineProperty(exports2, "runOpenCodeInit", { enumerable: true, get: function() {
17247
+ return opencode_runner_1.runOpenCodeInit;
17248
+ } });
17249
+ Object.defineProperty(exports2, "runOpenCodeIteration", { enumerable: true, get: function() {
17250
+ return opencode_runner_1.runOpenCodeIteration;
17251
+ } });
17252
+ Object.defineProperty(exports2, "runOpenCodeAsk", { enumerable: true, get: function() {
17253
+ return opencode_runner_1.runOpenCodeAsk;
17254
+ } });
17255
+ Object.defineProperty(exports2, "runOpenCodeGitConflicts", { enumerable: true, get: function() {
17256
+ return opencode_runner_1.runOpenCodeGitConflicts;
17257
+ } });
17258
+ var task_tracker_1 = require_task_tracker2();
17259
+ Object.defineProperty(exports2, "OpenCodeTaskTracker", { enumerable: true, get: function() {
17260
+ return task_tracker_1.OpenCodeTaskTracker;
17261
+ } });
17262
+ }
17263
+ });
17264
+
17265
+ // dist/orchestrators/opencode-orchestrator.js
17266
+ var require_opencode_orchestrator = __commonJS({
17267
+ "dist/orchestrators/opencode-orchestrator.js"(exports2) {
17268
+ "use strict";
17269
+ Object.defineProperty(exports2, "__esModule", { value: true });
17270
+ exports2.OpenCodeOrchestrator = void 0;
17271
+ var ditto_codegen_types_12 = require_dist4();
17272
+ var DittoEventEmitter_1 = require_DittoEventEmitter();
17273
+ var opencode_integration_1 = require_opencode_integration();
17274
+ var logger_12 = require_logger();
17275
+ var OpenCodeOrchestrator = class extends DittoEventEmitter_1.DittoEventEmitter {
17276
+ constructor() {
17277
+ super();
17278
+ }
17279
+ async generateCode(request) {
17280
+ const { blueprint, outputPath, projectId, chatHistory, gitBaseline } = request;
17281
+ this.emitEvent("start:init", {
17282
+ appName: blueprint.appName ?? "",
17283
+ summary: blueprint.summary ?? "",
17284
+ outputPath,
17285
+ extensionsCount: blueprint.extensions?.length || 0
17286
+ });
17287
+ const start = Date.now();
17288
+ this.emitEvent("opencode:start", { outputPath });
17289
+ const result = await (0, opencode_integration_1.runOpenCodeInit)({
17290
+ blueprint,
17291
+ outputPath,
17292
+ projectId,
17293
+ chatHistory,
17294
+ gitBaseline,
17295
+ onStdout: (data) => {
17296
+ this.emitEvent("opencode:output", { data });
17297
+ },
17298
+ onStderr: (data) => {
17299
+ logger_12.logger.error("[OpenCode] stderr", { output: data });
17300
+ }
17301
+ });
17302
+ this.lastUsage = result.usage;
17303
+ this.lastStdout = result.stdout;
17304
+ const durationMs = Date.now() - start;
17305
+ if (!result.success) {
17306
+ this.emitEvent("opencode:error", {
17307
+ error: result.error?.message,
17308
+ exitCode: result.exitCode,
17309
+ durationMs
17310
+ });
17311
+ throw result.error ?? new ditto_codegen_types_12.ProcessExecutionError(`Code generation failed (exit code ${result.exitCode})`, {
17312
+ processType: ditto_codegen_types_12.ProcessType.EXECUTION,
17313
+ exitCode: result.exitCode ?? void 0
17314
+ });
17315
+ }
17316
+ this.emitEvent("opencode:done", { durationMs });
17317
+ this.emitEvent("finish:init", { outputPath, durationMs });
17318
+ return result;
17319
+ }
17320
+ };
17321
+ exports2.OpenCodeOrchestrator = OpenCodeOrchestrator;
17322
+ OpenCodeOrchestrator.DEFAULT_OUTPUT_PATH = "generated-app";
17323
+ }
17324
+ });
17325
+
17326
+ // dist/extension-reporting/metadata.js
17327
+ var require_metadata = __commonJS({
17328
+ "dist/extension-reporting/metadata.js"(exports2) {
17295
17329
  "use strict";
17296
17330
  Object.defineProperty(exports2, "__esModule", { value: true });
17297
- exports2.buildJobExtension = exports2.resolveFilePath = exports2.isFileInExtensionFolder = exports2.getExtensionDirectory = void 0;
17331
+ exports2.buildJobExtension = exports2.resolveFilePath = exports2.isFileInExtensionFolder = void 0;
17298
17332
  exports2.collectDataCollectionEntries = collectDataCollectionEntries;
17299
17333
  var path_12 = require("path");
17300
17334
  var promises_1 = require("fs/promises");
17301
- var constants_1 = require_constants5();
17335
+ var detect_1 = require_detect();
17302
17336
  var DATA_COLLECTION_MARKER = /import\s+(?:type\s+)?\{[^}]*\bDataCollection\b[^}]*\}\s+from\s+['"](?:@wix\/astro\/builders|@wix\/custom-extensions)['"]/;
17303
17337
  var getExtensionDirectory = (extensionDefinitionPath) => `${path_12.posix.dirname(extensionDefinitionPath)}/`;
17304
- exports2.getExtensionDirectory = getExtensionDirectory;
17305
- var isFileInExtensionFolder = (filePath, extensionDefinitionPath) => filePath === extensionDefinitionPath || filePath.startsWith((0, exports2.getExtensionDirectory)(extensionDefinitionPath));
17338
+ var isFileInExtensionFolder = (filePath, extensionDefinitionPath) => filePath === extensionDefinitionPath || filePath.startsWith(getExtensionDirectory(extensionDefinitionPath));
17306
17339
  exports2.isFileInExtensionFolder = isFileInExtensionFolder;
17307
17340
  var resolveFilePath = (outputPath, filePath) => (0, path_12.isAbsolute)(filePath) ? filePath : (0, path_12.join)(outputPath, filePath);
17308
17341
  exports2.resolveFilePath = resolveFilePath;
@@ -17324,51 +17357,51 @@ var require_extension_metadata = __commonJS({
17324
17357
  return entries;
17325
17358
  }
17326
17359
  var buildJobExtension = (definitionPath, extensionType, contentForTitle, titlePath, files) => {
17327
- const routePath = (0, constants_1.matchQuotedExtensionConfigProperty)(contentForTitle, "routePath");
17328
- const id = (0, constants_1.matchQuotedExtensionConfigProperty)(contentForTitle, "id");
17360
+ const routePath = (0, detect_1.matchQuotedExtensionConfigProperty)(contentForTitle, "routePath");
17361
+ const id = (0, detect_1.matchQuotedExtensionConfigProperty)(contentForTitle, "id");
17329
17362
  return {
17330
17363
  path: definitionPath,
17331
17364
  extensionType,
17332
- title: (0, constants_1.extractExtensionDisplayTitle)(contentForTitle, titlePath),
17365
+ title: (0, detect_1.extractExtensionDisplayTitle)(contentForTitle, titlePath),
17333
17366
  ...routePath !== null && { routePath },
17334
17367
  ...id !== null && { id },
17335
17368
  files: [...files],
17336
- isSpi: (0, constants_1.isSpiExtension)(extensionType)
17369
+ isSpi: (0, detect_1.isSpiExtension)(extensionType)
17337
17370
  };
17338
17371
  };
17339
17372
  exports2.buildJobExtension = buildJobExtension;
17340
17373
  }
17341
17374
  });
17342
17375
 
17343
- // dist/opencode-integration/collect-extensions-created.js
17344
- var require_collect_extensions_created = __commonJS({
17345
- "dist/opencode-integration/collect-extensions-created.js"(exports2) {
17376
+ // dist/extension-reporting/collect-created.js
17377
+ var require_collect_created = __commonJS({
17378
+ "dist/extension-reporting/collect-created.js"(exports2) {
17346
17379
  "use strict";
17347
17380
  Object.defineProperty(exports2, "__esModule", { value: true });
17348
17381
  exports2.collectInsertedExtensionsMetadata = collectInsertedExtensionsMetadata;
17349
17382
  var promises_1 = require("fs/promises");
17350
17383
  var ditto_codegen_types_12 = require_dist4();
17351
- var constants_1 = require_constants5();
17352
- var extension_metadata_1 = require_extension_metadata();
17384
+ var detect_1 = require_detect();
17385
+ var metadata_1 = require_metadata();
17353
17386
  async function collectInsertedExtensionsMetadata(outputPath, files) {
17354
17387
  const results = [];
17355
17388
  for (const fileChange of files) {
17356
17389
  if (fileChange.operation !== ditto_codegen_types_12.ExtensionGenerationOperation.INSERT)
17357
17390
  continue;
17358
- if (!(0, constants_1.isExtensionsFile)(fileChange.path))
17391
+ if (!(0, detect_1.isExtensionsFile)(fileChange.path))
17359
17392
  continue;
17360
17393
  try {
17361
- const content = await (0, promises_1.readFile)((0, extension_metadata_1.resolveFilePath)(outputPath, fileChange.path), "utf-8");
17362
- const extensionType = (0, constants_1.detectExtension)(content);
17394
+ const content = await (0, promises_1.readFile)((0, metadata_1.resolveFilePath)(outputPath, fileChange.path), "utf-8");
17395
+ const extensionType = (0, detect_1.detectExtension)(content);
17363
17396
  if (!extensionType)
17364
17397
  continue;
17365
- const folderFiles = files.filter((file) => (0, extension_metadata_1.isFileInExtensionFolder)(file.path, fileChange.path));
17398
+ const folderFiles = files.filter((file) => (0, metadata_1.isFileInExtensionFolder)(file.path, fileChange.path));
17366
17399
  if (extensionType === "dataCollections") {
17367
- const dataCollectionEntries = await (0, extension_metadata_1.collectDataCollectionEntries)(outputPath, fileChange.path, folderFiles);
17400
+ const dataCollectionEntries = await (0, metadata_1.collectDataCollectionEntries)(outputPath, fileChange.path, folderFiles);
17368
17401
  results.push(...dataCollectionEntries);
17369
17402
  continue;
17370
17403
  }
17371
- results.push((0, extension_metadata_1.buildJobExtension)(fileChange.path, extensionType, content, fileChange.path, folderFiles));
17404
+ results.push((0, metadata_1.buildJobExtension)(fileChange.path, extensionType, content, fileChange.path, folderFiles));
17372
17405
  } catch {
17373
17406
  continue;
17374
17407
  }
@@ -17378,9 +17411,9 @@ var require_collect_extensions_created = __commonJS({
17378
17411
  }
17379
17412
  });
17380
17413
 
17381
- // dist/opencode-integration/collect-extensions-updated.js
17382
- var require_collect_extensions_updated = __commonJS({
17383
- "dist/opencode-integration/collect-extensions-updated.js"(exports2) {
17414
+ // dist/extension-reporting/collect-updated.js
17415
+ var require_collect_updated = __commonJS({
17416
+ "dist/extension-reporting/collect-updated.js"(exports2) {
17384
17417
  "use strict";
17385
17418
  Object.defineProperty(exports2, "__esModule", { value: true });
17386
17419
  exports2.collectUpdatedExtensionsMetadata = collectUpdatedExtensionsMetadata;
@@ -17388,12 +17421,12 @@ var require_collect_extensions_updated = __commonJS({
17388
17421
  var path_12 = require("path");
17389
17422
  var util_1 = require("util");
17390
17423
  var promises_1 = require("fs/promises");
17391
- var constants_1 = require_constants5();
17424
+ var detect_1 = require_detect();
17392
17425
  var logger_12 = require_logger();
17393
- var extension_metadata_1 = require_extension_metadata();
17426
+ var metadata_1 = require_metadata();
17394
17427
  var execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
17395
17428
  var ownsItsFolder = (candidate) => {
17396
- if (!(0, constants_1.isExtensionsFile)(candidate))
17429
+ if (!(0, detect_1.isExtensionsFile)(candidate))
17397
17430
  return false;
17398
17431
  const directory = path_12.posix.dirname(candidate);
17399
17432
  return directory !== "." && path_12.posix.dirname(directory) !== ".";
@@ -17413,7 +17446,7 @@ var require_collect_extensions_updated = __commonJS({
17413
17446
  }
17414
17447
  }
17415
17448
  var resolveOwningDefinitionPath = (filePath, candidates) => {
17416
- if ((0, constants_1.isExtensionsFile)(filePath))
17449
+ if ((0, detect_1.isExtensionsFile)(filePath))
17417
17450
  return filePath;
17418
17451
  let longest;
17419
17452
  let longestFolderLength = -1;
@@ -17429,146 +17462,51 @@ var require_collect_extensions_updated = __commonJS({
17429
17462
  async function collectUpdatedExtensionsMetadata(outputPath, files, insertedDefinitionPaths) {
17430
17463
  const candidates = await listCandidateDefinitionPaths(outputPath);
17431
17464
  const definitionPaths = /* @__PURE__ */ new Set();
17432
- for (const fileChange of files) {
17433
- const definitionPath = resolveOwningDefinitionPath(fileChange.path, candidates);
17434
- if (definitionPath && !insertedDefinitionPaths.has(definitionPath)) {
17435
- definitionPaths.add(definitionPath);
17436
- }
17437
- }
17438
- const results = [];
17439
- for (const definitionPath of definitionPaths) {
17440
- try {
17441
- const content = await (0, promises_1.readFile)((0, extension_metadata_1.resolveFilePath)(outputPath, definitionPath), "utf-8");
17442
- const extensionType = (0, constants_1.detectExtension)(content);
17443
- if (!extensionType)
17444
- continue;
17445
- const folderFiles = files.filter((file) => (0, extension_metadata_1.isFileInExtensionFolder)(file.path, definitionPath));
17446
- if (extensionType === "dataCollections") {
17447
- const dataCollectionEntries = await (0, extension_metadata_1.collectDataCollectionEntries)(outputPath, definitionPath, folderFiles);
17448
- results.push(...dataCollectionEntries);
17449
- continue;
17450
- }
17451
- results.push((0, extension_metadata_1.buildJobExtension)(definitionPath, extensionType, content, definitionPath, folderFiles));
17452
- } catch {
17453
- continue;
17454
- }
17455
- }
17456
- return results;
17457
- }
17458
- }
17459
- });
17460
-
17461
- // dist/opencode-integration/extensions-job-payload.js
17462
- var require_extensions_job_payload = __commonJS({
17463
- "dist/opencode-integration/extensions-job-payload.js"(exports2) {
17464
- "use strict";
17465
- Object.defineProperty(exports2, "__esModule", { value: true });
17466
- exports2.buildExtensionsJobPayload = buildExtensionsJobPayload;
17467
- var ditto_codegen_types_12 = require_dist4();
17468
- var constants_1 = require_constants5();
17469
- var collect_extensions_created_1 = require_collect_extensions_created();
17470
- var collect_extensions_updated_1 = require_collect_extensions_updated();
17471
- async function buildExtensionsJobPayload(outputPath, files) {
17472
- const created = await (0, collect_extensions_created_1.collectInsertedExtensionsMetadata)(outputPath, files);
17473
- const insertedDefinitionPaths = new Set(files.filter((file) => file.operation === ditto_codegen_types_12.ExtensionGenerationOperation.INSERT && (0, constants_1.isExtensionsFile)(file.path)).map((file) => file.path));
17474
- const updated = await (0, collect_extensions_updated_1.collectUpdatedExtensionsMetadata)(outputPath, files, insertedDefinitionPaths);
17475
- return { created, updated };
17476
- }
17477
- }
17478
- });
17479
-
17480
- // dist/opencode-integration/index.js
17481
- var require_opencode_integration = __commonJS({
17482
- "dist/opencode-integration/index.js"(exports2) {
17483
- "use strict";
17484
- Object.defineProperty(exports2, "__esModule", { value: true });
17485
- exports2.buildExtensionsJobPayload = exports2.collectInsertedExtensionsMetadata = exports2.OpenCodeTaskTracker = exports2.runOpenCodeGitConflicts = exports2.runOpenCodeAsk = exports2.runOpenCodeIteration = exports2.runOpenCodeInit = void 0;
17486
- var opencode_runner_1 = require_opencode_runner();
17487
- Object.defineProperty(exports2, "runOpenCodeInit", { enumerable: true, get: function() {
17488
- return opencode_runner_1.runOpenCodeInit;
17489
- } });
17490
- Object.defineProperty(exports2, "runOpenCodeIteration", { enumerable: true, get: function() {
17491
- return opencode_runner_1.runOpenCodeIteration;
17492
- } });
17493
- Object.defineProperty(exports2, "runOpenCodeAsk", { enumerable: true, get: function() {
17494
- return opencode_runner_1.runOpenCodeAsk;
17495
- } });
17496
- Object.defineProperty(exports2, "runOpenCodeGitConflicts", { enumerable: true, get: function() {
17497
- return opencode_runner_1.runOpenCodeGitConflicts;
17498
- } });
17499
- var task_tracker_1 = require_task_tracker2();
17500
- Object.defineProperty(exports2, "OpenCodeTaskTracker", { enumerable: true, get: function() {
17501
- return task_tracker_1.OpenCodeTaskTracker;
17502
- } });
17503
- var collect_extensions_created_1 = require_collect_extensions_created();
17504
- Object.defineProperty(exports2, "collectInsertedExtensionsMetadata", { enumerable: true, get: function() {
17505
- return collect_extensions_created_1.collectInsertedExtensionsMetadata;
17506
- } });
17507
- var extensions_job_payload_1 = require_extensions_job_payload();
17508
- Object.defineProperty(exports2, "buildExtensionsJobPayload", { enumerable: true, get: function() {
17509
- return extensions_job_payload_1.buildExtensionsJobPayload;
17510
- } });
17465
+ for (const fileChange of files) {
17466
+ const definitionPath = resolveOwningDefinitionPath(fileChange.path, candidates);
17467
+ if (definitionPath && !insertedDefinitionPaths.has(definitionPath)) {
17468
+ definitionPaths.add(definitionPath);
17469
+ }
17470
+ }
17471
+ const results = [];
17472
+ for (const definitionPath of definitionPaths) {
17473
+ try {
17474
+ const content = await (0, promises_1.readFile)((0, metadata_1.resolveFilePath)(outputPath, definitionPath), "utf-8");
17475
+ const extensionType = (0, detect_1.detectExtension)(content);
17476
+ if (!extensionType)
17477
+ continue;
17478
+ const folderFiles = files.filter((file) => (0, metadata_1.isFileInExtensionFolder)(file.path, definitionPath));
17479
+ if (extensionType === "dataCollections") {
17480
+ const dataCollectionEntries = await (0, metadata_1.collectDataCollectionEntries)(outputPath, definitionPath, folderFiles);
17481
+ results.push(...dataCollectionEntries);
17482
+ continue;
17483
+ }
17484
+ results.push((0, metadata_1.buildJobExtension)(definitionPath, extensionType, content, definitionPath, folderFiles));
17485
+ } catch {
17486
+ continue;
17487
+ }
17488
+ }
17489
+ return results;
17490
+ }
17511
17491
  }
17512
17492
  });
17513
17493
 
17514
- // dist/OpenCodeOrchestrator.js
17515
- var require_OpenCodeOrchestrator = __commonJS({
17516
- "dist/OpenCodeOrchestrator.js"(exports2) {
17494
+ // dist/extension-reporting/job-payload.js
17495
+ var require_job_payload2 = __commonJS({
17496
+ "dist/extension-reporting/job-payload.js"(exports2) {
17517
17497
  "use strict";
17518
17498
  Object.defineProperty(exports2, "__esModule", { value: true });
17519
- exports2.OpenCodeOrchestrator = void 0;
17499
+ exports2.buildExtensionsJobPayload = buildExtensionsJobPayload;
17520
17500
  var ditto_codegen_types_12 = require_dist4();
17521
- var DittoEventEmitter_1 = require_DittoEventEmitter();
17522
- var opencode_integration_1 = require_opencode_integration();
17523
- var logger_12 = require_logger();
17524
- var OpenCodeOrchestrator = class extends DittoEventEmitter_1.DittoEventEmitter {
17525
- constructor() {
17526
- super();
17527
- }
17528
- async generateCode(request) {
17529
- const { blueprint, outputPath, projectId, chatHistory, gitBaseline } = request;
17530
- this.emitEvent("start:init", {
17531
- appName: blueprint.appName ?? "",
17532
- summary: blueprint.summary ?? "",
17533
- outputPath,
17534
- extensionsCount: blueprint.extensions?.length || 0
17535
- });
17536
- const start = Date.now();
17537
- this.emitEvent("opencode:start", { outputPath });
17538
- const result = await (0, opencode_integration_1.runOpenCodeInit)({
17539
- blueprint,
17540
- outputPath,
17541
- projectId,
17542
- chatHistory,
17543
- gitBaseline,
17544
- onStdout: (data) => {
17545
- this.emitEvent("opencode:output", { data });
17546
- },
17547
- onStderr: (data) => {
17548
- logger_12.logger.error("[OpenCode] stderr", { output: data });
17549
- }
17550
- });
17551
- this.lastUsage = result.usage;
17552
- this.lastStdout = result.stdout;
17553
- const durationMs = Date.now() - start;
17554
- if (!result.success) {
17555
- this.emitEvent("opencode:error", {
17556
- error: result.error?.message,
17557
- exitCode: result.exitCode,
17558
- durationMs
17559
- });
17560
- throw result.error ?? new ditto_codegen_types_12.ProcessExecutionError(`Code generation failed (exit code ${result.exitCode})`, {
17561
- processType: ditto_codegen_types_12.ProcessType.EXECUTION,
17562
- exitCode: result.exitCode ?? void 0
17563
- });
17564
- }
17565
- this.emitEvent("opencode:done", { durationMs });
17566
- this.emitEvent("finish:init", { outputPath, durationMs });
17567
- return result;
17568
- }
17569
- };
17570
- exports2.OpenCodeOrchestrator = OpenCodeOrchestrator;
17571
- OpenCodeOrchestrator.DEFAULT_OUTPUT_PATH = "generated-app";
17501
+ var detect_1 = require_detect();
17502
+ var collect_created_1 = require_collect_created();
17503
+ var collect_updated_1 = require_collect_updated();
17504
+ async function buildExtensionsJobPayload(outputPath, files) {
17505
+ const created = await (0, collect_created_1.collectInsertedExtensionsMetadata)(outputPath, files);
17506
+ const insertedDefinitionPaths = new Set(files.filter((file) => file.operation === ditto_codegen_types_12.ExtensionGenerationOperation.INSERT && (0, detect_1.isExtensionsFile)(file.path)).map((file) => file.path));
17507
+ const updated = await (0, collect_updated_1.collectUpdatedExtensionsMetadata)(outputPath, files, insertedDefinitionPaths);
17508
+ return { created, updated };
17509
+ }
17572
17510
  }
17573
17511
  });
17574
17512
 
@@ -17646,8 +17584,8 @@ var require_codegen_flow_helpers = __commonJS({
17646
17584
  exports2.getOutputPath = getOutputPath;
17647
17585
  var path_12 = __importDefault2(require("path"));
17648
17586
  var codeGenerationService_12 = require_codeGenerationService();
17649
- var git_file_changes_1 = require_git_file_changes();
17650
- var extensions_job_payload_1 = require_extensions_job_payload();
17587
+ var file_changes_1 = require_file_changes();
17588
+ var job_payload_1 = require_job_payload2();
17651
17589
  var agent_io_1 = require_agent_io();
17652
17590
  var utils_12 = require_utils9();
17653
17591
  var DEFAULT_OUTPUT_PATH = "generated-app";
@@ -17655,8 +17593,8 @@ var require_codegen_flow_helpers = __commonJS({
17655
17593
  await codeGenerationService_12.codeGenerationService.updateJob(jobContext.jobId, payload);
17656
17594
  }
17657
17595
  async function buildFailedRunPayload(error, outputPath, gitBaseline) {
17658
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
17659
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
17596
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
17597
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
17660
17598
  return {
17661
17599
  requiredPermissions: [],
17662
17600
  error,
@@ -17677,22 +17615,22 @@ var require_codegen_flow_helpers = __commonJS({
17677
17615
  }
17678
17616
  });
17679
17617
 
17680
- // dist/opencode-integration/inject-created-by.js
17618
+ // dist/extension-reporting/inject-created-by.js
17681
17619
  var require_inject_created_by = __commonJS({
17682
- "dist/opencode-integration/inject-created-by.js"(exports2) {
17620
+ "dist/extension-reporting/inject-created-by.js"(exports2) {
17683
17621
  "use strict";
17684
17622
  Object.defineProperty(exports2, "__esModule", { value: true });
17685
17623
  exports2.injectCreatedByIntoExtensionFiles = injectCreatedByIntoExtensionFiles;
17686
17624
  var promises_1 = require("fs/promises");
17687
17625
  var path_12 = require("path");
17688
17626
  var logger_12 = require_logger();
17689
- var constants_1 = require_constants5();
17627
+ var detect_1 = require_detect();
17690
17628
  async function injectCreatedByIntoExtensionFiles(cwd, createdExtensions) {
17691
17629
  for (const { path: filePath } of createdExtensions) {
17692
17630
  const absolutePath = (0, path_12.join)(cwd, filePath);
17693
17631
  try {
17694
17632
  const original = await (0, promises_1.readFile)(absolutePath, "utf-8");
17695
- const injected = (0, constants_1.injectCreatedBy)(original);
17633
+ const injected = (0, detect_1.injectCreatedBy)(original);
17696
17634
  if (injected !== original) {
17697
17635
  await (0, promises_1.writeFile)(absolutePath, injected, "utf-8");
17698
17636
  logger_12.logger.info("[OpenCode] Injected createdBy into extension file", {
@@ -22518,9 +22456,9 @@ var require_src2 = __commonJS({
22518
22456
  }
22519
22457
  });
22520
22458
 
22521
- // dist/biLogger.js
22522
- var require_biLogger = __commonJS({
22523
- "dist/biLogger.js"(exports2) {
22459
+ // dist/telemetry/bi-logger.js
22460
+ var require_bi_logger2 = __commonJS({
22461
+ "dist/telemetry/bi-logger.js"(exports2) {
22524
22462
  "use strict";
22525
22463
  var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
22526
22464
  return mod && mod.__esModule ? mod : { "default": mod };
@@ -22539,9 +22477,9 @@ var require_biLogger = __commonJS({
22539
22477
  }
22540
22478
  });
22541
22479
 
22542
- // dist/biEvents.js
22543
- var require_biEvents = __commonJS({
22544
- "dist/biEvents.js"(exports2) {
22480
+ // dist/telemetry/bi-events.js
22481
+ var require_bi_events = __commonJS({
22482
+ "dist/telemetry/bi-events.js"(exports2) {
22545
22483
  "use strict";
22546
22484
  Object.defineProperty(exports2, "__esModule", { value: true });
22547
22485
  exports2.reportSessionStart = reportSessionStart;
@@ -22550,7 +22488,7 @@ var require_biEvents = __commonJS({
22550
22488
  var v2_1 = require_v2();
22551
22489
  var v2_2 = require_v22();
22552
22490
  var types_1 = require_types_impl();
22553
- var biLogger_1 = require_biLogger();
22491
+ var bi_logger_1 = require_bi_logger2();
22554
22492
  var logger_12 = require_logger();
22555
22493
  var MAX_JOB_INPUT_LENGTH = 3e4;
22556
22494
  var TRUNCATION_SUFFIX = "\u2026";
@@ -22588,7 +22526,7 @@ var require_biEvents = __commonJS({
22588
22526
  if (report.environment === types_1.Environment.APP_BUILDER) {
22589
22527
  logger_12.logger.info("Reporting BI event 200 (session start)", devibeParams);
22590
22528
  try {
22591
- await biLogger_1.biLogger.report((0, v2_1.devibeCodegenAgentSessionStartSrc196Evid200)(devibeParams));
22529
+ await bi_logger_1.biLogger.report((0, v2_1.devibeCodegenAgentSessionStartSrc196Evid200)(devibeParams));
22592
22530
  } catch (err) {
22593
22531
  logger_12.logger.warn("BI event 200 report failed", { error: err });
22594
22532
  }
@@ -22606,7 +22544,7 @@ var require_biEvents = __commonJS({
22606
22544
  };
22607
22545
  logger_12.logger.info("Reporting BI event 299 (generic session start)", codegenAgentParams);
22608
22546
  try {
22609
- await biLogger_1.biLogger.report((0, v2_2.codegenAgentSessionStartSrc11Evid299)(codegenAgentParams));
22547
+ await bi_logger_1.biLogger.report((0, v2_2.codegenAgentSessionStartSrc11Evid299)(codegenAgentParams));
22610
22548
  } catch (err) {
22611
22549
  logger_12.logger.warn("BI event 299 report failed", { error: err });
22612
22550
  }
@@ -22633,7 +22571,7 @@ var require_biEvents = __commonJS({
22633
22571
  if (report.environment === types_1.Environment.APP_BUILDER) {
22634
22572
  logger_12.logger.info("Reporting BI event 201 (session end)", devibeParams);
22635
22573
  try {
22636
- await biLogger_1.biLogger.report((0, v2_1.devibeCodegenAgentSessionEndSrc196Evid201)(devibeParams));
22574
+ await bi_logger_1.biLogger.report((0, v2_1.devibeCodegenAgentSessionEndSrc196Evid201)(devibeParams));
22637
22575
  } catch (err) {
22638
22576
  logger_12.logger.warn("BI event 201 report failed", { error: err });
22639
22577
  }
@@ -22655,7 +22593,7 @@ var require_biEvents = __commonJS({
22655
22593
  };
22656
22594
  logger_12.logger.info("Reporting BI event 304 (generic session end)", codegenAgentParams);
22657
22595
  try {
22658
- await biLogger_1.biLogger.report((0, v2_2.codegenAgentSessionEndSrc11Evid304)(codegenAgentParams));
22596
+ await bi_logger_1.biLogger.report((0, v2_2.codegenAgentSessionEndSrc11Evid304)(codegenAgentParams));
22659
22597
  } catch (err) {
22660
22598
  logger_12.logger.warn("BI event 304 report failed", { error: err });
22661
22599
  }
@@ -22682,7 +22620,7 @@ var require_biEvents = __commonJS({
22682
22620
  if (report.environment === types_1.Environment.APP_BUILDER) {
22683
22621
  logger_12.logger.info("Reporting BI event 202 (session error)", devibeParams);
22684
22622
  try {
22685
- await biLogger_1.biLogger.report((0, v2_1.devibeCodegenAgentSessionErrorSrc196Evid202)(devibeParams));
22623
+ await bi_logger_1.biLogger.report((0, v2_1.devibeCodegenAgentSessionErrorSrc196Evid202)(devibeParams));
22686
22624
  } catch (err) {
22687
22625
  logger_12.logger.warn("BI event 202 report failed", { error: err });
22688
22626
  }
@@ -22705,7 +22643,7 @@ var require_biEvents = __commonJS({
22705
22643
  };
22706
22644
  logger_12.logger.info("Reporting BI event 305 (generic session error)", codegenAgentParams);
22707
22645
  try {
22708
- await biLogger_1.biLogger.report((0, v2_2.codegenAgentSessionErrorSrc11Evid305)(codegenAgentParams));
22646
+ await bi_logger_1.biLogger.report((0, v2_2.codegenAgentSessionErrorSrc11Evid305)(codegenAgentParams));
22709
22647
  } catch (err) {
22710
22648
  logger_12.logger.warn("BI event 305 report failed", { error: err });
22711
22649
  }
@@ -22713,9 +22651,53 @@ var require_biEvents = __commonJS({
22713
22651
  }
22714
22652
  });
22715
22653
 
22716
- // dist/opencode-integration/report-expensive-run.js
22717
- var require_report_expensive_run = __commonJS({
22718
- "dist/opencode-integration/report-expensive-run.js"(exports2) {
22654
+ // dist/opencode-integration/slack-reports/validator-outputs.js
22655
+ var require_validator_outputs = __commonJS({
22656
+ "dist/opencode-integration/slack-reports/validator-outputs.js"(exports2) {
22657
+ "use strict";
22658
+ Object.defineProperty(exports2, "__esModule", { value: true });
22659
+ exports2.notifyValidatorOutputsToSlack = notifyValidatorOutputsToSlack;
22660
+ var logger_12 = require_logger();
22661
+ var job_context_storage_12 = require_job_context_storage();
22662
+ var codeGenerationService_12 = require_codeGenerationService();
22663
+ var parser_1 = require_parser();
22664
+ async function notifyValidatorOutputsToSlack(stdout, costUsd) {
22665
+ try {
22666
+ const store = job_context_storage_12.jobContextStorage.getStore();
22667
+ const outputs = (0, parser_1.parseValidatorTaskOutputs)(stdout);
22668
+ if (outputs.length === 0)
22669
+ return;
22670
+ const durationMs = store?.flowStartTime ? Date.now() - store.flowStartTime : void 0;
22671
+ const context = {
22672
+ jobId: store?.jobId,
22673
+ metasiteId: store?.metasiteId,
22674
+ costUsd: costUsd > 0 ? costUsd : void 0,
22675
+ durationMs
22676
+ };
22677
+ for (const output of outputs) {
22678
+ if (!(0, parser_1.shouldReportValidatorOutput)(output)) {
22679
+ continue;
22680
+ }
22681
+ try {
22682
+ await codeGenerationService_12.codeGenerationService.handleValidationErrors(output, context);
22683
+ } catch (err) {
22684
+ logger_12.logger.warn("[OpenCode] Failed to report validator output to Slack", {
22685
+ error: err instanceof Error ? err.message : String(err)
22686
+ });
22687
+ }
22688
+ }
22689
+ } catch (err) {
22690
+ logger_12.logger.warn("[OpenCode] Unexpected error in notifyValidatorOutputsToSlack", {
22691
+ error: err instanceof Error ? err.message : String(err)
22692
+ });
22693
+ }
22694
+ }
22695
+ }
22696
+ });
22697
+
22698
+ // dist/opencode-integration/slack-reports/expensive-run.js
22699
+ var require_expensive_run = __commonJS({
22700
+ "dist/opencode-integration/slack-reports/expensive-run.js"(exports2) {
22719
22701
  "use strict";
22720
22702
  Object.defineProperty(exports2, "__esModule", { value: true });
22721
22703
  exports2.notifyExpensiveRunToSlack = notifyExpensiveRunToSlack;
@@ -22782,7 +22764,7 @@ var require_opencode_init = __commonJS({
22782
22764
  var codeGenerationService_12 = require_codeGenerationService();
22783
22765
  var cli_listeners_1 = require_cli_listeners();
22784
22766
  var job_context_storage_12 = require_job_context_storage();
22785
- var OpenCodeOrchestrator_1 = require_OpenCodeOrchestrator();
22767
+ var opencode_orchestrator_1 = require_opencode_orchestrator();
22786
22768
  var ditto_codegen_types_12 = require_dist4();
22787
22769
  var codegen_flow_helpers_12 = require_codegen_flow_helpers();
22788
22770
  var agent_io_1 = require_agent_io();
@@ -22791,12 +22773,12 @@ var require_opencode_init = __commonJS({
22791
22773
  var context_12 = require_context();
22792
22774
  var logger_12 = require_logger();
22793
22775
  var model_knobs_1 = require_model_knobs();
22794
- var git_file_changes_1 = require_git_file_changes();
22776
+ var file_changes_1 = require_file_changes();
22795
22777
  var inject_created_by_1 = require_inject_created_by();
22796
- var extensions_job_payload_1 = require_extensions_job_payload();
22797
- var biEvents_1 = require_biEvents();
22798
- var executor_1 = require_executor();
22799
- var report_expensive_run_1 = require_report_expensive_run();
22778
+ var job_payload_1 = require_job_payload2();
22779
+ var bi_events_1 = require_bi_events();
22780
+ var validator_outputs_1 = require_validator_outputs();
22781
+ var expensive_run_1 = require_expensive_run();
22800
22782
  var pre_run_decision_1 = require_pre_run_decision();
22801
22783
  var environments_12 = require_environments();
22802
22784
  var plugins_runtime_1 = require_plugins_runtime();
@@ -22823,16 +22805,16 @@ var require_opencode_init = __commonJS({
22823
22805
  logger_12.logger.info("[OpenCode Init] Starting task", { taskId });
22824
22806
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.RUNNING, {});
22825
22807
  logger_12.logger.info("[OpenCode Init] Marked task RUNNING", { taskId });
22826
- await (0, biEvents_1.reportSessionStart)({
22808
+ await (0, bi_events_1.reportSessionStart)({
22827
22809
  ...biBase,
22828
22810
  taskModel,
22829
22811
  taskType: kind,
22830
22812
  jobInput: userInput
22831
22813
  });
22832
22814
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
22833
- const gitBaseline = await (0, git_file_changes_1.captureGitBaseline)(outputPath);
22815
+ const gitBaseline = await (0, file_changes_1.captureGitBaseline)(outputPath);
22834
22816
  store.gitBaseline = gitBaseline;
22835
- const orchestrator = new OpenCodeOrchestrator_1.OpenCodeOrchestrator();
22817
+ const orchestrator = new opencode_orchestrator_1.OpenCodeOrchestrator();
22836
22818
  let caughtError;
22837
22819
  try {
22838
22820
  (0, agent_io_1.writeAgentInput)(outputPath, agentData);
@@ -22854,9 +22836,9 @@ var require_opencode_init = __commonJS({
22854
22836
  gitBaseline
22855
22837
  });
22856
22838
  store.lastAgentMessage = result.agentMessage;
22857
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
22839
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
22858
22840
  const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
22859
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
22841
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
22860
22842
  await (0, inject_created_by_1.injectCreatedByIntoExtensionFiles)(outputPath, extensions.created);
22861
22843
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
22862
22844
  requiredPermissions: result.requiredPermissions,
@@ -22872,8 +22854,8 @@ var require_opencode_init = __commonJS({
22872
22854
  requiredPermissions: result.requiredPermissions
22873
22855
  });
22874
22856
  if (orchestrator.lastStdout && !(0, model_knobs_1.hasModelOverride)() && !(0, model_knobs_1.hasSmallModelOverride)()) {
22875
- void (0, executor_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
22876
- void (0, report_expensive_run_1.notifyExpensiveRunToSlack)({
22857
+ void (0, validator_outputs_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
22858
+ void (0, expensive_run_1.notifyExpensiveRunToSlack)({
22877
22859
  usage: result.usage,
22878
22860
  durationMs: Date.now() - flowStartTime,
22879
22861
  agentMessage: result.agentMessage,
@@ -22883,7 +22865,7 @@ var require_opencode_init = __commonJS({
22883
22865
  if (!store.isCompleted) {
22884
22866
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {});
22885
22867
  }
22886
- await (0, biEvents_1.reportSessionEnd)({
22868
+ await (0, bi_events_1.reportSessionEnd)({
22887
22869
  ...biBase,
22888
22870
  taskModel,
22889
22871
  taskType: kind,
@@ -22902,7 +22884,7 @@ var require_opencode_init = __commonJS({
22902
22884
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, failedRunPayload);
22903
22885
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
22904
22886
  const taskCost = orchestrator.lastUsage ? Math.round(orchestrator.lastUsage.cost * 1e6) : void 0;
22905
- await (0, biEvents_1.reportSessionEnd)({
22887
+ await (0, bi_events_1.reportSessionEnd)({
22906
22888
  ...biBase,
22907
22889
  taskModel,
22908
22890
  taskType: kind,
@@ -22911,7 +22893,7 @@ var require_opencode_init = __commonJS({
22911
22893
  agentOutput: JSON.stringify({ files: failedRunPayload.files }),
22912
22894
  jobDuration: String(Date.now() - flowStartTime)
22913
22895
  });
22914
- await (0, biEvents_1.reportSessionError)({
22896
+ await (0, bi_events_1.reportSessionError)({
22915
22897
  ...biBase,
22916
22898
  taskModel,
22917
22899
  taskType: kind,
@@ -22935,9 +22917,9 @@ var require_opencode_init = __commonJS({
22935
22917
  }
22936
22918
  });
22937
22919
 
22938
- // dist/OpenCodeIterationOrchestrator.js
22939
- var require_OpenCodeIterationOrchestrator = __commonJS({
22940
- "dist/OpenCodeIterationOrchestrator.js"(exports2) {
22920
+ // dist/orchestrators/opencode-iteration-orchestrator.js
22921
+ var require_opencode_iteration_orchestrator = __commonJS({
22922
+ "dist/orchestrators/opencode-iteration-orchestrator.js"(exports2) {
22941
22923
  "use strict";
22942
22924
  Object.defineProperty(exports2, "__esModule", { value: true });
22943
22925
  exports2.OpenCodeIterationOrchestrator = void 0;
@@ -22999,7 +22981,7 @@ var require_opencode_iterate = __commonJS({
22999
22981
  var cli_listeners_1 = require_cli_listeners();
23000
22982
  var job_context_storage_12 = require_job_context_storage();
23001
22983
  var ditto_codegen_types_12 = require_dist4();
23002
- var OpenCodeIterationOrchestrator_1 = require_OpenCodeIterationOrchestrator();
22984
+ var opencode_iteration_orchestrator_1 = require_opencode_iteration_orchestrator();
23003
22985
  var types_1 = require_types_impl();
23004
22986
  var codegen_flow_helpers_12 = require_codegen_flow_helpers();
23005
22987
  var agent_io_1 = require_agent_io();
@@ -23007,12 +22989,12 @@ var require_opencode_iterate = __commonJS({
23007
22989
  var context_12 = require_context();
23008
22990
  var logger_12 = require_logger();
23009
22991
  var model_knobs_1 = require_model_knobs();
23010
- var git_file_changes_1 = require_git_file_changes();
22992
+ var file_changes_1 = require_file_changes();
23011
22993
  var inject_created_by_1 = require_inject_created_by();
23012
- var extensions_job_payload_1 = require_extensions_job_payload();
23013
- var executor_1 = require_executor();
23014
- var report_expensive_run_1 = require_report_expensive_run();
23015
- var biEvents_1 = require_biEvents();
22994
+ var job_payload_1 = require_job_payload2();
22995
+ var validator_outputs_1 = require_validator_outputs();
22996
+ var expensive_run_1 = require_expensive_run();
22997
+ var bi_events_1 = require_bi_events();
23016
22998
  var plugins_runtime_1 = require_plugins_runtime();
23017
22999
  var runOpencodeIterateFlow = async (chatHistory, agentData) => {
23018
23000
  const store = job_context_storage_12.jobContextStorage.getStore();
@@ -23037,16 +23019,16 @@ var require_opencode_iterate = __commonJS({
23037
23019
  logger_12.logger.info("[OpenCode Iterate] Starting task", { taskId });
23038
23020
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.RUNNING, {});
23039
23021
  logger_12.logger.info("[OpenCode Iterate] Marked task RUNNING", { taskId });
23040
- await (0, biEvents_1.reportSessionStart)({
23022
+ await (0, bi_events_1.reportSessionStart)({
23041
23023
  ...biBase,
23042
23024
  taskModel,
23043
23025
  taskType: kind,
23044
23026
  jobInput: userInput
23045
23027
  });
23046
23028
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
23047
- const gitBaseline = await (0, git_file_changes_1.captureGitBaseline)(outputPath);
23029
+ const gitBaseline = await (0, file_changes_1.captureGitBaseline)(outputPath);
23048
23030
  store.gitBaseline = gitBaseline;
23049
- const iterationOrchestrator = new OpenCodeIterationOrchestrator_1.OpenCodeIterationOrchestrator();
23031
+ const iterationOrchestrator = new opencode_iteration_orchestrator_1.OpenCodeIterationOrchestrator();
23050
23032
  let caughtError;
23051
23033
  try {
23052
23034
  (0, agent_io_1.writeAgentInput)(outputPath, agentData);
@@ -23058,9 +23040,9 @@ var require_opencode_iterate = __commonJS({
23058
23040
  gitBaseline
23059
23041
  });
23060
23042
  store.lastAgentMessage = result.agentMessage;
23061
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23043
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23062
23044
  const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
23063
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23045
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23064
23046
  await (0, inject_created_by_1.injectCreatedByIntoExtensionFiles)(outputPath, extensions.created);
23065
23047
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23066
23048
  requiredPermissions: result.requiredPermissions,
@@ -23076,8 +23058,8 @@ var require_opencode_iterate = __commonJS({
23076
23058
  requiredPermissions: result.requiredPermissions
23077
23059
  });
23078
23060
  if (iterationOrchestrator.lastStdout && !(0, model_knobs_1.hasModelOverride)() && !(0, model_knobs_1.hasSmallModelOverride)()) {
23079
- void (0, executor_1.notifyValidatorOutputsToSlack)(iterationOrchestrator.lastStdout, result.usage.cost);
23080
- void (0, report_expensive_run_1.notifyExpensiveRunToSlack)({
23061
+ void (0, validator_outputs_1.notifyValidatorOutputsToSlack)(iterationOrchestrator.lastStdout, result.usage.cost);
23062
+ void (0, expensive_run_1.notifyExpensiveRunToSlack)({
23081
23063
  usage: result.usage,
23082
23064
  durationMs: Date.now() - flowStartTime,
23083
23065
  agentMessage: result.agentMessage,
@@ -23087,7 +23069,7 @@ var require_opencode_iterate = __commonJS({
23087
23069
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {
23088
23070
  taskOutput: { files }
23089
23071
  });
23090
- await (0, biEvents_1.reportSessionEnd)({
23072
+ await (0, bi_events_1.reportSessionEnd)({
23091
23073
  ...biBase,
23092
23074
  taskModel,
23093
23075
  taskType: kind,
@@ -23106,7 +23088,7 @@ var require_opencode_iterate = __commonJS({
23106
23088
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, failedRunPayload);
23107
23089
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
23108
23090
  const taskCost = iterationOrchestrator.lastUsage ? Math.round(iterationOrchestrator.lastUsage.cost * 1e6) : void 0;
23109
- await (0, biEvents_1.reportSessionEnd)({
23091
+ await (0, bi_events_1.reportSessionEnd)({
23110
23092
  ...biBase,
23111
23093
  taskModel,
23112
23094
  taskType: kind,
@@ -23115,7 +23097,7 @@ var require_opencode_iterate = __commonJS({
23115
23097
  agentOutput: JSON.stringify({ files: failedRunPayload.files }),
23116
23098
  jobDuration: String(Date.now() - flowStartTime)
23117
23099
  });
23118
- await (0, biEvents_1.reportSessionError)({
23100
+ await (0, bi_events_1.reportSessionError)({
23119
23101
  ...biBase,
23120
23102
  taskModel,
23121
23103
  taskType: kind,
@@ -23139,9 +23121,9 @@ var require_opencode_iterate = __commonJS({
23139
23121
  }
23140
23122
  });
23141
23123
 
23142
- // dist/OpenCodeAskOrchestrator.js
23143
- var require_OpenCodeAskOrchestrator = __commonJS({
23144
- "dist/OpenCodeAskOrchestrator.js"(exports2) {
23124
+ // dist/orchestrators/opencode-ask-orchestrator.js
23125
+ var require_opencode_ask_orchestrator = __commonJS({
23126
+ "dist/orchestrators/opencode-ask-orchestrator.js"(exports2) {
23145
23127
  "use strict";
23146
23128
  Object.defineProperty(exports2, "__esModule", { value: true });
23147
23129
  exports2.OpenCodeAskOrchestrator = void 0;
@@ -23201,17 +23183,17 @@ var require_opencode_ask = __commonJS({
23201
23183
  var cli_listeners_1 = require_cli_listeners();
23202
23184
  var job_context_storage_12 = require_job_context_storage();
23203
23185
  var ditto_codegen_types_12 = require_dist4();
23204
- var OpenCodeAskOrchestrator_1 = require_OpenCodeAskOrchestrator();
23186
+ var opencode_ask_orchestrator_1 = require_opencode_ask_orchestrator();
23205
23187
  var types_1 = require_types_impl();
23206
23188
  var codegen_flow_helpers_12 = require_codegen_flow_helpers();
23207
23189
  var ditto_codegen_types_2 = require_dist4();
23208
23190
  var context_12 = require_context();
23209
23191
  var logger_12 = require_logger();
23210
23192
  var model_knobs_1 = require_model_knobs();
23211
- var git_file_changes_1 = require_git_file_changes();
23193
+ var file_changes_1 = require_file_changes();
23212
23194
  var inject_created_by_1 = require_inject_created_by();
23213
- var extensions_job_payload_1 = require_extensions_job_payload();
23214
- var biEvents_1 = require_biEvents();
23195
+ var job_payload_1 = require_job_payload2();
23196
+ var bi_events_1 = require_bi_events();
23215
23197
  var runOpencodeAskFlow = async (chatHistory) => {
23216
23198
  const store = job_context_storage_12.jobContextStorage.getStore();
23217
23199
  if (!store?.jobId || !store?.taskId) {
@@ -23235,16 +23217,16 @@ var require_opencode_ask = __commonJS({
23235
23217
  logger_12.logger.info("[OpenCode Ask] Starting task", { taskId });
23236
23218
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.RUNNING, {});
23237
23219
  logger_12.logger.info("[OpenCode Ask] Marked task RUNNING", { taskId });
23238
- await (0, biEvents_1.reportSessionStart)({
23220
+ await (0, bi_events_1.reportSessionStart)({
23239
23221
  ...biBase,
23240
23222
  taskModel,
23241
23223
  taskType: kind,
23242
23224
  jobInput: userInput
23243
23225
  });
23244
23226
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
23245
- const gitBaseline = await (0, git_file_changes_1.captureGitBaseline)(outputPath);
23227
+ const gitBaseline = await (0, file_changes_1.captureGitBaseline)(outputPath);
23246
23228
  store.gitBaseline = gitBaseline;
23247
- const askOrchestrator = new OpenCodeAskOrchestrator_1.OpenCodeAskOrchestrator();
23229
+ const askOrchestrator = new opencode_ask_orchestrator_1.OpenCodeAskOrchestrator();
23248
23230
  try {
23249
23231
  (0, cli_listeners_1.attachOrchestratorListeners)(askOrchestrator);
23250
23232
  const result = await askOrchestrator.ask({
@@ -23253,8 +23235,8 @@ var require_opencode_ask = __commonJS({
23253
23235
  chatHistory,
23254
23236
  gitBaseline
23255
23237
  });
23256
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23257
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23238
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23239
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23258
23240
  await (0, inject_created_by_1.injectCreatedByIntoExtensionFiles)(outputPath, extensions.created);
23259
23241
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23260
23242
  files,
@@ -23266,7 +23248,7 @@ var require_opencode_ask = __commonJS({
23266
23248
  answer: result.answer
23267
23249
  }
23268
23250
  });
23269
- await (0, biEvents_1.reportSessionEnd)({
23251
+ await (0, bi_events_1.reportSessionEnd)({
23270
23252
  ...biBase,
23271
23253
  taskModel,
23272
23254
  taskType: kind,
@@ -23279,8 +23261,8 @@ var require_opencode_ask = __commonJS({
23279
23261
  logger_12.logger.info("[OpenCode Ask] Completed task", { taskId });
23280
23262
  } catch (error) {
23281
23263
  const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
23282
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23283
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23264
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23265
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23284
23266
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23285
23267
  files,
23286
23268
  extensions,
@@ -23288,7 +23270,7 @@ var require_opencode_ask = __commonJS({
23288
23270
  });
23289
23271
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
23290
23272
  const taskCost = askOrchestrator.lastUsage ? Math.round(askOrchestrator.lastUsage.cost * 1e6) : void 0;
23291
- await (0, biEvents_1.reportSessionEnd)({
23273
+ await (0, bi_events_1.reportSessionEnd)({
23292
23274
  ...biBase,
23293
23275
  taskModel,
23294
23276
  taskType: kind,
@@ -23297,7 +23279,7 @@ var require_opencode_ask = __commonJS({
23297
23279
  agentOutput: JSON.stringify({ files }),
23298
23280
  jobDuration: String(Date.now() - flowStartTime)
23299
23281
  });
23300
- await (0, biEvents_1.reportSessionError)({
23282
+ await (0, bi_events_1.reportSessionError)({
23301
23283
  ...biBase,
23302
23284
  taskModel,
23303
23285
  taskType: kind,
@@ -23319,9 +23301,9 @@ var require_opencode_ask = __commonJS({
23319
23301
  }
23320
23302
  });
23321
23303
 
23322
- // dist/OpenCodeGitConflictsOrchestrator.js
23323
- var require_OpenCodeGitConflictsOrchestrator = __commonJS({
23324
- "dist/OpenCodeGitConflictsOrchestrator.js"(exports2) {
23304
+ // dist/orchestrators/opencode-git-conflicts-orchestrator.js
23305
+ var require_opencode_git_conflicts_orchestrator = __commonJS({
23306
+ "dist/orchestrators/opencode-git-conflicts-orchestrator.js"(exports2) {
23325
23307
  "use strict";
23326
23308
  Object.defineProperty(exports2, "__esModule", { value: true });
23327
23309
  exports2.OpenCodeGitConflictsOrchestrator = void 0;
@@ -23383,17 +23365,17 @@ var require_opencode_fix_git_conflicts = __commonJS({
23383
23365
  var cli_listeners_1 = require_cli_listeners();
23384
23366
  var job_context_storage_12 = require_job_context_storage();
23385
23367
  var ditto_codegen_types_12 = require_dist4();
23386
- var OpenCodeGitConflictsOrchestrator_1 = require_OpenCodeGitConflictsOrchestrator();
23368
+ var opencode_git_conflicts_orchestrator_1 = require_opencode_git_conflicts_orchestrator();
23387
23369
  var types_1 = require_types_impl();
23388
23370
  var codegen_flow_helpers_12 = require_codegen_flow_helpers();
23389
23371
  var context_12 = require_context();
23390
23372
  var logger_12 = require_logger();
23391
23373
  var model_knobs_1 = require_model_knobs();
23392
- var git_file_changes_1 = require_git_file_changes();
23393
- var extensions_job_payload_1 = require_extensions_job_payload();
23394
- var executor_1 = require_executor();
23395
- var report_expensive_run_1 = require_report_expensive_run();
23396
- var biEvents_1 = require_biEvents();
23374
+ var file_changes_1 = require_file_changes();
23375
+ var job_payload_1 = require_job_payload2();
23376
+ var validator_outputs_1 = require_validator_outputs();
23377
+ var expensive_run_1 = require_expensive_run();
23378
+ var bi_events_1 = require_bi_events();
23397
23379
  var plugins_runtime_1 = require_plugins_runtime();
23398
23380
  var runOpencodeGitConflictsFlow = async (chatHistory) => {
23399
23381
  const store = job_context_storage_12.jobContextStorage.getStore();
@@ -23418,15 +23400,15 @@ var require_opencode_fix_git_conflicts = __commonJS({
23418
23400
  logger_12.logger.info("[OpenCode Git Conflicts] Starting task", { taskId });
23419
23401
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.RUNNING, {});
23420
23402
  logger_12.logger.info("[OpenCode Git Conflicts] Marked task RUNNING", { taskId });
23421
- await (0, biEvents_1.reportSessionStart)({
23403
+ await (0, bi_events_1.reportSessionStart)({
23422
23404
  ...biBase,
23423
23405
  taskModel,
23424
23406
  taskType: kind
23425
23407
  });
23426
23408
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
23427
- const gitBaseline = await (0, git_file_changes_1.captureGitBaseline)(outputPath);
23409
+ const gitBaseline = await (0, file_changes_1.captureGitBaseline)(outputPath);
23428
23410
  store.gitBaseline = gitBaseline;
23429
- const orchestrator = new OpenCodeGitConflictsOrchestrator_1.OpenCodeGitConflictsOrchestrator();
23411
+ const orchestrator = new opencode_git_conflicts_orchestrator_1.OpenCodeGitConflictsOrchestrator();
23430
23412
  let caughtError;
23431
23413
  try {
23432
23414
  (0, cli_listeners_1.attachOrchestratorListeners)(orchestrator);
@@ -23437,8 +23419,8 @@ var require_opencode_fix_git_conflicts = __commonJS({
23437
23419
  gitBaseline
23438
23420
  });
23439
23421
  store.lastAgentMessage = result.agentMessage;
23440
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23441
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23422
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23423
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23442
23424
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23443
23425
  requiredPermissions: result.requiredPermissions,
23444
23426
  agentMessage: result.agentMessage,
@@ -23452,8 +23434,8 @@ var require_opencode_fix_git_conflicts = __commonJS({
23452
23434
  requiredPermissions: result.requiredPermissions
23453
23435
  });
23454
23436
  if (orchestrator.lastStdout && !(0, model_knobs_1.hasModelOverride)() && !(0, model_knobs_1.hasSmallModelOverride)()) {
23455
- void (0, executor_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
23456
- void (0, report_expensive_run_1.notifyExpensiveRunToSlack)({
23437
+ void (0, validator_outputs_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
23438
+ void (0, expensive_run_1.notifyExpensiveRunToSlack)({
23457
23439
  usage: result.usage,
23458
23440
  durationMs: Date.now() - flowStartTime,
23459
23441
  agentMessage: result.agentMessage,
@@ -23463,7 +23445,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23463
23445
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {
23464
23446
  taskOutput: { files }
23465
23447
  });
23466
- await (0, biEvents_1.reportSessionEnd)({
23448
+ await (0, bi_events_1.reportSessionEnd)({
23467
23449
  ...biBase,
23468
23450
  taskModel,
23469
23451
  taskType: kind,
@@ -23477,8 +23459,8 @@ var require_opencode_fix_git_conflicts = __commonJS({
23477
23459
  } catch (error) {
23478
23460
  caughtError = error;
23479
23461
  const codegenError = (0, ditto_codegen_types_12.toCodegenError)(error);
23480
- const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23481
- const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23462
+ const files = await (0, file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23463
+ const extensions = await (0, job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23482
23464
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23483
23465
  requiredPermissions: [],
23484
23466
  error: codegenError,
@@ -23487,7 +23469,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23487
23469
  });
23488
23470
  await (0, codegen_flow_helpers_12.updateParentTaskStatus)(localJobContext, ditto_codegen_types_12.Status.FAILED, codegenError);
23489
23471
  const taskCost = orchestrator.lastUsage ? Math.round(orchestrator.lastUsage.cost * 1e6) : void 0;
23490
- await (0, biEvents_1.reportSessionEnd)({
23472
+ await (0, bi_events_1.reportSessionEnd)({
23491
23473
  ...biBase,
23492
23474
  taskModel,
23493
23475
  taskType: kind,
@@ -23496,7 +23478,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23496
23478
  agentOutput: JSON.stringify({ files }),
23497
23479
  jobDuration: String(Date.now() - flowStartTime)
23498
23480
  });
23499
- await (0, biEvents_1.reportSessionError)({
23481
+ await (0, bi_events_1.reportSessionError)({
23500
23482
  ...biBase,
23501
23483
  taskModel,
23502
23484
  taskType: kind,
@@ -23520,9 +23502,9 @@ var require_opencode_fix_git_conflicts = __commonJS({
23520
23502
  }
23521
23503
  });
23522
23504
 
23523
- // dist/job-cancellation-monitor.js
23505
+ // dist/jobs/job-cancellation-monitor.js
23524
23506
  var require_job_cancellation_monitor = __commonJS({
23525
- "dist/job-cancellation-monitor.js"(exports2) {
23507
+ "dist/jobs/job-cancellation-monitor.js"(exports2) {
23526
23508
  "use strict";
23527
23509
  Object.defineProperty(exports2, "__esModule", { value: true });
23528
23510
  exports2.JobCancellationMonitor = void 0;
@@ -23531,7 +23513,7 @@ var require_job_cancellation_monitor = __commonJS({
23531
23513
  var logger_12 = require_logger();
23532
23514
  var job_context_storage_12 = require_job_context_storage();
23533
23515
  var types_1 = require_types_impl();
23534
- var biEvents_1 = require_biEvents();
23516
+ var bi_events_1 = require_bi_events();
23535
23517
  var STATUS_CHECK_INTERVAL_MS = 2e3;
23536
23518
  var JobCancellationMonitor = class {
23537
23519
  constructor(codeGenerationService) {
@@ -23579,7 +23561,7 @@ var require_job_cancellation_monitor = __commonJS({
23579
23561
  if (!store)
23580
23562
  return;
23581
23563
  const jobDuration = store.flowStartTime ? String(Date.now() - store.flowStartTime) : void 0;
23582
- await (0, biEvents_1.reportSessionEnd)({
23564
+ await (0, bi_events_1.reportSessionEnd)({
23583
23565
  jobId,
23584
23566
  taskId: store.taskId,
23585
23567
  appId: this.projectId,
@@ -23596,9 +23578,9 @@ var require_job_cancellation_monitor = __commonJS({
23596
23578
  }
23597
23579
  });
23598
23580
 
23599
- // dist/job-timeout-monitor.js
23581
+ // dist/jobs/job-timeout-monitor.js
23600
23582
  var require_job_timeout_monitor = __commonJS({
23601
- "dist/job-timeout-monitor.js"(exports2) {
23583
+ "dist/jobs/job-timeout-monitor.js"(exports2) {
23602
23584
  "use strict";
23603
23585
  Object.defineProperty(exports2, "__esModule", { value: true });
23604
23586
  exports2.JobTimeoutMonitor = exports2.JOB_TIMEOUT_MS = void 0;
@@ -23609,7 +23591,7 @@ var require_job_timeout_monitor = __commonJS({
23609
23591
  var job_context_storage_12 = require_job_context_storage();
23610
23592
  var codegen_flow_helpers_12 = require_codegen_flow_helpers();
23611
23593
  var types_1 = require_types_impl();
23612
- var biEvents_1 = require_biEvents();
23594
+ var bi_events_1 = require_bi_events();
23613
23595
  exports2.JOB_TIMEOUT_MS = 1e3 * 60 * 20;
23614
23596
  var JobTimeoutMonitor = class {
23615
23597
  constructor(codeGenerationService) {
@@ -23677,12 +23659,12 @@ var require_job_timeout_monitor = __commonJS({
23677
23659
  runKind: store.kind,
23678
23660
  environment
23679
23661
  };
23680
- await (0, biEvents_1.reportSessionEnd)({
23662
+ await (0, bi_events_1.reportSessionEnd)({
23681
23663
  ...biBase,
23682
23664
  taskStatus: ditto_codegen_types_12.Status.FAILED,
23683
23665
  jobDuration
23684
23666
  });
23685
- await (0, biEvents_1.reportSessionError)({
23667
+ await (0, bi_events_1.reportSessionError)({
23686
23668
  ...biBase,
23687
23669
  errorDesc: codegenError.errorType,
23688
23670
  errorMessage: codegenError.message,
@@ -23696,9 +23678,9 @@ var require_job_timeout_monitor = __commonJS({
23696
23678
  }
23697
23679
  });
23698
23680
 
23699
- // dist/opencode-integration/skills-override.js
23681
+ // dist/opencode-integration/skills/skills-override.js
23700
23682
  var require_skills_override = __commonJS({
23701
- "dist/opencode-integration/skills-override.js"(exports2) {
23683
+ "dist/opencode-integration/skills/skills-override.js"(exports2) {
23702
23684
  "use strict";
23703
23685
  Object.defineProperty(exports2, "__esModule", { value: true });
23704
23686
  exports2.SKILLS_DIR = void 0;
@@ -23758,9 +23740,9 @@ var require_skills_override = __commonJS({
23758
23740
  }
23759
23741
  });
23760
23742
 
23761
- // dist/opencode-integration/skills-installer.js
23743
+ // dist/opencode-integration/skills/skills-installer.js
23762
23744
  var require_skills_installer = __commonJS({
23763
- "dist/opencode-integration/skills-installer.js"(exports2) {
23745
+ "dist/opencode-integration/skills/skills-installer.js"(exports2) {
23764
23746
  "use strict";
23765
23747
  Object.defineProperty(exports2, "__esModule", { value: true });
23766
23748
  exports2.applySkillsOverride = applySkillsOverride;
@@ -23898,31 +23880,79 @@ var require_tools_writer = __commonJS({
23898
23880
  }
23899
23881
  });
23900
23882
 
23901
- // dist/opencode-integration/tool-policies.js
23883
+ // dist/opencode-integration/plugins/generated-files-guard.js
23884
+ var require_generated_files_guard = __commonJS({
23885
+ "dist/opencode-integration/plugins/generated-files-guard.js"(exports2) {
23886
+ "use strict";
23887
+ Object.defineProperty(exports2, "__esModule", { value: true });
23888
+ exports2.GUARD_PLUGIN_FILENAME = exports2.GUARD_MESSAGE = void 0;
23889
+ exports2.isEditorComponentManifest = isEditorComponentManifest;
23890
+ exports2.extractWritePaths = extractWritePaths;
23891
+ exports2.buildGeneratedFilesGuardSource = buildGeneratedFilesGuardSource;
23892
+ exports2.writeGeneratedFilesGuardPlugin = writeGeneratedFilesGuardPlugin;
23893
+ var write_plugin_1 = require_write_plugin();
23894
+ var ERC_MANIFEST_RE = /(^|\/)src\/extensions\/site\/components\/.+\.generated\.tsx?$/;
23895
+ exports2.GUARD_MESSAGE = "BLOCKED: this editor-react-component manifest is auto-generated. Do not create or edit it by hand \u2014 edit the *.tsx / *.module.css / *.props.ts source and regenerate with `npx wix build && npx wix generate manifest`, or override values in the component's *.extension.ts. Do not re-attempt the blocked path; the whole call was rejected, so resubmit any other paths it carried \u2014 they were not written. Only *.generated.ts under src/extensions/site/components/ is blocked.";
23896
+ function isEditorComponentManifest(path) {
23897
+ return ERC_MANIFEST_RE.test(path);
23898
+ }
23899
+ function extractWritePaths(tool, args) {
23900
+ if (tool === "write" || tool === "edit") {
23901
+ return typeof args.filePath === "string" ? [args.filePath] : [];
23902
+ }
23903
+ const list = tool === "batch-write" ? args.files : tool === "multi-edit" ? args.edits : void 0;
23904
+ if (!list)
23905
+ return [];
23906
+ return list.map((item) => item.path).filter((p) => typeof p === "string");
23907
+ }
23908
+ exports2.GUARD_PLUGIN_FILENAME = "generated-files-guard.ts";
23909
+ function buildGeneratedFilesGuardSource() {
23910
+ return `// Generated by @wix/ditto-codegen (generated-files-guard). Do not edit.
23911
+ const ERC_MANIFEST_RE = /${ERC_MANIFEST_RE.source}/;
23912
+ const GUARD_MESSAGE = ${JSON.stringify(exports2.GUARD_MESSAGE)};
23913
+
23914
+ function extractWritePaths(tool, args) {
23915
+ if (tool === "${"write"}" || tool === "${"edit"}") {
23916
+ return typeof args.filePath === "string" ? [args.filePath] : [];
23917
+ }
23918
+ const list =
23919
+ tool === "${"batch-write"}" ? args.files : tool === "${"multi-edit"}" ? args.edits : undefined;
23920
+ if (!list) return [];
23921
+ return list
23922
+ .map((item) => item.path)
23923
+ .filter((p) => typeof p === "string");
23924
+ }
23925
+
23926
+ export const GeneratedFilesGuard = async () => ({
23927
+ "tool.execute.before": async (input, output) => {
23928
+ const blocked = extractWritePaths(input.tool, output.args).filter((p) =>
23929
+ ERC_MANIFEST_RE.test(p),
23930
+ );
23931
+ if (blocked.length > 0) {
23932
+ throw new Error(GUARD_MESSAGE + " (blocked: " + blocked.join(", ") + ")");
23933
+ }
23934
+ },
23935
+ });
23936
+ `;
23937
+ }
23938
+ async function writeGeneratedFilesGuardPlugin() {
23939
+ await (0, write_plugin_1.writeGeneratedPlugin)(exports2.GUARD_PLUGIN_FILENAME, buildGeneratedFilesGuardSource());
23940
+ }
23941
+ }
23942
+ });
23943
+
23944
+ // dist/opencode-integration/plugins/tool-policies.js
23902
23945
  var require_tool_policies3 = __commonJS({
23903
- "dist/opencode-integration/tool-policies.js"(exports2) {
23946
+ "dist/opencode-integration/plugins/tool-policies.js"(exports2) {
23904
23947
  "use strict";
23905
23948
  Object.defineProperty(exports2, "__esModule", { value: true });
23906
- exports2.TOOL_POLICIES_PLUGIN_FILENAME = exports2.GENERATE_CMD_RE = void 0;
23907
- exports2.policyMatchesPath = policyMatchesPath;
23908
- exports2.skillRootOf = skillRootOf;
23949
+ exports2.TOOL_POLICIES_FILENAME = exports2.GENERATE_CMD_RE = void 0;
23909
23950
  exports2.buildToolPoliciesPluginSource = buildToolPoliciesPluginSource;
23910
23951
  exports2.writeToolPoliciesPlugin = writeToolPoliciesPlugin;
23911
- exports2.validateToolPolicies = validateToolPolicies;
23912
- var promises_1 = require("fs/promises");
23913
- var path_12 = require("path");
23914
23952
  var ditto_codegen_types_12 = require_dist4();
23915
- var logger_12 = require_logger();
23916
- var generated_plugins_1 = require_generated_plugins();
23917
- var skills_override_12 = require_skills_override();
23953
+ var write_plugin_1 = require_write_plugin();
23918
23954
  exports2.GENERATE_CMD_RE = /\bwix\s+(schema\s+)?generate\b/;
23919
- function policyMatchesPath(policy, path) {
23920
- return policy.pathFragments.some((fragment) => path.includes(fragment));
23921
- }
23922
- function skillRootOf(fragment) {
23923
- return fragment.split("/")[0];
23924
- }
23925
- exports2.TOOL_POLICIES_PLUGIN_FILENAME = "tool-policies.ts";
23955
+ exports2.TOOL_POLICIES_FILENAME = "tool-policies.ts";
23926
23956
  function buildToolPoliciesPluginSource(policies) {
23927
23957
  const emitKind = (type, toRuntime, extraFilter = () => true) => JSON.stringify(policies.filter((policy) => policy.type === type).filter(extraFilter).map(toRuntime));
23928
23958
  const emitReads = (mode) => emitKind("read", ({ pathFragments, message }) => ({ pathFragments, message }), (policy) => policy.mode === mode);
@@ -24045,7 +24075,26 @@ export const ToolPolicies = async () => ({
24045
24075
  `;
24046
24076
  }
24047
24077
  async function writeToolPoliciesPlugin(policies) {
24048
- await (0, generated_plugins_1.writeGeneratedPlugin)(exports2.TOOL_POLICIES_PLUGIN_FILENAME, buildToolPoliciesPluginSource(policies));
24078
+ await (0, write_plugin_1.writeGeneratedPlugin)(exports2.TOOL_POLICIES_FILENAME, buildToolPoliciesPluginSource(policies));
24079
+ }
24080
+ }
24081
+ });
24082
+
24083
+ // dist/opencode-integration/plugins/tool-policies-drift.js
24084
+ var require_tool_policies_drift = __commonJS({
24085
+ "dist/opencode-integration/plugins/tool-policies-drift.js"(exports2) {
24086
+ "use strict";
24087
+ Object.defineProperty(exports2, "__esModule", { value: true });
24088
+ exports2.validateToolPolicies = validateToolPolicies;
24089
+ var promises_1 = require("fs/promises");
24090
+ var path_12 = require("path");
24091
+ var logger_12 = require_logger();
24092
+ var skills_override_12 = require_skills_override();
24093
+ function policyMatchesPath(policy, path) {
24094
+ return policy.pathFragments.some((fragment) => path.includes(fragment));
24095
+ }
24096
+ function skillRootOf(fragment) {
24097
+ return fragment.split("/")[0];
24049
24098
  }
24050
24099
  async function walkFiles(dir, depth = 6) {
24051
24100
  if (depth === 0)
@@ -24147,70 +24196,33 @@ export const ToolPolicies = async () => ({
24147
24196
  }
24148
24197
  });
24149
24198
 
24150
- // dist/opencode-integration/generated-files-guard.js
24151
- var require_generated_files_guard = __commonJS({
24152
- "dist/opencode-integration/generated-files-guard.js"(exports2) {
24199
+ // dist/opencode-integration/plugins/index.js
24200
+ var require_plugins3 = __commonJS({
24201
+ "dist/opencode-integration/plugins/index.js"(exports2) {
24153
24202
  "use strict";
24154
24203
  Object.defineProperty(exports2, "__esModule", { value: true });
24155
- exports2.GUARD_MESSAGE = void 0;
24156
- exports2.isEditorComponentManifest = isEditorComponentManifest;
24157
- exports2.extractWritePaths = extractWritePaths;
24158
- exports2.buildGeneratedFilesGuardSource = buildGeneratedFilesGuardSource;
24159
- exports2.writeGeneratedFilesGuardPlugin = writeGeneratedFilesGuardPlugin;
24160
- var generated_plugins_1 = require_generated_plugins();
24161
- var ERC_MANIFEST_RE = /(^|\/)src\/extensions\/site\/components\/.+\.generated\.tsx?$/;
24162
- exports2.GUARD_MESSAGE = "BLOCKED: this editor-react-component manifest is auto-generated. Do not create or edit it by hand \u2014 edit the *.tsx / *.module.css / *.props.ts source and regenerate with `npx wix build && npx wix generate manifest`, or override values in the component's *.extension.ts. Do not re-attempt the blocked path; the whole call was rejected, so resubmit any other paths it carried \u2014 they were not written. Only *.generated.ts under src/extensions/site/components/ is blocked.";
24163
- function isEditorComponentManifest(path) {
24164
- return ERC_MANIFEST_RE.test(path);
24165
- }
24166
- function extractWritePaths(tool, args) {
24167
- if (tool === "write" || tool === "edit") {
24168
- return typeof args.filePath === "string" ? [args.filePath] : [];
24169
- }
24170
- const list = tool === "batch-write" ? args.files : tool === "multi-edit" ? args.edits : void 0;
24171
- if (!list)
24172
- return [];
24173
- return list.map((item) => item.path).filter((p) => typeof p === "string");
24174
- }
24175
- var GUARD_PLUGIN_FILENAME = "generated-files-guard.ts";
24176
- function buildGeneratedFilesGuardSource() {
24177
- return `// Generated by @wix/ditto-codegen (generated-files-guard). Do not edit.
24178
- const ERC_MANIFEST_RE = /${ERC_MANIFEST_RE.source}/;
24179
- const GUARD_MESSAGE = ${JSON.stringify(exports2.GUARD_MESSAGE)};
24180
-
24181
- function extractWritePaths(tool, args) {
24182
- if (tool === "${"write"}" || tool === "${"edit"}") {
24183
- return typeof args.filePath === "string" ? [args.filePath] : [];
24184
- }
24185
- const list =
24186
- tool === "${"batch-write"}" ? args.files : tool === "${"multi-edit"}" ? args.edits : undefined;
24187
- if (!list) return [];
24188
- return list
24189
- .map((item) => item.path)
24190
- .filter((p) => typeof p === "string");
24191
- }
24192
-
24193
- export const GeneratedFilesGuard = async () => ({
24194
- "tool.execute.before": async (input, output) => {
24195
- const blocked = extractWritePaths(input.tool, output.args).filter((p) =>
24196
- ERC_MANIFEST_RE.test(p),
24197
- );
24198
- if (blocked.length > 0) {
24199
- throw new Error(GUARD_MESSAGE + " (blocked: " + blocked.join(", ") + ")");
24200
- }
24201
- },
24202
- });
24203
- `;
24204
- }
24205
- async function writeGeneratedFilesGuardPlugin() {
24206
- await (0, generated_plugins_1.writeGeneratedPlugin)(GUARD_PLUGIN_FILENAME, buildGeneratedFilesGuardSource());
24204
+ exports2.validateToolPolicies = void 0;
24205
+ exports2.writeGeneratedPlugins = writeGeneratedPlugins;
24206
+ var generated_files_guard_1 = require_generated_files_guard();
24207
+ var subagent_tool_logger_1 = require_subagent_tool_logger();
24208
+ var tool_policies_1 = require_tool_policies3();
24209
+ var tool_policies_drift_1 = require_tool_policies_drift();
24210
+ Object.defineProperty(exports2, "validateToolPolicies", { enumerable: true, get: function() {
24211
+ return tool_policies_drift_1.validateToolPolicies;
24212
+ } });
24213
+ async function writeGeneratedPlugins(toolPolicies) {
24214
+ await Promise.all([
24215
+ (0, generated_files_guard_1.writeGeneratedFilesGuardPlugin)(),
24216
+ (0, subagent_tool_logger_1.writeSubagentToolLoggerPlugin)(),
24217
+ (0, tool_policies_1.writeToolPoliciesPlugin)(toolPolicies)
24218
+ ]);
24207
24219
  }
24208
24220
  }
24209
24221
  });
24210
24222
 
24211
- // dist/plugin-host.js
24223
+ // dist/plugin-system/plugin-host.js
24212
24224
  var require_plugin_host = __commonJS({
24213
- "dist/plugin-host.js"(exports2) {
24225
+ "dist/plugin-system/plugin-host.js"(exports2) {
24214
24226
  "use strict";
24215
24227
  Object.defineProperty(exports2, "__esModule", { value: true });
24216
24228
  exports2.buildPluginHost = void 0;
@@ -24230,9 +24242,9 @@ var require_plugin_host = __commonJS({
24230
24242
  }
24231
24243
  });
24232
24244
 
24233
- // dist/plugin-artifacts.js
24245
+ // dist/plugin-system/plugin-artifacts.js
24234
24246
  var require_plugin_artifacts = __commonJS({
24235
- "dist/plugin-artifacts.js"(exports2) {
24247
+ "dist/plugin-system/plugin-artifacts.js"(exports2) {
24236
24248
  "use strict";
24237
24249
  Object.defineProperty(exports2, "__esModule", { value: true });
24238
24250
  exports2.collectPluginArtifacts = collectPluginArtifacts;
@@ -24256,9 +24268,9 @@ var require_plugin_artifacts = __commonJS({
24256
24268
  }
24257
24269
  });
24258
24270
 
24259
- // dist/fetch-scheduler.js
24271
+ // dist/jobs/fetch-scheduler.js
24260
24272
  var require_fetch_scheduler = __commonJS({
24261
- "dist/fetch-scheduler.js"(exports2) {
24273
+ "dist/jobs/fetch-scheduler.js"(exports2) {
24262
24274
  "use strict";
24263
24275
  Object.defineProperty(exports2, "__esModule", { value: true });
24264
24276
  exports2.FetchScheduler = exports2.MAX_AWAITED_JOB_IDS = exports2.MAX_MISSING_JOB_RECHECKS = exports2.ERROR_BACKOFF_MS = exports2.POST_JOB_INTERVAL_MS = exports2.MIN_FETCH_INTERVAL_MS = void 0;
@@ -24408,21 +24420,21 @@ var require_fetch_scheduler = __commonJS({
24408
24420
  }
24409
24421
  });
24410
24422
 
24411
- // dist/nudge-listener-server.js
24423
+ // dist/jobs/nudge-listener-server.js
24412
24424
  var require_nudge_listener_server = __commonJS({
24413
- "dist/nudge-listener-server.js"(exports2) {
24425
+ "dist/jobs/nudge-listener-server.js"(exports2) {
24414
24426
  "use strict";
24415
24427
  Object.defineProperty(exports2, "__esModule", { value: true });
24416
- exports2.NudgeListenerServer = exports2.BIND_RETRY_DELAY_MS = exports2.BIND_RETRIES = exports2.MAX_LOGGED_PATH_LENGTH = exports2.JOB_ID_PATTERN = exports2.JOB_FETCH_PATH = exports2.JOB_FETCH_PORT = void 0;
24428
+ exports2.NudgeListenerServer = exports2.BIND_RETRY_DELAY_MS = exports2.MAX_LOGGED_PATH_LENGTH = exports2.JOB_FETCH_PATH = exports2.JOB_FETCH_PORT = void 0;
24417
24429
  var node_http_1 = require("node:http");
24418
24430
  var logger_12 = require_logger();
24419
24431
  var utils_12 = require_utils9();
24420
24432
  var fetch_scheduler_1 = require_fetch_scheduler();
24421
24433
  exports2.JOB_FETCH_PORT = 52402;
24422
24434
  exports2.JOB_FETCH_PATH = "/_wix/codegen/fetch-jobs";
24423
- exports2.JOB_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
24435
+ var JOB_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
24424
24436
  exports2.MAX_LOGGED_PATH_LENGTH = 128;
24425
- exports2.BIND_RETRIES = 5;
24437
+ var BIND_RETRIES = 5;
24426
24438
  exports2.BIND_RETRY_DELAY_MS = 300;
24427
24439
  var NudgeListenerServer = class {
24428
24440
  constructor(deps, port = exports2.JOB_FETCH_PORT) {
@@ -24474,7 +24486,7 @@ var require_nudge_listener_server = __commonJS({
24474
24486
  try {
24475
24487
  return await this.listenOnce();
24476
24488
  } catch (error) {
24477
- const inUse = error?.code === "EADDRINUSE" && attempt < exports2.BIND_RETRIES;
24489
+ const inUse = error?.code === "EADDRINUSE" && attempt < BIND_RETRIES;
24478
24490
  if (!inUse)
24479
24491
  throw error;
24480
24492
  await (0, utils_12.delay)(exports2.BIND_RETRY_DELAY_MS);
@@ -24522,7 +24534,7 @@ var require_nudge_listener_server = __commonJS({
24522
24534
  return;
24523
24535
  }
24524
24536
  const nudgedId = url.searchParams.get("jobId");
24525
- const usable = nudgedId === null || exports2.JOB_ID_PATTERN.test(nudgedId);
24537
+ const usable = nudgedId === null || JOB_ID_PATTERN.test(nudgedId);
24526
24538
  if (!usable) {
24527
24539
  logger_12.logger.warn("[JobFetch] Nudge carried an unusable jobId", {
24528
24540
  length: nudgedId.length
@@ -24546,9 +24558,9 @@ var require_nudge_listener_server = __commonJS({
24546
24558
  }
24547
24559
  });
24548
24560
 
24549
- // dist/job-fetching.js
24561
+ // dist/jobs/job-fetching.js
24550
24562
  var require_job_fetching = __commonJS({
24551
- "dist/job-fetching.js"(exports2) {
24563
+ "dist/jobs/job-fetching.js"(exports2) {
24552
24564
  "use strict";
24553
24565
  Object.defineProperty(exports2, "__esModule", { value: true });
24554
24566
  exports2.JobDeliveryMode = void 0;
@@ -24638,10 +24650,8 @@ var logger_1 = require_logger();
24638
24650
  var skills_installer_1 = require_skills_installer();
24639
24651
  var rules_writer_1 = require_rules_writer();
24640
24652
  var tools_writer_1 = require_tools_writer();
24641
- var tool_policies_1 = require_tool_policies3();
24653
+ var plugins_1 = require_plugins3();
24642
24654
  var skills_override_1 = require_skills_override();
24643
- var generated_files_guard_1 = require_generated_files_guard();
24644
- var subagent_tool_logger_1 = require_subagent_tool_logger();
24645
24655
  var plugin_artifacts_1 = require_plugin_artifacts();
24646
24656
  var config_1 = require_config();
24647
24657
  var environments_1 = require_environments();
@@ -24725,11 +24735,9 @@ async function initOpenCode() {
24725
24735
  ]),
24726
24736
  (0, skills_installer_1.applySkillsOverride)((0, codegen_flow_helpers_1.getOutputPath)(), logger_1.logger),
24727
24737
  (0, tools_writer_1.writeToolFiles)(pluginArtifacts.tools),
24728
- (0, generated_files_guard_1.writeGeneratedFilesGuardPlugin)(),
24729
- (0, subagent_tool_logger_1.writeSubagentToolLoggerPlugin)(),
24730
- (0, tool_policies_1.writeToolPoliciesPlugin)(toolPolicies)
24738
+ (0, plugins_1.writeGeneratedPlugins)(toolPolicies)
24731
24739
  ]);
24732
- void (0, tool_policies_1.validateToolPolicies)(toolPolicies, [
24740
+ void (0, plugins_1.validateToolPolicies)(toolPolicies, [
24733
24741
  skills_override_1.SKILLS_DIR,
24734
24742
  (0, path_1.join)((0, codegen_flow_helpers_1.getOutputPath)(), ".agents", "skills")
24735
24743
  ]);