@wix/ditto-codegen-public 1.0.464 → 1.0.466
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.
- package/dist/opencode-tools/report-wix-feedback.ts +93 -0
- package/dist/out.js +111 -206
- package/package.json +2 -2
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import { promisify } from "util";
|
|
3
|
+
import { tool } from "@opencode-ai/plugin";
|
|
4
|
+
|
|
5
|
+
const execFileAsync = promisify(execFile);
|
|
6
|
+
|
|
7
|
+
// The endpoint behind @wix/mcp's SupportAndFeedback tool, which the local
|
|
8
|
+
// stdio @wix/mcp doesn't register. Relays to the #mcp-user-feedback Slack
|
|
9
|
+
// channel, attributed to the token's user.
|
|
10
|
+
const FEEDBACK_API_URL = "https://www.wixapis.com/mcp-serverless/v1/feedback";
|
|
11
|
+
const FEEDBACK_TIMEOUT_MS = 15_000;
|
|
12
|
+
|
|
13
|
+
async function getWixAccessToken(): Promise<string> {
|
|
14
|
+
const { stdout } = await execFileAsync("wix", ["token", "--json"], {
|
|
15
|
+
timeout: 30_000,
|
|
16
|
+
});
|
|
17
|
+
const { accessToken } = JSON.parse(stdout) as { accessToken?: string };
|
|
18
|
+
if (!accessToken) {
|
|
19
|
+
throw new Error("wix token returned empty accessToken");
|
|
20
|
+
}
|
|
21
|
+
return accessToken;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function buildProvenance(): string {
|
|
25
|
+
const lines = [
|
|
26
|
+
`Source: Codegen running on ${process.env.CODEGEN_ENVIRONMENT ?? "unknown environment"}`,
|
|
27
|
+
process.env.CODEGEN_JOB_ID && `Codegen job id: ${process.env.CODEGEN_JOB_ID}`,
|
|
28
|
+
process.env.CODEGEN_PROJECT_ID &&
|
|
29
|
+
`Project id: ${process.env.CODEGEN_PROJECT_ID}`,
|
|
30
|
+
process.env.CODEGEN_METASITE_ID &&
|
|
31
|
+
`Meta site id: ${process.env.CODEGEN_METASITE_ID}`,
|
|
32
|
+
];
|
|
33
|
+
return lines.filter(Boolean).join("\n");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default tool({
|
|
37
|
+
description:
|
|
38
|
+
"Report a problem with the Wix docs (dev.wix.com, read through wix-mcp) or the wix-mcp " +
|
|
39
|
+
"tools to the Wix MCP team: a search whose top results were off-target, a docs article " +
|
|
40
|
+
"or example that is wrong or missing the fields you needed, a method schema that " +
|
|
41
|
+
"doesn't match the installed SDK types, or a wix-mcp tool error. Include cases you " +
|
|
42
|
+
"recovered from. Do NOT report skill references (SKILL.md, references/*.md), package " +
|
|
43
|
+
"docs in node_modules, your own mistakes, or the user's request — those aren't wix-mcp " +
|
|
44
|
+
"issues. Every report must cite the wix-mcp tool or dev.wix.com URL involved. Call it " +
|
|
45
|
+
"at most ONCE per task, covering every friction point you've hit so far.",
|
|
46
|
+
args: {
|
|
47
|
+
message: tool.schema
|
|
48
|
+
.string()
|
|
49
|
+
.min(1)
|
|
50
|
+
.describe(
|
|
51
|
+
"Plain-text report. For each friction point: the tool and exact input (search " +
|
|
52
|
+
"term, dev.wix.com URL), what came back, what was wrong or missing, the workaround you " +
|
|
53
|
+
"used, and what you expected. Then your best guess of where the fault lives " +
|
|
54
|
+
"(search ranking / docs article or example / method schema / SDK typings / wix-mcp " +
|
|
55
|
+
"tool) and whether you confirmed it. End with one line naming the most important " +
|
|
56
|
+
"problem. No secrets or tokens.",
|
|
57
|
+
),
|
|
58
|
+
requestId: tool.schema
|
|
59
|
+
.string()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe(
|
|
62
|
+
"x-wix-request-id of a failed Wix API call this report relates to, if any.",
|
|
63
|
+
),
|
|
64
|
+
},
|
|
65
|
+
async execute(args) {
|
|
66
|
+
const message = [
|
|
67
|
+
buildProvenance(),
|
|
68
|
+
args.message,
|
|
69
|
+
args.requestId && `request id: ${args.requestId}`,
|
|
70
|
+
]
|
|
71
|
+
.filter(Boolean)
|
|
72
|
+
.join("\n\n");
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
const response = await fetch(FEEDBACK_API_URL, {
|
|
76
|
+
method: "POST",
|
|
77
|
+
headers: {
|
|
78
|
+
Authorization: await getWixAccessToken(),
|
|
79
|
+
"Content-Type": "application/json",
|
|
80
|
+
},
|
|
81
|
+
body: JSON.stringify({ message }),
|
|
82
|
+
signal: AbortSignal.timeout(FEEDBACK_TIMEOUT_MS),
|
|
83
|
+
});
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
return `Failed to send the report (HTTP ${response.status}). Continue your task — do not retry.`;
|
|
86
|
+
}
|
|
87
|
+
return "Report sent to the Wix MCP team. Continue your task.";
|
|
88
|
+
} catch (error) {
|
|
89
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
90
|
+
return `Failed to send the report (${reason}). Continue your task — do not retry.`;
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
});
|
package/dist/out.js
CHANGED
|
@@ -11298,13 +11298,6 @@ var require_CodeGenService = __commonJS({
|
|
|
11298
11298
|
metasiteId: ctx.metasiteId ?? "",
|
|
11299
11299
|
durationMs: ctx.durationMs != null ? String(ctx.durationMs) : void 0
|
|
11300
11300
|
});
|
|
11301
|
-
this.handleValidationErrors = async (output, context = {}) => {
|
|
11302
|
-
await this.request((0, http_1.handleValidationErrors)({
|
|
11303
|
-
output,
|
|
11304
|
-
costUsd: context.costUsd,
|
|
11305
|
-
...this.runContext(context)
|
|
11306
|
-
}));
|
|
11307
|
-
};
|
|
11308
11301
|
this.handlePluginFailure = async (input) => {
|
|
11309
11302
|
await this.request((0, http_1.handlePluginFailure)({
|
|
11310
11303
|
pluginName: input.pluginName,
|
|
@@ -11824,7 +11817,7 @@ var require_subagents = __commonJS({
|
|
|
11824
11817
|
"dist/opencode-integration/configuration/subagents.js"(exports2) {
|
|
11825
11818
|
"use strict";
|
|
11826
11819
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
11827
|
-
exports2.SUBAGENT_AGENT_NAMES = exports2.
|
|
11820
|
+
exports2.SUBAGENT_AGENT_NAMES = exports2.VALIDATOR_SUBAGENT_NAME = exports2.PRIMARY_AGENT_NAME = void 0;
|
|
11828
11821
|
exports2.getAgentConfig = getAgentConfig;
|
|
11829
11822
|
exports2.getMainAgentModel = getMainAgentModel;
|
|
11830
11823
|
exports2.getSubagentModel = getSubagentModel;
|
|
@@ -11833,13 +11826,7 @@ var require_subagents = __commonJS({
|
|
|
11833
11826
|
var model_knobs_1 = require_model_knobs();
|
|
11834
11827
|
exports2.PRIMARY_AGENT_NAME = "codegen";
|
|
11835
11828
|
exports2.VALIDATOR_SUBAGENT_NAME = "codegen-validator";
|
|
11836
|
-
exports2.
|
|
11837
|
-
exports2.WDS_DOCS_SUBAGENT_NAME = "codegen-wds-docs";
|
|
11838
|
-
exports2.SUBAGENT_AGENT_NAMES = [
|
|
11839
|
-
exports2.VALIDATOR_SUBAGENT_NAME,
|
|
11840
|
-
exports2.WIX_DOCS_SUBAGENT_NAME,
|
|
11841
|
-
exports2.WDS_DOCS_SUBAGENT_NAME
|
|
11842
|
-
];
|
|
11829
|
+
exports2.SUBAGENT_AGENT_NAMES = [exports2.VALIDATOR_SUBAGENT_NAME];
|
|
11843
11830
|
var VALIDATOR_DESCRIPTION = `Runs validate (tsc + wix build) and fixes the reported errors, consulting the
|
|
11844
11831
|
skills or wix-mcp for SDK-shape errors; returns when the build is clean
|
|
11845
11832
|
or reports what it couldn't fix. Validation step only \u2014 never generates features.`;
|
|
@@ -11866,42 +11853,7 @@ unfixed. Work in a bounded number of fix cycles \u2014 if the build isn't conver
|
|
|
11866
11853
|
after a few attempts, STOP and return the remaining errors verbatim rather than
|
|
11867
11854
|
looping; never silence them.
|
|
11868
11855
|
|
|
11869
|
-
When done,
|
|
11870
|
-
as the very first line of your response (before the summary).
|
|
11871
|
-
Then summarize each error: message, file, root cause, fix. No diffs.
|
|
11872
|
-
(NEEDS_INVESTIGATION triggers a team alert to improve codegen for future runs.)`;
|
|
11873
|
-
var WIX_DOCS_DESCRIPTION = `Use ONLY to discover a Wix SDK you don't know and that the skills +
|
|
11874
|
-
KNOWN WIX APIS don't cover. Send ONE complete question; returns the import path
|
|
11875
|
-
+ exported namespace/method + runtime context + full signature + any required
|
|
11876
|
-
scope/permission IDs + any user setup prerequisites (dependent app to install,
|
|
11877
|
-
dashboard setting to enable, template to create) + a short usage example (not a
|
|
11878
|
-
link). Don't fetch a doc you already identified, and don't split a lookup into
|
|
11879
|
-
separate search/signature calls. Read-only.`;
|
|
11880
|
-
var WIX_DOCS_PROMPT = `You research Wix SDK APIs via wix-mcp and report back \u2014 never write app code.
|
|
11881
|
-
The caller uses DIRECT imports inside an extension that already supplies
|
|
11882
|
-
auth/host: 'import { <namespace> } from "@wix/<pkg>"; await <namespace>.<method>(<optionsObject>)'
|
|
11883
|
-
\u2014 describe that form, NEVER a 'createClient'/'wixClient' client. Report the SDK,
|
|
11884
|
-
NOT the REST spec: REST names, namespaces, and positional params often differ,
|
|
11885
|
-
so verify the method EXISTS as an SDK export. Steps: (1) read the SDK
|
|
11886
|
-
introduction ('SearchWixSDKDocumentation' \u2192 'ReadFullDocsArticle') to confirm
|
|
11887
|
-
it's the RIGHT API and its runtime context \u2014 backend, the dashboard host, or the
|
|
11888
|
-
site/editor host (host modules like @wix/dashboard work ONLY in their own host);
|
|
11889
|
-
(2) read 'ReadFullDocsMethodSchema' for the exact exported name and its
|
|
11890
|
-
options-object parameters; (3) capture any user SETUP prerequisites the docs
|
|
11891
|
-
call out (often a 'Before you begin' section) \u2014 a dependent app that must be
|
|
11892
|
-
installed (e.g. Wix Stores, Members Area), a dashboard setting that must be
|
|
11893
|
-
enabled (e.g. Automations for back-in-stock notifications), or a template/config
|
|
11894
|
-
the user must create first (e.g. a triggered email). Reply with: the import path
|
|
11895
|
-
+ exported namespace/method, the runtime context, the full TypeScript signature,
|
|
11896
|
-
a short usage example \u2014 never a bare link, never 'as any' or a guessed method \u2014
|
|
11897
|
-
and a SETUP STEPS list of the prerequisites from (3) so the main agent can relay
|
|
11898
|
-
them to the user (say 'none' if there are none). If the API is limited to one
|
|
11899
|
-
context, say so. For a required scope/permission, return the EXACT scope-ID
|
|
11900
|
-
string from the docs (never a guessed format); if none is documented, say so.`;
|
|
11901
|
-
var WDS_DOCS_DESCRIPTION = `Use ONLY when building dashboard UI and you need a Wix Design System
|
|
11902
|
-
component/prop/example you don't know and the skills don't cover.
|
|
11903
|
-
Returns the component name + props + a short usage example. Not for layouts the
|
|
11904
|
-
skills already cover. Read-only.`;
|
|
11856
|
+
When done, summarize each error: message, file, root cause, fix. No diffs.`;
|
|
11905
11857
|
var SUBAGENT_DENIED_TOOLS = {
|
|
11906
11858
|
[
|
|
11907
11859
|
"task"
|
|
@@ -11926,29 +11878,10 @@ skills already cover. Read-only.`;
|
|
|
11926
11878
|
[
|
|
11927
11879
|
"required-permissions"
|
|
11928
11880
|
/* OpenCodeTool.RequiredPermissions */
|
|
11929
|
-
]: "deny"
|
|
11930
|
-
};
|
|
11931
|
-
var DOCS_SUBAGENT_DENIED_TOOLS = {
|
|
11932
|
-
...SUBAGENT_DENIED_TOOLS,
|
|
11933
|
-
[
|
|
11934
|
-
"edit"
|
|
11935
|
-
/* OpenCodeTool.Edit */
|
|
11936
11881
|
]: "deny",
|
|
11937
11882
|
[
|
|
11938
|
-
"
|
|
11939
|
-
/* OpenCodeTool.
|
|
11940
|
-
]: "deny",
|
|
11941
|
-
[
|
|
11942
|
-
"batch-write"
|
|
11943
|
-
/* OpenCodeTool.BatchWrite */
|
|
11944
|
-
]: "deny",
|
|
11945
|
-
[
|
|
11946
|
-
"multi-edit"
|
|
11947
|
-
/* OpenCodeTool.MultiEdit */
|
|
11948
|
-
]: "deny",
|
|
11949
|
-
[
|
|
11950
|
-
"validate"
|
|
11951
|
-
/* OpenCodeTool.Validate */
|
|
11883
|
+
"report-wix-feedback"
|
|
11884
|
+
/* OpenCodeTool.ReportWixFeedback */
|
|
11952
11885
|
]: "deny"
|
|
11953
11886
|
};
|
|
11954
11887
|
var READ_TOOLS = {
|
|
@@ -12016,9 +11949,7 @@ skills already cover. Read-only.`;
|
|
|
12016
11949
|
/* OpenCodeTool.Task */
|
|
12017
11950
|
]: {
|
|
12018
11951
|
[types_1.PERMISSION_WILDCARD]: "deny",
|
|
12019
|
-
[exports2.VALIDATOR_SUBAGENT_NAME]: "allow"
|
|
12020
|
-
[exports2.WIX_DOCS_SUBAGENT_NAME]: "allow",
|
|
12021
|
-
[exports2.WDS_DOCS_SUBAGENT_NAME]: "allow"
|
|
11952
|
+
[exports2.VALIDATOR_SUBAGENT_NAME]: "allow"
|
|
12022
11953
|
}
|
|
12023
11954
|
}
|
|
12024
11955
|
},
|
|
@@ -12047,46 +11978,6 @@ skills already cover. Read-only.`;
|
|
|
12047
11978
|
]: "allow",
|
|
12048
11979
|
[constants_1.WIX_MCP_SERVER_NAME]: "allow"
|
|
12049
11980
|
}
|
|
12050
|
-
},
|
|
12051
|
-
[exports2.WIX_DOCS_SUBAGENT_NAME]: {
|
|
12052
|
-
mode: "subagent",
|
|
12053
|
-
...subagent,
|
|
12054
|
-
steps: 15,
|
|
12055
|
-
description: WIX_DOCS_DESCRIPTION,
|
|
12056
|
-
prompt: WIX_DOCS_PROMPT,
|
|
12057
|
-
permission: {
|
|
12058
|
-
...DOCS_SUBAGENT_DENIED_TOOLS,
|
|
12059
|
-
...READ_TOOLS,
|
|
12060
|
-
[
|
|
12061
|
-
"bash"
|
|
12062
|
-
/* OpenCodeTool.Bash */
|
|
12063
|
-
]: "deny",
|
|
12064
|
-
[
|
|
12065
|
-
"skill"
|
|
12066
|
-
/* OpenCodeTool.Skill */
|
|
12067
|
-
]: "allow",
|
|
12068
|
-
[constants_1.WIX_MCP_SERVER_NAME]: "allow"
|
|
12069
|
-
}
|
|
12070
|
-
},
|
|
12071
|
-
[exports2.WDS_DOCS_SUBAGENT_NAME]: {
|
|
12072
|
-
mode: "subagent",
|
|
12073
|
-
...subagent,
|
|
12074
|
-
steps: 15,
|
|
12075
|
-
description: WDS_DOCS_DESCRIPTION,
|
|
12076
|
-
permission: {
|
|
12077
|
-
...DOCS_SUBAGENT_DENIED_TOOLS,
|
|
12078
|
-
...READ_TOOLS,
|
|
12079
|
-
// The wix-design-system skill shells out to a script, so bash is needed.
|
|
12080
|
-
[
|
|
12081
|
-
"bash"
|
|
12082
|
-
/* OpenCodeTool.Bash */
|
|
12083
|
-
]: "allow",
|
|
12084
|
-
[
|
|
12085
|
-
"skill"
|
|
12086
|
-
/* OpenCodeTool.Skill */
|
|
12087
|
-
]: "allow",
|
|
12088
|
-
[constants_1.WIX_MCP_SERVER_NAME]: "deny"
|
|
12089
|
-
}
|
|
12090
11981
|
}
|
|
12091
11982
|
};
|
|
12092
11983
|
}
|
|
@@ -15039,12 +14930,10 @@ var require_codegen_rules = __commonJS({
|
|
|
15039
14930
|
var model_knobs_1 = require_model_knobs();
|
|
15040
14931
|
var DELEGATED_VALIDATION = {
|
|
15041
14932
|
toolRule: "- `validate` (tsc + build) is run by the `codegen-validator` subagent \u2014 do NOT call it directly; delegate via `task` at step 5.",
|
|
15042
|
-
taskListEntry: "`codegen-validator` (step 5; see step 5 for the exact prompt), ",
|
|
15043
14933
|
step: `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).`
|
|
15044
14934
|
};
|
|
15045
14935
|
var DIRECT_VALIDATION = {
|
|
15046
14936
|
toolRule: "- `validate` (tsc + build) \u2014 you call it yourself at step 5. Do NOT delegate it.",
|
|
15047
|
-
taskListEntry: "",
|
|
15048
14937
|
step: `5. **Validate**: Call \`validate({ runBuild: true })\` yourself \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. Do NOT delegate this to a subagent, and do NOT make a separate tsc-only call first \u2014 the single runBuild pass already fails fast on type errors. Do NOT move on until the build is clean. After the build is clean, if you created or modified an EDITOR_REACT_COMPONENT extension in this task, run \`npx wix generate manifest\` via bash (idempotent).`
|
|
15049
14938
|
};
|
|
15050
14939
|
var buildCoreRules = (validation) => `CORE PRINCIPLES:
|
|
@@ -15060,14 +14949,13 @@ MINIMIZE TEXT OUTPUT \u2014 CRITICAL:
|
|
|
15060
14949
|
|
|
15061
14950
|
TOOL USAGE:
|
|
15062
14951
|
${validation.toolRule}
|
|
15063
|
-
- \`task\` delegates to subagents: ${validation.taskListEntry}\`codegen-wix-docs\` (step 2; to SEARCH/discover an unknown Wix SDK method/shape/scope ID via wix-mcp), \`codegen-wds-docs\` (step 2; to discover WDS components/props you don't know). Docs subagents are for DISCOVERY only \u2014 give them a QUESTION ("which method lists X?"), never a known article URL to fetch.
|
|
15064
|
-
- Each \`task\` round-trip is EXPENSIVE (~90s of subagent startup, regardless of how small the question). So minimize them: ask ONE comprehensive question per API that returns everything you need at once \u2014 method name + FULL call signature + parameter shapes + required scope IDs. NEVER do a broad "find the X SDK" call and then a follow-up "what's the exact signature" call \u2014 that is two ~90s round-trips for one answer. Batch all your unknowns for a domain into a single delegation.
|
|
15065
|
-
- If BOTH docs subagents are needed, fire both \`task\` calls in ONE response (parallel), never serially.
|
|
15066
14952
|
- \`uuid\` to generate UUIDs (supports count param for multiple). Do NOT use bash.
|
|
15067
14953
|
- \`wix-generate\` to scaffold extensions non-interactively \u2014 prefer over hand-writing boilerplate; pass an array to scaffold several at once. It RETURNS every created file's contents, so trust that and do NOT \`read\`/\`batch-read\` them afterward. On a \`FAILED\` block, fix the params per the error and retry.
|
|
15068
14954
|
- \`required-permissions\` \u2014 declare the Wix app permissions the generated code needs (when/whether to call: workflow step 6 + PERMISSIONS).
|
|
15069
14955
|
${(0, shared_rules_1.buildFileOperationsRules)("fixing type errors")}
|
|
15070
|
-
- API discovery (shapes, method signatures, types) \u2014 in this order: (1) loaded skills + KNOWN WIX APIS, if they already cover the API
|
|
14956
|
+
- API discovery (shapes, method signatures, types) \u2014 in this order: (1) loaded skills + KNOWN WIX APIS, if they already cover the API; (2) wix-mcp, yourself: \`SearchWixSDKDocumentation\` to find the method, then \`ReadFullDocsMethodSchema\` for its exact exported name, options object, response fields, enum values and scope IDs \u2014 the schema is the source of truth; an article or its examples are not. Model the call on the SDK view, not REST, and use the direct form inside the extension: \`import { <namespace> } from "@wix/<pkg>"; await <namespace>.<method>(<options>)\` \u2014 never \`createClient\`. Note any setup the docs require from the user (an app to install, a dashboard setting to enable) for the final message. For WDS components/props, use the \`wix-design-system\` skill; (3) grepping \`node_modules\` ONLY as a last resort if the above return nothing \u2014 SDK internals are not a documentation source, and doing it first wastes turns, inflates context, and is unreliable.
|
|
14957
|
+
- NEVER write a Wix SDK method, field, or enum value you haven't seen in a skill or a method schema.
|
|
14958
|
+
- \`report-wix-feedback\` \u2014 report problems with the Wix docs (dev.wix.com, via wix-mcp) or the wix-mcp tools to Wix (when: workflow step 7). NOT for skill references or your own code.
|
|
15071
14959
|
- NEVER run preview, dev, release, or promote commands.
|
|
15072
14960
|
|
|
15073
14961
|
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\`):
|
|
@@ -15076,13 +14964,14 @@ KNOWN WIX APIS (already documented \u2014 do NOT rediscover these from node_modu
|
|
|
15076
14964
|
|
|
15077
14965
|
IMPLEMENTATION WORKFLOW:
|
|
15078
14966
|
1. **Plan**: Determine extension types using the \`wix-app\` skill. Generate ALL UUIDs upfront.
|
|
15079
|
-
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
|
|
14967
|
+
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 look up only the APIs you genuinely can't identify, via wix-mcp (see API discovery).
|
|
15080
14968
|
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.
|
|
15081
14969
|
4. **Register**: Register all extensions in \`src/extensions.ts\`.
|
|
15082
14970
|
${validation.step}
|
|
15083
14971
|
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.
|
|
15084
|
-
7. **
|
|
15085
|
-
8. **
|
|
14972
|
+
7. **Report docs problems**: Skip this step if you already called \`report-wix-feedback\` this run. Otherwise look back at the run: if ANY of these happened, call it ONCE covering all of them: (a) you inspected \`node_modules\` to find a Wix SDK signature, shape, or type because the docs didn't give you one that compiles; (b) the validator fixed a Wix SDK call you wrote from a dev.wix.com doc \u2014 read its summary; (c) a dev.wix.com example, article, or schema contradicted the installed SDK types; (d) a search's top results were off-target, or a wix-mcp tool failed. For each: the dev.wix.com URL or search term, what it showed, and what actually worked. A gap in a skill reference is not a wix-mcp problem \u2014 don't report it here.
|
|
14973
|
+
8. **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.
|
|
14974
|
+
9. **Stop**: STOP immediately. Do NOT refactor, clean up, or verify.
|
|
15086
14975
|
|
|
15087
14976
|
FILE CREATION:
|
|
15088
14977
|
- NEVER rewrite the same file twice. Once written, move on.
|
|
@@ -15398,6 +15287,7 @@ var require_config = __commonJS({
|
|
|
15398
15287
|
var rules_writer_12 = require_rules_writer();
|
|
15399
15288
|
var environments_12 = require_environments();
|
|
15400
15289
|
var CodeGenService_12 = require_CodeGenService();
|
|
15290
|
+
var job_context_storage_12 = require_job_context_storage();
|
|
15401
15291
|
exports2.DEFAULT_TIMEOUT_MS = 20 * 60 * 1e3;
|
|
15402
15292
|
function usesOpenAiProvider() {
|
|
15403
15293
|
return (0, model_knobs_1.isOpenAiModel)((0, model_knobs_1.getModel)()) || (0, model_knobs_1.isOpenAiModel)((0, model_knobs_1.getSmallModel)());
|
|
@@ -15631,7 +15521,11 @@ var require_config = __commonJS({
|
|
|
15631
15521
|
OPENCODE_CONFIG_CONTENT: JSON.stringify(config),
|
|
15632
15522
|
OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS: exports2.DEFAULT_TIMEOUT_MS.toString(),
|
|
15633
15523
|
OPENCODE_DISABLE_LSP_DOWNLOAD: "true",
|
|
15634
|
-
OPENCODE_DISABLE_FILETIME_CHECK: "true"
|
|
15524
|
+
OPENCODE_DISABLE_FILETIME_CHECK: "true",
|
|
15525
|
+
// Read by the report-wix-feedback tool to tag reports with their run.
|
|
15526
|
+
CODEGEN_PROJECT_ID: projectId,
|
|
15527
|
+
CODEGEN_JOB_ID: job_context_storage_12.jobContextStorage.getStore()?.jobId ?? "",
|
|
15528
|
+
CODEGEN_METASITE_ID: job_context_storage_12.jobContextStorage.getStore()?.metasiteId ?? ""
|
|
15635
15529
|
};
|
|
15636
15530
|
}
|
|
15637
15531
|
function getOpenCodeEnv(projectId, kind) {
|
|
@@ -15842,12 +15736,8 @@ var require_parser = __commonJS({
|
|
|
15842
15736
|
exports2.parseUsageStats = parseUsageStats;
|
|
15843
15737
|
exports2.mergeUsageStats = mergeUsageStats;
|
|
15844
15738
|
exports2.hasSessionError = hasSessionError;
|
|
15845
|
-
exports2.isStepCappedValidatorOutput = isStepCappedValidatorOutput;
|
|
15846
|
-
exports2.shouldReportValidatorOutput = shouldReportValidatorOutput;
|
|
15847
|
-
exports2.parseValidatorTaskOutputs = parseValidatorTaskOutputs;
|
|
15848
15739
|
exports2.summarizeOpenCodeLine = summarizeOpenCodeLine;
|
|
15849
15740
|
var types_1 = require_types4();
|
|
15850
|
-
var subagents_1 = require_subagents();
|
|
15851
15741
|
var subagent_tool_logger_1 = require_subagent_tool_logger();
|
|
15852
15742
|
function parseRequiredPermissions(output) {
|
|
15853
15743
|
let permissions = [];
|
|
@@ -15974,30 +15864,6 @@ var require_parser = __commonJS({
|
|
|
15974
15864
|
...input.description && { description: truncate(input.description) }
|
|
15975
15865
|
};
|
|
15976
15866
|
}
|
|
15977
|
-
var STEP_CAP_RE = /maximum steps reached/i;
|
|
15978
|
-
function isStepCappedValidatorOutput(output) {
|
|
15979
|
-
return STEP_CAP_RE.test(output);
|
|
15980
|
-
}
|
|
15981
|
-
function shouldReportValidatorOutput(output) {
|
|
15982
|
-
return output.includes("NEEDS_INVESTIGATION") || isStepCappedValidatorOutput(output);
|
|
15983
|
-
}
|
|
15984
|
-
function parseValidatorTaskOutputs(stdout) {
|
|
15985
|
-
const outputs = [];
|
|
15986
|
-
for (const line of stdout.split("\n")) {
|
|
15987
|
-
if (!line.trim())
|
|
15988
|
-
continue;
|
|
15989
|
-
const event = (0, types_1.tryParseJson)(line);
|
|
15990
|
-
if (!event || event.type !== "tool_use" || event.part?.tool !== "task" || event.part?.state?.status !== "completed") {
|
|
15991
|
-
continue;
|
|
15992
|
-
}
|
|
15993
|
-
const { title, output, input } = event.part.state;
|
|
15994
|
-
const isValidator = input?.subagent_type === subagents_1.VALIDATOR_SUBAGENT_NAME || title?.includes(subagents_1.VALIDATOR_SUBAGENT_NAME);
|
|
15995
|
-
if (isValidator && output) {
|
|
15996
|
-
outputs.push(output.trim());
|
|
15997
|
-
}
|
|
15998
|
-
}
|
|
15999
|
-
return outputs;
|
|
16000
|
-
}
|
|
16001
15867
|
function summarizeOpenCodeLine(line) {
|
|
16002
15868
|
if (line.type !== "tool_use" && line.type !== subagent_tool_logger_1.SUBAGENT_TOOL_EVENT_TYPE) {
|
|
16003
15869
|
return line;
|
|
@@ -16354,9 +16220,7 @@ var require_derived_progress = __commonJS({
|
|
|
16354
16220
|
var detect_1 = require_detect();
|
|
16355
16221
|
var subagents_1 = require_subagents();
|
|
16356
16222
|
var SUBAGENT_STEPS = {
|
|
16357
|
-
[subagents_1.VALIDATOR_SUBAGENT_NAME]: "Building project"
|
|
16358
|
-
[subagents_1.WIX_DOCS_SUBAGENT_NAME]: "Reading documentation",
|
|
16359
|
-
[subagents_1.WDS_DOCS_SUBAGENT_NAME]: "Reading documentation"
|
|
16223
|
+
[subagents_1.VALIDATOR_SUBAGENT_NAME]: "Building project"
|
|
16360
16224
|
};
|
|
16361
16225
|
var REGISTRY_FILE_PATTERN = /(^|\/)extensions\.ts$/;
|
|
16362
16226
|
var EXTENSION_DEFINITION_PATTERN = /\.extension\.ts$/;
|
|
@@ -22764,50 +22628,6 @@ var require_bi_events = __commonJS({
|
|
|
22764
22628
|
}
|
|
22765
22629
|
});
|
|
22766
22630
|
|
|
22767
|
-
// dist/opencode-integration/slack-reports/validator-outputs.js
|
|
22768
|
-
var require_validator_outputs = __commonJS({
|
|
22769
|
-
"dist/opencode-integration/slack-reports/validator-outputs.js"(exports2) {
|
|
22770
|
-
"use strict";
|
|
22771
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
22772
|
-
exports2.notifyValidatorOutputsToSlack = notifyValidatorOutputsToSlack;
|
|
22773
|
-
var logger_12 = require_logger();
|
|
22774
|
-
var job_context_storage_12 = require_job_context_storage();
|
|
22775
|
-
var codeGenerationService_12 = require_codeGenerationService();
|
|
22776
|
-
var parser_1 = require_parser();
|
|
22777
|
-
async function notifyValidatorOutputsToSlack(stdout, costUsd) {
|
|
22778
|
-
try {
|
|
22779
|
-
const store = job_context_storage_12.jobContextStorage.getStore();
|
|
22780
|
-
const outputs = (0, parser_1.parseValidatorTaskOutputs)(stdout);
|
|
22781
|
-
if (outputs.length === 0)
|
|
22782
|
-
return;
|
|
22783
|
-
const durationMs = store?.flowStartTime ? Date.now() - store.flowStartTime : void 0;
|
|
22784
|
-
const context = {
|
|
22785
|
-
jobId: store?.jobId,
|
|
22786
|
-
metasiteId: store?.metasiteId,
|
|
22787
|
-
costUsd: costUsd > 0 ? costUsd : void 0,
|
|
22788
|
-
durationMs
|
|
22789
|
-
};
|
|
22790
|
-
for (const output of outputs) {
|
|
22791
|
-
if (!(0, parser_1.shouldReportValidatorOutput)(output)) {
|
|
22792
|
-
continue;
|
|
22793
|
-
}
|
|
22794
|
-
try {
|
|
22795
|
-
await codeGenerationService_12.codeGenerationService.handleValidationErrors(output, context);
|
|
22796
|
-
} catch (err) {
|
|
22797
|
-
logger_12.logger.warn("[OpenCode] Failed to report validator output to Slack", {
|
|
22798
|
-
error: err instanceof Error ? err.message : String(err)
|
|
22799
|
-
});
|
|
22800
|
-
}
|
|
22801
|
-
}
|
|
22802
|
-
} catch (err) {
|
|
22803
|
-
logger_12.logger.warn("[OpenCode] Unexpected error in notifyValidatorOutputsToSlack", {
|
|
22804
|
-
error: err instanceof Error ? err.message : String(err)
|
|
22805
|
-
});
|
|
22806
|
-
}
|
|
22807
|
-
}
|
|
22808
|
-
}
|
|
22809
|
-
});
|
|
22810
|
-
|
|
22811
22631
|
// dist/opencode-integration/slack-reports/expensive-run.js
|
|
22812
22632
|
var require_expensive_run = __commonJS({
|
|
22813
22633
|
"dist/opencode-integration/slack-reports/expensive-run.js"(exports2) {
|
|
@@ -22890,7 +22710,6 @@ var require_opencode_init = __commonJS({
|
|
|
22890
22710
|
var inject_created_by_1 = require_inject_created_by();
|
|
22891
22711
|
var job_payload_1 = require_job_payload2();
|
|
22892
22712
|
var bi_events_1 = require_bi_events();
|
|
22893
|
-
var validator_outputs_1 = require_validator_outputs();
|
|
22894
22713
|
var expensive_run_1 = require_expensive_run();
|
|
22895
22714
|
var pre_run_decision_1 = require_pre_run_decision();
|
|
22896
22715
|
var environments_12 = require_environments();
|
|
@@ -22969,7 +22788,6 @@ var require_opencode_init = __commonJS({
|
|
|
22969
22788
|
requiredPermissions: result.requiredPermissions
|
|
22970
22789
|
});
|
|
22971
22790
|
if (orchestrator.lastStdout && !(0, model_knobs_1.hasModelOverride)() && !(0, model_knobs_1.hasSmallModelOverride)()) {
|
|
22972
|
-
void (0, validator_outputs_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
|
|
22973
22791
|
void (0, expensive_run_1.notifyExpensiveRunToSlack)({
|
|
22974
22792
|
usage: result.usage,
|
|
22975
22793
|
durationMs: Date.now() - flowStartTime,
|
|
@@ -23112,7 +22930,6 @@ var require_opencode_iterate = __commonJS({
|
|
|
23112
22930
|
var file_changes_1 = require_file_changes();
|
|
23113
22931
|
var inject_created_by_1 = require_inject_created_by();
|
|
23114
22932
|
var job_payload_1 = require_job_payload2();
|
|
23115
|
-
var validator_outputs_1 = require_validator_outputs();
|
|
23116
22933
|
var expensive_run_1 = require_expensive_run();
|
|
23117
22934
|
var bi_events_1 = require_bi_events();
|
|
23118
22935
|
var plugins_runtime_1 = require_plugins_runtime();
|
|
@@ -23180,7 +22997,6 @@ var require_opencode_iterate = __commonJS({
|
|
|
23180
22997
|
requiredPermissions: result.requiredPermissions
|
|
23181
22998
|
});
|
|
23182
22999
|
if (iterationOrchestrator.lastStdout && !(0, model_knobs_1.hasModelOverride)() && !(0, model_knobs_1.hasSmallModelOverride)()) {
|
|
23183
|
-
void (0, validator_outputs_1.notifyValidatorOutputsToSlack)(iterationOrchestrator.lastStdout, result.usage.cost);
|
|
23184
23000
|
void (0, expensive_run_1.notifyExpensiveRunToSlack)({
|
|
23185
23001
|
usage: result.usage,
|
|
23186
23002
|
durationMs: Date.now() - flowStartTime,
|
|
@@ -23500,7 +23316,6 @@ var require_opencode_fix_git_conflicts = __commonJS({
|
|
|
23500
23316
|
var model_knobs_1 = require_model_knobs();
|
|
23501
23317
|
var file_changes_1 = require_file_changes();
|
|
23502
23318
|
var job_payload_1 = require_job_payload2();
|
|
23503
|
-
var validator_outputs_1 = require_validator_outputs();
|
|
23504
23319
|
var expensive_run_1 = require_expensive_run();
|
|
23505
23320
|
var bi_events_1 = require_bi_events();
|
|
23506
23321
|
var plugins_runtime_1 = require_plugins_runtime();
|
|
@@ -23563,7 +23378,6 @@ var require_opencode_fix_git_conflicts = __commonJS({
|
|
|
23563
23378
|
requiredPermissions: result.requiredPermissions
|
|
23564
23379
|
});
|
|
23565
23380
|
if (orchestrator.lastStdout && !(0, model_knobs_1.hasModelOverride)() && !(0, model_knobs_1.hasSmallModelOverride)()) {
|
|
23566
|
-
void (0, validator_outputs_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
|
|
23567
23381
|
void (0, expensive_run_1.notifyExpensiveRunToSlack)({
|
|
23568
23382
|
usage: result.usage,
|
|
23569
23383
|
durationMs: Date.now() - flowStartTime,
|
|
@@ -24013,6 +23827,95 @@ var require_tools_writer = __commonJS({
|
|
|
24013
23827
|
}
|
|
24014
23828
|
});
|
|
24015
23829
|
|
|
23830
|
+
// dist/opencode-integration/plugins/docs-feedback-nudge.js
|
|
23831
|
+
var require_docs_feedback_nudge = __commonJS({
|
|
23832
|
+
"dist/opencode-integration/plugins/docs-feedback-nudge.js"(exports2) {
|
|
23833
|
+
"use strict";
|
|
23834
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
23835
|
+
exports2.DOCS_FEEDBACK_NUDGE_FILENAME = exports2.REPORT_SENT_PREFIX = exports2.COMPILE_FAILURE_NOTE = exports2.VALIDATOR_NOTE = exports2.SDK_INTERNALS_NOTE = exports2.WIX_SDK_INTERNALS_RE = void 0;
|
|
23836
|
+
exports2.buildDocsFeedbackNudgeSource = buildDocsFeedbackNudgeSource;
|
|
23837
|
+
exports2.writeDocsFeedbackNudgePlugin = writeDocsFeedbackNudgePlugin;
|
|
23838
|
+
var write_plugin_1 = require_write_plugin();
|
|
23839
|
+
var subagents_1 = require_subagents();
|
|
23840
|
+
exports2.WIX_SDK_INTERNALS_RE = /node_modules\/@wix\/(?!patterns\b|design-system\b)[\w-]+/;
|
|
23841
|
+
exports2.SDK_INTERNALS_NOTE = "Docs check: you are reading Wix SDK internals. If it's because the Wix docs you read through wix-mcp didn't give you a signature, shape, or type that compiles, call `report-wix-feedback` once you have the answer \u2014 with the docs URL or search term you used, what it showed, and what you found here.";
|
|
23842
|
+
exports2.VALIDATOR_NOTE = "Docs check: if the validator fixed a Wix SDK call you wrote from a dev.wix.com doc example, article, or schema you read through wix-mcp, call `report-wix-feedback` now (not for skill references) \u2014 with the docs URL, what it showed, and what the validator changed it to.";
|
|
23843
|
+
exports2.COMPILE_FAILURE_NOTE = "Docs check: if a failure above is in a Wix SDK call you wrote from a dev.wix.com doc example, article, or schema you read through wix-mcp, call `report-wix-feedback` once you've fixed it (not for skill references) \u2014 with the docs URL, what it showed, and what actually compiled.";
|
|
23844
|
+
exports2.REPORT_SENT_PREFIX = "Report sent";
|
|
23845
|
+
exports2.DOCS_FEEDBACK_NUDGE_FILENAME = "docs-feedback-nudge.ts";
|
|
23846
|
+
function buildDocsFeedbackNudgeSource() {
|
|
23847
|
+
return `// Generated by @wix/ditto-codegen (docs-feedback-nudge). Do not edit.
|
|
23848
|
+
const WIX_SDK_INTERNALS_RE = /${exports2.WIX_SDK_INTERNALS_RE.source}/;
|
|
23849
|
+
const NOTES = {
|
|
23850
|
+
sdkInternals: ${JSON.stringify(exports2.SDK_INTERNALS_NOTE)},
|
|
23851
|
+
validator: ${JSON.stringify(exports2.VALIDATOR_NOTE)},
|
|
23852
|
+
compileFailure: ${JSON.stringify(exports2.COMPILE_FAILURE_NOTE)},
|
|
23853
|
+
};
|
|
23854
|
+
const REPORT_SENT_PREFIX = ${JSON.stringify(exports2.REPORT_SENT_PREFIX)};
|
|
23855
|
+
const LOOKUP_TOOLS = new Set([
|
|
23856
|
+
"${"bash"}",
|
|
23857
|
+
"${"read"}",
|
|
23858
|
+
"${"batch-read"}",
|
|
23859
|
+
"${"grep"}",
|
|
23860
|
+
"${"glob"}",
|
|
23861
|
+
]);
|
|
23862
|
+
|
|
23863
|
+
function noteKind(input, result) {
|
|
23864
|
+
const args = input.args ?? {};
|
|
23865
|
+
if (LOOKUP_TOOLS.has(input.tool) && WIX_SDK_INTERNALS_RE.test(JSON.stringify(args))) {
|
|
23866
|
+
return "sdkInternals";
|
|
23867
|
+
}
|
|
23868
|
+
if (input.tool === "${"task"}" && args.subagent_type === "${subagents_1.VALIDATOR_SUBAGENT_NAME}") {
|
|
23869
|
+
return "validator";
|
|
23870
|
+
}
|
|
23871
|
+
if (input.tool === "${"validate"}" && result.startsWith("FAILED")) {
|
|
23872
|
+
return "compileFailure";
|
|
23873
|
+
}
|
|
23874
|
+
return null;
|
|
23875
|
+
}
|
|
23876
|
+
|
|
23877
|
+
export const DocsFeedbackNudge = async () => {
|
|
23878
|
+
const childSessions = new Set();
|
|
23879
|
+
const reported = new Set();
|
|
23880
|
+
const nudged = new Set();
|
|
23881
|
+
|
|
23882
|
+
return {
|
|
23883
|
+
event: async ({ event }) => {
|
|
23884
|
+
const info = event?.properties?.info;
|
|
23885
|
+
if (
|
|
23886
|
+
(event?.type === "session.created" || event?.type === "session.updated") &&
|
|
23887
|
+
info?.parentID
|
|
23888
|
+
) {
|
|
23889
|
+
childSessions.add(info.id);
|
|
23890
|
+
}
|
|
23891
|
+
if (event?.type === "message.updated" && info?.agent === "${subagents_1.VALIDATOR_SUBAGENT_NAME}") {
|
|
23892
|
+
childSessions.add(event.properties.sessionID ?? info.sessionID);
|
|
23893
|
+
}
|
|
23894
|
+
},
|
|
23895
|
+
"tool.execute.after": async (input, output) => {
|
|
23896
|
+
const sessionID = input.sessionID;
|
|
23897
|
+
if (childSessions.has(sessionID) || typeof output.output !== "string") return;
|
|
23898
|
+
if (input.tool === "${"report-wix-feedback"}") {
|
|
23899
|
+
if (output.output.startsWith(REPORT_SENT_PREFIX)) reported.add(sessionID);
|
|
23900
|
+
return;
|
|
23901
|
+
}
|
|
23902
|
+
if (reported.has(sessionID)) return;
|
|
23903
|
+
|
|
23904
|
+
const kind = noteKind(input, output.output);
|
|
23905
|
+
if (!kind || nudged.has(sessionID + ":" + kind)) return;
|
|
23906
|
+
nudged.add(sessionID + ":" + kind);
|
|
23907
|
+
output.output = output.output + "\\n\\n" + NOTES[kind];
|
|
23908
|
+
},
|
|
23909
|
+
};
|
|
23910
|
+
};
|
|
23911
|
+
`;
|
|
23912
|
+
}
|
|
23913
|
+
async function writeDocsFeedbackNudgePlugin() {
|
|
23914
|
+
await (0, write_plugin_1.writeGeneratedPlugin)(exports2.DOCS_FEEDBACK_NUDGE_FILENAME, buildDocsFeedbackNudgeSource());
|
|
23915
|
+
}
|
|
23916
|
+
}
|
|
23917
|
+
});
|
|
23918
|
+
|
|
24016
23919
|
// dist/opencode-integration/plugins/generated-files-guard.js
|
|
24017
23920
|
var require_generated_files_guard = __commonJS({
|
|
24018
23921
|
"dist/opencode-integration/plugins/generated-files-guard.js"(exports2) {
|
|
@@ -24336,6 +24239,7 @@ var require_plugins3 = __commonJS({
|
|
|
24336
24239
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
24337
24240
|
exports2.validateToolPolicies = void 0;
|
|
24338
24241
|
exports2.writeGeneratedPlugins = writeGeneratedPlugins;
|
|
24242
|
+
var docs_feedback_nudge_1 = require_docs_feedback_nudge();
|
|
24339
24243
|
var generated_files_guard_1 = require_generated_files_guard();
|
|
24340
24244
|
var subagent_tool_logger_1 = require_subagent_tool_logger();
|
|
24341
24245
|
var tool_policies_1 = require_tool_policies3();
|
|
@@ -24345,6 +24249,7 @@ var require_plugins3 = __commonJS({
|
|
|
24345
24249
|
} });
|
|
24346
24250
|
async function writeGeneratedPlugins(toolPolicies) {
|
|
24347
24251
|
await Promise.all([
|
|
24252
|
+
(0, docs_feedback_nudge_1.writeDocsFeedbackNudgePlugin)(),
|
|
24348
24253
|
(0, generated_files_guard_1.writeGeneratedFilesGuardPlugin)(),
|
|
24349
24254
|
(0, subagent_tool_logger_1.writeSubagentToolLoggerPlugin)(),
|
|
24350
24255
|
(0, tool_policies_1.writeToolPoliciesPlugin)(toolPolicies)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/ditto-codegen-public",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.466",
|
|
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": "
|
|
32
|
+
"falconPackageHash": "5f62c3bec337fac87f829cc93820852f2d6ab8cdc275abfc090e0a48"
|
|
33
33
|
}
|