@wix/ditto-codegen-public 1.0.443 → 1.0.445

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 +236 -59
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -11810,6 +11810,84 @@ ${closeBrace}${tail}`;
11810
11810
  }
11811
11811
  });
11812
11812
 
11813
+ // dist/opencode-integration/model-knobs.js
11814
+ var require_model_knobs = __commonJS({
11815
+ "dist/opencode-integration/model-knobs.js"(exports2) {
11816
+ "use strict";
11817
+ Object.defineProperty(exports2, "__esModule", { value: true });
11818
+ exports2.DEFAULT_SMALL_MODEL = exports2.DEFAULT_MODEL = void 0;
11819
+ exports2.isOpenAiModel = isOpenAiModel;
11820
+ exports2.getModel = getModel;
11821
+ exports2.getSmallModel = getSmallModel;
11822
+ exports2.hasModelOverride = hasModelOverride;
11823
+ exports2.getReasoningEffort = getReasoningEffort;
11824
+ exports2.getSmallReasoningEffort = getSmallReasoningEffort;
11825
+ exports2.hasSmallReasoningEffortOverride = hasSmallReasoningEffortOverride;
11826
+ exports2.getOpenAiServiceTier = getOpenAiServiceTier;
11827
+ exports2.DEFAULT_MODEL = "anthropic/claude-sonnet-4-6";
11828
+ exports2.DEFAULT_SMALL_MODEL = "anthropic/claude-haiku-4-5-20251001";
11829
+ var SMALL_MODEL_REASONING_EFFORT = "medium";
11830
+ var REASONING_EFFORTS = ["xhigh", "high", "medium", "low"];
11831
+ var VALID_OPENAI_SERVICE_TIERS = [
11832
+ "auto",
11833
+ "default",
11834
+ "flex",
11835
+ "priority"
11836
+ ];
11837
+ function isOpenAiModel(model) {
11838
+ return model.startsWith("openai/");
11839
+ }
11840
+ function getModel() {
11841
+ return process.env.CODEGEN_MODEL_OVERRIDE || exports2.DEFAULT_MODEL;
11842
+ }
11843
+ function getSmallModel() {
11844
+ return process.env.CODEGEN_SMALL_MODEL_OVERRIDE || exports2.DEFAULT_SMALL_MODEL;
11845
+ }
11846
+ function hasModelOverride() {
11847
+ return !!process.env.CODEGEN_MODEL_OVERRIDE;
11848
+ }
11849
+ function readEnumEnv(name, allowed) {
11850
+ const value = process.env[name];
11851
+ if (!value)
11852
+ return void 0;
11853
+ if (!allowed.includes(value)) {
11854
+ throw new Error(`Unsupported ${name}: ${value} (expected one of ${allowed.join(", ")})`);
11855
+ }
11856
+ return value;
11857
+ }
11858
+ function getReasoningEffort() {
11859
+ const effort = readEnumEnv("CODEGEN_REASONING_EFFORT", REASONING_EFFORTS);
11860
+ if (!effort)
11861
+ return void 0;
11862
+ if (!isOpenAiModel(getModel()) || !isOpenAiModel(getSmallModel())) {
11863
+ throw new Error("CODEGEN_REASONING_EFFORT requires BOTH the main and small models to be openai/* \u2014 set CODEGEN_MODEL_OVERRIDE and CODEGEN_SMALL_MODEL_OVERRIDE (reasoning-effort variants are invalid on Anthropic models).");
11864
+ }
11865
+ return effort;
11866
+ }
11867
+ function getSmallReasoningEffort() {
11868
+ const effort = readEnumEnv("CODEGEN_SMALL_MODEL_REASONING_EFFORT", REASONING_EFFORTS);
11869
+ if (!effort)
11870
+ return SMALL_MODEL_REASONING_EFFORT;
11871
+ if (!isOpenAiModel(getSmallModel())) {
11872
+ throw new Error("CODEGEN_SMALL_MODEL_REASONING_EFFORT requires the small model to be openai/* \u2014 set CODEGEN_SMALL_MODEL_OVERRIDE (reasoning-effort variants are invalid on Anthropic models).");
11873
+ }
11874
+ return effort;
11875
+ }
11876
+ function hasSmallReasoningEffortOverride() {
11877
+ return !!process.env.CODEGEN_SMALL_MODEL_REASONING_EFFORT;
11878
+ }
11879
+ function getOpenAiServiceTier() {
11880
+ const tier = readEnumEnv("CODEGEN_OPENAI_SERVICE_TIER", VALID_OPENAI_SERVICE_TIERS);
11881
+ if (!tier)
11882
+ return void 0;
11883
+ if (!isOpenAiModel(getModel()) && !isOpenAiModel(getSmallModel())) {
11884
+ throw new Error("CODEGEN_OPENAI_SERVICE_TIER requires the main or small model to be openai/* \u2014 set CODEGEN_MODEL_OVERRIDE and/or CODEGEN_SMALL_MODEL_OVERRIDE (serviceTier applies only to openai models).");
11885
+ }
11886
+ return tier;
11887
+ }
11888
+ }
11889
+ });
11890
+
11813
11891
  // dist/opencode-integration/types.js
11814
11892
  var require_types4 = __commonJS({
11815
11893
  "dist/opencode-integration/types.js"(exports2) {
@@ -11828,15 +11906,18 @@ var require_types4 = __commonJS({
11828
11906
  }
11829
11907
  });
11830
11908
 
11831
- // dist/opencode-integration/subagents.js
11832
- var require_subagents = __commonJS({
11833
- "dist/opencode-integration/subagents.js"(exports2) {
11909
+ // dist/opencode-integration/agents.js
11910
+ var require_agents = __commonJS({
11911
+ "dist/opencode-integration/agents.js"(exports2) {
11834
11912
  "use strict";
11835
11913
  Object.defineProperty(exports2, "__esModule", { value: true });
11836
11914
  exports2.SUBAGENT_AGENT_NAMES = exports2.WDS_DOCS_SUBAGENT_NAME = exports2.WIX_DOCS_SUBAGENT_NAME = exports2.VALIDATOR_SUBAGENT_NAME = exports2.PRIMARY_AGENT_NAME = void 0;
11837
11915
  exports2.getAgentConfig = getAgentConfig;
11916
+ exports2.getMainAgentModel = getMainAgentModel;
11917
+ exports2.getSubagentModel = getSubagentModel;
11838
11918
  var types_1 = require_types4();
11839
11919
  var constants_1 = require_constants5();
11920
+ var model_knobs_1 = require_model_knobs();
11840
11921
  exports2.PRIMARY_AGENT_NAME = "codegen";
11841
11922
  exports2.VALIDATOR_SUBAGENT_NAME = "codegen-validator";
11842
11923
  exports2.WIX_DOCS_SUBAGENT_NAME = "codegen-wix-docs";
@@ -11986,10 +12067,26 @@ skills already cover. Read-only.`;
11986
12067
  /* OpenCodeTool.BatchWrite */
11987
12068
  ]: "allow"
11988
12069
  };
11989
- function getAgentConfig(smallModel) {
12070
+ var MODEL_VARIANTS = {
12071
+ "openai/gpt-5.6-luna": ["xhigh", "high", "medium", "low"],
12072
+ "openai/gpt-5.6-sol": ["xhigh", "high", "medium", "low"],
12073
+ "openai/gpt-5.6-terra": ["xhigh", "high", "medium", "low"]
12074
+ };
12075
+ function agentModel(model, opts = {}) {
12076
+ if (opts.variant && !MODEL_VARIANTS[model]?.includes(opts.variant)) {
12077
+ throw new Error(`Model ${model} does not support reasoning variant "${opts.variant}"`);
12078
+ }
12079
+ return {
12080
+ model,
12081
+ ...opts.variant ? { variant: opts.variant } : {},
12082
+ ...opts.options ? { options: opts.options } : {}
12083
+ };
12084
+ }
12085
+ function getAgentConfig(main2, subagent) {
11990
12086
  return {
11991
12087
  [exports2.PRIMARY_AGENT_NAME]: {
11992
12088
  mode: "primary",
12089
+ ...main2 ?? {},
11993
12090
  permission: {
11994
12091
  [
11995
12092
  "task"
@@ -12004,7 +12101,7 @@ skills already cover. Read-only.`;
12004
12101
  },
12005
12102
  [exports2.VALIDATOR_SUBAGENT_NAME]: {
12006
12103
  mode: "subagent",
12007
- model: smallModel,
12104
+ ...subagent,
12008
12105
  steps: 80,
12009
12106
  description: VALIDATOR_DESCRIPTION,
12010
12107
  prompt: VALIDATOR_PROMPT,
@@ -12030,7 +12127,7 @@ skills already cover. Read-only.`;
12030
12127
  },
12031
12128
  [exports2.WIX_DOCS_SUBAGENT_NAME]: {
12032
12129
  mode: "subagent",
12033
- model: smallModel,
12130
+ ...subagent,
12034
12131
  steps: 15,
12035
12132
  description: WIX_DOCS_DESCRIPTION,
12036
12133
  prompt: WIX_DOCS_PROMPT,
@@ -12050,7 +12147,7 @@ skills already cover. Read-only.`;
12050
12147
  },
12051
12148
  [exports2.WDS_DOCS_SUBAGENT_NAME]: {
12052
12149
  mode: "subagent",
12053
- model: smallModel,
12150
+ ...subagent,
12054
12151
  steps: 15,
12055
12152
  description: WDS_DOCS_DESCRIPTION,
12056
12153
  permission: {
@@ -12070,6 +12167,29 @@ skills already cover. Read-only.`;
12070
12167
  }
12071
12168
  };
12072
12169
  }
12170
+ function serviceTierOptions(model) {
12171
+ const tier = (0, model_knobs_1.getOpenAiServiceTier)();
12172
+ return tier && (0, model_knobs_1.isOpenAiModel)(model) ? { serviceTier: tier } : void 0;
12173
+ }
12174
+ function getMainAgentModel() {
12175
+ const effort = (0, model_knobs_1.getReasoningEffort)();
12176
+ const options = serviceTierOptions((0, model_knobs_1.getModel)());
12177
+ if (!effort && !options && !(0, model_knobs_1.hasModelOverride)())
12178
+ return void 0;
12179
+ return agentModel((0, model_knobs_1.getModel)(), {
12180
+ ...effort ? { variant: effort } : {},
12181
+ ...options ? { options } : {}
12182
+ });
12183
+ }
12184
+ function getSubagentModel() {
12185
+ const hasEffort = Boolean((0, model_knobs_1.getReasoningEffort)()) || (0, model_knobs_1.hasSmallReasoningEffortOverride)();
12186
+ const effort = hasEffort ? (0, model_knobs_1.getSmallReasoningEffort)() : void 0;
12187
+ const options = serviceTierOptions((0, model_knobs_1.getSmallModel)());
12188
+ return agentModel((0, model_knobs_1.getSmallModel)(), {
12189
+ ...effort ? { variant: effort } : {},
12190
+ ...options ? { options } : {}
12191
+ });
12192
+ }
12073
12193
  }
12074
12194
  });
12075
12195
 
@@ -13258,6 +13378,7 @@ var require_checkpoint = __commonJS({
13258
13378
  var EML_MARKER = "generate-eml.ts";
13259
13379
  var SET_COMMIT_MESSAGE_TOOL = "set-commit-message";
13260
13380
  var MAX_COMMIT_MESSAGE_LENGTH = 1e3;
13381
+ var MAX_CHECKPOINT_ERROR_LENGTH = 1e3;
13261
13382
  var TRUNCATION_SUFFIX = "\u2026";
13262
13383
  var COMMON_CONFIG_BY_ENVIRONMENT = {
13263
13384
  STUDIO_2: { host: "STUDIO2", brand: "studio" }
@@ -13280,10 +13401,10 @@ var require_checkpoint = __commonJS({
13280
13401
  source: readAsset("set-commit-message.ts")
13281
13402
  }
13282
13403
  ];
13283
- var truncateCommitMessage = (message) => {
13284
- if (message.length <= MAX_COMMIT_MESSAGE_LENGTH)
13285
- return message;
13286
- return message.slice(0, MAX_COMMIT_MESSAGE_LENGTH - TRUNCATION_SUFFIX.length) + TRUNCATION_SUFFIX;
13404
+ var truncate = (value, maxLength) => {
13405
+ if (value.length <= maxLength)
13406
+ return value;
13407
+ return value.slice(0, maxLength - TRUNCATION_SUFFIX.length) + TRUNCATION_SUFFIX;
13287
13408
  };
13288
13409
  var CHECKPOINT_CONFLICT_CODE = "CHECKPOINT_CONFLICT";
13289
13410
  var FIX_GIT_CONFLICTS_TASK_KIND = "FIX_GIT_CONFLICTS";
@@ -13304,6 +13425,21 @@ var require_checkpoint = __commonJS({
13304
13425
  const files = data?.details?.applicationError?.data?.files;
13305
13426
  return Array.isArray(files) ? files.filter((file) => typeof file === "string") : [];
13306
13427
  };
13428
+ var readCheckpointErrorMessage = (error) => {
13429
+ const fromResponse = (() => {
13430
+ if (!http_client_1.HttpClient.isHttpError(error))
13431
+ return void 0;
13432
+ const data = error.response?.data;
13433
+ const candidates = [
13434
+ data?.details?.applicationError?.description,
13435
+ data?.message
13436
+ ];
13437
+ return candidates.find((value) => typeof value === "string" && value.trim().length > 0);
13438
+ })();
13439
+ const message = fromResponse ?? (error instanceof Error ? error.message : String(error));
13440
+ const trimmed = message.trim();
13441
+ return trimmed.length > 0 ? truncate(trimmed, MAX_CHECKPOINT_ERROR_LENGTH) : void 0;
13442
+ };
13307
13443
  var wasAuthorizationHeaderSent = (requestHeaders) => {
13308
13444
  if (typeof requestHeaders !== "object" || requestHeaders === null)
13309
13445
  return false;
@@ -13343,7 +13479,7 @@ var require_checkpoint = __commonJS({
13343
13479
  }
13344
13480
  const resp = await client.request((0, http_1.createCheckpoint)({
13345
13481
  appId: job.projectId,
13346
- commitMessage: truncateCommitMessage(commitMessage)
13482
+ commitMessage: truncate(commitMessage, MAX_COMMIT_MESSAGE_LENGTH)
13347
13483
  }));
13348
13484
  return {
13349
13485
  checkpointId: resp.data?.checkpointId,
@@ -13401,7 +13537,8 @@ var require_checkpoint = __commonJS({
13401
13537
  commitMessage
13402
13538
  });
13403
13539
  } catch (error) {
13404
- if (useCodeProjectOrchestrator() && collaboratorLiveSyncEnabled() && job.siteBranchId && isCheckpointConflict(error)) {
13540
+ const checkpointExists = outcome?.status === "created";
13541
+ if (!checkpointExists && useCodeProjectOrchestrator() && collaboratorLiveSyncEnabled() && job.siteBranchId && isCheckpointConflict(error)) {
13405
13542
  const files = readConflictedFiles(error);
13406
13543
  if (job.kind === FIX_GIT_CONFLICTS_TASK_KIND) {
13407
13544
  host.logger.warn("[Checkpoint] conflict during a conflict-resolution run, skipping resolve", {
@@ -13449,10 +13586,22 @@ var require_checkpoint = __commonJS({
13449
13586
  }
13450
13587
  }
13451
13588
  outcome = { status: "failed", error };
13589
+ const checkpointError = readCheckpointErrorMessage(error);
13452
13590
  host.logger.error("[Checkpoint] create failed", {
13453
13591
  projectId: job.projectId,
13454
13592
  error: error instanceof Error ? error.message : String(error)
13455
13593
  });
13594
+ if (!checkpointExists) {
13595
+ await host.jobs.updatePayload({ jobId: job.jobId, taskId: job.taskId }, {
13596
+ checkpointStatus: "failed",
13597
+ ...checkpointError ? { checkpointError } : {}
13598
+ }).catch((payloadError) => {
13599
+ host.logger.warn("[Checkpoint] failed to publish the checkpoint failure state", {
13600
+ projectId: job.projectId,
13601
+ error: payloadError instanceof Error ? payloadError.message : String(payloadError)
13602
+ });
13603
+ });
13604
+ }
13456
13605
  throw error;
13457
13606
  }
13458
13607
  };
@@ -15378,7 +15527,7 @@ MINIMIZE TEXT OUTPUT \u2014 CRITICAL:
15378
15527
 
15379
15528
  TOOL USAGE:
15380
15529
  - \`validate\` (tsc + build) is run by the \`codegen-validator\` subagent \u2014 do NOT call it directly; delegate via \`task\` at step 5.
15381
- - \`task\` delegates to haiku subagents: \`codegen-validator\` (step 5; see step 5 for the exact prompt), \`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.
15530
+ - \`task\` delegates to subagents: \`codegen-validator\` (step 5; see step 5 for the exact prompt), \`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.
15382
15531
  - 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.
15383
15532
  - If BOTH docs subagents are needed, fire both \`task\` calls in ONE response (parallel), never serially.
15384
15533
  - \`uuid\` to generate UUIDs (supports count param for multiple). Do NOT use bash.
@@ -15680,25 +15829,31 @@ var require_config = __commonJS({
15680
15829
  "dist/opencode-integration/config.js"(exports2) {
15681
15830
  "use strict";
15682
15831
  Object.defineProperty(exports2, "__esModule", { value: true });
15683
- exports2.DEFAULT_SMALL_MODEL = exports2.DEFAULT_MODEL = exports2.DEFAULT_TIMEOUT_MS = void 0;
15832
+ exports2.DEFAULT_TIMEOUT_MS = void 0;
15684
15833
  exports2.getAnthropicBaseUrl = getAnthropicBaseUrl;
15834
+ exports2.getOpenAiBaseUrl = getOpenAiBaseUrl;
15685
15835
  exports2.setCurrentAccessToken = setCurrentAccessToken;
15686
15836
  exports2.getCurrentAccessToken = getCurrentAccessToken;
15687
15837
  exports2.getOpenCodeEnv = getOpenCodeEnv;
15688
15838
  var os_1 = require("os");
15689
15839
  var ditto_codegen_types_12 = require_dist4();
15690
15840
  var constants_1 = require_constants5();
15691
- var subagents_1 = require_subagents();
15841
+ var model_knobs_1 = require_model_knobs();
15842
+ var agents_1 = require_agents();
15692
15843
  var rules_writer_12 = require_rules_writer();
15693
15844
  var environments_12 = require_environments();
15694
15845
  var CodeGenService_12 = require_CodeGenService();
15695
15846
  exports2.DEFAULT_TIMEOUT_MS = 20 * 60 * 1e3;
15696
- exports2.DEFAULT_MODEL = "anthropic/claude-sonnet-4-6";
15697
- exports2.DEFAULT_SMALL_MODEL = "anthropic/claude-haiku-4-5-20251001";
15847
+ function usesOpenAiProvider() {
15848
+ return (0, model_knobs_1.isOpenAiModel)((0, model_knobs_1.getModel)()) || (0, model_knobs_1.isOpenAiModel)((0, model_knobs_1.getSmallModel)());
15849
+ }
15698
15850
  var AI_PROXY_BASE_URL = process.env.CODEGEN_AI_PROXY_BASE_URL || "http://localhost:3001";
15699
15851
  function getAnthropicBaseUrl(projectId) {
15700
15852
  return `${AI_PROXY_BASE_URL}/projects/${projectId}/genai/anthropic`;
15701
15853
  }
15854
+ function getOpenAiBaseUrl(projectId) {
15855
+ return `${AI_PROXY_BASE_URL}/projects/${projectId}/genai/openai`;
15856
+ }
15702
15857
  var currentAccessToken = process.env.WIX_ACCESS_TOKEN;
15703
15858
  function setCurrentAccessToken(token) {
15704
15859
  currentAccessToken = token;
@@ -15713,7 +15868,7 @@ var require_config = __commonJS({
15713
15868
  ".git/**",
15714
15869
  ".astro/**"
15715
15870
  ];
15716
- function getProviderConfig() {
15871
+ function getProviderConfig(projectId) {
15717
15872
  const environment = (0, environments_12.getValidatedCodegenEnvironment)();
15718
15873
  const chargingMode = (0, environments_12.getCodegenEnvironmentConfig)().chargingMode ?? "app";
15719
15874
  const headers = {
@@ -15726,7 +15881,7 @@ var require_config = __commonJS({
15726
15881
  // authorize the project.
15727
15882
  ...currentAccessToken ? { Authorization: `Bearer ${currentAccessToken}` } : {}
15728
15883
  };
15729
- return {
15884
+ const provider = {
15730
15885
  anthropic: {
15731
15886
  options: {
15732
15887
  apiKey: "proxy-handled",
@@ -15735,6 +15890,19 @@ var require_config = __commonJS({
15735
15890
  }
15736
15891
  }
15737
15892
  };
15893
+ if (usesOpenAiProvider()) {
15894
+ provider.openai = {
15895
+ options: {
15896
+ // Load-bearing: @ai-sdk/openai turns this into `Authorization: Bearer
15897
+ // proxy-handled`; only the headers-spread order lets the Wix token win, so
15898
+ // don't "clean up" apiKey — removing it 403s every openai request.
15899
+ apiKey: "proxy-handled",
15900
+ baseURL: getOpenAiBaseUrl(projectId),
15901
+ headers
15902
+ }
15903
+ };
15904
+ }
15905
+ return provider;
15738
15906
  }
15739
15907
  var WIX_MCP_CONFIG = {
15740
15908
  [constants_1.WIX_MCP_SERVER_NAME]: {
@@ -15827,11 +15995,13 @@ var require_config = __commonJS({
15827
15995
  ]: "deny",
15828
15996
  external_directory: READABLE_EXTERNAL_DIRS
15829
15997
  };
15830
- function buildConfig(instructionPaths, permission, { isCodeWritingFlow = false, withAgents = false } = {}) {
15998
+ function buildConfig(projectId, instructionPaths, permission, { isCodeWritingFlow = false, withAgents = false } = {}) {
15999
+ const main2 = (0, agents_1.getMainAgentModel)();
16000
+ const subagent = (0, agents_1.getSubagentModel)();
15831
16001
  return {
15832
- model: exports2.DEFAULT_MODEL,
15833
- small_model: exports2.DEFAULT_SMALL_MODEL,
15834
- provider: getProviderConfig(),
16002
+ model: (0, model_knobs_1.getModel)(),
16003
+ small_model: (0, model_knobs_1.getSmallModel)(),
16004
+ provider: getProviderConfig(projectId),
15835
16005
  compaction: { prune: true },
15836
16006
  // drop old tool outputs so --continue replays stay bounded
15837
16007
  permission,
@@ -15844,8 +16014,8 @@ var require_config = __commonJS({
15844
16014
  // not: its primary agent re-opens `task`, which would let the write-capable
15845
16015
  // validator subagent run in a flow meant to stay read-only.
15846
16016
  ...withAgents ? {
15847
- agent: (0, subagents_1.getAgentConfig)(exports2.DEFAULT_SMALL_MODEL),
15848
- default_agent: subagents_1.PRIMARY_AGENT_NAME
16017
+ agent: (0, agents_1.getAgentConfig)(main2, subagent),
16018
+ default_agent: agents_1.PRIMARY_AGENT_NAME
15849
16019
  } : {}
15850
16020
  };
15851
16021
  }
@@ -15863,6 +16033,9 @@ var require_config = __commonJS({
15863
16033
  ...process.env,
15864
16034
  PATH: ensureOpenCodeInPath(),
15865
16035
  ANTHROPIC_BASE_URL: anthropicBaseUrl,
16036
+ // The provider block sets baseURL too; this also covers any AI-SDK path that
16037
+ // reads the env.
16038
+ ...usesOpenAiProvider() ? { OPENAI_BASE_URL: getOpenAiBaseUrl(projectId) } : {},
15866
16039
  OPENCODE_CONFIG_CONTENT: JSON.stringify(config),
15867
16040
  OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS: exports2.DEFAULT_TIMEOUT_MS.toString(),
15868
16041
  OPENCODE_DISABLE_LSP_DOWNLOAD: "true",
@@ -15870,21 +16043,21 @@ var require_config = __commonJS({
15870
16043
  };
15871
16044
  }
15872
16045
  function getOpenCodeEnv(projectId, kind) {
15873
- return buildOpenCodeEnv(projectId, buildConfigForKind(kind));
16046
+ return buildOpenCodeEnv(projectId, buildConfigForKind(projectId, kind));
15874
16047
  }
15875
- function buildConfigForKind(kind) {
16048
+ function buildConfigForKind(projectId, kind) {
15876
16049
  const env = (0, environments_12.getCodegenEnvironmentConfig)();
15877
16050
  const paths = (rules) => rules.map((r) => (0, rules_writer_12.getRulePath)(r.filename));
15878
16051
  switch (kind) {
15879
16052
  case CodeGenService_12.TaskKind.ASK_CODEGEN:
15880
- return buildConfig(paths(env.askRules), ASK_PERMISSIONS);
16053
+ return buildConfig(projectId, paths(env.askRules), ASK_PERMISSIONS);
15881
16054
  case CodeGenService_12.TaskKind.FIX_GIT_CONFLICTS:
15882
- return buildConfig(paths(env.gitConflictsRules), GIT_CONFLICTS_PERMISSIONS, {
16055
+ return buildConfig(projectId, paths(env.gitConflictsRules), GIT_CONFLICTS_PERMISSIONS, {
15883
16056
  isCodeWritingFlow: true,
15884
16057
  withAgents: true
15885
16058
  });
15886
16059
  default:
15887
- return buildConfig(paths(env.codegenRules), CODEGEN_PERMISSIONS, {
16060
+ return buildConfig(projectId, paths(env.codegenRules), CODEGEN_PERMISSIONS, {
15888
16061
  isCodeWritingFlow: true,
15889
16062
  withAgents: true
15890
16063
  });
@@ -15922,7 +16095,7 @@ var require_subagent_tool_logger = __commonJS({
15922
16095
  exports2.buildSubagentToolLoggerPluginSource = buildSubagentToolLoggerPluginSource;
15923
16096
  exports2.writeSubagentToolLoggerPlugin = writeSubagentToolLoggerPlugin;
15924
16097
  var generated_plugins_1 = require_generated_plugins();
15925
- var subagents_1 = require_subagents();
16098
+ var agents_1 = require_agents();
15926
16099
  exports2.SUBAGENT_TOOL_EVENT_TYPE = "subagent_tool_use";
15927
16100
  exports2.SUBAGENT_STARTED_EVENT_TYPE = "subagent_started";
15928
16101
  var PLUGIN_FILENAME = "subagent-tool-logger.ts";
@@ -15930,7 +16103,7 @@ var require_subagent_tool_logger = __commonJS({
15930
16103
  return `// Generated by @wix/ditto-codegen (subagent-tool-logger) \u2014 do not edit.
15931
16104
  const EVENT_TYPE = ${JSON.stringify(exports2.SUBAGENT_TOOL_EVENT_TYPE)};
15932
16105
  const STARTED_EVENT_TYPE = ${JSON.stringify(exports2.SUBAGENT_STARTED_EVENT_TYPE)};
15933
- const SUBAGENT_AGENTS = new Set(${JSON.stringify(subagents_1.SUBAGENT_AGENT_NAMES)});
16106
+ const SUBAGENT_AGENTS = new Set(${JSON.stringify(agents_1.SUBAGENT_AGENT_NAMES)});
15934
16107
 
15935
16108
  export const SubagentToolLogger = async () => {
15936
16109
  // sessionID -> agent name, learned from session.* / message.updated (both
@@ -16060,7 +16233,7 @@ var require_parser = __commonJS({
16060
16233
  exports2.parseValidatorTaskOutputs = parseValidatorTaskOutputs;
16061
16234
  exports2.summarizeOpenCodeLine = summarizeOpenCodeLine;
16062
16235
  var types_1 = require_types4();
16063
- var subagents_1 = require_subagents();
16236
+ var agents_1 = require_agents();
16064
16237
  var subagent_tool_logger_12 = require_subagent_tool_logger();
16065
16238
  function parseRequiredPermissions(output) {
16066
16239
  let permissions = [];
@@ -16204,7 +16377,7 @@ var require_parser = __commonJS({
16204
16377
  continue;
16205
16378
  }
16206
16379
  const { title, output, input } = event.part.state;
16207
- const isValidator = input?.subagent_type === subagents_1.VALIDATOR_SUBAGENT_NAME || title?.includes(subagents_1.VALIDATOR_SUBAGENT_NAME);
16380
+ const isValidator = input?.subagent_type === agents_1.VALIDATOR_SUBAGENT_NAME || title?.includes(agents_1.VALIDATOR_SUBAGENT_NAME);
16208
16381
  if (isValidator && output) {
16209
16382
  outputs.push(output.trim());
16210
16383
  }
@@ -16458,11 +16631,11 @@ var require_derived_progress = __commonJS({
16458
16631
  exports2.deriveProgressSteps = deriveProgressSteps;
16459
16632
  var ditto_codegen_types_12 = require_dist4();
16460
16633
  var constants_1 = require_constants5();
16461
- var subagents_1 = require_subagents();
16634
+ var agents_1 = require_agents();
16462
16635
  var SUBAGENT_STEPS = {
16463
- [subagents_1.VALIDATOR_SUBAGENT_NAME]: "Building project",
16464
- [subagents_1.WIX_DOCS_SUBAGENT_NAME]: "Reading documentation",
16465
- [subagents_1.WDS_DOCS_SUBAGENT_NAME]: "Reading documentation"
16636
+ [agents_1.VALIDATOR_SUBAGENT_NAME]: "Building project",
16637
+ [agents_1.WIX_DOCS_SUBAGENT_NAME]: "Reading documentation",
16638
+ [agents_1.WDS_DOCS_SUBAGENT_NAME]: "Reading documentation"
16466
16639
  };
16467
16640
  var REGISTRY_FILE_PATTERN = /(^|\/)extensions\.ts$/;
16468
16641
  var EXTENSION_DEFINITION_PATTERN = /\.extension\.ts$/;
@@ -22830,7 +23003,7 @@ var require_opencode_init = __commonJS({
22830
23003
  var types_1 = require_types_impl();
22831
23004
  var context_12 = require_context();
22832
23005
  var logger_12 = require_logger();
22833
- var config_12 = require_config();
23006
+ var model_knobs_1 = require_model_knobs();
22834
23007
  var git_file_changes_1 = require_git_file_changes();
22835
23008
  var inject_created_by_1 = require_inject_created_by();
22836
23009
  var collect_extensions_created_1 = require_collect_extensions_created();
@@ -22850,6 +23023,7 @@ var require_opencode_init = __commonJS({
22850
23023
  const environment = process.env.CODEGEN_ENVIRONMENT ?? types_1.Environment.UNKNOWN_ENVIRONMENT;
22851
23024
  const flowStartTime = Date.now();
22852
23025
  store.flowStartTime = flowStartTime;
23026
+ const taskModel = (0, model_knobs_1.getModel)();
22853
23027
  const biBase = {
22854
23028
  jobId,
22855
23029
  taskId,
@@ -22864,7 +23038,7 @@ var require_opencode_init = __commonJS({
22864
23038
  logger_12.logger.info("[OpenCode Init] Marked task RUNNING", { taskId });
22865
23039
  await (0, biEvents_1.reportSessionStart)({
22866
23040
  ...biBase,
22867
- taskModel: config_12.DEFAULT_MODEL,
23041
+ taskModel,
22868
23042
  taskType: kind,
22869
23043
  jobInput: userInput
22870
23044
  });
@@ -22918,7 +23092,7 @@ var require_opencode_init = __commonJS({
22918
23092
  }
22919
23093
  await (0, biEvents_1.reportSessionEnd)({
22920
23094
  ...biBase,
22921
- taskModel: config_12.DEFAULT_MODEL,
23095
+ taskModel,
22922
23096
  taskType: kind,
22923
23097
  taskCost: Math.round(result.usage.cost * 1e6),
22924
23098
  taskStatus: ditto_codegen_types_12.Status.COMPLETED,
@@ -22937,7 +23111,7 @@ var require_opencode_init = __commonJS({
22937
23111
  const taskCost = orchestrator.lastUsage ? Math.round(orchestrator.lastUsage.cost * 1e6) : void 0;
22938
23112
  await (0, biEvents_1.reportSessionEnd)({
22939
23113
  ...biBase,
22940
- taskModel: config_12.DEFAULT_MODEL,
23114
+ taskModel,
22941
23115
  taskType: kind,
22942
23116
  taskCost,
22943
23117
  taskStatus: ditto_codegen_types_12.Status.FAILED,
@@ -22946,7 +23120,7 @@ var require_opencode_init = __commonJS({
22946
23120
  });
22947
23121
  await (0, biEvents_1.reportSessionError)({
22948
23122
  ...biBase,
22949
- taskModel: config_12.DEFAULT_MODEL,
23123
+ taskModel,
22950
23124
  taskType: kind,
22951
23125
  agentOutput: JSON.stringify(codegenError),
22952
23126
  errorDesc: codegenError.errorType,
@@ -23039,7 +23213,7 @@ var require_opencode_iterate = __commonJS({
23039
23213
  var ditto_codegen_types_2 = require_dist4();
23040
23214
  var context_12 = require_context();
23041
23215
  var logger_12 = require_logger();
23042
- var config_12 = require_config();
23216
+ var model_knobs_1 = require_model_knobs();
23043
23217
  var git_file_changes_1 = require_git_file_changes();
23044
23218
  var inject_created_by_1 = require_inject_created_by();
23045
23219
  var collect_extensions_created_1 = require_collect_extensions_created();
@@ -23057,6 +23231,7 @@ var require_opencode_iterate = __commonJS({
23057
23231
  const environment = process.env.CODEGEN_ENVIRONMENT ?? types_1.Environment.UNKNOWN_ENVIRONMENT;
23058
23232
  const flowStartTime = Date.now();
23059
23233
  store.flowStartTime = flowStartTime;
23234
+ const taskModel = (0, model_knobs_1.getModel)();
23060
23235
  const biBase = {
23061
23236
  jobId,
23062
23237
  taskId,
@@ -23071,7 +23246,7 @@ var require_opencode_iterate = __commonJS({
23071
23246
  logger_12.logger.info("[OpenCode Iterate] Marked task RUNNING", { taskId });
23072
23247
  await (0, biEvents_1.reportSessionStart)({
23073
23248
  ...biBase,
23074
- taskModel: config_12.DEFAULT_MODEL,
23249
+ taskModel,
23075
23250
  taskType: kind,
23076
23251
  jobInput: userInput
23077
23252
  });
@@ -23115,7 +23290,7 @@ var require_opencode_iterate = __commonJS({
23115
23290
  });
23116
23291
  await (0, biEvents_1.reportSessionEnd)({
23117
23292
  ...biBase,
23118
- taskModel: config_12.DEFAULT_MODEL,
23293
+ taskModel,
23119
23294
  taskType: kind,
23120
23295
  taskCost: Math.round(result.usage.cost * 1e6),
23121
23296
  taskStatus: ditto_codegen_types_12.Status.COMPLETED,
@@ -23134,7 +23309,7 @@ var require_opencode_iterate = __commonJS({
23134
23309
  const taskCost = iterationOrchestrator.lastUsage ? Math.round(iterationOrchestrator.lastUsage.cost * 1e6) : void 0;
23135
23310
  await (0, biEvents_1.reportSessionEnd)({
23136
23311
  ...biBase,
23137
- taskModel: config_12.DEFAULT_MODEL,
23312
+ taskModel,
23138
23313
  taskType: kind,
23139
23314
  taskCost,
23140
23315
  taskStatus: ditto_codegen_types_12.Status.FAILED,
@@ -23143,7 +23318,7 @@ var require_opencode_iterate = __commonJS({
23143
23318
  });
23144
23319
  await (0, biEvents_1.reportSessionError)({
23145
23320
  ...biBase,
23146
- taskModel: config_12.DEFAULT_MODEL,
23321
+ taskModel,
23147
23322
  taskType: kind,
23148
23323
  agentOutput: JSON.stringify(codegenError),
23149
23324
  errorDesc: codegenError.errorType,
@@ -23233,7 +23408,7 @@ var require_opencode_ask = __commonJS({
23233
23408
  var ditto_codegen_types_2 = require_dist4();
23234
23409
  var context_12 = require_context();
23235
23410
  var logger_12 = require_logger();
23236
- var config_12 = require_config();
23411
+ var model_knobs_1 = require_model_knobs();
23237
23412
  var git_file_changes_1 = require_git_file_changes();
23238
23413
  var inject_created_by_1 = require_inject_created_by();
23239
23414
  var collect_extensions_created_1 = require_collect_extensions_created();
@@ -23248,6 +23423,7 @@ var require_opencode_ask = __commonJS({
23248
23423
  const environment = process.env.CODEGEN_ENVIRONMENT ?? types_1.Environment.UNKNOWN_ENVIRONMENT;
23249
23424
  const flowStartTime = Date.now();
23250
23425
  store.flowStartTime = flowStartTime;
23426
+ const taskModel = (0, model_knobs_1.getModel)();
23251
23427
  const biBase = {
23252
23428
  jobId,
23253
23429
  taskId,
@@ -23262,7 +23438,7 @@ var require_opencode_ask = __commonJS({
23262
23438
  logger_12.logger.info("[OpenCode Ask] Marked task RUNNING", { taskId });
23263
23439
  await (0, biEvents_1.reportSessionStart)({
23264
23440
  ...biBase,
23265
- taskModel: config_12.DEFAULT_MODEL,
23441
+ taskModel,
23266
23442
  taskType: kind,
23267
23443
  jobInput: userInput
23268
23444
  });
@@ -23293,7 +23469,7 @@ var require_opencode_ask = __commonJS({
23293
23469
  });
23294
23470
  await (0, biEvents_1.reportSessionEnd)({
23295
23471
  ...biBase,
23296
- taskModel: config_12.DEFAULT_MODEL,
23472
+ taskModel,
23297
23473
  taskType: kind,
23298
23474
  taskCost: Math.round(result.usage.cost * 1e6),
23299
23475
  taskStatus: ditto_codegen_types_12.Status.COMPLETED,
@@ -23315,7 +23491,7 @@ var require_opencode_ask = __commonJS({
23315
23491
  const taskCost = askOrchestrator.lastUsage ? Math.round(askOrchestrator.lastUsage.cost * 1e6) : void 0;
23316
23492
  await (0, biEvents_1.reportSessionEnd)({
23317
23493
  ...biBase,
23318
- taskModel: config_12.DEFAULT_MODEL,
23494
+ taskModel,
23319
23495
  taskType: kind,
23320
23496
  taskCost,
23321
23497
  taskStatus: ditto_codegen_types_12.Status.FAILED,
@@ -23324,7 +23500,7 @@ var require_opencode_ask = __commonJS({
23324
23500
  });
23325
23501
  await (0, biEvents_1.reportSessionError)({
23326
23502
  ...biBase,
23327
- taskModel: config_12.DEFAULT_MODEL,
23503
+ taskModel,
23328
23504
  taskType: kind,
23329
23505
  agentOutput: JSON.stringify(codegenError),
23330
23506
  errorDesc: codegenError.errorType,
@@ -23413,7 +23589,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23413
23589
  var codegen_flow_helpers_12 = require_codegen_flow_helpers();
23414
23590
  var context_12 = require_context();
23415
23591
  var logger_12 = require_logger();
23416
- var config_12 = require_config();
23592
+ var model_knobs_1 = require_model_knobs();
23417
23593
  var git_file_changes_1 = require_git_file_changes();
23418
23594
  var collect_extensions_created_1 = require_collect_extensions_created();
23419
23595
  var executor_1 = require_executor();
@@ -23430,6 +23606,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23430
23606
  const environment = process.env.CODEGEN_ENVIRONMENT ?? types_1.Environment.UNKNOWN_ENVIRONMENT;
23431
23607
  const flowStartTime = Date.now();
23432
23608
  store.flowStartTime = flowStartTime;
23609
+ const taskModel = (0, model_knobs_1.getModel)();
23433
23610
  const biBase = {
23434
23611
  jobId,
23435
23612
  taskId,
@@ -23444,7 +23621,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23444
23621
  logger_12.logger.info("[OpenCode Git Conflicts] Marked task RUNNING", { taskId });
23445
23622
  await (0, biEvents_1.reportSessionStart)({
23446
23623
  ...biBase,
23447
- taskModel: config_12.DEFAULT_MODEL,
23624
+ taskModel,
23448
23625
  taskType: kind
23449
23626
  });
23450
23627
  const outputPath = (0, codegen_flow_helpers_12.getOutputPath)();
@@ -23483,7 +23660,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23483
23660
  });
23484
23661
  await (0, biEvents_1.reportSessionEnd)({
23485
23662
  ...biBase,
23486
- taskModel: config_12.DEFAULT_MODEL,
23663
+ taskModel,
23487
23664
  taskType: kind,
23488
23665
  taskCost: Math.round(result.usage.cost * 1e6),
23489
23666
  taskStatus: ditto_codegen_types_12.Status.COMPLETED,
@@ -23507,7 +23684,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23507
23684
  const taskCost = orchestrator.lastUsage ? Math.round(orchestrator.lastUsage.cost * 1e6) : void 0;
23508
23685
  await (0, biEvents_1.reportSessionEnd)({
23509
23686
  ...biBase,
23510
- taskModel: config_12.DEFAULT_MODEL,
23687
+ taskModel,
23511
23688
  taskType: kind,
23512
23689
  taskCost,
23513
23690
  taskStatus: ditto_codegen_types_12.Status.FAILED,
@@ -23516,7 +23693,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
23516
23693
  });
23517
23694
  await (0, biEvents_1.reportSessionError)({
23518
23695
  ...biBase,
23519
- taskModel: config_12.DEFAULT_MODEL,
23696
+ taskModel,
23520
23697
  taskType: kind,
23521
23698
  agentOutput: JSON.stringify(codegenError),
23522
23699
  errorDesc: codegenError.errorType,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/ditto-codegen-public",
3
- "version": "1.0.443",
3
+ "version": "1.0.445",
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": "da26fbed4274b90d804fbf1672491b33c4725d7a18de167c461deb2f"
32
+ "falconPackageHash": "02a1abc3b0e211f133a4e13ba577dcef1eb2e6d2f91e83d7a07e79a8"
33
33
  }