@wix/ditto-codegen-public 1.0.427 → 1.0.429

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 +345 -108
  2. package/package.json +2 -2
package/dist/out.js CHANGED
@@ -39,7 +39,7 @@ var require_types_impl = __commonJS({
39
39
  "../../node_modules/@wix/ambassador-ctp-codegen-job-service-v1-job/cjs/build/types.impl.js"(exports2) {
40
40
  "use strict";
41
41
  Object.defineProperty(exports2, "__esModule", { value: true });
42
- exports2.UserDecisionQuestionType = exports2.TaskKind = exports2.Status = exports2.ProcessType = exports2.FileOperation = exports2.ErrorType = exports2.Environment = exports2.ChatMessageRole = exports2.ExtensionType = void 0;
42
+ exports2.WebhookIdentityType = exports2.UserDecisionQuestionType = exports2.TaskKind = exports2.Status = exports2.ProcessType = exports2.FileOperation = exports2.ErrorType = exports2.Environment = exports2.ChatMessageRole = exports2.ExtensionType = void 0;
43
43
  var ExtensionType;
44
44
  (function(ExtensionType2) {
45
45
  ExtensionType2["UNDEFINED_EXTENSION_TYPE"] = "UNDEFINED_EXTENSION_TYPE";
@@ -121,6 +121,14 @@ var require_types_impl = __commonJS({
121
121
  UserDecisionQuestionType2["UNKNOWN_QUESTION_TYPE"] = "UNKNOWN_QUESTION_TYPE";
122
122
  UserDecisionQuestionType2["UI_COMPONENT_TYPE"] = "UI_COMPONENT_TYPE";
123
123
  })(UserDecisionQuestionType || (exports2.UserDecisionQuestionType = UserDecisionQuestionType = {}));
124
+ var WebhookIdentityType;
125
+ (function(WebhookIdentityType2) {
126
+ WebhookIdentityType2["UNKNOWN"] = "UNKNOWN";
127
+ WebhookIdentityType2["ANONYMOUS_VISITOR"] = "ANONYMOUS_VISITOR";
128
+ WebhookIdentityType2["MEMBER"] = "MEMBER";
129
+ WebhookIdentityType2["WIX_USER"] = "WIX_USER";
130
+ WebhookIdentityType2["APP"] = "APP";
131
+ })(WebhookIdentityType || (exports2.WebhookIdentityType = WebhookIdentityType = {}));
124
132
  }
125
133
  });
126
134
 
@@ -6633,6 +6641,7 @@ var require_http_impl = __commonJS({
6633
6641
  exports2.cleanupStaleJobs = cleanupStaleJobs;
6634
6642
  exports2.handleValidationErrors = handleValidationErrors;
6635
6643
  exports2.handlePluginFailure = handlePluginFailure;
6644
+ exports2.handleExpensiveRun = handleExpensiveRun;
6636
6645
  var metro_runtime_1 = require_build();
6637
6646
  var ambassador_1 = require_ambassador_index();
6638
6647
  var metro_runtime_2 = require_build();
@@ -6644,6 +6653,8 @@ var require_http_impl = __commonJS({
6644
6653
  var _createTaskResponse = { job: "_job" };
6645
6654
  var _getJobRequest = {};
6646
6655
  var _getJobResponse = { job: "_job" };
6656
+ var _handleExpensiveRunRequest = { costUsd: "DOUBLE" };
6657
+ var _handleExpensiveRunResponse = {};
6647
6658
  var _handlePluginFailureRequest = {};
6648
6659
  var _handlePluginFailureResponse = {};
6649
6660
  var _handleValidationErrorsRequest = { costUsd: "DOUBLE" };
@@ -6688,7 +6699,7 @@ var require_http_impl = __commonJS({
6688
6699
  var _userDecisionRequest = { requestedAt: "google.protobuf.Timestamp" };
6689
6700
  var _userDecisionResponse = { respondedAt: "google.protobuf.Timestamp" };
6690
6701
  function resolveComWixpressDittoCodegenJobServiceApiCodegenJobServiceUrl(opts) {
6691
- var domainToMappings = {
6702
+ const domainToMappings = {
6692
6703
  _base_domain_: [
6693
6704
  {
6694
6705
  srcPath: "/_api/codegen-server",
@@ -6753,12 +6764,11 @@ var require_http_impl = __commonJS({
6753
6764
  return (0, metro_runtime_2.resolveUrl)(Object.assign(opts, { domainToMappings }));
6754
6765
  }
6755
6766
  function listProjects(payload) {
6756
- var _a = (0, ambassador_1.serializer)(_listProjectsRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
6757
- var fromRes = (0, ambassador_1.serializer)(_listProjectsResponse, { _project }).fromJSON;
6758
- function __listProjects(_a2) {
6759
- var host = _a2.host;
6760
- var serializedData = toReq(payload);
6761
- var metadata = {
6767
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_listProjectsRequest, {});
6768
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_listProjectsResponse, { _project });
6769
+ function __listProjects({ host }) {
6770
+ const serializedData = toReq(payload);
6771
+ const metadata = {
6762
6772
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6763
6773
  method: "GET",
6764
6774
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.ListProjects",
@@ -6780,18 +6790,17 @@ var require_http_impl = __commonJS({
6780
6790
  return __listProjects;
6781
6791
  }
6782
6792
  function listProjectJobs(payload) {
6783
- var _a = (0, ambassador_1.serializer)(_listProjectJobsRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
6784
- var fromRes = (0, ambassador_1.serializer)(_listProjectJobsResponse, {
6793
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_listProjectJobsRequest, {});
6794
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_listProjectJobsResponse, {
6785
6795
  _job,
6786
6796
  _task,
6787
6797
  _userDecision,
6788
6798
  _userDecisionRequest,
6789
6799
  _userDecisionResponse
6790
- }).fromJSON;
6791
- function __listProjectJobs(_a2) {
6792
- var host = _a2.host;
6793
- var serializedData = toReq(payload);
6794
- var metadata = {
6800
+ });
6801
+ function __listProjectJobs({ host }) {
6802
+ const serializedData = toReq(payload);
6803
+ const metadata = {
6795
6804
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6796
6805
  method: "GET",
6797
6806
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.ListProjectJobs",
@@ -6813,18 +6822,17 @@ var require_http_impl = __commonJS({
6813
6822
  return __listProjectJobs;
6814
6823
  }
6815
6824
  function getJob(payload) {
6816
- var _a = (0, ambassador_1.serializer)(_getJobRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
6817
- var fromRes = (0, ambassador_1.serializer)(_getJobResponse, {
6825
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_getJobRequest, {});
6826
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_getJobResponse, {
6818
6827
  _job,
6819
6828
  _task,
6820
6829
  _userDecision,
6821
6830
  _userDecisionRequest,
6822
6831
  _userDecisionResponse
6823
- }).fromJSON;
6824
- function __getJob(_a2) {
6825
- var host = _a2.host;
6826
- var serializedData = toReq(payload);
6827
- var metadata = {
6832
+ });
6833
+ function __getJob({ host }) {
6834
+ const serializedData = toReq(payload);
6835
+ const metadata = {
6828
6836
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6829
6837
  method: "GET",
6830
6838
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.GetJob",
@@ -6846,24 +6854,23 @@ var require_http_impl = __commonJS({
6846
6854
  return __getJob;
6847
6855
  }
6848
6856
  function createJob(payload) {
6849
- var _a = (0, ambassador_1.serializer)(_createJobRequest, {
6857
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_createJobRequest, {
6850
6858
  _job,
6851
6859
  _task,
6852
6860
  _userDecision,
6853
6861
  _userDecisionRequest,
6854
6862
  _userDecisionResponse
6855
- }), toReq = _a.toJSON, fromReq = _a.fromJSON;
6856
- var fromRes = (0, ambassador_1.serializer)(_createJobResponse, {
6863
+ });
6864
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_createJobResponse, {
6857
6865
  _job,
6858
6866
  _task,
6859
6867
  _userDecision,
6860
6868
  _userDecisionRequest,
6861
6869
  _userDecisionResponse
6862
- }).fromJSON;
6863
- function __createJob(_a2) {
6864
- var host = _a2.host;
6865
- var serializedData = toReq(payload);
6866
- var metadata = {
6870
+ });
6871
+ function __createJob({ host }) {
6872
+ const serializedData = toReq(payload);
6873
+ const metadata = {
6867
6874
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6868
6875
  method: "POST",
6869
6876
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.CreateJob",
@@ -6885,24 +6892,23 @@ var require_http_impl = __commonJS({
6885
6892
  return __createJob;
6886
6893
  }
6887
6894
  function updateJob(payload) {
6888
- var _a = (0, ambassador_1.serializer)(_updateJobRequest, {
6895
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_updateJobRequest, {
6889
6896
  _job,
6890
6897
  _task,
6891
6898
  _userDecision,
6892
6899
  _userDecisionRequest,
6893
6900
  _userDecisionResponse
6894
- }), toReq = _a.toJSON, fromReq = _a.fromJSON;
6895
- var fromRes = (0, ambassador_1.serializer)(_updateJobResponse, {
6901
+ });
6902
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_updateJobResponse, {
6896
6903
  _job,
6897
6904
  _task,
6898
6905
  _userDecision,
6899
6906
  _userDecisionRequest,
6900
6907
  _userDecisionResponse
6901
- }).fromJSON;
6902
- function __updateJob(_a2) {
6903
- var host = _a2.host;
6904
- var serializedData = toReq(payload);
6905
- var metadata = {
6908
+ });
6909
+ function __updateJob({ host }) {
6910
+ const serializedData = toReq(payload);
6911
+ const metadata = {
6906
6912
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6907
6913
  method: "PATCH",
6908
6914
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.UpdateJob",
@@ -6924,20 +6930,19 @@ var require_http_impl = __commonJS({
6924
6930
  return __updateJob;
6925
6931
  }
6926
6932
  function createTask(payload) {
6927
- var _a = (0, ambassador_1.serializer)(_createTaskRequest, {
6933
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_createTaskRequest, {
6928
6934
  _task
6929
- }), toReq = _a.toJSON, fromReq = _a.fromJSON;
6930
- var fromRes = (0, ambassador_1.serializer)(_createTaskResponse, {
6935
+ });
6936
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_createTaskResponse, {
6931
6937
  _job,
6932
6938
  _task,
6933
6939
  _userDecision,
6934
6940
  _userDecisionRequest,
6935
6941
  _userDecisionResponse
6936
- }).fromJSON;
6937
- function __createTask(_a2) {
6938
- var host = _a2.host;
6939
- var serializedData = toReq(payload);
6940
- var metadata = {
6942
+ });
6943
+ function __createTask({ host }) {
6944
+ const serializedData = toReq(payload);
6945
+ const metadata = {
6941
6946
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6942
6947
  method: "POST",
6943
6948
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.CreateTask",
@@ -6959,14 +6964,13 @@ var require_http_impl = __commonJS({
6959
6964
  return __createTask;
6960
6965
  }
6961
6966
  function updateTask(payload) {
6962
- var _a = (0, ambassador_1.serializer)(_updateTaskRequest, {
6967
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_updateTaskRequest, {
6963
6968
  _task
6964
- }), toReq = _a.toJSON, fromReq = _a.fromJSON;
6965
- var fromRes = (0, ambassador_1.serializer)(_updateTaskResponse, { _task }).fromJSON;
6966
- function __updateTask(_a2) {
6967
- var host = _a2.host;
6968
- var serializedData = toReq(payload);
6969
- var metadata = {
6969
+ });
6970
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_updateTaskResponse, { _task });
6971
+ function __updateTask({ host }) {
6972
+ const serializedData = toReq(payload);
6973
+ const metadata = {
6970
6974
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
6971
6975
  method: "PATCH",
6972
6976
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.UpdateTask",
@@ -6988,18 +6992,17 @@ var require_http_impl = __commonJS({
6988
6992
  return __updateTask;
6989
6993
  }
6990
6994
  function stopGeneration(payload) {
6991
- var _a = (0, ambassador_1.serializer)(_stopGenerationRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
6992
- var fromRes = (0, ambassador_1.serializer)(_stopGenerationResponse, {
6995
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_stopGenerationRequest, {});
6996
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_stopGenerationResponse, {
6993
6997
  _job,
6994
6998
  _task,
6995
6999
  _userDecision,
6996
7000
  _userDecisionRequest,
6997
7001
  _userDecisionResponse
6998
- }).fromJSON;
6999
- function __stopGeneration(_a2) {
7000
- var host = _a2.host;
7001
- var serializedData = toReq(payload);
7002
- var metadata = {
7002
+ });
7003
+ function __stopGeneration({ host }) {
7004
+ const serializedData = toReq(payload);
7005
+ const metadata = {
7003
7006
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
7004
7007
  method: "POST",
7005
7008
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.StopGeneration",
@@ -7021,18 +7024,17 @@ var require_http_impl = __commonJS({
7021
7024
  return __stopGeneration;
7022
7025
  }
7023
7026
  function submitUserDecision(payload) {
7024
- var _a = (0, ambassador_1.serializer)(_submitUserDecisionRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
7025
- var fromRes = (0, ambassador_1.serializer)(_submitUserDecisionResponse, {
7027
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_submitUserDecisionRequest, {});
7028
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_submitUserDecisionResponse, {
7026
7029
  _job,
7027
7030
  _task,
7028
7031
  _userDecision,
7029
7032
  _userDecisionRequest,
7030
7033
  _userDecisionResponse
7031
- }).fromJSON;
7032
- function __submitUserDecision(_a2) {
7033
- var host = _a2.host;
7034
- var serializedData = toReq(payload);
7035
- var metadata = {
7034
+ });
7035
+ function __submitUserDecision({ host }) {
7036
+ const serializedData = toReq(payload);
7037
+ const metadata = {
7036
7038
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
7037
7039
  method: "POST",
7038
7040
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.SubmitUserDecision",
@@ -7054,12 +7056,11 @@ var require_http_impl = __commonJS({
7054
7056
  return __submitUserDecision;
7055
7057
  }
7056
7058
  function cleanupStaleJobs(payload) {
7057
- var _a = (0, ambassador_1.serializer)(_cleanupStaleJobsRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
7058
- var fromRes = (0, ambassador_1.serializer)(_cleanupStaleJobsResponse, {}).fromJSON;
7059
- function __cleanupStaleJobs(_a2) {
7060
- var host = _a2.host;
7061
- var serializedData = toReq(payload);
7062
- var metadata = {
7059
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_cleanupStaleJobsRequest, {});
7060
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_cleanupStaleJobsResponse, {});
7061
+ function __cleanupStaleJobs({ host }) {
7062
+ const serializedData = toReq(payload);
7063
+ const metadata = {
7063
7064
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
7064
7065
  method: "POST",
7065
7066
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.CleanupStaleJobs",
@@ -7081,12 +7082,11 @@ var require_http_impl = __commonJS({
7081
7082
  return __cleanupStaleJobs;
7082
7083
  }
7083
7084
  function handleValidationErrors(payload) {
7084
- var _a = (0, ambassador_1.serializer)(_handleValidationErrorsRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
7085
- var fromRes = (0, ambassador_1.serializer)(_handleValidationErrorsResponse, {}).fromJSON;
7086
- function __handleValidationErrors(_a2) {
7087
- var host = _a2.host;
7088
- var serializedData = toReq(payload);
7089
- var metadata = {
7085
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_handleValidationErrorsRequest, {});
7086
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_handleValidationErrorsResponse, {});
7087
+ function __handleValidationErrors({ host }) {
7088
+ const serializedData = toReq(payload);
7089
+ const metadata = {
7090
7090
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
7091
7091
  method: "POST",
7092
7092
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.HandleValidationErrors",
@@ -7108,12 +7108,11 @@ var require_http_impl = __commonJS({
7108
7108
  return __handleValidationErrors;
7109
7109
  }
7110
7110
  function handlePluginFailure(payload) {
7111
- var _a = (0, ambassador_1.serializer)(_handlePluginFailureRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON;
7112
- var fromRes = (0, ambassador_1.serializer)(_handlePluginFailureResponse, {}).fromJSON;
7113
- function __handlePluginFailure(_a2) {
7114
- var host = _a2.host;
7115
- var serializedData = toReq(payload);
7116
- var metadata = {
7111
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_handlePluginFailureRequest, {});
7112
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_handlePluginFailureResponse, {});
7113
+ function __handlePluginFailure({ host }) {
7114
+ const serializedData = toReq(payload);
7115
+ const metadata = {
7117
7116
  entityFqdn: "wix.ctp.codegen_job_service.v1.job",
7118
7117
  method: "POST",
7119
7118
  methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.HandlePluginFailure",
@@ -7134,6 +7133,32 @@ var require_http_impl = __commonJS({
7134
7133
  __handlePluginFailure.__isAmbassador = true;
7135
7134
  return __handlePluginFailure;
7136
7135
  }
7136
+ function handleExpensiveRun(payload) {
7137
+ const { toJSON: toReq, fromJSON: fromReq } = (0, ambassador_1.serializer)(_handleExpensiveRunRequest, {});
7138
+ const { fromJSON: fromRes } = (0, ambassador_1.serializer)(_handleExpensiveRunResponse, {});
7139
+ function __handleExpensiveRun({ host }) {
7140
+ const serializedData = toReq(payload);
7141
+ const metadata = {
7142
+ entityFqdn: "wix.ctp.codegen_job_service.v1.job",
7143
+ method: "POST",
7144
+ methodFqn: "com.wixpress.ditto.codegen_job_service.api.CodegenJobService.HandleExpensiveRun",
7145
+ migrationOptions: {
7146
+ optInTransformResponse: true
7147
+ },
7148
+ url: resolveComWixpressDittoCodegenJobServiceApiCodegenJobServiceUrl({
7149
+ protoPath: "/v1/expensive-runs",
7150
+ data: serializedData,
7151
+ host
7152
+ }),
7153
+ data: serializedData,
7154
+ transformResponse: fromRes
7155
+ };
7156
+ return metadata;
7157
+ }
7158
+ __handleExpensiveRun.fromReq = fromReq;
7159
+ __handleExpensiveRun.__isAmbassador = true;
7160
+ return __handleExpensiveRun;
7161
+ }
7137
7162
  }
7138
7163
  });
7139
7164
 
@@ -11186,6 +11211,20 @@ var require_CodeGenService = __commonJS({
11186
11211
  ...this.runContext(input)
11187
11212
  }));
11188
11213
  };
11214
+ this.handleExpensiveRun = async (input) => {
11215
+ await this.request((0, http_1.handleExpensiveRun)({
11216
+ costUsd: input.costUsd,
11217
+ toolCallCount: input.toolUsage.callCount,
11218
+ tools: input.toolUsage.tools.map((tool) => ({
11219
+ tool: tool.tool,
11220
+ callCount: tool.callCount,
11221
+ durationMs: String(tool.durationMs),
11222
+ detail: tool.detail
11223
+ })),
11224
+ agentMessage: input.agentMessage,
11225
+ ...this.runContext(input)
11226
+ }));
11227
+ };
11189
11228
  if (httpClient) {
11190
11229
  this.httpClient = httpClient;
11191
11230
  return;
@@ -14456,6 +14495,28 @@ For any persistent-data need (CMS collections, tables, schemas, data models):
14456
14495
  }
14457
14496
  });
14458
14497
 
14498
+ // ../codegen-common-logic/dist/stores-catalog-version-rules.js
14499
+ var require_stores_catalog_version_rules = __commonJS({
14500
+ "../codegen-common-logic/dist/stores-catalog-version-rules.js"(exports2) {
14501
+ "use strict";
14502
+ Object.defineProperty(exports2, "__esModule", { value: true });
14503
+ exports2.STORES_CATALOG_VERSION_RULES = void 0;
14504
+ exports2.STORES_CATALOG_VERSION_RULES = `# Wix Stores Catalog Version Rules
14505
+
14506
+ The agent operates on a live Wix site (METASITE_ID is in your prompt context), so the site's Stores catalog version is knowable at build time.
14507
+
14508
+ ## Mandatory before any Stores work
14509
+
14510
+ For any use of a Wix Stores API \u2014 products, variants, inventory, collections/categories, Stores webhooks, or any other part of the Stores catalog:
14511
+
14512
+ 1. **You MUST invoke the \`wix-stores-catalog-version\` skill first** \u2014 before choosing imports, permission scopes, or webhook subscriptions.
14513
+ 2. **Generate one version's code path only.** No \`catalogVersioning.getCatalogVersion()\` call in generated code, no branching on the version, and no adapter that normalizes V1 and V3 shapes into one type.
14514
+ 3. **Do NOT tell the user their app must support both catalog versions**, and do not add Dev Center action items about confirming V1/V3 compatibility. That requirement applies to public App Market apps, not to a companion app targeting one known site.
14515
+
14516
+ \`wix-app\` is still correct for dashboard pages, modals, widgets, and UI \u2014 and its \`STORES_VERSIONING.md\` remains the reference for the module map, permissions, field mappings, and gotchas. Only the dual-catalog requirement is overridden here.`;
14517
+ }
14518
+ });
14519
+
14459
14520
  // ../codegen-common-logic/dist/studio-2-site-ui-rules.js
14460
14521
  var require_studio_2_site_ui_rules = __commonJS({
14461
14522
  "../codegen-common-logic/dist/studio-2-site-ui-rules.js"(exports2) {
@@ -14527,6 +14588,7 @@ var require_dist7 = __commonJS({
14527
14588
  __exportStar2(require_availableSdks(), exports2);
14528
14589
  __exportStar2(require_system_prompts(), exports2);
14529
14590
  __exportStar2(require_site_data_layer_rules(), exports2);
14591
+ __exportStar2(require_stores_catalog_version_rules(), exports2);
14530
14592
  __exportStar2(require_studio_2_site_ui_rules(), exports2);
14531
14593
  }
14532
14594
  });
@@ -14543,6 +14605,10 @@ var require_dist8 = __commonJS({
14543
14605
  environmentIdentity: "You generate code for the user's own live Wix site \u2014 to the user it's just their site, not a separate app they're aware of. Your changes are saved and applied to the site automatically; there is no separate release step.",
14544
14606
  codegenRules: [
14545
14607
  { filename: "site-data-layer-rules.md", content: codegen_common_logic_1.SITE_DATA_LAYER_RULES },
14608
+ {
14609
+ filename: "stores-catalog-version-rules.md",
14610
+ content: codegen_common_logic_1.STORES_CATALOG_VERSION_RULES
14611
+ },
14546
14612
  { filename: "studio-2-site-ui-rules.md", content: codegen_common_logic_1.STUDIO_2_SITE_UI_RULES }
14547
14613
  ],
14548
14614
  askRules: [],
@@ -14896,7 +14962,11 @@ var require_dist10 = __commonJS({
14896
14962
  exports2.harmonyCodegenConfig = {
14897
14963
  environmentIdentity: "You generate code for the user's own live Wix site \u2014 to the user it's just their site, not a separate app they're aware of. Your changes are saved and applied to the site automatically; there is no separate release step.",
14898
14964
  codegenRules: [
14899
- { filename: "site-data-layer-rules.md", content: codegen_common_logic_1.SITE_DATA_LAYER_RULES }
14965
+ { filename: "site-data-layer-rules.md", content: codegen_common_logic_1.SITE_DATA_LAYER_RULES },
14966
+ {
14967
+ filename: "stores-catalog-version-rules.md",
14968
+ content: codegen_common_logic_1.STORES_CATALOG_VERSION_RULES
14969
+ }
14900
14970
  ],
14901
14971
  askRules: [],
14902
14972
  gitConflictsRules: [],
@@ -15568,11 +15638,12 @@ export const SubagentToolLogger = async () => {
15568
15638
 
15569
15639
  const state = part.state || {};
15570
15640
  // Emit raw \u2014 parser.ts summarizeOpenCodeLine trims input/output before
15571
- // Panorama. part.time.{start,end} are opencode-stamped; prefer over Date.now.
15641
+ // Panorama. state.time.{start,end} is opencode's own stamp for the call;
15642
+ // prefer it over the plugin's observation time.
15572
15643
  process.stdout.write(
15573
15644
  JSON.stringify({
15574
15645
  type: EVENT_TYPE,
15575
- timestamp: part.time?.end || Date.now(),
15646
+ timestamp: state.time?.end || part.time?.end || Date.now(),
15576
15647
  sessionID: part.sessionID,
15577
15648
  agent,
15578
15649
  part: {
@@ -15581,6 +15652,7 @@ export const SubagentToolLogger = async () => {
15581
15652
  ...(part.time ? { time: part.time } : {}),
15582
15653
  state: {
15583
15654
  status,
15655
+ ...(state.time ? { time: state.time } : {}),
15584
15656
  ...(state.input ? { input: state.input } : {}),
15585
15657
  ...(state.output ? { output: state.output } : {}),
15586
15658
  ...(state.title ? { title: state.title } : {}),
@@ -16271,7 +16343,8 @@ var require_task_tracker = __commonJS({
16271
16343
  var derived_progress_1 = require_derived_progress();
16272
16344
  var plugins_runtime_1 = require_plugins_runtime();
16273
16345
  var OpenCodeTaskTracker = class {
16274
- constructor(workingDirectory) {
16346
+ constructor(workingDirectory, toolUsage) {
16347
+ this.toolUsage = toolUsage;
16275
16348
  this.skillsUsed = /* @__PURE__ */ new Set();
16276
16349
  this.derivedProgress = new derived_progress_1.DerivedProgressReporter(new progress_handler_1.ProgressTaskHandler());
16277
16350
  this.store = job_context_storage_12.jobContextStorage.getStore();
@@ -16297,13 +16370,14 @@ var require_task_tracker = __commonJS({
16297
16370
  if (!line.trim())
16298
16371
  return;
16299
16372
  const event = (0, types_1.tryParseJson)(line);
16300
- if (event) {
16301
- await this.handleEvent(event);
16302
- }
16303
- }
16304
- async handleEvent(event) {
16373
+ if (!event)
16374
+ return;
16375
+ this.toolUsage?.record(event);
16305
16376
  if (event.type !== "tool_use")
16306
16377
  return;
16378
+ await this.handleEvent(event);
16379
+ }
16380
+ async handleEvent(event) {
16307
16381
  const { tool, callID, state } = event.part || {};
16308
16382
  if (!tool || !callID || !state)
16309
16383
  return;
@@ -16336,6 +16410,107 @@ var require_task_tracker2 = __commonJS({
16336
16410
  }
16337
16411
  });
16338
16412
 
16413
+ // dist/opencode-integration/tool-usage.js
16414
+ var require_tool_usage = __commonJS({
16415
+ "dist/opencode-integration/tool-usage.js"(exports2) {
16416
+ "use strict";
16417
+ Object.defineProperty(exports2, "__esModule", { value: true });
16418
+ exports2.ToolUsageCollector = void 0;
16419
+ exports2.commandSignature = commandSignature;
16420
+ exports2.emptyToolUsage = emptyToolUsage;
16421
+ var subagent_tool_logger_12 = require_subagent_tool_logger();
16422
+ var MAX_REPORTED_TOOLS = 50;
16423
+ var MAX_DETAIL_CHARS = 200;
16424
+ var MAX_DETAIL_LABELS = 2;
16425
+ function commandSignature(command) {
16426
+ const firstCommand = command.split(/&&|\|\||[|;\n]/)[0]?.trim();
16427
+ if (!firstCommand)
16428
+ return void 0;
16429
+ const tokens = firstCommand.split(/\s+/).filter((token) => !/^[A-Z_][A-Z0-9_]*=/.test(token));
16430
+ if (tokens.length === 0)
16431
+ return void 0;
16432
+ return tokens.slice(0, 2).join(" ");
16433
+ }
16434
+ function callLabel(tool, input, title) {
16435
+ if (tool === "bash") {
16436
+ return input?.command ? commandSignature(input.command) : void 0;
16437
+ }
16438
+ if (tool === "task") {
16439
+ return input?.subagent_type ?? title;
16440
+ }
16441
+ if (tool === "skill") {
16442
+ return title?.replace("Loaded skill: ", "");
16443
+ }
16444
+ return void 0;
16445
+ }
16446
+ function renderDetail(labels) {
16447
+ const detail = [...labels.entries()].sort(([, a], [, b]) => b - a).slice(0, MAX_DETAIL_LABELS).map(([label, count]) => count > 1 ? `${label} \xD7${count}` : label).join(", ");
16448
+ return detail ? detail.slice(0, MAX_DETAIL_CHARS) : void 0;
16449
+ }
16450
+ function callDurationMs(event) {
16451
+ const time = event.part.state?.time ?? event.part.time;
16452
+ if (time?.start == null || time?.end == null)
16453
+ return 0;
16454
+ const duration = time.end - time.start;
16455
+ return duration > 0 ? duration : 0;
16456
+ }
16457
+ function isCompletedToolCall(event) {
16458
+ if (event.type !== "tool_use" && event.type !== subagent_tool_logger_12.SUBAGENT_TOOL_EVENT_TYPE) {
16459
+ return false;
16460
+ }
16461
+ if (!event.part?.tool)
16462
+ return false;
16463
+ const { status } = event.part.state ?? {};
16464
+ return status === "completed" || status === "error";
16465
+ }
16466
+ var ToolUsageCollector = class {
16467
+ constructor() {
16468
+ this.byTool = /* @__PURE__ */ new Map();
16469
+ this.callCount = 0;
16470
+ }
16471
+ record(event) {
16472
+ if (!isCompletedToolCall(event))
16473
+ return;
16474
+ const { tool, state } = event.part;
16475
+ const accumulator = this.byTool.get(tool) ?? {
16476
+ callCount: 0,
16477
+ durationMs: 0,
16478
+ labels: /* @__PURE__ */ new Map()
16479
+ };
16480
+ this.callCount += 1;
16481
+ accumulator.callCount += 1;
16482
+ accumulator.durationMs += callDurationMs(event);
16483
+ const label = callLabel(tool, state.input, state.title);
16484
+ if (label) {
16485
+ accumulator.labels.set(label, (accumulator.labels.get(label) ?? 0) + 1);
16486
+ }
16487
+ this.byTool.set(tool, accumulator);
16488
+ }
16489
+ /**
16490
+ * Slowest tool first, or most-called when opencode stamped no times. Spans
16491
+ * cover tool EXECUTION only — model time between calls belongs to no tool, so
16492
+ * they do not add up to the run's wall-clock.
16493
+ */
16494
+ toSummary() {
16495
+ const tools = [...this.byTool.entries()].map(([tool, accumulator]) => {
16496
+ const detail = renderDetail(accumulator.labels);
16497
+ return {
16498
+ tool,
16499
+ callCount: accumulator.callCount,
16500
+ durationMs: accumulator.durationMs,
16501
+ ...detail && { detail }
16502
+ };
16503
+ }).sort((a, b) => b.durationMs - a.durationMs || b.callCount - a.callCount).slice(0, MAX_REPORTED_TOOLS);
16504
+ return { tools, callCount: this.callCount };
16505
+ }
16506
+ };
16507
+ exports2.ToolUsageCollector = ToolUsageCollector;
16508
+ function emptyToolUsage() {
16509
+ return { tools: [], callCount: 0 };
16510
+ }
16511
+ }
16512
+ });
16513
+
16339
16514
  // dist/opencode-integration/process-manager.js
16340
16515
  var require_process_manager = __commonJS({
16341
16516
  "dist/opencode-integration/process-manager.js"(exports2) {
@@ -16396,6 +16571,7 @@ var require_result_builder = __commonJS({
16396
16571
  exports2.createSuccessResult = createSuccessResult;
16397
16572
  exports2.createSpawnErrorResult = createSpawnErrorResult;
16398
16573
  var ditto_codegen_types_12 = require_dist4();
16574
+ var tool_usage_1 = require_tool_usage();
16399
16575
  var parser_1 = require_parser();
16400
16576
  function createTimeoutResult(message, stdout, stderr, startTime) {
16401
16577
  return {
@@ -16408,7 +16584,8 @@ var require_result_builder = __commonJS({
16408
16584
  durationMs: Date.now() - startTime,
16409
16585
  requiredPermissions: [],
16410
16586
  usage: (0, parser_1.parseUsageStats)(stdout),
16411
- skillsUsed: []
16587
+ skillsUsed: [],
16588
+ toolUsage: (0, tool_usage_1.emptyToolUsage)()
16412
16589
  };
16413
16590
  }
16414
16591
  function createSuccessResult(code, stdout, stderr, startTime) {
@@ -16426,7 +16603,8 @@ var require_result_builder = __commonJS({
16426
16603
  durationMs: Date.now() - startTime,
16427
16604
  requiredPermissions: (0, parser_1.parseRequiredPermissions)(stdout),
16428
16605
  usage: (0, parser_1.parseUsageStats)(stdout),
16429
- skillsUsed: []
16606
+ skillsUsed: [],
16607
+ toolUsage: (0, tool_usage_1.emptyToolUsage)()
16430
16608
  };
16431
16609
  }
16432
16610
  function createSpawnErrorResult(errorMessage, stdout, stderr, startTime) {
@@ -16443,7 +16621,8 @@ var require_result_builder = __commonJS({
16443
16621
  durationMs: Date.now() - startTime,
16444
16622
  requiredPermissions: [],
16445
16623
  usage: (0, parser_1.createEmptyUsageStats)(),
16446
- skillsUsed: []
16624
+ skillsUsed: [],
16625
+ toolUsage: (0, tool_usage_1.emptyToolUsage)()
16447
16626
  };
16448
16627
  }
16449
16628
  }
@@ -16557,6 +16736,7 @@ var require_executor = __commonJS({
16557
16736
  var git_file_changes_1 = require_git_file_changes();
16558
16737
  var cost_tracker_1 = require_cost_tracker();
16559
16738
  var task_tracker_1 = require_task_tracker2();
16739
+ var tool_usage_1 = require_tool_usage();
16560
16740
  var process_manager_1 = require_process_manager();
16561
16741
  var process_handlers_1 = require_process_handlers();
16562
16742
  var logger_12 = require_logger();
@@ -16574,13 +16754,8 @@ var require_executor = __commonJS({
16574
16754
  costUsd: costUsd > 0 ? costUsd : void 0,
16575
16755
  durationMs
16576
16756
  };
16577
- logger_12.logger.info("[OpenCode] Reporting validator outputs to Slack via server", {
16578
- count: outputs.length,
16579
- ...context
16580
- });
16581
16757
  for (const output of outputs) {
16582
16758
  if (!(0, parser_1.shouldReportValidatorOutput)(output)) {
16583
- logger_12.logger.info("[OpenCode] Skipping validator output \u2014 clean build or too few errors");
16584
16759
  continue;
16585
16760
  }
16586
16761
  try {
@@ -16601,6 +16776,7 @@ var require_executor = __commonJS({
16601
16776
  let lastResult = null;
16602
16777
  let accumulatedUsage = (0, parser_1.createEmptyUsageStats)();
16603
16778
  const accumulatedSkills = [];
16779
+ const toolUsage = new tool_usage_1.ToolUsageCollector();
16604
16780
  let currentPrompt = options.prompt;
16605
16781
  let continueSession = options.continueSession ?? false;
16606
16782
  const env = (0, config_12.getOpenCodeEnv)(options.projectId, job_context_storage_12.jobContextStorage.getStore()?.kind);
@@ -16614,7 +16790,7 @@ var require_executor = __commonJS({
16614
16790
  currentPrompt = (0, prompts_1.buildRecoveryPrompt)(options.prompt, filesChanged, lastResult?.error?.message || lastResult?.stderr || "Process timed out");
16615
16791
  continueSession = false;
16616
16792
  }
16617
- const result = await executeOpenCodeOnce({ ...options, prompt: currentPrompt, continueSession }, attempt);
16793
+ const result = await executeOpenCodeOnce({ ...options, prompt: currentPrompt, continueSession }, attempt, toolUsage);
16618
16794
  accumulatedUsage = (0, parser_1.mergeUsageStats)(accumulatedUsage, result.usage);
16619
16795
  accumulatedSkills.push(...result.skillsUsed);
16620
16796
  const errorMsg = result.error?.message.toLowerCase() ?? "";
@@ -16628,7 +16804,8 @@ var require_executor = __commonJS({
16628
16804
  ...result,
16629
16805
  agentMessage: (0, parser_1.parseAnswerText)(result.stdout),
16630
16806
  usage: accumulatedUsage,
16631
- skillsUsed: accumulatedSkills
16807
+ skillsUsed: accumulatedSkills,
16808
+ toolUsage: toolUsage.toSummary()
16632
16809
  };
16633
16810
  logger_12.logger.info("[OpenCode] Usage summary", { usage: finalResult2.usage });
16634
16811
  return finalResult2;
@@ -16648,7 +16825,8 @@ var require_executor = __commonJS({
16648
16825
  ...lastResult,
16649
16826
  agentMessage: (0, parser_1.parseAnswerText)(lastResult.stdout),
16650
16827
  usage: accumulatedUsage,
16651
- skillsUsed: Array.from(accumulatedSkills)
16828
+ skillsUsed: Array.from(accumulatedSkills),
16829
+ toolUsage: toolUsage.toSummary()
16652
16830
  };
16653
16831
  logger_12.logger.info("[OpenCode] Usage summary", { usage: finalResult.usage });
16654
16832
  return finalResult;
@@ -16677,10 +16855,10 @@ var require_executor = __commonJS({
16677
16855
  const sessionArgs = continueSession ? ["--continue"] : [];
16678
16856
  return ["run", ...sessionArgs, "--format", "json", prompt];
16679
16857
  }
16680
- async function executeOpenCodeOnce(options, attempt) {
16858
+ async function executeOpenCodeOnce(options, attempt, toolUsage) {
16681
16859
  const { prompt, outputPath, projectId, onStdout, onStderr, continueSession = false } = options;
16682
16860
  const startTime = Date.now();
16683
- const taskTracker = new task_tracker_1.OpenCodeTaskTracker(outputPath);
16861
+ const taskTracker = new task_tracker_1.OpenCodeTaskTracker(outputPath, toolUsage);
16684
16862
  return new Promise((resolve) => {
16685
16863
  const state = {
16686
16864
  stdout: "",
@@ -16745,7 +16923,8 @@ var require_executor = __commonJS({
16745
16923
  durationMs: Date.now() - startTime,
16746
16924
  requiredPermissions: [],
16747
16925
  usage: (0, parser_1.createEmptyUsageStats)(),
16748
- skillsUsed: []
16926
+ skillsUsed: [],
16927
+ toolUsage: toolUsage.toSummary()
16749
16928
  });
16750
16929
  }
16751
16930
  });
@@ -22105,6 +22284,43 @@ var require_biEvents = __commonJS({
22105
22284
  }
22106
22285
  });
22107
22286
 
22287
+ // dist/opencode-integration/report-expensive-run.js
22288
+ var require_report_expensive_run = __commonJS({
22289
+ "dist/opencode-integration/report-expensive-run.js"(exports2) {
22290
+ "use strict";
22291
+ Object.defineProperty(exports2, "__esModule", { value: true });
22292
+ exports2.notifyExpensiveRunToSlack = notifyExpensiveRunToSlack;
22293
+ var logger_12 = require_logger();
22294
+ var job_context_storage_12 = require_job_context_storage();
22295
+ var codeGenerationService_12 = require_codeGenerationService();
22296
+ var EXPENSIVE_RUN_USD = 0.7;
22297
+ async function notifyExpensiveRunToSlack({ usage, durationMs, agentMessage, toolUsage }) {
22298
+ if (usage.cost <= EXPENSIVE_RUN_USD)
22299
+ return;
22300
+ const store = job_context_storage_12.jobContextStorage.getStore();
22301
+ logger_12.logger.info("[OpenCode] Reporting expensive run to Slack via server", {
22302
+ costUsd: usage.cost,
22303
+ durationMs,
22304
+ toolCallCount: toolUsage.callCount
22305
+ });
22306
+ try {
22307
+ await codeGenerationService_12.codeGenerationService.handleExpensiveRun({
22308
+ costUsd: usage.cost,
22309
+ durationMs,
22310
+ agentMessage,
22311
+ toolUsage,
22312
+ jobId: store?.jobId,
22313
+ metasiteId: store?.metasiteId
22314
+ });
22315
+ } catch (error) {
22316
+ logger_12.logger.warn("[OpenCode] Failed to report expensive run to Slack", {
22317
+ error: error instanceof Error ? error.message : String(error)
22318
+ });
22319
+ }
22320
+ }
22321
+ }
22322
+ });
22323
+
22108
22324
  // dist/pre-run-decision.js
22109
22325
  var require_pre_run_decision = __commonJS({
22110
22326
  "dist/pre-run-decision.js"(exports2) {
@@ -22151,6 +22367,7 @@ var require_opencode_init = __commonJS({
22151
22367
  var collect_extensions_created_1 = require_collect_extensions_created();
22152
22368
  var biEvents_1 = require_biEvents();
22153
22369
  var executor_1 = require_executor();
22370
+ var report_expensive_run_1 = require_report_expensive_run();
22154
22371
  var pre_run_decision_1 = require_pre_run_decision();
22155
22372
  var environments_12 = require_environments();
22156
22373
  var plugins_runtime_1 = require_plugins_runtime();
@@ -22218,6 +22435,12 @@ var require_opencode_init = __commonJS({
22218
22435
  });
22219
22436
  if (orchestrator.lastStdout) {
22220
22437
  void (0, executor_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
22438
+ void (0, report_expensive_run_1.notifyExpensiveRunToSlack)({
22439
+ usage: result.usage,
22440
+ durationMs: Date.now() - flowStartTime,
22441
+ agentMessage: result.agentMessage,
22442
+ toolUsage: result.toolUsage
22443
+ });
22221
22444
  }
22222
22445
  if (!store.isCompleted) {
22223
22446
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {});
@@ -22358,6 +22581,7 @@ var require_opencode_iterate = __commonJS({
22358
22581
  var inject_created_by_1 = require_inject_created_by();
22359
22582
  var collect_extensions_created_1 = require_collect_extensions_created();
22360
22583
  var executor_1 = require_executor();
22584
+ var report_expensive_run_1 = require_report_expensive_run();
22361
22585
  var biEvents_1 = require_biEvents();
22362
22586
  var plugins_runtime_1 = require_plugins_runtime();
22363
22587
  var runOpencodeIterateFlow = async (chatHistory, agentData) => {
@@ -22414,6 +22638,12 @@ var require_opencode_iterate = __commonJS({
22414
22638
  });
22415
22639
  if (iterationOrchestrator.lastStdout) {
22416
22640
  void (0, executor_1.notifyValidatorOutputsToSlack)(iterationOrchestrator.lastStdout, result.usage.cost);
22641
+ void (0, report_expensive_run_1.notifyExpensiveRunToSlack)({
22642
+ usage: result.usage,
22643
+ durationMs: Date.now() - flowStartTime,
22644
+ agentMessage: result.agentMessage,
22645
+ toolUsage: result.toolUsage
22646
+ });
22417
22647
  }
22418
22648
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {
22419
22649
  taskOutput: { files }
@@ -22728,6 +22958,7 @@ var require_opencode_fix_git_conflicts = __commonJS({
22728
22958
  var git_file_changes_1 = require_git_file_changes();
22729
22959
  var collect_extensions_created_1 = require_collect_extensions_created();
22730
22960
  var executor_1 = require_executor();
22961
+ var report_expensive_run_1 = require_report_expensive_run();
22731
22962
  var biEvents_1 = require_biEvents();
22732
22963
  var plugins_runtime_1 = require_plugins_runtime();
22733
22964
  var runOpencodeGitConflictsFlow = async (chatHistory) => {
@@ -22780,6 +23011,12 @@ var require_opencode_fix_git_conflicts = __commonJS({
22780
23011
  });
22781
23012
  if (orchestrator.lastStdout) {
22782
23013
  void (0, executor_1.notifyValidatorOutputsToSlack)(orchestrator.lastStdout, result.usage.cost);
23014
+ void (0, report_expensive_run_1.notifyExpensiveRunToSlack)({
23015
+ usage: result.usage,
23016
+ durationMs: Date.now() - flowStartTime,
23017
+ agentMessage: result.agentMessage,
23018
+ toolUsage: result.toolUsage
23019
+ });
22783
23020
  }
22784
23021
  await codeGenerationService_12.codeGenerationService.updateTask(jobId, taskId, ditto_codegen_types_12.Status.COMPLETED, {
22785
23022
  taskOutput: { files }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/ditto-codegen-public",
3
- "version": "1.0.427",
3
+ "version": "1.0.429",
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": "2a0054e25cf0cac56f2ab826137eb8c5fe54baa8861f95091fe0a6a7"
32
+ "falconPackageHash": "652401a1596c5c4227f3c4b899e2a9c6f165366175d97865fbf9eeb4"
33
33
  }