@wix/ditto-codegen-public 1.0.367 → 1.0.368

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 +73 -2
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -11498,6 +11498,67 @@ var require_rules_writer = __commonJS({
11498
11498
  }
11499
11499
  });
11500
11500
 
11501
+ // dist/opencode-integration/node-modules-guard.js
11502
+ var require_node_modules_guard = __commonJS({
11503
+ "dist/opencode-integration/node-modules-guard.js"(exports2) {
11504
+ "use strict";
11505
+ Object.defineProperty(exports2, "__esModule", { value: true });
11506
+ exports2.GUARD_PLUGIN_PATH = exports2.GUARD_MESSAGE = exports2.MAX_SPELUNK_CALLS = void 0;
11507
+ exports2.isSpelunkCommand = isSpelunkCommand;
11508
+ exports2.buildGuardPluginSource = buildGuardPluginSource;
11509
+ exports2.writeGuardPlugin = writeGuardPlugin;
11510
+ var promises_1 = require("fs/promises");
11511
+ var os_1 = require("os");
11512
+ var path_1 = require("path");
11513
+ var logger_12 = require_logger();
11514
+ var READ_VERB_RE = /(^|[\s|;&(])(grep|rg|cat|head|tail|sed|awk|less|more|strings|find)\b/;
11515
+ var SDK_INTERNALS_RE = /node_modules\/(@wix|vite|astro)\b/;
11516
+ exports2.MAX_SPELUNK_CALLS = 2;
11517
+ exports2.GUARD_MESSAGE = `BLOCKED: node_modules is not a documentation source, and the exploratory budget (${exports2.MAX_SPELUNK_CALLS} lookups) is used up. The API you are hunting is already documented:
11518
+ - Wix Data items CRUD: import { items } from "@wix/data" (items.query/get/insert/update/remove).
11519
+ - Dashboard host SDK (toasts, navigation): import { dashboard } from "@wix/dashboard".
11520
+ For anything more (CSS-module/asset typing, component config, etc.), re-read the wix-app skill's references with batch-read, or call SearchWixSDKDocumentation / ReadFullDocsMethodSchema. Do not retry this command.`;
11521
+ function isSpelunkCommand(command) {
11522
+ return READ_VERB_RE.test(command) && SDK_INTERNALS_RE.test(command);
11523
+ }
11524
+ var GLOBAL_PLUGIN_DIR = (0, path_1.join)((0, os_1.homedir)(), ".config", "opencode", "plugin");
11525
+ var GUARD_PLUGIN_FILENAME = "node-modules-guard.ts";
11526
+ exports2.GUARD_PLUGIN_PATH = (0, path_1.join)(GLOBAL_PLUGIN_DIR, GUARD_PLUGIN_FILENAME);
11527
+ function buildGuardPluginSource() {
11528
+ return `// Generated by @wix/ditto-codegen (node-modules-guard) \u2014 do not edit.
11529
+ const READ_VERB_RE = /${READ_VERB_RE.source}/;
11530
+ const SDK_INTERNALS_RE = /${SDK_INTERNALS_RE.source}/;
11531
+ const MAX_SPELUNK_CALLS = ${exports2.MAX_SPELUNK_CALLS};
11532
+ const GUARD_MESSAGE = ${JSON.stringify(exports2.GUARD_MESSAGE)};
11533
+
11534
+ let spelunkCalls = 0;
11535
+
11536
+ export const NodeModulesGuard = async () => ({
11537
+ "tool.execute.before": async (
11538
+ input: { tool: string },
11539
+ output: { args: { command?: string } },
11540
+ ) => {
11541
+ if (input.tool !== "bash") return;
11542
+ const command = output.args?.command ?? "";
11543
+ if (!READ_VERB_RE.test(command) || !SDK_INTERNALS_RE.test(command)) return;
11544
+ spelunkCalls += 1;
11545
+ if (spelunkCalls > MAX_SPELUNK_CALLS) {
11546
+ throw new Error(GUARD_MESSAGE);
11547
+ }
11548
+ },
11549
+ });
11550
+ `;
11551
+ }
11552
+ async function writeGuardPlugin() {
11553
+ await (0, promises_1.mkdir)(GLOBAL_PLUGIN_DIR, { recursive: true });
11554
+ await (0, promises_1.writeFile)(exports2.GUARD_PLUGIN_PATH, buildGuardPluginSource(), "utf-8");
11555
+ logger_12.logger.info("[OpenCode] Wrote node_modules guard plugin", {
11556
+ path: exports2.GUARD_PLUGIN_PATH
11557
+ });
11558
+ }
11559
+ }
11560
+ });
11561
+
11501
11562
  // ../../node_modules/@wix/ambassador-ctp-ditto-v1-blueprint/cjs/build/types.impl.js
11502
11563
  var require_types_impl2 = __commonJS({
11503
11564
  "../../node_modules/@wix/ambassador-ctp-ditto-v1-blueprint/cjs/build/types.impl.js"(exports2) {
@@ -13476,9 +13537,13 @@ TOOL USAGE:
13476
13537
  - For tools where no batch variant exists (e.g. \`grep\`, \`glob\`), still emit MULTIPLE \`tool_use\` blocks in a SINGLE response when the calls are independent. Sequential turns waste a model round-trip per call.
13477
13538
  - Before calling MCP tools, check if loaded skills already cover the API. Only use MCP for gaps.
13478
13539
  - When using MCP to look up a Wix SDK method, ALWAYS call \`ReadFullDocsMethodSchema\` (not just \`ReadFullDocsArticle\`). The schema is the source of truth for parameter shapes. Code examples in docs may use incorrect call signatures.
13479
- - To discover API shapes, method signatures, or type definitions: ALWAYS try \`SearchWixSDKDocumentation\` or \`ReadFullDocsMethodSchema\` via wix-mcp first. ONLY fall back to grepping \`node_modules\` if the MCP tools return no useful results. Grepping \`node_modules\` as a first resort wastes turns, inflates context, and produces unreliable results \u2014 SDK internals are not a documentation source.
13540
+ - To discover API shapes, method signatures, or type definitions: ALWAYS try \`SearchWixSDKDocumentation\` or \`ReadFullDocsMethodSchema\` via wix-mcp first. ONLY fall back to grepping \`node_modules\` if the MCP tools return no useful results. Grepping \`node_modules\` as a first resort wastes turns, inflates context, and produces unreliable results \u2014 SDK internals are not a documentation source. ENFORCED: after 2 such lookups, further bash inspection of \`node_modules\` Wix/vite/astro internals is rejected.
13480
13541
  - NEVER run preview, dev, release, or promote commands.
13481
13542
 
13543
+ KNOWN WIX APIS (already documented \u2014 do NOT rediscover these from node_modules; for full detail consult the \`wix-app\` skill's references or \`ReadFullDocsMethodSchema\`):
13544
+ - Wix Data items CRUD: \`import { items } from "@wix/data"\` \u2014 \`items.query(collectionId)\`, \`items.get\`, \`items.insert\`, \`items.update\` (replaces the WHOLE item \u2014 send all fields), \`items.remove\`.
13545
+ - Dashboard host SDK (toasts, navigation, modals): \`import { dashboard } from "@wix/dashboard"\`.
13546
+
13482
13547
  IMPLEMENTATION WORKFLOW:
13483
13548
  1. **Plan**: Determine extension types using the \`wix-app\` skill. Generate ALL UUIDs upfront. Include a \`progress\` call (e.g. "Planning extensions").
13484
13549
  2. **Research**: Load relevant SDK docs and skills for each extension type. Include a \`progress\` call (e.g. "Reading documentation").
@@ -13730,6 +13795,7 @@ var require_config = __commonJS({
13730
13795
  var constants_1 = require_constants5();
13731
13796
  var experiments_1 = require_experiments();
13732
13797
  var rules_writer_12 = require_rules_writer();
13798
+ var node_modules_guard_12 = require_node_modules_guard();
13733
13799
  var environments_12 = require_environments();
13734
13800
  exports2.DEFAULT_TIMEOUT_MS = 20 * 60 * 1e3;
13735
13801
  exports2.DEFAULT_MODEL = "anthropic/claude-sonnet-4-6";
@@ -13806,6 +13872,9 @@ var require_config = __commonJS({
13806
13872
  }
13807
13873
  },
13808
13874
  instructions: instructionPaths,
13875
+ // Blocks node_modules SDK-spelunking bash turns after a small exploratory
13876
+ // budget and steers back to the loaded references (see node-modules-guard.ts).
13877
+ plugin: [node_modules_guard_12.GUARD_PLUGIN_PATH],
13809
13878
  autoupdate: false,
13810
13879
  share: "disabled",
13811
13880
  lsp: false,
@@ -20996,6 +21065,7 @@ var logger_1 = require_logger();
20996
21065
  var skills_installer_1 = require_skills_installer();
20997
21066
  var rules_writer_1 = require_rules_writer();
20998
21067
  var tools_writer_1 = require_tools_writer();
21068
+ var node_modules_guard_1 = require_node_modules_guard();
20999
21069
  var plugin_artifacts_1 = require_plugin_artifacts();
21000
21070
  var config_1 = require_config();
21001
21071
  var environments_1 = require_environments();
@@ -21054,7 +21124,8 @@ async function initOpenCode() {
21054
21124
  (0, rules_writer_1.writeRuleFiles)([...envConfig.codegenRules, ...pluginArtifacts.rules]),
21055
21125
  (0, rules_writer_1.writeRuleFiles)(envConfig.askRules),
21056
21126
  (0, skills_installer_1.applySkillsOverride)((0, codegen_flow_helpers_1.getOutputPath)(), logger_1.logger),
21057
- (0, tools_writer_1.writeToolFiles)(pluginArtifacts.tools)
21127
+ (0, tools_writer_1.writeToolFiles)(pluginArtifacts.tools),
21128
+ (0, node_modules_guard_1.writeGuardPlugin)()
21058
21129
  ]);
21059
21130
  }
21060
21131
  async function main(ctx) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/ditto-codegen-public",
3
- "version": "1.0.367",
3
+ "version": "1.0.368",
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": "334ea64feb8da31a445017f2c5a350e11334df997c23ffb1fe7984c9"
32
+ "falconPackageHash": "04ef867afd4c765b5f00fab8d163c32d045403ff32f4c83530f52728"
33
33
  }