@wix/ditto-codegen-public 1.0.448 → 1.0.450

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 +175 -44
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -11707,6 +11707,7 @@ var require_constants5 = __commonJS({
11707
11707
  exports2.detectExtension = detectExtension;
11708
11708
  exports2.toTitleCase = toTitleCase;
11709
11709
  exports2.extractExtensionName = extractExtensionName;
11710
+ exports2.matchQuotedExtensionConfigProperty = matchQuotedExtensionConfigProperty;
11710
11711
  exports2.extractExtensionDisplayTitle = extractExtensionDisplayTitle;
11711
11712
  exports2.injectCreatedBy = injectCreatedBy;
11712
11713
  var ditto_codegen_types_12 = require_dist4();
@@ -11937,10 +11938,17 @@ skills or wix-mcp for SDK-shape errors; returns when the build is clean
11937
11938
  or reports what it couldn't fix. Validation step only \u2014 never generates features.`;
11938
11939
  var VALIDATOR_PROMPT = `Run 'validate({ runBuild: true })', fix the errors it reports, and re-run until
11939
11940
  it passes. You are fixing EXISTING code \u2014 do NOT add features or rewrite whole
11940
- files. NEVER force a green build by suppressing types: no 'as any', no
11941
+ files, and do NOT run 'npx wix generate manifest' \u2014 that is the caller's step.
11942
+ NEVER force a green build by suppressing types: no 'as any', no
11941
11943
  '@ts-ignore', no NEW '@ts-expect-error', and do NOT switch a correct named import to
11942
11944
  'import * as' just to satisfy tsc \u2014 that ships code that compiles but breaks
11943
- at runtime. Leave an EXISTING '@ts-expect-error' alone when a skill mandates it
11945
+ at runtime. Just as forbidden is satisfying tsc by CHANGING RUNTIME BEHAVIOUR:
11946
+ do not add values to 'defaultProps' the component should not default (an empty
11947
+ 'id' or 'className' is a behaviour change, not a fix), and do not weaken a
11948
+ constraint into a no-op ('Omit<T, never>' is just 'T'). When a type error means
11949
+ the shape a skill taught does not match the real exported type, fix the code to
11950
+ the real type and report the mismatch.
11951
+ Leave an EXISTING '@ts-expect-error' alone when a skill mandates it
11944
11952
  (e.g. a context provider's 'moduleSpecifier' import); removing it is not a fix.
11945
11953
  A type error on a Wix SDK method/namespace/parameter means the call is WRONG: look up the correct
11946
11954
  usage via skills or wix-mcp ('SearchWixSDKDocumentation' \u2192
@@ -15571,7 +15579,7 @@ IMPLEMENTATION WORKFLOW:
15571
15579
  2. **Research**: Load the \`wix-app\` skill per extension type. SKIP this step entirely if the skill + KNOWN WIX APIS cover everything (common for dashboard + data-collection apps). Otherwise delegate ONLY to search for an API you genuinely can't identify \u2014 \`codegen-wix-docs\` (SDK), \`codegen-wds-docs\` (WDS), both in ONE response if both needed; pass each the question, not a known doc link \u2014 and wait for the summaries before building.
15572
15580
  3. **Build**: Write files incrementally \u2014 group by logical section, NOT all at once. For complex tasks (300+ total lines across files), split into multiple \`batch-write\` calls. NEVER hold back writing until all code is planned \u2014 write each logical piece as soon as it is ready. Build all extensions before registering.
15573
15581
  4. **Register**: Register all extensions in \`src/extensions.ts\`.
15574
- 5. **Validate**: Dispatch ONE \`task({ subagent: "codegen-validator", prompt: "Run validate({ runBuild: true }) \u2014 it typechecks AND builds in a single pass (tsc runs first and fails fast before the build). Fix any errors and re-run until it passes. Pass installDeps: true only if package.json changed and npm install was not already run in this session." })\`. Wait for the subagent to return. Do NOT call \`validate\` directly from the primary agent, and do NOT make a separate tsc-only call first \u2014 the single runBuild pass already fails fast on type errors. VERIFY the subagent actually FINISHED with a clean build: read its returned summary and confirm it converged. If it reports remaining/unresolved errors or was cut off before finishing (e.g. "Maximum steps reached"), do NOT treat it as success \u2014 re-dispatch \`codegen-validator\` to finish the remaining errors before moving on. After the validator confirms a clean build, if you created or modified an EDITOR_REACT_COMPONENT extension in this task, run \`npx wix generate manifest\` via bash (idempotent \u2014 safe to run even if the validator already ran it).
15582
+ 5. **Validate**: Dispatch ONE \`task({ subagent: "codegen-validator", prompt: "Run validate({ runBuild: true }) \u2014 it typechecks AND builds in a single pass (tsc runs first and fails fast before the build). Fix any errors and re-run until it passes. Pass installDeps: true only if package.json changed and npm install was not already run in this session." })\`. Wait for the subagent to return. Do NOT call \`validate\` directly from the primary agent, and do NOT make a separate tsc-only call first \u2014 the single runBuild pass already fails fast on type errors. VERIFY the subagent actually FINISHED with a clean build: read its returned summary and confirm it converged. If it reports remaining/unresolved errors or was cut off before finishing (e.g. "Maximum steps reached"), do NOT treat it as success \u2014 re-dispatch \`codegen-validator\` to finish the remaining errors before moving on. After the validator confirms a clean build, if you created or modified an EDITOR_REACT_COMPONENT extension in this task, run \`npx wix generate manifest\` via bash (the validator is instructed not to run it, so this is the only run).
15575
15583
  6. **Declare permissions**: If the generated code requires Wix app permissions, call \`required-permissions\` ONCE with their SCOPE IDs (see PERMISSIONS below). Skip this step entirely if no permissions are needed.
15576
15584
  7. **Final message**: Your last message is returned to the user as the codegen output \u2014 keep it short and plain (a sentence or two on what the app now does). Do NOT mention permissions/scopes here (see PERMISSIONS) and follow OUTPUT MESSAGE below.
15577
15585
  8. **Stop**: STOP immediately. Do NOT refactor, clean up, or verify.
@@ -15581,6 +15589,10 @@ FILE CREATION:
15581
15589
  - Keep each file under 200 lines. Split into types.ts, utils.ts if needed.
15582
15590
  - Do NOT output comments in code unless they explain non-obvious logic.
15583
15591
 
15592
+ GENERATED FILES:
15593
+ - \`src/extensions/site/components/**/*.generated.ts\` is an auto-generated editor-react-component manifest \u2014 NEVER hand-edit. Change a manifest VALUE in the component's \`*.extension.ts\`; change anything else in the \`*.tsx\` / \`*.module.css\` / \`*.props.ts\` source, then regenerate (workflow step 5). No other \`.generated.ts\` path is affected.
15594
+ - A write guard rejects \`write\`/\`edit\`/\`batch-write\`/\`multi-edit\` there, dropping the ENTIRE call \u2014 never batch that path with real edits, or those are lost too and must be resubmitted.
15595
+
15584
15596
  TYPESCRIPT:
15585
15597
  - The project enables \`verbatimModuleSyntax\`. Type-only imports MUST use \`import type\`.
15586
15598
 
@@ -17646,44 +17658,67 @@ var require_opencode_runner = __commonJS({
17646
17658
  }
17647
17659
  });
17648
17660
 
17649
- // dist/opencode-integration/collect-extensions-created.js
17650
- var require_collect_extensions_created = __commonJS({
17651
- "dist/opencode-integration/collect-extensions-created.js"(exports2) {
17661
+ // dist/opencode-integration/extension-metadata.js
17662
+ var require_extension_metadata = __commonJS({
17663
+ "dist/opencode-integration/extension-metadata.js"(exports2) {
17652
17664
  "use strict";
17653
17665
  Object.defineProperty(exports2, "__esModule", { value: true });
17654
- exports2.collectInsertedExtensionsMetadata = collectInsertedExtensionsMetadata;
17655
- exports2.buildExtensionsJobPayload = buildExtensionsJobPayload;
17666
+ exports2.buildJobExtension = exports2.resolveFilePath = exports2.isFileInExtensionFolder = exports2.getExtensionDirectory = void 0;
17667
+ exports2.collectDataCollectionEntries = collectDataCollectionEntries;
17656
17668
  var path_12 = require("path");
17657
17669
  var promises_1 = require("fs/promises");
17658
- var ditto_codegen_types_12 = require_dist4();
17659
17670
  var constants_1 = require_constants5();
17660
17671
  var DATA_COLLECTION_MARKER = /import\s+(?:type\s+)?\{[^}]*\bDataCollection\b[^}]*\}\s+from\s+['"](?:@wix\/astro\/builders|@wix\/custom-extensions)['"]/;
17661
17672
  var getExtensionDirectory = (extensionDefinitionPath) => `${path_12.posix.dirname(extensionDefinitionPath)}/`;
17662
- var isFileInExtensionFolder = (filePath, extensionDefinitionPath) => filePath === extensionDefinitionPath || filePath.startsWith(getExtensionDirectory(extensionDefinitionPath));
17673
+ exports2.getExtensionDirectory = getExtensionDirectory;
17674
+ var isFileInExtensionFolder = (filePath, extensionDefinitionPath) => filePath === extensionDefinitionPath || filePath.startsWith((0, exports2.getExtensionDirectory)(extensionDefinitionPath));
17675
+ exports2.isFileInExtensionFolder = isFileInExtensionFolder;
17663
17676
  var resolveFilePath = (outputPath, filePath) => (0, path_12.isAbsolute)(filePath) ? filePath : (0, path_12.join)(outputPath, filePath);
17664
- var buildJobExtension = (definitionPath, extensionType, contentForTitle, titlePath, files) => ({
17665
- path: definitionPath,
17666
- extensionType,
17667
- title: (0, constants_1.extractExtensionDisplayTitle)(contentForTitle, titlePath),
17668
- files: [...files],
17669
- isSpi: (0, constants_1.isSpiExtension)(extensionType)
17670
- });
17671
- async function collectDataCollectionEntries(outputPath, parentExtensionFile, folderFiles) {
17677
+ exports2.resolveFilePath = resolveFilePath;
17678
+ async function collectDataCollectionEntries(outputPath, parentPath, folderFiles) {
17672
17679
  const entries = [];
17680
+ const parentChange = folderFiles.find((file) => file.path === parentPath);
17673
17681
  for (const file of folderFiles) {
17674
- if (file.path === parentExtensionFile.path)
17682
+ if (file.path === parentPath)
17675
17683
  continue;
17676
17684
  try {
17677
- const content = await (0, promises_1.readFile)(resolveFilePath(outputPath, file.path), "utf-8");
17685
+ const content = await (0, promises_1.readFile)((0, exports2.resolveFilePath)(outputPath, file.path), "utf-8");
17678
17686
  if (!DATA_COLLECTION_MARKER.test(content))
17679
17687
  continue;
17680
- entries.push(buildJobExtension(parentExtensionFile.path, "dataCollection", content, file.path, [parentExtensionFile, file]));
17688
+ entries.push((0, exports2.buildJobExtension)(parentPath, "dataCollection", content, file.path, parentChange ? [parentChange, file] : [file]));
17681
17689
  } catch {
17682
17690
  continue;
17683
17691
  }
17684
17692
  }
17685
17693
  return entries;
17686
17694
  }
17695
+ var buildJobExtension = (definitionPath, extensionType, contentForTitle, titlePath, files) => {
17696
+ const routePath = (0, constants_1.matchQuotedExtensionConfigProperty)(contentForTitle, "routePath");
17697
+ const id = (0, constants_1.matchQuotedExtensionConfigProperty)(contentForTitle, "id");
17698
+ return {
17699
+ path: definitionPath,
17700
+ extensionType,
17701
+ title: (0, constants_1.extractExtensionDisplayTitle)(contentForTitle, titlePath),
17702
+ ...routePath !== null && { routePath },
17703
+ ...id !== null && { id },
17704
+ files: [...files],
17705
+ isSpi: (0, constants_1.isSpiExtension)(extensionType)
17706
+ };
17707
+ };
17708
+ exports2.buildJobExtension = buildJobExtension;
17709
+ }
17710
+ });
17711
+
17712
+ // dist/opencode-integration/collect-extensions-created.js
17713
+ var require_collect_extensions_created = __commonJS({
17714
+ "dist/opencode-integration/collect-extensions-created.js"(exports2) {
17715
+ "use strict";
17716
+ Object.defineProperty(exports2, "__esModule", { value: true });
17717
+ exports2.collectInsertedExtensionsMetadata = collectInsertedExtensionsMetadata;
17718
+ var promises_1 = require("fs/promises");
17719
+ var ditto_codegen_types_12 = require_dist4();
17720
+ var constants_1 = require_constants5();
17721
+ var extension_metadata_1 = require_extension_metadata();
17687
17722
  async function collectInsertedExtensionsMetadata(outputPath, files) {
17688
17723
  const results = [];
17689
17724
  for (const fileChange of files) {
@@ -17692,26 +17727,121 @@ var require_collect_extensions_created = __commonJS({
17692
17727
  if (!(0, constants_1.isExtensionsFile)(fileChange.path))
17693
17728
  continue;
17694
17729
  try {
17695
- const content = await (0, promises_1.readFile)(resolveFilePath(outputPath, fileChange.path), "utf-8");
17730
+ const content = await (0, promises_1.readFile)((0, extension_metadata_1.resolveFilePath)(outputPath, fileChange.path), "utf-8");
17731
+ const extensionType = (0, constants_1.detectExtension)(content);
17732
+ if (!extensionType)
17733
+ continue;
17734
+ const folderFiles = files.filter((file) => (0, extension_metadata_1.isFileInExtensionFolder)(file.path, fileChange.path));
17735
+ if (extensionType === "dataCollections") {
17736
+ const dataCollectionEntries = await (0, extension_metadata_1.collectDataCollectionEntries)(outputPath, fileChange.path, folderFiles);
17737
+ results.push(...dataCollectionEntries);
17738
+ continue;
17739
+ }
17740
+ results.push((0, extension_metadata_1.buildJobExtension)(fileChange.path, extensionType, content, fileChange.path, folderFiles));
17741
+ } catch {
17742
+ continue;
17743
+ }
17744
+ }
17745
+ return results;
17746
+ }
17747
+ }
17748
+ });
17749
+
17750
+ // dist/opencode-integration/collect-extensions-updated.js
17751
+ var require_collect_extensions_updated = __commonJS({
17752
+ "dist/opencode-integration/collect-extensions-updated.js"(exports2) {
17753
+ "use strict";
17754
+ Object.defineProperty(exports2, "__esModule", { value: true });
17755
+ exports2.collectUpdatedExtensionsMetadata = collectUpdatedExtensionsMetadata;
17756
+ var child_process_1 = require("child_process");
17757
+ var path_12 = require("path");
17758
+ var util_1 = require("util");
17759
+ var promises_1 = require("fs/promises");
17760
+ var constants_1 = require_constants5();
17761
+ var logger_12 = require_logger();
17762
+ var extension_metadata_1 = require_extension_metadata();
17763
+ var execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
17764
+ var ownsItsFolder = (candidate) => {
17765
+ if (!(0, constants_1.isExtensionsFile)(candidate))
17766
+ return false;
17767
+ const directory = path_12.posix.dirname(candidate);
17768
+ return directory !== "." && path_12.posix.dirname(directory) !== ".";
17769
+ };
17770
+ async function listCandidateDefinitionPaths(outputPath) {
17771
+ try {
17772
+ const { stdout } = await execFileAsync("git", ["ls-files", "-z"], {
17773
+ cwd: outputPath,
17774
+ maxBuffer: 10 * 1024 * 1024
17775
+ });
17776
+ return stdout.split("\0").filter(Boolean).filter(ownsItsFolder);
17777
+ } catch (error) {
17778
+ logger_12.logger.error("[OpenCode] Failed to list extension definition files", {
17779
+ error: error instanceof Error ? error.message : String(error)
17780
+ });
17781
+ return [];
17782
+ }
17783
+ }
17784
+ var resolveOwningDefinitionPath = (filePath, candidates) => {
17785
+ if ((0, constants_1.isExtensionsFile)(filePath))
17786
+ return filePath;
17787
+ let longest;
17788
+ let longestFolderLength = -1;
17789
+ for (const candidate of candidates) {
17790
+ const folder = `${path_12.posix.dirname(candidate)}/`;
17791
+ if (filePath.startsWith(folder) && folder.length > longestFolderLength) {
17792
+ longest = candidate;
17793
+ longestFolderLength = folder.length;
17794
+ }
17795
+ }
17796
+ return longest;
17797
+ };
17798
+ async function collectUpdatedExtensionsMetadata(outputPath, files, insertedDefinitionPaths) {
17799
+ const candidates = await listCandidateDefinitionPaths(outputPath);
17800
+ const definitionPaths = /* @__PURE__ */ new Set();
17801
+ for (const fileChange of files) {
17802
+ const definitionPath = resolveOwningDefinitionPath(fileChange.path, candidates);
17803
+ if (definitionPath && !insertedDefinitionPaths.has(definitionPath)) {
17804
+ definitionPaths.add(definitionPath);
17805
+ }
17806
+ }
17807
+ const results = [];
17808
+ for (const definitionPath of definitionPaths) {
17809
+ try {
17810
+ const content = await (0, promises_1.readFile)((0, extension_metadata_1.resolveFilePath)(outputPath, definitionPath), "utf-8");
17696
17811
  const extensionType = (0, constants_1.detectExtension)(content);
17697
17812
  if (!extensionType)
17698
17813
  continue;
17699
- const folderFiles = files.filter((file) => isFileInExtensionFolder(file.path, fileChange.path));
17814
+ const folderFiles = files.filter((file) => (0, extension_metadata_1.isFileInExtensionFolder)(file.path, definitionPath));
17700
17815
  if (extensionType === "dataCollections") {
17701
- const dataCollectionEntries = await collectDataCollectionEntries(outputPath, fileChange, folderFiles);
17816
+ const dataCollectionEntries = await (0, extension_metadata_1.collectDataCollectionEntries)(outputPath, definitionPath, folderFiles);
17702
17817
  results.push(...dataCollectionEntries);
17703
17818
  continue;
17704
17819
  }
17705
- results.push(buildJobExtension(fileChange.path, extensionType, content, fileChange.path, folderFiles));
17820
+ results.push((0, extension_metadata_1.buildJobExtension)(definitionPath, extensionType, content, definitionPath, folderFiles));
17706
17821
  } catch {
17707
17822
  continue;
17708
17823
  }
17709
17824
  }
17710
17825
  return results;
17711
17826
  }
17827
+ }
17828
+ });
17829
+
17830
+ // dist/opencode-integration/extensions-job-payload.js
17831
+ var require_extensions_job_payload = __commonJS({
17832
+ "dist/opencode-integration/extensions-job-payload.js"(exports2) {
17833
+ "use strict";
17834
+ Object.defineProperty(exports2, "__esModule", { value: true });
17835
+ exports2.buildExtensionsJobPayload = buildExtensionsJobPayload;
17836
+ var ditto_codegen_types_12 = require_dist4();
17837
+ var constants_1 = require_constants5();
17838
+ var collect_extensions_created_1 = require_collect_extensions_created();
17839
+ var collect_extensions_updated_1 = require_collect_extensions_updated();
17712
17840
  async function buildExtensionsJobPayload(outputPath, files) {
17713
- const created = await collectInsertedExtensionsMetadata(outputPath, files);
17714
- return { created };
17841
+ const created = await (0, collect_extensions_created_1.collectInsertedExtensionsMetadata)(outputPath, files);
17842
+ 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));
17843
+ const updated = await (0, collect_extensions_updated_1.collectUpdatedExtensionsMetadata)(outputPath, files, insertedDefinitionPaths);
17844
+ return { created, updated };
17715
17845
  }
17716
17846
  }
17717
17847
  });
@@ -17721,7 +17851,7 @@ var require_opencode_integration = __commonJS({
17721
17851
  "dist/opencode-integration/index.js"(exports2) {
17722
17852
  "use strict";
17723
17853
  Object.defineProperty(exports2, "__esModule", { value: true });
17724
- exports2.collectInsertedExtensionsMetadata = exports2.buildExtensionsJobPayload = exports2.OpenCodeTaskTracker = exports2.runOpenCodeGitConflicts = exports2.runOpenCodeAsk = exports2.runOpenCodeIteration = exports2.runOpenCodeInit = void 0;
17854
+ exports2.buildExtensionsJobPayload = exports2.collectInsertedExtensionsMetadata = exports2.OpenCodeTaskTracker = exports2.runOpenCodeGitConflicts = exports2.runOpenCodeAsk = exports2.runOpenCodeIteration = exports2.runOpenCodeInit = void 0;
17725
17855
  var opencode_runner_1 = require_opencode_runner();
17726
17856
  Object.defineProperty(exports2, "runOpenCodeInit", { enumerable: true, get: function() {
17727
17857
  return opencode_runner_1.runOpenCodeInit;
@@ -17740,12 +17870,13 @@ var require_opencode_integration = __commonJS({
17740
17870
  return task_tracker_1.OpenCodeTaskTracker;
17741
17871
  } });
17742
17872
  var collect_extensions_created_1 = require_collect_extensions_created();
17743
- Object.defineProperty(exports2, "buildExtensionsJobPayload", { enumerable: true, get: function() {
17744
- return collect_extensions_created_1.buildExtensionsJobPayload;
17745
- } });
17746
17873
  Object.defineProperty(exports2, "collectInsertedExtensionsMetadata", { enumerable: true, get: function() {
17747
17874
  return collect_extensions_created_1.collectInsertedExtensionsMetadata;
17748
17875
  } });
17876
+ var extensions_job_payload_1 = require_extensions_job_payload();
17877
+ Object.defineProperty(exports2, "buildExtensionsJobPayload", { enumerable: true, get: function() {
17878
+ return extensions_job_payload_1.buildExtensionsJobPayload;
17879
+ } });
17749
17880
  }
17750
17881
  });
17751
17882
 
@@ -17885,7 +18016,7 @@ var require_codegen_flow_helpers = __commonJS({
17885
18016
  var path_12 = __importDefault2(require("path"));
17886
18017
  var codeGenerationService_12 = require_codeGenerationService();
17887
18018
  var git_file_changes_1 = require_git_file_changes();
17888
- var collect_extensions_created_1 = require_collect_extensions_created();
18019
+ var extensions_job_payload_1 = require_extensions_job_payload();
17889
18020
  var agent_io_1 = require_agent_io();
17890
18021
  var utils_12 = require_utils9();
17891
18022
  var DEFAULT_OUTPUT_PATH = "generated-app";
@@ -17894,7 +18025,7 @@ var require_codegen_flow_helpers = __commonJS({
17894
18025
  }
17895
18026
  async function buildFailedRunPayload(error, outputPath, gitBaseline) {
17896
18027
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
17897
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
18028
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
17898
18029
  return {
17899
18030
  requiredPermissions: [],
17900
18031
  error,
@@ -23031,7 +23162,7 @@ var require_opencode_init = __commonJS({
23031
23162
  var model_knobs_1 = require_model_knobs();
23032
23163
  var git_file_changes_1 = require_git_file_changes();
23033
23164
  var inject_created_by_1 = require_inject_created_by();
23034
- var collect_extensions_created_1 = require_collect_extensions_created();
23165
+ var extensions_job_payload_1 = require_extensions_job_payload();
23035
23166
  var biEvents_1 = require_biEvents();
23036
23167
  var executor_1 = require_executor();
23037
23168
  var report_expensive_run_1 = require_report_expensive_run();
@@ -23094,7 +23225,7 @@ var require_opencode_init = __commonJS({
23094
23225
  store.lastAgentMessage = result.agentMessage;
23095
23226
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23096
23227
  const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
23097
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
23228
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23098
23229
  await (0, inject_created_by_1.injectCreatedByIntoExtensionFiles)(outputPath, extensions.created);
23099
23230
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23100
23231
  requiredPermissions: result.requiredPermissions,
@@ -23247,7 +23378,7 @@ var require_opencode_iterate = __commonJS({
23247
23378
  var model_knobs_1 = require_model_knobs();
23248
23379
  var git_file_changes_1 = require_git_file_changes();
23249
23380
  var inject_created_by_1 = require_inject_created_by();
23250
- var collect_extensions_created_1 = require_collect_extensions_created();
23381
+ var extensions_job_payload_1 = require_extensions_job_payload();
23251
23382
  var executor_1 = require_executor();
23252
23383
  var report_expensive_run_1 = require_report_expensive_run();
23253
23384
  var biEvents_1 = require_biEvents();
@@ -23298,7 +23429,7 @@ var require_opencode_iterate = __commonJS({
23298
23429
  store.lastAgentMessage = result.agentMessage;
23299
23430
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23300
23431
  const agentOutput = (0, agent_io_1.readAgentOutput)(outputPath);
23301
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
23432
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23302
23433
  await (0, inject_created_by_1.injectCreatedByIntoExtensionFiles)(outputPath, extensions.created);
23303
23434
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23304
23435
  requiredPermissions: result.requiredPermissions,
@@ -23448,7 +23579,7 @@ var require_opencode_ask = __commonJS({
23448
23579
  var model_knobs_1 = require_model_knobs();
23449
23580
  var git_file_changes_1 = require_git_file_changes();
23450
23581
  var inject_created_by_1 = require_inject_created_by();
23451
- var collect_extensions_created_1 = require_collect_extensions_created();
23582
+ var extensions_job_payload_1 = require_extensions_job_payload();
23452
23583
  var biEvents_1 = require_biEvents();
23453
23584
  var runOpencodeAskFlow = async (chatHistory) => {
23454
23585
  const store = job_context_storage_12.jobContextStorage.getStore();
@@ -23492,7 +23623,7 @@ var require_opencode_ask = __commonJS({
23492
23623
  gitBaseline
23493
23624
  });
23494
23625
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23495
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
23626
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23496
23627
  await (0, inject_created_by_1.injectCreatedByIntoExtensionFiles)(outputPath, extensions.created);
23497
23628
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23498
23629
  files,
@@ -23518,7 +23649,7 @@ var require_opencode_ask = __commonJS({
23518
23649
  } catch (error) {
23519
23650
  const codegenError = (0, ditto_codegen_types_2.toCodegenError)(error);
23520
23651
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23521
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
23652
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23522
23653
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23523
23654
  files,
23524
23655
  extensions,
@@ -23628,7 +23759,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23628
23759
  var logger_12 = require_logger();
23629
23760
  var model_knobs_1 = require_model_knobs();
23630
23761
  var git_file_changes_1 = require_git_file_changes();
23631
- var collect_extensions_created_1 = require_collect_extensions_created();
23762
+ var extensions_job_payload_1 = require_extensions_job_payload();
23632
23763
  var executor_1 = require_executor();
23633
23764
  var report_expensive_run_1 = require_report_expensive_run();
23634
23765
  var biEvents_1 = require_biEvents();
@@ -23676,7 +23807,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23676
23807
  });
23677
23808
  store.lastAgentMessage = result.agentMessage;
23678
23809
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23679
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
23810
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23680
23811
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23681
23812
  requiredPermissions: result.requiredPermissions,
23682
23813
  agentMessage: result.agentMessage,
@@ -23716,7 +23847,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23716
23847
  caughtError = error;
23717
23848
  const codegenError = (0, ditto_codegen_types_12.toCodegenError)(error);
23718
23849
  const files = await (0, git_file_changes_1.collectGitFileChanges)(outputPath, gitBaseline);
23719
- const extensions = await (0, collect_extensions_created_1.buildExtensionsJobPayload)(outputPath, files);
23850
+ const extensions = await (0, extensions_job_payload_1.buildExtensionsJobPayload)(outputPath, files);
23720
23851
  await (0, codegen_flow_helpers_12.updateJobPayload)(localJobContext, {
23721
23852
  requiredPermissions: [],
23722
23853
  error: codegenError,
@@ -24397,7 +24528,7 @@ var require_generated_files_guard = __commonJS({
24397
24528
  exports2.writeGeneratedFilesGuardPlugin = writeGeneratedFilesGuardPlugin;
24398
24529
  var generated_plugins_1 = require_generated_plugins();
24399
24530
  var ERC_MANIFEST_RE = /(^|\/)src\/extensions\/site\/components\/.+\.generated\.tsx?$/;
24400
- exports2.GUARD_MESSAGE = "BLOCKED: *.generated.ts is an auto-generated manifest. Do not create or edit it by hand. It is derived from the component's React markup (*.tsx) and CSS module (*.module.css) and regenerated by running `npx wix build && npx wix generate manifest`. To change it, edit the *.tsx / *.module.css / *.props.ts source and regenerate; to override manifest values, edit the component's *.extension.ts. Do not retry this write.";
24531
+ 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.";
24401
24532
  function isEditorComponentManifest(path) {
24402
24533
  return ERC_MANIFEST_RE.test(path);
24403
24534
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/ditto-codegen-public",
3
- "version": "1.0.448",
3
+ "version": "1.0.450",
4
4
  "description": "AI-powered Wix CLI app generator - standalone executable",
5
5
  "scripts": {
6
6
  "build": "node build.mjs",
@@ -29,5 +29,5 @@
29
29
  "esbuild": "^0.27.2",
30
30
  "vitest": "^4.0.16"
31
31
  },
32
- "falconPackageHash": "27a8a85411a67b2d98ba3e552e82b0f0f61ba567f528937c10504117"
32
+ "falconPackageHash": "aad01f2edbf17040d46676c57f7067a74d44ee6df2af105d575f65b2"
33
33
  }