@neocompose/cli 0.75.0 → 0.75.2

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/neo.mjs CHANGED
@@ -41,7 +41,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
41
41
  mod
42
42
  ));
43
43
 
44
- // ../src/models/members/member-storage.ts
44
+ // ../packages/models/src/members/member-storage.ts
45
45
  function isMemberStorageKind(value) {
46
46
  return value === 0 /* Inherit */ || value === 1 /* Immutable */ || value === 2 /* Save */ || value === 3 /* Session */ || value === 4 /* Writable */ || value === 5 /* User */;
47
47
  }
@@ -103,7 +103,7 @@ function isChildStorageAllowed(context, child2) {
103
103
  }
104
104
  var MemberStorageKind;
105
105
  var init_member_storage = __esm({
106
- "../src/models/members/member-storage.ts"() {
106
+ "../packages/models/src/members/member-storage.ts"() {
107
107
  "use strict";
108
108
  MemberStorageKind = /* @__PURE__ */ ((MemberStorageKind3) => {
109
109
  MemberStorageKind3[MemberStorageKind3["Inherit"] = 0] = "Inherit";
@@ -117,51 +117,50 @@ var init_member_storage = __esm({
117
117
  }
118
118
  });
119
119
 
120
- // ../src/models/members/member-kind-enum.ts
120
+ // ../packages/models/src/members/member-kind-enum.ts
121
121
  var MemberKind;
122
122
  var init_member_kind_enum = __esm({
123
- "../src/models/members/member-kind-enum.ts"() {
124
- "use strict";
125
- MemberKind = /* @__PURE__ */ ((MemberKind13) => {
126
- MemberKind13[MemberKind13["Null"] = 0] = "Null";
127
- MemberKind13[MemberKind13["Bool"] = 1] = "Bool";
128
- MemberKind13[MemberKind13["Int"] = 2] = "Int";
129
- MemberKind13[MemberKind13["String"] = 3] = "String";
130
- MemberKind13[MemberKind13["Float"] = 4] = "Float";
131
- MemberKind13[MemberKind13["Dictionary"] = 5] = "Dictionary";
132
- MemberKind13[MemberKind13["List"] = 6] = "List";
133
- MemberKind13[MemberKind13["Class"] = 7] = "Class";
134
- MemberKind13[MemberKind13["Enum"] = 8] = "Enum";
135
- MemberKind13[MemberKind13["Lookup"] = 9] = "Lookup";
136
- MemberKind13[MemberKind13["NSProperty"] = 10] = "NSProperty";
137
- MemberKind13[MemberKind13["Sprite"] = 11] = "Sprite";
138
- MemberKind13[MemberKind13["Audio"] = 12] = "Audio";
139
- MemberKind13[MemberKind13["Function"] = 13] = "Function";
140
- MemberKind13[MemberKind13["Vector2"] = 14] = "Vector2";
141
- MemberKind13[MemberKind13["Vector2Int"] = 15] = "Vector2Int";
142
- MemberKind13[MemberKind13["Vector3"] = 16] = "Vector3";
143
- MemberKind13[MemberKind13["Vector3Int"] = 17] = "Vector3Int";
144
- MemberKind13[MemberKind13["DialogueLookup"] = 18] = "DialogueLookup";
145
- MemberKind13[MemberKind13["Color"] = 19] = "Color";
146
- MemberKind13[MemberKind13["Decimal"] = 20] = "Decimal";
147
- MemberKind13[MemberKind13["Generic"] = 21] = "Generic";
148
- MemberKind13[MemberKind13["Interface"] = 22] = "Interface";
149
- MemberKind13[MemberKind13["NSFunction"] = 23] = "NSFunction";
150
- MemberKind13[MemberKind13["FunctionRef"] = 24] = "FunctionRef";
151
- MemberKind13[MemberKind13["NSDelegate"] = 25] = "NSDelegate";
152
- MemberKind13[MemberKind13["NSAction"] = 26] = "NSAction";
153
- MemberKind13[MemberKind13["Variant"] = 27] = "Variant";
154
- return MemberKind13;
123
+ "../packages/models/src/members/member-kind-enum.ts"() {
124
+ "use strict";
125
+ MemberKind = /* @__PURE__ */ ((MemberKind12) => {
126
+ MemberKind12[MemberKind12["Null"] = 0] = "Null";
127
+ MemberKind12[MemberKind12["Bool"] = 1] = "Bool";
128
+ MemberKind12[MemberKind12["Int"] = 2] = "Int";
129
+ MemberKind12[MemberKind12["String"] = 3] = "String";
130
+ MemberKind12[MemberKind12["Float"] = 4] = "Float";
131
+ MemberKind12[MemberKind12["Dictionary"] = 5] = "Dictionary";
132
+ MemberKind12[MemberKind12["List"] = 6] = "List";
133
+ MemberKind12[MemberKind12["Class"] = 7] = "Class";
134
+ MemberKind12[MemberKind12["Enum"] = 8] = "Enum";
135
+ MemberKind12[MemberKind12["Lookup"] = 9] = "Lookup";
136
+ MemberKind12[MemberKind12["NSProperty"] = 10] = "NSProperty";
137
+ MemberKind12[MemberKind12["Sprite"] = 11] = "Sprite";
138
+ MemberKind12[MemberKind12["Audio"] = 12] = "Audio";
139
+ MemberKind12[MemberKind12["Function"] = 13] = "Function";
140
+ MemberKind12[MemberKind12["Vector2"] = 14] = "Vector2";
141
+ MemberKind12[MemberKind12["Vector2Int"] = 15] = "Vector2Int";
142
+ MemberKind12[MemberKind12["Vector3"] = 16] = "Vector3";
143
+ MemberKind12[MemberKind12["Vector3Int"] = 17] = "Vector3Int";
144
+ MemberKind12[MemberKind12["DialogueLookup"] = 18] = "DialogueLookup";
145
+ MemberKind12[MemberKind12["Color"] = 19] = "Color";
146
+ MemberKind12[MemberKind12["Decimal"] = 20] = "Decimal";
147
+ MemberKind12[MemberKind12["Generic"] = 21] = "Generic";
148
+ MemberKind12[MemberKind12["Interface"] = 22] = "Interface";
149
+ MemberKind12[MemberKind12["NSFunction"] = 23] = "NSFunction";
150
+ MemberKind12[MemberKind12["FunctionRef"] = 24] = "FunctionRef";
151
+ MemberKind12[MemberKind12["NSDelegate"] = 25] = "NSDelegate";
152
+ MemberKind12[MemberKind12["NSAction"] = 26] = "NSAction";
153
+ MemberKind12[MemberKind12["Variant"] = 27] = "Variant";
154
+ return MemberKind12;
155
155
  })(MemberKind || {});
156
156
  }
157
157
  });
158
158
 
159
- // ../src/models/members/member-kind-taxonomy.ts
159
+ // ../packages/models/src/members/member-kind-taxonomy.ts
160
160
  var STORED, BINDABLE, TAXONOMY, ALL_MEMBER_KINDS, DIRECT_MEMBER_KINDS, hasTrait, isVectorMemberKind, memberKindSupportsStorage, memberKindOwnsStoredValue;
161
161
  var init_member_kind_taxonomy = __esm({
162
- "../src/models/members/member-kind-taxonomy.ts"() {
162
+ "../packages/models/src/members/member-kind-taxonomy.ts"() {
163
163
  "use strict";
164
- init_member_kind_enum();
165
164
  STORED = 1 /* Storage */ | 2 /* OwnsValue */;
166
165
  BINDABLE = STORED | 4 /* Binding */;
167
166
  TAXONOMY = {
@@ -264,7 +263,7 @@ var init_member_kind_taxonomy = __esm({
264
263
  }
265
264
  });
266
265
 
267
- // ../src/models/members/member-subtree-distribution.ts
266
+ // ../packages/models/src/members/member-subtree-distribution.ts
268
267
  function isNeoSubtreeDistributionKind(value) {
269
268
  return value === 0 /* Sparse */ || value === 1 /* Packed */;
270
269
  }
@@ -296,9 +295,8 @@ function memberKindSupportsDistribution(kind) {
296
295
  }
297
296
  var AUTOMATIC_MEMBER_DISTRIBUTION, PACKED;
298
297
  var init_member_subtree_distribution = __esm({
299
- "../src/models/members/member-subtree-distribution.ts"() {
298
+ "../packages/models/src/members/member-subtree-distribution.ts"() {
300
299
  "use strict";
301
- init_member_kind_enum();
302
300
  init_member_kind_taxonomy();
303
301
  AUTOMATIC_MEMBER_DISTRIBUTION = {
304
302
  /** A stored null has no growth axis. */
@@ -372,6 +370,7 @@ var init_member_subtree_distribution = __esm({
372
370
  var regex_default;
373
371
  var init_regex = __esm({
374
372
  "../node_modules/uuid/dist-node/regex.js"() {
373
+ "use strict";
375
374
  regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;
376
375
  }
377
376
  });
@@ -383,6 +382,7 @@ function validate(uuid) {
383
382
  var validate_default;
384
383
  var init_validate = __esm({
385
384
  "../node_modules/uuid/dist-node/validate.js"() {
385
+ "use strict";
386
386
  init_regex();
387
387
  validate_default = validate;
388
388
  }
@@ -399,6 +399,7 @@ function parse(uuid) {
399
399
  var parse_default;
400
400
  var init_parse = __esm({
401
401
  "../node_modules/uuid/dist-node/parse.js"() {
402
+ "use strict";
402
403
  init_validate();
403
404
  parse_default = parse;
404
405
  }
@@ -411,6 +412,7 @@ function unsafeStringify(arr, offset = 0) {
411
412
  var byteToHex;
412
413
  var init_stringify = __esm({
413
414
  "../node_modules/uuid/dist-node/stringify.js"() {
415
+ "use strict";
414
416
  byteToHex = [];
415
417
  for (let i2 = 0; i2 < 256; ++i2) {
416
418
  byteToHex.push((i2 + 256).toString(16).slice(1));
@@ -425,6 +427,7 @@ function rng() {
425
427
  var rnds8;
426
428
  var init_rng = __esm({
427
429
  "../node_modules/uuid/dist-node/rng.js"() {
430
+ "use strict";
428
431
  rnds8 = new Uint8Array(16);
429
432
  }
430
433
  });
@@ -468,6 +471,7 @@ function v35(version, hash, value, namespace, buf, offset) {
468
471
  var DNS, URL2;
469
472
  var init_v35 = __esm({
470
473
  "../node_modules/uuid/dist-node/v35.js"() {
474
+ "use strict";
471
475
  init_parse();
472
476
  init_stringify();
473
477
  DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8";
@@ -505,6 +509,7 @@ function _v4(options, buf, offset) {
505
509
  var v4_default;
506
510
  var init_v4 = __esm({
507
511
  "../node_modules/uuid/dist-node/v4.js"() {
512
+ "use strict";
508
513
  init_rng();
509
514
  init_stringify();
510
515
  v4_default = v4;
@@ -524,6 +529,7 @@ function sha1(bytes) {
524
529
  var sha1_default;
525
530
  var init_sha1 = __esm({
526
531
  "../node_modules/uuid/dist-node/sha1.js"() {
532
+ "use strict";
527
533
  sha1_default = sha1;
528
534
  }
529
535
  });
@@ -535,6 +541,7 @@ function v5(value, namespace, buf, offset) {
535
541
  var v5_default;
536
542
  var init_v5 = __esm({
537
543
  "../node_modules/uuid/dist-node/v5.js"() {
544
+ "use strict";
538
545
  init_sha1();
539
546
  init_v35();
540
547
  v5.DNS = DNS;
@@ -546,13 +553,14 @@ var init_v5 = __esm({
546
553
  // ../node_modules/uuid/dist-node/index.js
547
554
  var init_dist_node = __esm({
548
555
  "../node_modules/uuid/dist-node/index.js"() {
556
+ "use strict";
549
557
  init_parse();
550
558
  init_v4();
551
559
  init_v5();
552
560
  }
553
561
  });
554
562
 
555
- // ../src/models/project/project-root-members.ts
563
+ // ../packages/models/src/project/project-root-members.ts
556
564
  function projectRootMemberIds(project) {
557
565
  return PROJECT_ROOTS.map((root) => project[root.projectField]);
558
566
  }
@@ -582,9 +590,8 @@ function projectRootMembersInDisplayOrder(project) {
582
590
  }
583
591
  var PROJECT_ROOTS;
584
592
  var init_project_root_members = __esm({
585
- "../src/models/project/project-root-members.ts"() {
593
+ "../packages/models/src/project/project-root-members.ts"() {
586
594
  "use strict";
587
- init_member_storage();
588
595
  PROJECT_ROOTS = [
589
596
  {
590
597
  key: "Assets",
@@ -618,7 +625,7 @@ var init_project_root_members = __esm({
618
625
  }
619
626
  });
620
627
 
621
- // ../src/models/core/structural-narrow.ts
628
+ // ../packages/models/src/core/structural-narrow.ts
622
629
  function isObject(value) {
623
630
  if (typeof value !== "object") return false;
624
631
  return value !== null;
@@ -678,19 +685,19 @@ function setOwnField(record7, key, value) {
678
685
  });
679
686
  }
680
687
  var init_structural_narrow = __esm({
681
- "../src/models/core/structural-narrow.ts"() {
688
+ "../packages/models/src/core/structural-narrow.ts"() {
682
689
  "use strict";
683
690
  }
684
691
  });
685
692
 
686
- // ../src/models/core/world-system-kinds.generated.ts
693
+ // ../packages/models/src/core/world-system-kinds.generated.ts
687
694
  function isNeoWorldSystemClassKind(value) {
688
695
  if (typeof value !== "string") return false;
689
696
  return NEO_WORLD_SYSTEM_CLASS_KIND_VALUES.has(value);
690
697
  }
691
698
  var NeoWorldSystemClassKind, NEO_WORLD_SYSTEM_CLASS_KIND_VALUES;
692
699
  var init_world_system_kinds_generated = __esm({
693
- "../src/models/core/world-system-kinds.generated.ts"() {
700
+ "../packages/models/src/core/world-system-kinds.generated.ts"() {
694
701
  "use strict";
695
702
  NeoWorldSystemClassKind = {
696
703
  CellPattern: "cellPattern",
@@ -733,7 +740,7 @@ var init_world_system_kinds_generated = __esm({
733
740
  }
734
741
  });
735
742
 
736
- // ../src/models/core/core-types.ts
743
+ // ../packages/models/src/core/core-types.ts
737
744
  function isWithId(value) {
738
745
  return typeof value?.id === "string";
739
746
  }
@@ -766,7 +773,7 @@ function isWithName(value) {
766
773
  }
767
774
  var SystemDisallowedOperation, SystemProtectionKind;
768
775
  var init_core_types = __esm({
769
- "../src/models/core/core-types.ts"() {
776
+ "../packages/models/src/core/core-types.ts"() {
770
777
  "use strict";
771
778
  init_world_system_kinds_generated();
772
779
  SystemDisallowedOperation = {
@@ -799,7 +806,7 @@ var init_core_types = __esm({
799
806
  }
800
807
  });
801
808
 
802
- // ../src/models/docs-text.ts
809
+ // ../packages/models/src/docs-text.ts
803
810
  function isValidDocsText(value) {
804
811
  if (value === void 0) return true;
805
812
  if (typeof value !== "string") return false;
@@ -807,14 +814,14 @@ function isValidDocsText(value) {
807
814
  }
808
815
  var DOCS_TEXT_MAX_UTF8_BYTES, textEncoder;
809
816
  var init_docs_text = __esm({
810
- "../src/models/docs-text.ts"() {
817
+ "../packages/models/src/docs-text.ts"() {
811
818
  "use strict";
812
819
  DOCS_TEXT_MAX_UTF8_BYTES = 16384;
813
820
  textEncoder = new TextEncoder();
814
821
  }
815
822
  });
816
823
 
817
- // ../src/models/members/float32.ts
824
+ // ../packages/models/src/members/float32.ts
818
825
  function isFloat32(value) {
819
826
  return typeof value === "number" && Number.isFinite(value) && Math.fround(value) === value;
820
827
  }
@@ -850,7 +857,7 @@ function float32Text(value) {
850
857
  return String(value);
851
858
  }
852
859
  var init_float32 = __esm({
853
- "../src/models/members/float32.ts"() {
860
+ "../packages/models/src/members/float32.ts"() {
854
861
  "use strict";
855
862
  }
856
863
  });
@@ -1897,7 +1904,7 @@ var init_project_source_identifiers = __esm({
1897
1904
  }
1898
1905
  });
1899
1906
 
1900
- // ../src/models/project-source-identifiers.ts
1907
+ // ../packages/models/src/project-source-identifiers.ts
1901
1908
  function isValidGeneratedIdentifier(value) {
1902
1909
  return typeof value === "string" && isGeneratedCSharpIdentifier(value) && !isGeneratedCSharpReservedKeyword(value);
1903
1910
  }
@@ -1911,14 +1918,14 @@ function isValidProjectBindingIdentifier(value) {
1911
1918
  return isValidGeneratedIdentifier(value) && isValidNeoProjectBindingIdentifier(value);
1912
1919
  }
1913
1920
  var init_project_source_identifiers2 = __esm({
1914
- "../src/models/project-source-identifiers.ts"() {
1921
+ "../packages/models/src/project-source-identifiers.ts"() {
1915
1922
  "use strict";
1916
1923
  init_generated_csharp_identifiers();
1917
1924
  init_project_source_identifiers();
1918
1925
  }
1919
1926
  });
1920
1927
 
1921
- // ../src/models/schema-identifiers.ts
1928
+ // ../packages/models/src/schema-identifiers.ts
1922
1929
  function isValidSchemaAuthoredIdentifier(value) {
1923
1930
  return isValidProjectSourceIdentifier(value);
1924
1931
  }
@@ -1929,7 +1936,7 @@ function isValidSchemaBindingIdentifier(value) {
1929
1936
  return isValidProjectBindingIdentifier(value);
1930
1937
  }
1931
1938
  var init_schema_identifiers = __esm({
1932
- "../src/models/schema-identifiers.ts"() {
1939
+ "../packages/models/src/schema-identifiers.ts"() {
1933
1940
  "use strict";
1934
1941
  init_project_source_identifiers2();
1935
1942
  }
@@ -1962,7 +1969,7 @@ var init_strict_ir = __esm({
1962
1969
  }
1963
1970
  });
1964
1971
 
1965
- // ../src/models/neoscript/neoscript-compiler-revision.ts
1972
+ // ../packages/models/src/neoscript/neoscript-compiler-revision.ts
1966
1973
  function isAcceptedNeoScriptCompilerRevision(stamp, rollout = ACTIVE_NEOSCRIPT_COMPILER_REVISION_ROLLOUT) {
1967
1974
  if (stamp === NEOSCRIPT_COMPILER_REVISION) return true;
1968
1975
  if (rollout === null) return false;
@@ -2029,7 +2036,7 @@ function isCompiledBodyShape(object2) {
2029
2036
  }
2030
2037
  var ACTIVE_NEOSCRIPT_COMPILER_REVISION_ROLLOUT;
2031
2038
  var init_neoscript_compiler_revision = __esm({
2032
- "../src/models/neoscript/neoscript-compiler-revision.ts"() {
2039
+ "../packages/models/src/neoscript/neoscript-compiler-revision.ts"() {
2033
2040
  "use strict";
2034
2041
  init_strict_ir();
2035
2042
  ACTIVE_NEOSCRIPT_COMPILER_REVISION_ROLLOUT = // <neoscript-compiler-revision-rollout>
@@ -2037,10 +2044,10 @@ var init_neoscript_compiler_revision = __esm({
2037
2044
  }
2038
2045
  });
2039
2046
 
2040
- // ../src/models/neoscript/neoscript-types.ts
2047
+ // ../packages/models/src/neoscript/neoscript-types.ts
2041
2048
  var NS_TYPE_UNKNOWN, NS_TYPE_VOID, NSAssignmentOperator, NSWritability, NSCollectionMutation;
2042
2049
  var init_neoscript_types = __esm({
2043
- "../src/models/neoscript/neoscript-types.ts"() {
2050
+ "../packages/models/src/neoscript/neoscript-types.ts"() {
2044
2051
  "use strict";
2045
2052
  NS_TYPE_UNKNOWN = "Unknown";
2046
2053
  NS_TYPE_VOID = "Void";
@@ -2078,7 +2085,7 @@ var init_neoscript_types = __esm({
2078
2085
  }
2079
2086
  });
2080
2087
 
2081
- // ../src/models/neoscript/neoscript-guards.ts
2088
+ // ../packages/models/src/neoscript/neoscript-guards.ts
2082
2089
  function isNSTypeInfoBase(value) {
2083
2090
  const v = value;
2084
2091
  return typeof v === "object" && v !== null && typeof v.type === "number" && v.type in MemberKind && typeof v.required === "boolean";
@@ -3223,7 +3230,7 @@ function isNSVoidBody(value) {
3223
3230
  }
3224
3231
  var NS_STRING_OPS, NS_DECIMAL_OPS, NS_MATH_OPS;
3225
3232
  var init_neoscript_guards = __esm({
3226
- "../src/models/neoscript/neoscript-guards.ts"() {
3233
+ "../packages/models/src/neoscript/neoscript-guards.ts"() {
3227
3234
  "use strict";
3228
3235
  init_neoscript_compiler_revision();
3229
3236
  init_member_kind_enum();
@@ -3260,7 +3267,7 @@ var init_neoscript_guards = __esm({
3260
3267
  }
3261
3268
  });
3262
3269
 
3263
- // ../src/models/neoscript/parameter-defaults.ts
3270
+ // ../packages/models/src/neoscript/parameter-defaults.ts
3264
3271
  function parameterHasDefault(argument2) {
3265
3272
  return argument2.defaultValue !== void 0;
3266
3273
  }
@@ -3306,12 +3313,12 @@ function callableParameters(overload) {
3306
3313
  }));
3307
3314
  }
3308
3315
  var init_parameter_defaults = __esm({
3309
- "../src/models/neoscript/parameter-defaults.ts"() {
3316
+ "../packages/models/src/neoscript/parameter-defaults.ts"() {
3310
3317
  "use strict";
3311
3318
  }
3312
3319
  });
3313
3320
 
3314
- // ../src/models/neoscript/type-info-equality.ts
3321
+ // ../packages/models/src/neoscript/type-info-equality.ts
3315
3322
  function typeInfosInvariantlyEqual(left, right) {
3316
3323
  if (left.type !== right.type) return false;
3317
3324
  if (left.required !== right.required) return false;
@@ -3362,14 +3369,13 @@ function typeInfosInvariantlyEqual(left, right) {
3362
3369
  return true;
3363
3370
  }
3364
3371
  var init_type_info_equality = __esm({
3365
- "../src/models/neoscript/type-info-equality.ts"() {
3372
+ "../packages/models/src/neoscript/type-info-equality.ts"() {
3366
3373
  "use strict";
3367
- init_member_kind_enum();
3368
3374
  init_neoscript_types();
3369
3375
  }
3370
3376
  });
3371
3377
 
3372
- // ../src/common/collections.ts
3378
+ // ../packages/models/src/common/collections.ts
3373
3379
  function indexById(records3) {
3374
3380
  const indexed = /* @__PURE__ */ new Map();
3375
3381
  for (const record7 of records3) indexed.set(record7.id, record7);
@@ -3394,12 +3400,12 @@ async function forEachConcurrently(items, limit, work) {
3394
3400
  );
3395
3401
  }
3396
3402
  var init_collections = __esm({
3397
- "../src/common/collections.ts"() {
3403
+ "../packages/models/src/common/collections.ts"() {
3398
3404
  "use strict";
3399
3405
  }
3400
3406
  });
3401
3407
 
3402
- // ../src/models/classes/classes.ts
3408
+ // ../packages/models/src/classes/classes.ts
3403
3409
  function isAbstractClass(value) {
3404
3410
  return value?.modifier === 1 /* Abstract */;
3405
3411
  }
@@ -3594,7 +3600,7 @@ function isNeoSchemaClass(value) {
3594
3600
  }
3595
3601
  var RETIRED_CONSTRUCTOR_PROJECTIONS_FIELD;
3596
3602
  var init_classes = __esm({
3597
- "../src/models/classes/classes.ts"() {
3603
+ "../packages/models/src/classes/classes.ts"() {
3598
3604
  "use strict";
3599
3605
  init_collections();
3600
3606
  init_core_types();
@@ -3604,7 +3610,7 @@ var init_classes = __esm({
3604
3610
  }
3605
3611
  });
3606
3612
 
3607
- // ../src/models/members/structured-leaf-fields.ts
3613
+ // ../packages/models/src/members/structured-leaf-fields.ts
3608
3614
  function isStructuredLeafKind(kind) {
3609
3615
  return Object.prototype.hasOwnProperty.call(STRUCTURED_LEAF_FIELDS, kind);
3610
3616
  }
@@ -3689,9 +3695,8 @@ function structuredLeafFieldViolation(type, value) {
3689
3695
  }
3690
3696
  var STRUCTURED_LEAF_FIELDS, STRUCTURED_LEAF_PARTIAL_KEY;
3691
3697
  var init_structured_leaf_fields = __esm({
3692
- "../src/models/members/structured-leaf-fields.ts"() {
3698
+ "../packages/models/src/members/structured-leaf-fields.ts"() {
3693
3699
  "use strict";
3694
- init_member_kind_enum();
3695
3700
  init_float32();
3696
3701
  STRUCTURED_LEAF_FIELDS = {
3697
3702
  [11 /* Sprite */]: [
@@ -3727,7 +3732,7 @@ var init_structured_leaf_fields = __esm({
3727
3732
  }
3728
3733
  });
3729
3734
 
3730
- // ../src/models/members/member-kinds.ts
3735
+ // ../packages/models/src/members/member-kinds.ts
3731
3736
  function isFunctionEffectKind(value) {
3732
3737
  return value === 0 /* None */ || value === 1 /* Auto */;
3733
3738
  }
@@ -4915,7 +4920,7 @@ function isAnyMemberAuthoredOrCompiled(value) {
4915
4920
  }
4916
4921
  var FunctionArgumentReservedNames, ListKind, CHAIN_RESOLVED_OPTIONAL_MEMBER_FIELDS, MEMBER_ACCESS_KINDS, DECIMAL_STRING_PATTERN, DECIMAL_MAX_SIGNIFICANT_DIGITS, DECIMAL_MAX_SCALE;
4917
4922
  var init_member_kinds = __esm({
4918
- "../src/models/members/member-kinds.ts"() {
4923
+ "../packages/models/src/members/member-kinds.ts"() {
4919
4924
  "use strict";
4920
4925
  init_structural_narrow();
4921
4926
  init_core_types();
@@ -4939,10 +4944,10 @@ var init_member_kinds = __esm({
4939
4944
  "root",
4940
4945
  "context"
4941
4946
  ]);
4942
- ListKind = /* @__PURE__ */ ((ListKind3) => {
4943
- ListKind3[ListKind3["Ordered"] = 0] = "Ordered";
4944
- ListKind3[ListKind3["Unordered"] = 1] = "Unordered";
4945
- return ListKind3;
4947
+ ListKind = /* @__PURE__ */ ((ListKind2) => {
4948
+ ListKind2[ListKind2["Ordered"] = 0] = "Ordered";
4949
+ ListKind2[ListKind2["Unordered"] = 1] = "Unordered";
4950
+ return ListKind2;
4946
4951
  })(ListKind || {});
4947
4952
  CHAIN_RESOLVED_OPTIONAL_MEMBER_FIELDS = [
4948
4953
  "storageKey",
@@ -4974,7 +4979,7 @@ var init_member_kinds = __esm({
4974
4979
  }
4975
4980
  });
4976
4981
 
4977
- // ../src/models/project/project-schema-index.ts
4982
+ // ../packages/models/src/project/project-schema-index.ts
4978
4983
  function append(map, key, value) {
4979
4984
  const values = map.get(key);
4980
4985
  if (values === void 0) map.set(key, [value]);
@@ -5031,7 +5036,7 @@ function projectSchemaIndexFor(source, revision = EMPTY_REVISION) {
5031
5036
  }
5032
5037
  var CircularInheritanceError, ProjectSchemaIndex, EMPTY_STRING_SET, EMPTY_REVISION, projectSchemaIndexEpoch, projectSchemaIndexes, ABSENT_COLLECTION;
5033
5038
  var init_project_schema_index = __esm({
5034
- "../src/models/project/project-schema-index.ts"() {
5039
+ "../packages/models/src/project/project-schema-index.ts"() {
5035
5040
  "use strict";
5036
5041
  init_member_kinds();
5037
5042
  CircularInheritanceError = class extends Error {
@@ -5208,7 +5213,7 @@ var init_project_schema_index = __esm({
5208
5213
  }
5209
5214
  });
5210
5215
 
5211
- // ../src/models/classes/inheritance.ts
5216
+ // ../packages/models/src/classes/inheritance.ts
5212
5217
  function indexClasses(classes) {
5213
5218
  return projectSchemaIndexFor({ classes, members: NO_MEMBERS });
5214
5219
  }
@@ -5520,7 +5525,7 @@ function addDependentMemberIds(memberIds, members) {
5520
5525
  }
5521
5526
  var UnresolvedMemberInheritanceError, NO_CLASSES, NO_MEMBERS, resolvedClassSchemas;
5522
5527
  var init_inheritance = __esm({
5523
- "../src/models/classes/inheritance.ts"() {
5528
+ "../packages/models/src/classes/inheritance.ts"() {
5524
5529
  "use strict";
5525
5530
  init_member_kinds();
5526
5531
  init_structural_narrow();
@@ -5543,7 +5548,7 @@ var init_inheritance = __esm({
5543
5548
  }
5544
5549
  });
5545
5550
 
5546
- // ../src/models/system-record-id.ts
5551
+ // ../packages/models/src/system-record-id.ts
5547
5552
  function isSystemRecordId(id2) {
5548
5553
  return id2.startsWith(SYSTEM_RECORD_ID_PREFIX);
5549
5554
  }
@@ -5580,7 +5585,7 @@ function inSystemRecordNamespaceOf(ownerId, derivedId) {
5580
5585
  }
5581
5586
  var SYSTEM_RECORD_ID_PREFIX, RECORD_ID_PATTERN;
5582
5587
  var init_system_record_id = __esm({
5583
- "../src/models/system-record-id.ts"() {
5588
+ "../packages/models/src/system-record-id.ts"() {
5584
5589
  "use strict";
5585
5590
  SYSTEM_RECORD_ID_PREFIX = "system_";
5586
5591
  RECORD_ID_PATTERN = new RegExp(
@@ -5589,15 +5594,11 @@ var init_system_record_id = __esm({
5589
5594
  }
5590
5595
  });
5591
5596
 
5592
- // ../src/models/classes/world-system-classes.generated.ts
5597
+ // ../packages/models/src/classes/world-system-classes.generated.ts
5593
5598
  var WORLD_GRID_CHILDREN_MEMBER_ID, WORLD_GRID_CHILDREN_ENTRY_MEMBER_ID, WORLD_OBJECT_BASE_ENABLED_SCHEMA_KEY, WORLD_OBJECT_CHILDREN_MEMBER_ID, WORLD_OBJECT_CHILDREN_ENTRY_MEMBER_ID, WORLD_OBJECT_COLLIDER_SCHEMA_KEY, WORLD_COLLIDER_SIZE_SCHEMA_KEY, WORLD_COLLIDER_OFFSET_SCHEMA_KEY, WORLD_COLLIDER_IS_TRIGGER_SCHEMA_KEY, WORLD_SORTING_GROUP_SORT_AT_ROOT_SCHEMA_KEY, WORLD_SORTING_GROUP_SORT_POINT_SCHEMA_KEY, WORLD_SPRITE_MASK_INTERACTION_ENUM_ID, WORLD_SPRITE_MASK_INTERACTION_NONE_OPTION_ID, WORLD_SPRITE_MASK_INTERACTION_VISIBLE_INSIDE_OPTION_ID, WORLD_SPRITE_MASK_INTERACTION_VISIBLE_OUTSIDE_OPTION_ID, WORLD_OBJECT_PLACEMENT_TILES_MEMBER_ID, WORLD_OBJECT_PLACEMENT_TILES_ENTRY_MEMBER_ID, WORLD_PLACEMENT_TILE_CELL_MEMBER_ID, WORLD_TILE_CELL_MEMBER_ID, WORLD_TILE_LAYER_LINK_TILES_MEMBER_ID, WORLD_TILE_LAYER_LINK_TILE_ENTRY_MEMBER_ID, WORLD_OBJECT_LAYER_LINK_OBJECTS_MEMBER_ID, WORLD_OBJECT_LAYER_LINK_OBJECT_ENTRY_MEMBER_ID, WORLD_TILE_SMART_TILE_SCHEMA_KEY, WORLD_SMART_TILE_DEFAULT_COLLIDER_SCHEMA_KEY, WORLD_SMART_TILE_RULES_SCHEMA_KEY, WORLD_SMART_TILE_RULE_NEIGHBORS_SCHEMA_KEY, WORLD_SMART_TILE_RULE_SPRITES_SCHEMA_KEY, WORLD_SMART_TILE_RULE_OUTPUT_SCHEMA_KEY, WORLD_SMART_TILE_RULE_COLLIDER_SCHEMA_KEY, WORLD_SMART_TILE_RULE_TRANSFORM_SCHEMA_KEY, WORLD_SMART_TILE_RULE_MIN_ANIMATION_SPEED_SCHEMA_KEY, WORLD_SMART_TILE_RULE_MAX_ANIMATION_SPEED_SCHEMA_KEY, WORLD_SMART_TILE_NEIGHBOR_CELL_SCHEMA_KEY, WORLD_SMART_TILE_NEIGHBOR_CONDITION_SCHEMA_KEY, WORLD_ANIMATION_CLIP_TARGET_PARAM_ID, WORLD_ANIMATION_CHILD_OVERRIDE_ENTRY_PARAM_ID, WORLD_ANIMATION_CLIP_FPS_MEMBER_ID, WORLD_ANIMATION_CLIP_DURATION_MEMBER_ID, WORLD_ANIMATION_CLIP_FRAMES_MEMBER_ID, WORLD_ANIMATION_CLIP_TRACKS_MEMBER_ID, WORLD_ANIMATION_FRAME_BASE_INDEX_MEMBER_ID, WORLD_ANIMATION_FRAME_OVERRIDES_MEMBER_ID, WORLD_ANIMATION_FRAME_CHILD_OVERRIDES_MEMBER_ID, WORLD_ANIMATION_FRAME_CHILD_OVERRIDES_ENTRY_MEMBER_ID, WORLD_ANIMATION_FRAME_ACTIONS_MEMBER_ID, WORLD_ANIMATION_CHILD_OVERRIDE_SELECTOR_MEMBER_ID, WORLD_ANIMATION_CHILD_OVERRIDE_REFRESH_MEMBER_ID, WORLD_ANIMATION_CHILD_OVERRIDE_OVERRIDES_MEMBER_ID, WORLD_ANIMATION_TRACK_SELECTOR_MEMBER_ID, WORLD_ANIMATION_TRACK_REFRESH_MEMBER_ID, WORLD_ANIMATION_TRACK_START_FRAME_MEMBER_ID, WORLD_ANIMATION_TRACK_DIRECTION_MEMBER_ID, WORLD_ANIMATION_TRACK_OFFSET_START_INDEX_MEMBER_ID, WORLD_ANIMATION_TRACK_OFFSET_END_INDEX_MEMBER_ID, WORLD_ANIMATION_CHILD_TRACK_CLIP_KEY_MEMBER_ID, WORLD_ANIMATION_SEGMENT_DURATION_MEMBER_ID, WORLD_ANIMATION_SEGMENT_FRAMES_MEMBER_ID, WORLD_ANIMATION_SEGMENT_TRACK_CHILD_PARAM_ID, WORLD_ANIMATION_SEGMENT_TRACK_VALUE_PARAM_ID, WORLD_PLAY_DIRECTION_ENUM_ID, WORLD_SELECTOR_REFRESH_ON_LOAD_OPTION_ID, WORLD_SELECTOR_REFRESH_PER_FRAME_OPTION_ID, WORLD_PLAY_DIRECTION_FORWARD_OPTION_ID, WORLD_PLAY_DIRECTION_REVERSE_OPTION_ID, WORLD_SYSTEM_CLASS_DEFINITIONS;
5594
5599
  var init_world_system_classes_generated = __esm({
5595
- "../src/models/classes/world-system-classes.generated.ts"() {
5600
+ "../packages/models/src/classes/world-system-classes.generated.ts"() {
5596
5601
  "use strict";
5597
- init_member_storage();
5598
- init_member_subtree_distribution();
5599
- init_classes();
5600
- init_member_kinds();
5601
5602
  WORLD_GRID_CHILDREN_MEMBER_ID = "system_98578ba3-a70e-4397-9283-996a898d44c8";
5602
5603
  WORLD_GRID_CHILDREN_ENTRY_MEMBER_ID = "system_c86da069-7ef9-5693-a54b-5c331755fde9";
5603
5604
  WORLD_OBJECT_BASE_ENABLED_SCHEMA_KEY = "Enabled";
@@ -7603,7 +7604,7 @@ var init_world_system_classes_generated = __esm({
7603
7604
  }
7604
7605
  });
7605
7606
 
7606
- // ../src/models/core/deep-clone-plain-data.ts
7607
+ // ../packages/models/src/core/deep-clone-plain-data.ts
7607
7608
  function deepClonePlainData(value) {
7608
7609
  return clonePlain(value, "$", /* @__PURE__ */ new Set());
7609
7610
  }
@@ -7651,13 +7652,13 @@ function clonePlain(value, path, visiting) {
7651
7652
  }
7652
7653
  }
7653
7654
  var init_deep_clone_plain_data = __esm({
7654
- "../src/models/core/deep-clone-plain-data.ts"() {
7655
+ "../packages/models/src/core/deep-clone-plain-data.ts"() {
7655
7656
  "use strict";
7656
7657
  init_structural_narrow();
7657
7658
  }
7658
7659
  });
7659
7660
 
7660
- // ../src/models/classes/world-system-classes.ts
7661
+ // ../packages/models/src/classes/world-system-classes.ts
7661
7662
  function worldAnimationChildOverrideBindingMemberId(classId) {
7662
7663
  return inSystemRecordNamespaceOf(
7663
7664
  classId,
@@ -7708,16 +7709,11 @@ function animationFamilyClassKinds(classes) {
7708
7709
  }
7709
7710
  var WORLD_ANIMATION_CHILD_OVERRIDE_BINDING_MEMBER_NAME, WORLD_ANIMATION_CHILD_OVERRIDE_BINDING_MEMBER_NAMESPACE, WORLD_SYSTEM_CLASS_DEFINITION_BY_KIND, WORLD_SYSTEM_ANIMATION_KIND_MARKER, WORLD_SYSTEM_ANIMATION_KINDS, GENERIC_WORLD_SYSTEM_CLASS_KINDS, WORLD_SYSTEM_ALL_KINDS, WORLD_SYSTEM_SCHEMA_FIELD_SITES_BY_MEMBER_ID;
7710
7711
  var init_world_system_classes = __esm({
7711
- "../src/models/classes/world-system-classes.ts"() {
7712
+ "../packages/models/src/classes/world-system-classes.ts"() {
7712
7713
  "use strict";
7713
- init_classes();
7714
- init_member_kinds();
7715
- init_neoscript_types();
7716
- init_core_types();
7717
7714
  init_dist_node();
7718
7715
  init_system_record_id();
7719
7716
  init_world_system_classes_generated();
7720
- init_deep_clone_plain_data();
7721
7717
  init_world_system_classes_generated();
7722
7718
  WORLD_ANIMATION_CHILD_OVERRIDE_BINDING_MEMBER_NAME = "NeoAnimationChildBinding";
7723
7719
  WORLD_ANIMATION_CHILD_OVERRIDE_BINDING_MEMBER_NAMESPACE = "2048c3bb-8ae5-51cc-a1dc-15178cc41865";
@@ -7756,7 +7752,7 @@ var init_world_system_classes = __esm({
7756
7752
  }
7757
7753
  });
7758
7754
 
7759
- // ../src/models/classes/generics.ts
7755
+ // ../packages/models/src/classes/generics.ts
7760
7756
  function resolveGenericEnv(classId, classes, draft) {
7761
7757
  const index = classIndexFor(classes);
7762
7758
  let byClass = genericBindingsByClassIndex.get(index);
@@ -8564,7 +8560,7 @@ function isAnimationChildOverrideEntrySlot(slotMember, members) {
8564
8560
  }
8565
8561
  var genericBindingsByClassIndex;
8566
8562
  var init_generics = __esm({
8567
- "../src/models/classes/generics.ts"() {
8563
+ "../packages/models/src/classes/generics.ts"() {
8568
8564
  "use strict";
8569
8565
  init_member_kinds();
8570
8566
  init_neoscript_guards();
@@ -8626,7 +8622,7 @@ var init_value_graph = __esm({
8626
8622
  }
8627
8623
  });
8628
8624
 
8629
- // ../src/models/members/instance-provenance.ts
8625
+ // ../packages/models/src/members/instance-provenance.ts
8630
8626
  function replaceLiteralValueClass(value, classId) {
8631
8627
  const next = { ...value, classId };
8632
8628
  for (const field of LITERAL_INSTANCE_IDENTITY_FIELDS) {
@@ -8665,7 +8661,7 @@ function carriesCompleteConstructionRecipe(value) {
8665
8661
  }
8666
8662
  var LITERAL_INSTANCE_IDENTITY_FIELDS;
8667
8663
  var init_instance_provenance = __esm({
8668
- "../src/models/members/instance-provenance.ts"() {
8664
+ "../packages/models/src/members/instance-provenance.ts"() {
8669
8665
  "use strict";
8670
8666
  init_value_graph();
8671
8667
  init_member_kinds();
@@ -8680,7 +8676,7 @@ var init_instance_provenance = __esm({
8680
8676
  }
8681
8677
  });
8682
8678
 
8683
- // ../src/models/members/unordered-list-membership.ts
8679
+ // ../packages/models/src/members/unordered-list-membership.ts
8684
8680
  function buildUnorderedListMembershipIndex(values) {
8685
8681
  const membersByContainerId = /* @__PURE__ */ new Map();
8686
8682
  for (const candidate of values) {
@@ -8738,13 +8734,13 @@ function assertUnorderedListContainerIsPresent(parentValue) {
8738
8734
  }
8739
8735
  }
8740
8736
  var init_unordered_list_membership = __esm({
8741
- "../src/models/members/unordered-list-membership.ts"() {
8737
+ "../packages/models/src/members/unordered-list-membership.ts"() {
8742
8738
  "use strict";
8743
8739
  init_member_kinds();
8744
8740
  }
8745
8741
  });
8746
8742
 
8747
- // ../src/models/members/read-only-members.ts
8743
+ // ../packages/models/src/members/read-only-members.ts
8748
8744
  function concreteDeclaringGenericEnv(memberId, classes) {
8749
8745
  const env = resolveDeclaringClassGenericEnv(memberId, classes);
8750
8746
  const concrete = new Map(
@@ -9352,16 +9348,13 @@ function genericEnvironmentKey(env) {
9352
9348
  }
9353
9349
  var READ_ONLY_SYNTHETIC_VALUE_ID_PREFIX;
9354
9350
  var init_read_only_members = __esm({
9355
- "../src/models/members/read-only-members.ts"() {
9351
+ "../packages/models/src/members/read-only-members.ts"() {
9356
9352
  "use strict";
9357
9353
  init_project_root_members();
9358
9354
  init_inheritance();
9359
- init_classes();
9360
9355
  init_project_schema_index();
9361
9356
  init_generics();
9362
9357
  init_member_kinds();
9363
- init_instance_provenance();
9364
- init_member_storage();
9365
9358
  init_unordered_list_membership();
9366
9359
  init_dist_node();
9367
9360
  init_classes();
@@ -9369,7 +9362,7 @@ var init_read_only_members = __esm({
9369
9362
  }
9370
9363
  });
9371
9364
 
9372
- // ../src/models/members/member-value-id.ts
9365
+ // ../packages/models/src/members/member-value-id.ts
9373
9366
  function derivedMemberValueId(memberId) {
9374
9367
  return inSystemRecordNamespaceOf(
9375
9368
  memberId,
@@ -9425,7 +9418,7 @@ function pendingMemberValueMemberId(token) {
9425
9418
  }
9426
9419
  var NEO_MEMBER_VALUE_NAMESPACE, NEO_VIRTUAL_VALUE_NAMESPACE, virtualNamespaceBytes, virtualIdentityEncoder, SURROGATE_CODE_UNIT, PENDING_VIRTUAL_VALUE_PREFIX, PENDING_MEMBER_VALUE_PREFIX;
9427
9420
  var init_member_value_id = __esm({
9428
- "../src/models/members/member-value-id.ts"() {
9421
+ "../packages/models/src/members/member-value-id.ts"() {
9429
9422
  "use strict";
9430
9423
  init_dist_node();
9431
9424
  init_system_record_id();
@@ -9439,7 +9432,7 @@ var init_member_value_id = __esm({
9439
9432
  }
9440
9433
  });
9441
9434
 
9442
- // ../src/models/members/packed-value-encoding.ts
9435
+ // ../packages/models/src/members/packed-value-encoding.ts
9443
9436
  function isPackedValueEnvelope(value) {
9444
9437
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
9445
9438
  return false;
@@ -9870,7 +9863,7 @@ function registerEdge(edges, ownerId, childId) {
9870
9863
  }
9871
9864
  var PACKED_VALUE_ENTRY_KEY, PackedValueEncodingError, NO_CHILDREN, NO_EDGES, NO_POSITIONS, PACKED_ENTRY_FORBIDDEN_FIELDS;
9872
9865
  var init_packed_value_encoding = __esm({
9873
- "../src/models/members/packed-value-encoding.ts"() {
9866
+ "../packages/models/src/members/packed-value-encoding.ts"() {
9874
9867
  "use strict";
9875
9868
  init_instance_provenance();
9876
9869
  init_member_kinds();
@@ -9893,7 +9886,7 @@ var init_packed_value_encoding = __esm({
9893
9886
  }
9894
9887
  });
9895
9888
 
9896
- // ../src/models/members/member-storage-key.ts
9889
+ // ../packages/models/src/members/member-storage-key.ts
9897
9890
  function normalizeStorageKeyDeclaration(declaration) {
9898
9891
  if (declaration === void 0 || declaration === null) {
9899
9892
  return STORAGE_KEY_INHERIT;
@@ -9928,7 +9921,7 @@ function resolveMapKeyForCreatedValue(args) {
9928
9921
  }
9929
9922
  var MAIN_STORAGE_PARTITION, STORAGE_KEY_INHERIT, STORAGE_KEY_ALL, PARENT_CLASS_TEMPLATE_TOKEN;
9930
9923
  var init_member_storage_key = __esm({
9931
- "../src/models/members/member-storage-key.ts"() {
9924
+ "../packages/models/src/members/member-storage-key.ts"() {
9932
9925
  "use strict";
9933
9926
  MAIN_STORAGE_PARTITION = "main";
9934
9927
  STORAGE_KEY_INHERIT = "inherit";
@@ -9937,7 +9930,7 @@ var init_member_storage_key = __esm({
9937
9930
  }
9938
9931
  });
9939
9932
 
9940
- // ../src/models/members/storage-partitions.ts
9933
+ // ../packages/models/src/members/storage-partitions.ts
9941
9934
  function resolveDeclaredStorageKey(members, member) {
9942
9935
  const resolved = resolveMember(member, members);
9943
9936
  return normalizeStorageKeyDeclaration(resolved.storageKey);
@@ -10046,7 +10039,7 @@ function referencedValueIdCandidates(value) {
10046
10039
  return [];
10047
10040
  }
10048
10041
  var init_storage_partitions = __esm({
10049
- "../src/models/members/storage-partitions.ts"() {
10042
+ "../packages/models/src/members/storage-partitions.ts"() {
10050
10043
  "use strict";
10051
10044
  init_inheritance();
10052
10045
  init_member_storage_key();
@@ -10054,7 +10047,7 @@ var init_storage_partitions = __esm({
10054
10047
  }
10055
10048
  });
10056
10049
 
10057
- // ../src/models/core/auth-ownership-types.ts
10050
+ // ../packages/models/src/core/auth-ownership-types.ts
10058
10051
  function isActorIdentifier(value) {
10059
10052
  if (typeof value !== "object") return false;
10060
10053
  if (value === null) return false;
@@ -10067,7 +10060,7 @@ function isActorKind(value) {
10067
10060
  }
10068
10061
  var ActorKind;
10069
10062
  var init_auth_ownership_types = __esm({
10070
- "../src/models/core/auth-ownership-types.ts"() {
10063
+ "../packages/models/src/core/auth-ownership-types.ts"() {
10071
10064
  "use strict";
10072
10065
  ActorKind = {
10073
10066
  /**
@@ -10086,9 +10079,9 @@ var init_auth_ownership_types = __esm({
10086
10079
  }
10087
10080
  });
10088
10081
 
10089
- // ../src/models/core/index.ts
10082
+ // ../packages/models/src/core/index.ts
10090
10083
  var init_core = __esm({
10091
- "../src/models/core/index.ts"() {
10084
+ "../packages/models/src/core/index.ts"() {
10092
10085
  "use strict";
10093
10086
  init_core_types();
10094
10087
  init_auth_ownership_types();
@@ -10096,7 +10089,7 @@ var init_core = __esm({
10096
10089
  }
10097
10090
  });
10098
10091
 
10099
- // ../src/models/members/member-change-listeners.ts
10092
+ // ../packages/models/src/members/member-change-listeners.ts
10100
10093
  function editChangeListenerSet(explicit, inherited, edit, options = { inheritedComplete: true }) {
10101
10094
  if (edit.kind === "reset") {
10102
10095
  return explicit === void 0 ? { changed: false } : { changed: true, targets: void 0 };
@@ -10206,7 +10199,7 @@ function defaultSourceWithListeners(row, graph) {
10206
10199
  }
10207
10200
  var authoredListenerIndexes, declarationListenerMetadata;
10208
10201
  var init_member_change_listeners = __esm({
10209
- "../src/models/members/member-change-listeners.ts"() {
10202
+ "../packages/models/src/members/member-change-listeners.ts"() {
10210
10203
  "use strict";
10211
10204
  init_core();
10212
10205
  init_member_kinds();
@@ -10215,7 +10208,7 @@ var init_member_change_listeners = __esm({
10215
10208
  }
10216
10209
  });
10217
10210
 
10218
- // ../src/models/constructors/constructors.ts
10211
+ // ../packages/models/src/constructors/constructors.ts
10219
10212
  function hasRejectedConstructorKey(value) {
10220
10213
  return REJECTED_CONSTRUCTOR_KEYS.some((key) => value[key] !== void 0);
10221
10214
  }
@@ -10357,7 +10350,7 @@ function constructorActionParameterId(constructor2, index) {
10357
10350
  }
10358
10351
  var REJECTED_CONSTRUCTOR_KEYS;
10359
10352
  var init_constructors = __esm({
10360
- "../src/models/constructors/constructors.ts"() {
10353
+ "../packages/models/src/constructors/constructors.ts"() {
10361
10354
  "use strict";
10362
10355
  init_core_types();
10363
10356
  init_docs_text();
@@ -10375,15 +10368,15 @@ var init_constructors = __esm({
10375
10368
  }
10376
10369
  });
10377
10370
 
10378
- // ../src/models/constructors/index.ts
10371
+ // ../packages/models/src/constructors/index.ts
10379
10372
  var init_constructors2 = __esm({
10380
- "../src/models/constructors/index.ts"() {
10373
+ "../packages/models/src/constructors/index.ts"() {
10381
10374
  "use strict";
10382
10375
  init_constructors();
10383
10376
  }
10384
10377
  });
10385
10378
 
10386
- // ../src/models/classes/construction-requirements.ts
10379
+ // ../packages/models/src/classes/construction-requirements.ts
10387
10380
  function requiredMembersForConstruction(classId, document, classArguments2) {
10388
10381
  return unsettledMembers(
10389
10382
  classId,
@@ -10617,10 +10610,9 @@ function resolveConstructionTypeArguments(typeArguments, document) {
10617
10610
  return bindings;
10618
10611
  }
10619
10612
  var init_construction_requirements = __esm({
10620
- "../src/models/classes/construction-requirements.ts"() {
10613
+ "../packages/models/src/classes/construction-requirements.ts"() {
10621
10614
  "use strict";
10622
10615
  init_type_info_equality();
10623
- init_classes();
10624
10616
  init_inheritance();
10625
10617
  init_generics();
10626
10618
  init_constructors2();
@@ -10629,7 +10621,7 @@ var init_construction_requirements = __esm({
10629
10621
  }
10630
10622
  });
10631
10623
 
10632
- // ../src/models/unity/unity-import-settings.ts
10624
+ // ../packages/models/src/unity/unity-import-settings.ts
10633
10625
  function buildDefaultUnityTexture2DImportSettings() {
10634
10626
  return {
10635
10627
  type: "texture-2d" /* Texture2D */,
@@ -11274,7 +11266,7 @@ function isUnityAudioSampleRateSetting(value) {
11274
11266
  }
11275
11267
  var UNITY_TEXTURE_2D_OVERRIDE_PATHS, UNITY_AUDIO_CLIP_OVERRIDE_PATHS;
11276
11268
  var init_unity_import_settings = __esm({
11277
- "../src/models/unity/unity-import-settings.ts"() {
11269
+ "../packages/models/src/unity/unity-import-settings.ts"() {
11278
11270
  "use strict";
11279
11271
  init_core_types();
11280
11272
  init_structural_narrow();
@@ -11334,7 +11326,7 @@ var init_unity_import_settings = __esm({
11334
11326
  }
11335
11327
  });
11336
11328
 
11337
- // ../src/models/files/file-types.ts
11329
+ // ../packages/models/src/files/file-types.ts
11338
11330
  function isProjectFileType(value) {
11339
11331
  if (value === "image" /* Image */) return true;
11340
11332
  if (value === "audio" /* Audio */) return true;
@@ -11409,7 +11401,7 @@ function isSha256(value) {
11409
11401
  return isString(value) && /^[a-f0-9]{64}$/u.test(value);
11410
11402
  }
11411
11403
  var init_file_types = __esm({
11412
- "../src/models/files/file-types.ts"() {
11404
+ "../packages/models/src/files/file-types.ts"() {
11413
11405
  "use strict";
11414
11406
  init_core_types();
11415
11407
  init_structural_narrow();
@@ -11417,7 +11409,7 @@ var init_file_types = __esm({
11417
11409
  }
11418
11410
  });
11419
11411
 
11420
- // ../src/models/files/file-member-utils.ts
11412
+ // ../packages/models/src/files/file-member-utils.ts
11421
11413
  function resolveProjectFileTextureSettings(file, textureTemplates) {
11422
11414
  if (file.fileType !== "image" /* Image */) return null;
11423
11415
  const existing = file.unityTextureSettings;
@@ -11490,16 +11482,15 @@ function isPlainObject(value) {
11490
11482
  return !Array.isArray(value);
11491
11483
  }
11492
11484
  var init_file_member_utils = __esm({
11493
- "../src/models/files/file-member-utils.ts"() {
11485
+ "../packages/models/src/files/file-member-utils.ts"() {
11494
11486
  "use strict";
11495
11487
  init_unity_import_settings();
11496
- init_file_types();
11497
11488
  }
11498
11489
  });
11499
11490
 
11500
- // ../src/models/files/index.ts
11491
+ // ../packages/models/src/files/index.ts
11501
11492
  var init_files = __esm({
11502
- "../src/models/files/index.ts"() {
11493
+ "../packages/models/src/files/index.ts"() {
11503
11494
  "use strict";
11504
11495
  init_file_types();
11505
11496
  init_file_member_utils();
@@ -11518,7 +11509,7 @@ var init_pending_id = __esm({
11518
11509
  }
11519
11510
  });
11520
11511
 
11521
- // ../src/models/enum/enum-types.ts
11512
+ // ../packages/models/src/enum/enum-types.ts
11522
11513
  function isValidEnumOptionId(id2) {
11523
11514
  if (typeof id2 !== "string" || id2.length === 0) return false;
11524
11515
  return OPTION_ID_REGEX.test(withoutSystemRecordIdPrefix(id2));
@@ -11596,7 +11587,7 @@ function isProspectiveEnum(value) {
11596
11587
  }
11597
11588
  var OPTION_ID_REGEX;
11598
11589
  var init_enum_types = __esm({
11599
- "../src/models/enum/enum-types.ts"() {
11590
+ "../packages/models/src/enum/enum-types.ts"() {
11600
11591
  "use strict";
11601
11592
  init_pending_id();
11602
11593
  init_core_types();
@@ -11607,15 +11598,15 @@ var init_enum_types = __esm({
11607
11598
  }
11608
11599
  });
11609
11600
 
11610
- // ../src/models/enum/index.ts
11601
+ // ../packages/models/src/enum/index.ts
11611
11602
  var init_enum = __esm({
11612
- "../src/models/enum/index.ts"() {
11603
+ "../packages/models/src/enum/index.ts"() {
11613
11604
  "use strict";
11614
11605
  init_enum_types();
11615
11606
  }
11616
11607
  });
11617
11608
 
11618
- // ../src/models/members/stored-value-shape.ts
11609
+ // ../packages/models/src/members/stored-value-shape.ts
11619
11610
  function entersAnimationOverrideGraph(memberId) {
11620
11611
  return ANIMATION_OVERRIDE_GRAPH_MEMBER_IDS.has(memberId);
11621
11612
  }
@@ -11727,7 +11718,7 @@ function leafIssue(leaf, shape, value) {
11727
11718
  }
11728
11719
  var ANIMATION_OVERRIDE_GRAPH_MEMBER_IDS;
11729
11720
  var init_stored_value_shape = __esm({
11730
- "../src/models/members/stored-value-shape.ts"() {
11721
+ "../packages/models/src/members/stored-value-shape.ts"() {
11731
11722
  "use strict";
11732
11723
  init_world_system_classes();
11733
11724
  init_member_kinds();
@@ -11740,7 +11731,7 @@ var init_stored_value_shape = __esm({
11740
11731
  }
11741
11732
  });
11742
11733
 
11743
- // ../src/models/members/build-default-member-value.ts
11734
+ // ../packages/models/src/members/build-default-member-value.ts
11744
11735
  function descendPositionThroughMember(position, memberId) {
11745
11736
  if (position.insideAnimationOverrideGraph) return position;
11746
11737
  if (!entersAnimationOverrideGraph(memberId)) return position;
@@ -13062,7 +13053,7 @@ function validateAudioMemberValue(document, member, body) {
13062
13053
  }
13063
13054
  var DECLARATION_DEFAULT_POSITION, SPRITE_FILE_ID_KEY;
13064
13055
  var init_build_default_member_value = __esm({
13065
- "../src/models/members/build-default-member-value.ts"() {
13056
+ "../packages/models/src/members/build-default-member-value.ts"() {
13066
13057
  "use strict";
13067
13058
  init_member_value_id();
13068
13059
  init_member_change_listeners();
@@ -13087,16 +13078,14 @@ var init_build_default_member_value = __esm({
13087
13078
  }
13088
13079
  });
13089
13080
 
13090
- // ../src/models/members/enum-reference-sites.ts
13081
+ // ../packages/models/src/members/enum-reference-sites.ts
13091
13082
  var init_enum_reference_sites = __esm({
13092
- "../src/models/members/enum-reference-sites.ts"() {
13083
+ "../packages/models/src/members/enum-reference-sites.ts"() {
13093
13084
  "use strict";
13094
- init_inheritance();
13095
- init_member_kinds();
13096
13085
  }
13097
13086
  });
13098
13087
 
13099
- // ../src/models/members/effective-distribution.ts
13088
+ // ../packages/models/src/members/effective-distribution.ts
13100
13089
  function declaredMemberDistribution(memberId, members) {
13101
13090
  return walkExtendsMemberChain(memberId, members, (a) => {
13102
13091
  const distribution = a.distribution;
@@ -13126,7 +13115,7 @@ function effectiveMemberDistribution(member, members, env) {
13126
13115
  );
13127
13116
  }
13128
13117
  var init_effective_distribution = __esm({
13129
- "../src/models/members/effective-distribution.ts"() {
13118
+ "../packages/models/src/members/effective-distribution.ts"() {
13130
13119
  "use strict";
13131
13120
  init_member_kinds();
13132
13121
  init_member_subtree_distribution();
@@ -13135,7 +13124,7 @@ var init_effective_distribution = __esm({
13135
13124
  }
13136
13125
  });
13137
13126
 
13138
- // ../src/models/members/list-indexes.ts
13127
+ // ../packages/models/src/members/list-indexes.ts
13139
13128
  function validateListIndexDefinitions(ctx, listMember) {
13140
13129
  const errors = [];
13141
13130
  let list;
@@ -13416,11 +13405,10 @@ function dedupeErrors(errors) {
13416
13405
  });
13417
13406
  }
13418
13407
  var init_list_indexes = __esm({
13419
- "../src/models/members/list-indexes.ts"() {
13408
+ "../packages/models/src/members/list-indexes.ts"() {
13420
13409
  "use strict";
13421
13410
  init_member_kinds();
13422
13411
  init_effective_distribution();
13423
- init_member_subtree_distribution();
13424
13412
  init_structural_narrow();
13425
13413
  init_generics();
13426
13414
  init_inheritance();
@@ -13428,7 +13416,7 @@ var init_list_indexes = __esm({
13428
13416
  }
13429
13417
  });
13430
13418
 
13431
- // ../src/models/members/effective-storage.ts
13419
+ // ../packages/models/src/members/effective-storage.ts
13432
13420
  function declaredMemberStorage(memberId, members) {
13433
13421
  const declared = walkExtendsMemberChain(memberId, members, (a) => {
13434
13422
  const storage = a.storage;
@@ -13618,7 +13606,7 @@ function validateDocumentStorage(ctx) {
13618
13606
  }
13619
13607
  var EffectiveStorageResolver;
13620
13608
  var init_effective_storage = __esm({
13621
- "../src/models/members/effective-storage.ts"() {
13609
+ "../packages/models/src/members/effective-storage.ts"() {
13622
13610
  "use strict";
13623
13611
  init_member_storage();
13624
13612
  init_member_kinds();
@@ -13851,7 +13839,7 @@ var init_effective_storage = __esm({
13851
13839
  }
13852
13840
  });
13853
13841
 
13854
- // ../src/models/members/effective-member-docs.ts
13842
+ // ../packages/models/src/members/effective-member-docs.ts
13855
13843
  function effectiveMemberDocsText(memberId, membersById) {
13856
13844
  const visited = /* @__PURE__ */ new Set();
13857
13845
  let currentId = memberId;
@@ -13874,22 +13862,21 @@ function isMembersMap(value) {
13874
13862
  return value instanceof Map;
13875
13863
  }
13876
13864
  var init_effective_member_docs = __esm({
13877
- "../src/models/members/effective-member-docs.ts"() {
13865
+ "../packages/models/src/members/effective-member-docs.ts"() {
13878
13866
  "use strict";
13879
13867
  }
13880
13868
  });
13881
13869
 
13882
- // ../src/models/members/value-responses.ts
13870
+ // ../packages/models/src/members/value-responses.ts
13883
13871
  var init_value_responses = __esm({
13884
- "../src/models/members/value-responses.ts"() {
13872
+ "../packages/models/src/members/value-responses.ts"() {
13885
13873
  "use strict";
13886
- init_instance_provenance();
13887
13874
  }
13888
13875
  });
13889
13876
 
13890
- // ../src/models/members/index.ts
13877
+ // ../packages/models/src/members/index.ts
13891
13878
  var init_members = __esm({
13892
- "../src/models/members/index.ts"() {
13879
+ "../packages/models/src/members/index.ts"() {
13893
13880
  "use strict";
13894
13881
  init_member_storage();
13895
13882
  init_member_subtree_distribution();
@@ -13910,7 +13897,7 @@ var init_members = __esm({
13910
13897
  }
13911
13898
  });
13912
13899
 
13913
- // ../src/runtime/neoscript/debug.ts
13900
+ // ../packages/neoscript-runtime/src/neoscript/debug.ts
13914
13901
  function snapshotNeoScriptFrames(state) {
13915
13902
  const frames = state.frames.slice(-64).reverse().map((frame) => Object.freeze({ ...frame }));
13916
13903
  if (state.frames.length > 64)
@@ -13974,9 +13961,8 @@ function formatDebugFloat(value) {
13974
13961
  return `${sign}${digits.slice(0, point)}.${digits.slice(point)}`;
13975
13962
  }
13976
13963
  var init_debug = __esm({
13977
- "../src/runtime/neoscript/debug.ts"() {
13964
+ "../packages/neoscript-runtime/src/neoscript/debug.ts"() {
13978
13965
  "use strict";
13979
- init_members();
13980
13966
  }
13981
13967
  });
13982
13968
 
@@ -14053,6 +14039,30 @@ var init_source_text = __esm({
14053
14039
  });
14054
14040
 
14055
14041
  // ../packages/neoscript-language/src/lexer.ts
14042
+ function neoScriptLiteralContinuationLines(source) {
14043
+ const lines = /* @__PURE__ */ new Set();
14044
+ if (!source.includes("\n")) return lines;
14045
+ for (const token of lex(source).roots) {
14046
+ if (token.kind !== "string") continue;
14047
+ for (let line = token.range.start.line + 1; line <= token.range.end.line; line++)
14048
+ lines.add(line);
14049
+ }
14050
+ return lines;
14051
+ }
14052
+ function sameNeoScriptTokens(left, right, comments = "all") {
14053
+ if (left === right) return true;
14054
+ const a = lex(left);
14055
+ const b = lex(right);
14056
+ if (a.diagnostics.length > 0 || b.diagnostics.length > 0) return false;
14057
+ const significant = (token) => comments === "all" || token.kind !== "comment" || token.raw.startsWith("///") || token.raw.startsWith("/*");
14058
+ const spelling = (token) => token.kind === "comment" ? token.raw.trimEnd().split(/\r\n|\r|\n/u).map((line) => line.trim()).join("\n") : token.raw;
14059
+ const leftTokens = a.roots.filter(significant);
14060
+ const rightTokens = b.roots.filter(significant);
14061
+ return leftTokens.length === rightTokens.length && leftTokens.every((token, index) => {
14062
+ const other = rightTokens[index];
14063
+ return other !== void 0 && token.kind === other.kind && spelling(token) === spelling(other);
14064
+ });
14065
+ }
14056
14066
  function lex(sourceValue) {
14057
14067
  const source = new SourceText(sourceValue);
14058
14068
  const tokens = [];
@@ -18763,6 +18773,12 @@ var init_executable_parser = __esm({
18763
18773
  value: this.parseExpr(),
18764
18774
  pos: at(name)
18765
18775
  });
18776
+ if (this.peek().text === ";") {
18777
+ throw new CompileError(
18778
+ "Object initializer assignments use commas, not semicolons. Replace ';' with ',' or omit it after the last assignment; the enclosing declaration still ends with ';'.",
18779
+ at(this.peek())
18780
+ );
18781
+ }
18766
18782
  if (!this.eat("punctuation", ",")) break;
18767
18783
  if (this.peek().kind === "punctuation" && this.peek().text === "}") break;
18768
18784
  }
@@ -20200,22 +20216,23 @@ var init_syntax = __esm({
20200
20216
  });
20201
20217
 
20202
20218
  // ../packages/neoscript-language/src/formatter.ts
20219
+ function neoScriptIndentUnit(options = {}) {
20220
+ return options.insertSpaces === false ? " " : " ".repeat(options.tabSize ?? DEFAULT_NEO_SCRIPT_FORMAT_OPTIONS.tabSize);
20221
+ }
20203
20222
  function formatNeoScript(text, options = {}) {
20204
- const tabSize = options.tabSize ?? 2;
20205
- const indentUnit = options.insertSpaces === false ? " " : " ".repeat(tabSize);
20223
+ const indentUnit = neoScriptIndentUnit(options);
20206
20224
  if (options.kind === "definition") text = hoistLocalValueIds(text);
20207
- const lines = text.replace(/\r\n/g, "\n").split("\n");
20208
- const normalizedText = lines.join("\n");
20225
+ const originalEndings = text.match(/\r\n|\r|\n/g) ?? [];
20226
+ const lines = text.split(/\r\n|\r|\n/);
20227
+ const normalizedText = text.replace(/\r(?!\n)/g, "\n");
20209
20228
  const syntax = analyzeNeoScriptSyntax(
20210
20229
  normalizedText,
20211
20230
  options.kind === "definition" ? "function" : options.kind ?? inferDocumentKind(text)
20212
20231
  );
20213
- const splitCatchText = splitSameLineCatchClauses(
20214
- normalizedText,
20215
- syntax.lexed.tokens
20216
- );
20217
- if (splitCatchText !== normalizedText)
20218
- return formatNeoScript(splitCatchText, options);
20232
+ const splitCatchText = splitSameLineCatchClauses(text, syntax.lexed.tokens);
20233
+ if (splitCatchText !== text) return formatNeoScript(splitCatchText, options);
20234
+ const literalContinuations = /* @__PURE__ */ new Set();
20235
+ const literalNewlines = /* @__PURE__ */ new Set();
20219
20236
  const delimiterTokensByLine = /* @__PURE__ */ new Map();
20220
20237
  const tokensByLine = /* @__PURE__ */ new Map();
20221
20238
  const lambdaBraceOffsets = /* @__PURE__ */ new Set();
@@ -20225,6 +20242,12 @@ function formatNeoScript(text, options = {}) {
20225
20242
  let annotationDepth = 0;
20226
20243
  let previousSignificantToken = null;
20227
20244
  for (const token of syntax.lexed.tokens) {
20245
+ if (token.kind === "string") {
20246
+ for (let line = token.range.start.line; line < token.range.end.line; line++) {
20247
+ literalNewlines.add(line);
20248
+ literalContinuations.add(line + 1);
20249
+ }
20250
+ }
20228
20251
  if (token.kind !== "comment" && token.kind !== "eof") {
20229
20252
  if (token.kind === "punctuation" && token.text === "{" && previousSignificantToken?.kind === "operator" && previousSignificantToken.text === "=>") {
20230
20253
  lambdaBraceOffsets.add(token.start);
@@ -20261,10 +20284,12 @@ function formatNeoScript(text, options = {}) {
20261
20284
  let preceding;
20262
20285
  for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
20263
20286
  const rawLine = lines[lineIndex] ?? "";
20264
- const trimmedEnd = rawLine.replace(/[ \t]+$/g, "");
20287
+ const trimmedEnd = options.trimTrailingWhitespace === false || literalNewlines.has(lineIndex) ? rawLine : rawLine.replace(/[ \t]+$/g, "");
20265
20288
  const content = trimmedEnd.trimStart();
20266
20289
  if (content.length === 0) {
20267
- formatted.push("");
20290
+ formatted.push(
20291
+ options.trimTrailingWhitespace === false || literalContinuations.has(lineIndex) || literalNewlines.has(lineIndex) ? rawLine : ""
20292
+ );
20268
20293
  continue;
20269
20294
  }
20270
20295
  const firstContentCharacter = trimmedEnd.length - content.length;
@@ -20289,8 +20314,10 @@ function formatNeoScript(text, options = {}) {
20289
20314
  if (leadingClosers.length === 0 && (first !== void 0 && continuationOperator(first) && preceding !== void 0 && canEndExpression(preceding) || preceding !== void 0 && continuationOperator(preceding)))
20290
20315
  continuations.add(leadingState.at(-1)?.openingOffset ?? -1);
20291
20316
  const lineDepth = depth + sectionDepth + continuations.size;
20292
- const normalized = normalizeControlHeaderSpacing(content);
20293
- formatted.push(`${indentUnit.repeat(lineDepth)}${normalized}`);
20317
+ const normalized = first?.range.start.character === firstContentCharacter ? normalizeControlHeaderSpacing(content) : content;
20318
+ formatted.push(
20319
+ literalContinuations.has(lineIndex) ? trimmedEnd : `${indentUnit.repeat(lineDepth)}${normalized}`
20320
+ );
20294
20321
  for (const token of lineTokens) {
20295
20322
  applyDelimiterToken(delimiters, token, lambdaBraceOffsets);
20296
20323
  }
@@ -20303,11 +20330,16 @@ function formatNeoScript(text, options = {}) {
20303
20330
  }
20304
20331
  }
20305
20332
  }
20306
- while (formatted.length > 1 && formatted[formatted.length - 1] === "") {
20333
+ while (formatted.length > 1 && formatted[formatted.length - 1] === "" && !literalContinuations.has(formatted.length - 1)) {
20307
20334
  formatted.pop();
20308
20335
  }
20309
- const newline = options.finalNewline === false ? "" : "\n";
20310
- return formatted.join("\n") + newline;
20336
+ const eol = options.endOfLine ?? DEFAULT_NEO_SCRIPT_FORMAT_OPTIONS.endOfLine;
20337
+ const newline = options.finalNewline === false ? "" : eol;
20338
+ return formatted.map((line, index) => {
20339
+ if (index === formatted.length - 1) return line;
20340
+ const ending = literalNewlines.has(index) ? originalEndings[index] ?? eol : eol;
20341
+ return line + ending;
20342
+ }).join("") + newline;
20311
20343
  }
20312
20344
  function formattingEdit(text, options) {
20313
20345
  const formatted = formatNeoScript(text, options);
@@ -20324,10 +20356,7 @@ function normalizeControlHeaderSpacing(content) {
20324
20356
  /^}\s*while\s*\(/,
20325
20357
  "} while ("
20326
20358
  );
20327
- const withCatchFilterSpace = withDoWhileSpace.replace(
20328
- /\)\s*when\s*\(/,
20329
- ") when ("
20330
- );
20359
+ const withCatchFilterSpace = withDoWhileSpace.startsWith("catch") ? withDoWhileSpace.replace(/\)\s*when\s*\(/, ") when (") : withDoWhileSpace;
20331
20360
  if (!withCatchFilterSpace.startsWith("foreach ("))
20332
20361
  return withCatchFilterSpace;
20333
20362
  return withCatchFilterSpace.replace(/\s+in\s+/, " in ");
@@ -20581,6 +20610,7 @@ ${text.slice(start, valueStart).trimEnd()} `
20581
20610
  function canEndExpression(token) {
20582
20611
  return token.kind === "identifier" || token.kind === "integer" || token.kind === "float" || token.kind === "string" || [")", "]", "}", "true", "false", "null"].includes(token.text);
20583
20612
  }
20613
+ var DEFAULT_NEO_SCRIPT_FORMAT_OPTIONS;
20584
20614
  var init_formatter = __esm({
20585
20615
  "../packages/neoscript-language/src/formatter.ts"() {
20586
20616
  "use strict";
@@ -20589,6 +20619,12 @@ var init_formatter = __esm({
20589
20619
  init_executable_parser();
20590
20620
  init_source_text();
20591
20621
  init_syntax();
20622
+ DEFAULT_NEO_SCRIPT_FORMAT_OPTIONS = {
20623
+ tabSize: 2,
20624
+ insertSpaces: true,
20625
+ finalNewline: true,
20626
+ endOfLine: "\n"
20627
+ };
20592
20628
  }
20593
20629
  });
20594
20630
 
@@ -22504,8 +22540,13 @@ var init_source_diagnostics = __esm({
22504
22540
  "neoflow-incomplete-draft"
22505
22541
  ]);
22506
22542
  SchemaSourceError = class extends Error {
22507
- constructor(detail, file, line, column, code, severity = "error", range2) {
22508
- super(`${file}:${line}:${column} \u2014 ${detail}`);
22543
+ constructor(detail, file, line, column, code, severity = "error", range2, relatedInformation) {
22544
+ super(
22545
+ `${file}:${line}:${column} \u2014 ${detail}${relatedInformation?.map(
22546
+ ({ location: location3, message }) => `
22547
+ ${location3.uri}:${location3.range.start.line + 1}:${location3.range.start.character + 1} \u2014 ${message}`
22548
+ ).join("") ?? ""}`
22549
+ );
22509
22550
  this.detail = detail;
22510
22551
  this.file = file;
22511
22552
  this.line = line;
@@ -22513,6 +22554,7 @@ var init_source_diagnostics = __esm({
22513
22554
  this.code = code;
22514
22555
  this.severity = severity;
22515
22556
  this.range = range2;
22557
+ this.relatedInformation = relatedInformation;
22516
22558
  this.name = "SchemaSourceError";
22517
22559
  }
22518
22560
  detail;
@@ -22522,6 +22564,7 @@ var init_source_diagnostics = __esm({
22522
22564
  code;
22523
22565
  severity;
22524
22566
  range;
22567
+ relatedInformation;
22525
22568
  };
22526
22569
  }
22527
22570
  });
@@ -22844,7 +22887,6 @@ function visitPointerPatternBindings(pointer, visit) {
22844
22887
  var init_neoscript_pattern_bindings = __esm({
22845
22888
  "../src/models/neoscript/neoscript-pattern-bindings.ts"() {
22846
22889
  "use strict";
22847
- init_neoscript_types();
22848
22890
  }
22849
22891
  });
22850
22892
 
@@ -22901,7 +22943,7 @@ var init_cell_pattern = __esm({
22901
22943
  }
22902
22944
  });
22903
22945
 
22904
- // ../src/models/variants/variant-member.ts
22946
+ // ../packages/models/src/variants/variant-member.ts
22905
22947
  function neoVariantSystemClass(classes, lookup = false) {
22906
22948
  const declared = classes.find(
22907
22949
  (item) => item.system?.worldKind === (lookup ? NeoWorldSystemClassKind.LookupVariant : NeoWorldSystemClassKind.Variant)
@@ -22941,15 +22983,14 @@ function variantMemberDeclaredTypeInfo(member, systemClass) {
22941
22983
  };
22942
22984
  }
22943
22985
  var init_variant_member = __esm({
22944
- "../src/models/variants/variant-member.ts"() {
22986
+ "../packages/models/src/variants/variant-member.ts"() {
22945
22987
  "use strict";
22946
22988
  init_core_types();
22947
- init_member_kind_enum();
22948
22989
  init_member_kinds();
22949
22990
  }
22950
22991
  });
22951
22992
 
22952
- // ../src/models/interfaces/interface-graph.ts
22993
+ // ../packages/models/src/interfaces/interface-graph.ts
22953
22994
  function resolveInterfaceClosure(interfaceId, interfaces) {
22954
22995
  const byId = new Map(
22955
22996
  interfaces.map((neoInterface) => [neoInterface.id, neoInterface])
@@ -23002,7 +23043,7 @@ function classImplementsInterface(classId, interfaceId, classes, interfaces) {
23002
23043
  }
23003
23044
  var CircularInterfaceExtensionError;
23004
23045
  var init_interface_graph = __esm({
23005
- "../src/models/interfaces/interface-graph.ts"() {
23046
+ "../packages/models/src/interfaces/interface-graph.ts"() {
23006
23047
  "use strict";
23007
23048
  init_inheritance();
23008
23049
  CircularInterfaceExtensionError = class extends Error {
@@ -23020,7 +23061,7 @@ var init_interface_graph = __esm({
23020
23061
  }
23021
23062
  });
23022
23063
 
23023
- // ../src/models/neoscript/type-info-compatibility.ts
23064
+ // ../packages/models/src/neoscript/type-info-compatibility.ts
23024
23065
  function isTypeInfoAssignable(from, to, context) {
23025
23066
  if (to.type === NS_TYPE_UNKNOWN) return true;
23026
23067
  if (from.type === NS_TYPE_UNKNOWN) return false;
@@ -23057,9 +23098,8 @@ function isTypeInfoAssignable(from, to, context) {
23057
23098
  return typeInfosInvariantlyEqual(normalizedFrom, to);
23058
23099
  }
23059
23100
  var init_type_info_compatibility = __esm({
23060
- "../src/models/neoscript/type-info-compatibility.ts"() {
23101
+ "../packages/models/src/neoscript/type-info-compatibility.ts"() {
23061
23102
  "use strict";
23062
- init_member_kind_enum();
23063
23103
  init_type_info_equality();
23064
23104
  init_inheritance();
23065
23105
  init_interface_graph();
@@ -23067,9 +23107,9 @@ var init_type_info_compatibility = __esm({
23067
23107
  }
23068
23108
  });
23069
23109
 
23070
- // ../src/models/neoscript/index.ts
23110
+ // ../packages/models/src/neoscript/index.ts
23071
23111
  var init_neoscript = __esm({
23072
- "../src/models/neoscript/index.ts"() {
23112
+ "../packages/models/src/neoscript/index.ts"() {
23073
23113
  "use strict";
23074
23114
  init_neoscript_types();
23075
23115
  init_neoscript_guards();
@@ -25492,7 +25532,7 @@ var init_unity_member_signatures = __esm({
25492
25532
  }
25493
25533
  });
25494
25534
 
25495
- // ../src/models/project/project-types.ts
25535
+ // ../packages/models/src/project/project-types.ts
25496
25536
  function isProject(value) {
25497
25537
  const v = value;
25498
25538
  return typeof v?.name === "string" && typeof v?.id === "string" && isProjectOwner(v.owner) && isActorIdentifier(v.author) && typeof v?.createdAt === "number" && typeof v?.updatedAt === "number" && typeof v?.rootAssetsMemberId === "string" && typeof v?.rootSaveFileMemberId === "string" && typeof v?.rootSessionMemberId === "string" && typeof v?.rootUserMemberId === "string" && isOptionalNullableString2(v.defaultPriorityGroupId) && isOptionalNullableString2(v.defaultTextureTemplateId) && isOptionalNullableString2(v.defaultAudioClipTemplateId) && isProjectExportSettingsOrEmpty(v.exportSettings);
@@ -25521,13 +25561,13 @@ function isUnityExportSettingsOrEmpty(value) {
25521
25561
  return (namespaceValue === void 0 || namespaceValue === null || typeof namespaceValue === "string") && (singletonValue === void 0 || singletonValue === null || typeof singletonValue === "boolean");
25522
25562
  }
25523
25563
  var init_project_types = __esm({
25524
- "../src/models/project/project-types.ts"() {
25564
+ "../packages/models/src/project/project-types.ts"() {
25525
25565
  "use strict";
25526
25566
  init_auth_ownership_types();
25527
25567
  }
25528
25568
  });
25529
25569
 
25530
- // ../src/models/project/project-version-types.ts
25570
+ // ../packages/models/src/project/project-version-types.ts
25531
25571
  function isProjectVersionBumpKind(value) {
25532
25572
  if (value === ProjectVersionBumpKind.Patch) return true;
25533
25573
  if (value === ProjectVersionBumpKind.Minor) return true;
@@ -25760,10 +25800,9 @@ function isStringArray(value) {
25760
25800
  }
25761
25801
  var ProjectVersionBumpKind, ProjectRecordKind, ProjectVersionTransactionOperation, ProjectVersionRecordOperation;
25762
25802
  var init_project_version_types = __esm({
25763
- "../src/models/project/project-version-types.ts"() {
25803
+ "../packages/models/src/project/project-version-types.ts"() {
25764
25804
  "use strict";
25765
25805
  init_core_types();
25766
- init_auth_ownership_types();
25767
25806
  init_structural_narrow();
25768
25807
  ProjectVersionBumpKind = {
25769
25808
  Patch: "patch",
@@ -25816,7 +25855,7 @@ var init_project_version_types = __esm({
25816
25855
  }
25817
25856
  });
25818
25857
 
25819
- // ../src/models/project/project-migration-types.ts
25858
+ // ../packages/models/src/project/project-migration-types.ts
25820
25859
  function isProjectMigration(value) {
25821
25860
  if (typeof value !== "object" || value === null) return false;
25822
25861
  const migration = value;
@@ -25835,13 +25874,13 @@ function isProjectMigration(value) {
25835
25874
  return isNumber(migration.updatedAt);
25836
25875
  }
25837
25876
  var init_project_migration_types = __esm({
25838
- "../src/models/project/project-migration-types.ts"() {
25877
+ "../packages/models/src/project/project-migration-types.ts"() {
25839
25878
  "use strict";
25840
25879
  init_structural_narrow();
25841
25880
  }
25842
25881
  });
25843
25882
 
25844
- // ../src/models/project/internal-record-relations.ts
25883
+ // ../packages/models/src/project/internal-record-relations.ts
25845
25884
  function collectProjectDocumentRelationEndpoints(document) {
25846
25885
  const result = [
25847
25886
  ...optionalEndpoint("project", document.project),
@@ -26421,7 +26460,7 @@ function optionalEndpoint(recordKind, record7) {
26421
26460
  }
26422
26461
  var InternalRecordRelationKind, INTERNAL_RECORD_RELATION_KIND_CONTRACTS;
26423
26462
  var init_internal_record_relations = __esm({
26424
- "../src/models/project/internal-record-relations.ts"() {
26463
+ "../packages/models/src/project/internal-record-relations.ts"() {
26425
26464
  "use strict";
26426
26465
  init_collections();
26427
26466
  init_classes();
@@ -26540,24 +26579,23 @@ var init_internal_record_relations = __esm({
26540
26579
  }
26541
26580
  });
26542
26581
 
26543
- // ../src/models/project/internal-record-relation-head-projection.ts
26582
+ // ../packages/models/src/project/internal-record-relation-head-projection.ts
26544
26583
  var init_internal_record_relation_head_projection = __esm({
26545
- "../src/models/project/internal-record-relation-head-projection.ts"() {
26584
+ "../packages/models/src/project/internal-record-relation-head-projection.ts"() {
26546
26585
  "use strict";
26547
- init_project_version_types();
26548
26586
  }
26549
26587
  });
26550
26588
 
26551
- // ../src/models/project/initial-class-internal-record-relation.ts
26589
+ // ../packages/models/src/project/initial-class-internal-record-relation.ts
26552
26590
  var init_initial_class_internal_record_relation = __esm({
26553
- "../src/models/project/initial-class-internal-record-relation.ts"() {
26591
+ "../packages/models/src/project/initial-class-internal-record-relation.ts"() {
26554
26592
  "use strict";
26555
26593
  }
26556
26594
  });
26557
26595
 
26558
- // ../src/models/project/index.ts
26596
+ // ../packages/models/src/project/index.ts
26559
26597
  var init_project = __esm({
26560
- "../src/models/project/index.ts"() {
26598
+ "../packages/models/src/project/index.ts"() {
26561
26599
  "use strict";
26562
26600
  init_project_types();
26563
26601
  init_project_schema_index();
@@ -27023,7 +27061,6 @@ var init_schema_source_validation = __esm({
27023
27061
  init_project_document_inheritance_validation();
27024
27062
  init_member_access_modifier_validation();
27025
27063
  init_list_indexes();
27026
- init_member_kinds();
27027
27064
  init_project();
27028
27065
  init_source_diagnostics();
27029
27066
  init_lower_support();
@@ -41358,7 +41395,7 @@ var init_project_source_construction_diagnostics = __esm({
41358
41395
  "ambiguous-constructor-call": "error",
41359
41396
  /**
41360
41397
  * P65 §1.3. A defaulted parameter declared before a non-defaulted one.
41361
- * The code string is shared with `src/models/neoscript/parameter-defaults.ts`
41398
+ * The code string is shared with `packages/models/src/neoscript/parameter-defaults.ts`
41362
41399
  * so the push guards and the compiler name one rule identically.
41363
41400
  */
41364
41401
  "default-before-required-parameter": "error",
@@ -43374,7 +43411,11 @@ function validateDeclaration(uri, declaration, documentKind, environment, diagno
43374
43411
  environment,
43375
43412
  declaration.initializer.range,
43376
43413
  diagnostics,
43377
- anchorOf(declaration.initializer)
43414
+ anchorOf(declaration.initializer),
43415
+ DECLARATION_BODY_GLOBAL_TYPES.has(declaration.type.name) || isNeoVariantFamilyTypeName(declaration.type.name) ? void 0 : {
43416
+ code: "invalid-project-global-initializer",
43417
+ label: `Global '${declaration.name}' initializer`
43418
+ }
43378
43419
  );
43379
43420
  return;
43380
43421
  }
@@ -43729,6 +43770,10 @@ function validateProjectRootGlobal(uri, declaration, environment, diagnostics) {
43729
43770
  {
43730
43771
  text: actual.initializer,
43731
43772
  start: slotPosition(declaration.initializer.range.start, actual.start)
43773
+ },
43774
+ {
43775
+ code: "invalid-project-global-initializer",
43776
+ label: `Root '${expected.name}' initializer`
43732
43777
  }
43733
43778
  );
43734
43779
  }
@@ -46081,7 +46126,7 @@ function classDerivesFromName(name, ancestorName, environment, seen = /* @__PURE
46081
46126
  return classDerivesFromName(base.name, ancestorName, environment, seen);
46082
46127
  });
46083
46128
  }
46084
- var NEO_VARIANT_FOLDER_SETTING, primitiveType, LIST_COLUMN_INHERITANCE_KEY, SEMANTIC_PRIMITIVE_TYPE_NAMES;
46129
+ var NEO_VARIANT_FOLDER_SETTING, primitiveType, LIST_COLUMN_INHERITANCE_KEY, DECLARATION_BODY_GLOBAL_TYPES, SEMANTIC_PRIMITIVE_TYPE_NAMES;
46085
46130
  var init_project_source_semantics = __esm({
46086
46131
  "../packages/neoscript-language/src/project-source-semantics.ts"() {
46087
46132
  "use strict";
@@ -46105,6 +46150,12 @@ var init_project_source_semantics = __esm({
46105
46150
  NEO_VARIANT_FOLDER_SETTING = "folder";
46106
46151
  primitiveType = (name) => ({ name });
46107
46152
  LIST_COLUMN_INHERITANCE_KEY = "__other__";
46153
+ DECLARATION_BODY_GLOBAL_TYPES = /* @__PURE__ */ new Set([
46154
+ NEOSCRIPT_IMAGE_REGISTRY_TYPE,
46155
+ NEOSCRIPT_AUDIO_CLIP_REGISTRY_TYPE,
46156
+ "NeoPriorityGroup",
46157
+ "NeoDialogueGroup"
46158
+ ]);
46108
46159
  SEMANTIC_PRIMITIVE_TYPE_NAMES = /* @__PURE__ */ new Set([
46109
46160
  "bool",
46110
46161
  "int",
@@ -51797,7 +51848,7 @@ var init_registry = __esm({
51797
51848
  "../packages/manifest/schema-contract/registry.mjs"() {
51798
51849
  "use strict";
51799
51850
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
51800
- cliVersion: "0.75.0",
51851
+ cliVersion: "0.75.2",
51801
51852
  projectFileUploadBatchSize: 32,
51802
51853
  documentRecords: {
51803
51854
  member: {
@@ -53587,18 +53638,18 @@ var init_migration_files = __esm({
53587
53638
  }
53588
53639
  });
53589
53640
 
53590
- // ../src/models/dialogue/dialogue-source-identifiers.ts
53641
+ // ../packages/models/src/dialogue/dialogue-source-identifiers.ts
53591
53642
  function isDialogueSourceIdentifier(value) {
53592
53643
  return isValidProjectSourceIdentifier(value);
53593
53644
  }
53594
53645
  var init_dialogue_source_identifiers = __esm({
53595
- "../src/models/dialogue/dialogue-source-identifiers.ts"() {
53646
+ "../packages/models/src/dialogue/dialogue-source-identifiers.ts"() {
53596
53647
  "use strict";
53597
53648
  init_project_source_identifiers2();
53598
53649
  }
53599
53650
  });
53600
53651
 
53601
- // ../src/models/dialogue/dialogue-source-names.ts
53652
+ // ../packages/models/src/dialogue/dialogue-source-names.ts
53602
53653
  function dialogueSourceNameFromDisplayName(displayName, fallback) {
53603
53654
  const preferred = sourceNameTokens(displayName ?? "");
53604
53655
  const fallbackTokens = sourceNameTokens(fallback);
@@ -53626,7 +53677,7 @@ function inferredDialogueDisplayName(sourceName, kind) {
53626
53677
  }
53627
53678
  var DialogueSourceNameAllocator;
53628
53679
  var init_dialogue_source_names = __esm({
53629
- "../src/models/dialogue/dialogue-source-names.ts"() {
53680
+ "../packages/models/src/dialogue/dialogue-source-names.ts"() {
53630
53681
  "use strict";
53631
53682
  init_dialogue_source_identifiers();
53632
53683
  DialogueSourceNameAllocator = class {
@@ -55176,6 +55227,7 @@ function safeParse(schema, input, config$1) {
55176
55227
  var store$4, DEFAULT_CONFIG, store$3, store$2, store$1, EMOJI_REGEX, ABORT_EARLY_CONFIG;
55177
55228
  var init_dist = __esm({
55178
55229
  "../node_modules/valibot/dist/index.mjs"() {
55230
+ "use strict";
55179
55231
  DEFAULT_CONFIG = {
55180
55232
  lang: void 0,
55181
55233
  message: void 0,
@@ -56000,6 +56052,7 @@ function parse2(schema, input, config$1) {
56000
56052
  var store$42, DEFAULT_CONFIG2, ValiError, EMOJI_REGEX2;
56001
56053
  var init_dist2 = __esm({
56002
56054
  "node_modules/valibot/dist/index.mjs"() {
56055
+ "use strict";
56003
56056
  DEFAULT_CONFIG2 = {
56004
56057
  lang: void 0,
56005
56058
  message: void 0,
@@ -61302,7 +61355,7 @@ var init_projection = __esm({
61302
61355
  }
61303
61356
  });
61304
61357
 
61305
- // ../src/models/classes/constructor-parameter-settlement.ts
61358
+ // ../packages/models/src/classes/constructor-parameter-settlement.ts
61306
61359
  function createConstructorSettlementResolver(view) {
61307
61360
  const classesById = new Map(
61308
61361
  view.classes.map((schemaClass2) => [schemaClass2.id, schemaClass2])
@@ -61435,12 +61488,12 @@ function asRecord(value) {
61435
61488
  return value;
61436
61489
  }
61437
61490
  var init_constructor_parameter_settlement = __esm({
61438
- "../src/models/classes/constructor-parameter-settlement.ts"() {
61491
+ "../packages/models/src/classes/constructor-parameter-settlement.ts"() {
61439
61492
  "use strict";
61440
61493
  }
61441
61494
  });
61442
61495
 
61443
- // ../src/models/dialogue/dialogue-group-types.ts
61496
+ // ../packages/models/src/dialogue/dialogue-group-types.ts
61444
61497
  function isOptionalNullableString3(value) {
61445
61498
  if (value === void 0) return true;
61446
61499
  if (value === null) return true;
@@ -61488,14 +61541,14 @@ function isAnyDialogueGroup(value) {
61488
61541
  return isStandardDialogueGroupBase(value) || isLookupDialogueGroupBase(value) || isFolderDialogueGroupBase(value);
61489
61542
  }
61490
61543
  var init_dialogue_group_types = __esm({
61491
- "../src/models/dialogue/dialogue-group-types.ts"() {
61544
+ "../packages/models/src/dialogue/dialogue-group-types.ts"() {
61492
61545
  "use strict";
61493
61546
  init_core_types();
61494
61547
  init_logic_types();
61495
61548
  }
61496
61549
  });
61497
61550
 
61498
- // ../src/models/dialogue/logic-types.ts
61551
+ // ../packages/models/src/dialogue/logic-types.ts
61499
61552
  function isNSBoolGetter2(value) {
61500
61553
  if (!isNSGetter(value)) return false;
61501
61554
  if (value.typeInfo.type !== 1 /* Bool */) return false;
@@ -61679,12 +61732,9 @@ function isDialogueGroupType2(value) {
61679
61732
  return value === 0 /* Standard */ || value === 1 /* Lookup */ || value === 2 /* Folder */;
61680
61733
  }
61681
61734
  var init_logic_types = __esm({
61682
- "../src/models/dialogue/logic-types.ts"() {
61735
+ "../packages/models/src/dialogue/logic-types.ts"() {
61683
61736
  "use strict";
61684
- init_member_kind_enum();
61685
61737
  init_neoscript_guards();
61686
- init_neoscript_types();
61687
- init_dialogue_group_types();
61688
61738
  init_dialogue_source_identifiers();
61689
61739
  }
61690
61740
  });
@@ -61936,8 +61986,6 @@ function asRecord2(value) {
61936
61986
  var init_neo_script_derived_bodies = __esm({
61937
61987
  "../src/database/neo-script-derived-bodies.ts"() {
61938
61988
  "use strict";
61939
- init_members();
61940
- init_logic_types();
61941
61989
  init_strict_ir();
61942
61990
  init_packed_value_encoding();
61943
61991
  }
@@ -62175,7 +62223,6 @@ var init_reference_target_types = __esm({
62175
62223
  init_project2();
62176
62224
  init_codecs();
62177
62225
  init_document_adapters();
62178
- init_members();
62179
62226
  init_projection();
62180
62227
  init_value_comparison();
62181
62228
  init_stored_value_placements();
@@ -62452,7 +62499,7 @@ var init_reference_target_types = __esm({
62452
62499
  }
62453
62500
  });
62454
62501
 
62455
- // ../src/models/localization/localization-types.ts
62502
+ // ../packages/models/src/localization/localization-types.ts
62456
62503
  function memberValueLocalizedTextLink(valueId) {
62457
62504
  return {
62458
62505
  kind: "member-value",
@@ -62793,7 +62840,7 @@ function isNullableStringArray(value) {
62793
62840
  }
62794
62841
  var PROJECT_LOCALIZATION_CONFIG_ID, DEFAULT_PROJECT_LOCALE, DEFAULT_LOCALIZATION_STATUS_IDS, DEFAULT_LOCALIZATION_STATUS_SLUGS, LOCALIZED_TEXT_LINK_KINDS;
62795
62842
  var init_localization_types = __esm({
62796
- "../src/models/localization/localization-types.ts"() {
62843
+ "../packages/models/src/localization/localization-types.ts"() {
62797
62844
  "use strict";
62798
62845
  init_core_types();
62799
62846
  init_structural_narrow();
@@ -62873,7 +62920,10 @@ function quoteNeoString(value) {
62873
62920
  }
62874
62921
  function indentNeoSource(value, spaces) {
62875
62922
  const prefix = " ".repeat(spaces);
62876
- return value.split("\n").map((line) => line.length > 0 ? `${prefix}${line}` : line).join("\n");
62923
+ const literalLines = neoScriptLiteralContinuationLines(value);
62924
+ return value.split("\n").map(
62925
+ (line, index) => line.length > 0 && !literalLines.has(index) ? `${prefix}${line}` : line
62926
+ ).join("\n");
62877
62927
  }
62878
62928
  function formatNeoNumber(value) {
62879
62929
  if (!Number.isFinite(value)) {
@@ -62903,6 +62953,7 @@ function invariantCaseKey(value) {
62903
62953
  var init_source_format = __esm({
62904
62954
  "src/project-source/source-format.ts"() {
62905
62955
  "use strict";
62956
+ init_lexer();
62906
62957
  init_float32();
62907
62958
  init_machine_strings();
62908
62959
  }
@@ -63633,6 +63684,7 @@ var init_variant_selection_source = __esm({
63633
63684
  function emitProjectSourcesV4(manifest, options = {}) {
63634
63685
  const context = {
63635
63686
  manifest,
63687
+ classBindings: /* @__PURE__ */ new Map(),
63636
63688
  classes: new Map(manifest.classes.map((entry) => [entry.id, entry])),
63637
63689
  interfaces: new Map(manifest.interfaces.map((entry) => [entry.id, entry])),
63638
63690
  enums: new Map(manifest.enums.map((entry) => [entry.id, entry])),
@@ -64349,7 +64401,6 @@ function renderEntryType(context, entryMemberId, label, enclosingClassId, elemen
64349
64401
  }
64350
64402
  function renderMemberType(context, member, enclosingClassId, elementSettings = false) {
64351
64403
  const nullable2 = !member.required;
64352
- const closedGenerics = enclosingClassId === void 0 ? void 0 : classGenericMemberBindings(context.classes, enclosingClassId);
64353
64404
  let value;
64354
64405
  switch (member.kind) {
64355
64406
  case "null":
@@ -64417,11 +64468,11 @@ function renderMemberType(context, member, enclosingClassId, elementSettings = f
64417
64468
  if (binding.kind === "member") {
64418
64469
  boundMemberId = binding.memberId;
64419
64470
  } else {
64420
- const closed = closedGenerics?.get(binding.genericParamId);
64421
- if (closed === void 0) {
64422
- return genericName(context, binding.genericParamId);
64423
- }
64424
- boundMemberId = closed;
64471
+ return renderGenericType(
64472
+ context,
64473
+ binding.genericParamId,
64474
+ enclosingClassId
64475
+ );
64425
64476
  }
64426
64477
  return renderMemberType(
64427
64478
  context,
@@ -64454,7 +64505,11 @@ function renderMemberType(context, member, enclosingClassId, elementSettings = f
64454
64505
  value = member.multiselect ? "Set<NeoDialogueReference>" : "NeoDialogueReference";
64455
64506
  break;
64456
64507
  case "generic":
64457
- value = genericName(context, member.genericParamId);
64508
+ value = renderGenericType(
64509
+ context,
64510
+ member.genericParamId,
64511
+ enclosingClassId
64512
+ );
64458
64513
  break;
64459
64514
  case "computed":
64460
64515
  value = renderType(context, member.returnType);
@@ -64681,7 +64736,71 @@ function dictionaryOptions(context, enumId) {
64681
64736
  context.dictionaryKeyOptions.set(enumId, result);
64682
64737
  return result;
64683
64738
  }
64739
+ function cachedClassBindings(context, classId) {
64740
+ let bindings = context.classBindings.get(classId);
64741
+ if (bindings === void 0) {
64742
+ bindings = classGenericBindings(context.classes, classId);
64743
+ context.classBindings.set(classId, bindings);
64744
+ }
64745
+ return bindings;
64746
+ }
64747
+ function renderGenericType(context, parameterId, enclosingClassId) {
64748
+ const bindings = context.genericBindings ?? (enclosingClassId === void 0 ? void 0 : cachedClassBindings(context, enclosingClassId));
64749
+ const binding = resolveGenericBinding(parameterId, bindings);
64750
+ return binding.kind === "member" ? renderMemberType(
64751
+ context,
64752
+ required(context.members, binding.memberId, "generic binding"),
64753
+ enclosingClassId
64754
+ ) : genericName(context, binding.genericParamId);
64755
+ }
64756
+ function resolveGenericBinding(parameterId, bindings) {
64757
+ const visited = /* @__PURE__ */ new Set();
64758
+ let cursor = parameterId;
64759
+ while (!visited.has(cursor)) {
64760
+ visited.add(cursor);
64761
+ const binding = bindings?.get(cursor);
64762
+ if (binding === void 0) break;
64763
+ if (binding.kind === "member") return binding;
64764
+ cursor = binding.genericParamId;
64765
+ }
64766
+ return { kind: "generic", genericParamId: cursor };
64767
+ }
64768
+ function constructionContext(context, member, enclosingClassId) {
64769
+ const outer = context.genericBindings ?? (enclosingClassId === void 0 ? void 0 : cachedClassBindings(context, enclosingClassId));
64770
+ const inherited = cachedClassBindings(context, member.classId);
64771
+ const arguments_ = Object.entries(member.classArguments);
64772
+ if (inherited.size === 0 && arguments_.length === 0) return context;
64773
+ const bindings = new Map(outer);
64774
+ for (const [parameter4, binding] of inherited)
64775
+ bindings.set(parameter4, binding);
64776
+ for (const [parameter4, binding] of arguments_) {
64777
+ bindings.set(
64778
+ parameter4,
64779
+ binding.kind === "generic" ? resolveGenericBinding(binding.genericParamId, outer) : binding
64780
+ );
64781
+ }
64782
+ return { ...context, genericBindings: bindings };
64783
+ }
64684
64784
  function renderDefaultValue(context, member, wrapper, enclosingClassId) {
64785
+ if (member.kind === "generic" && context.genericBindings) {
64786
+ const bindingId = terminalGenericBindingMemberId(
64787
+ member.genericParamId,
64788
+ context.genericBindings
64789
+ );
64790
+ if (bindingId !== void 0) {
64791
+ const binding = required(
64792
+ context.members,
64793
+ bindingId,
64794
+ "generic default binding"
64795
+ );
64796
+ const positioned = structuredLeafPartialChild(
64797
+ member.partial === true,
64798
+ binding
64799
+ );
64800
+ const resolved = positioned.kind === "class" && member.partial === true ? { ...positioned, partial: true } : positioned;
64801
+ return renderDefaultValue(context, resolved, wrapper, enclosingClassId);
64802
+ }
64803
+ }
64685
64804
  const value = wrapper.value;
64686
64805
  if (value === null) return "null";
64687
64806
  if (member.kind === "decimal" && typeof value === "string") return value;
@@ -64717,16 +64836,21 @@ function renderDefaultValue(context, member, wrapper, enclosingClassId) {
64717
64836
  }
64718
64837
  if (member.kind === "class" && isObject3(value)) {
64719
64838
  const target = required(context.classes, member.classId, "class");
64839
+ const nestedContext = constructionContext(
64840
+ context,
64841
+ member,
64842
+ enclosingClassId
64843
+ );
64720
64844
  const assignments = Object.entries(value).map(([key, item]) => {
64721
64845
  const childId = target.schema[key];
64722
64846
  const child2 = childId ? context.members.get(childId) : void 0;
64723
64847
  const positioned = child2 ? structuredLeafPartialChild(member.partial === true, child2) : void 0;
64724
- return `${key} = ${positioned ? renderNestedValue(context, positioned, item, enclosingClassId) : jsonValue2(item)}`;
64848
+ return `${key} = ${positioned ? renderNestedValue(nestedContext, positioned, item, enclosingClassId) : jsonValue2(item)}`;
64725
64849
  });
64726
64850
  if (member.partial === true) {
64727
64851
  return `new { ${assignments.join(", ")} }`;
64728
64852
  }
64729
- return `new ${target.name}${assignments.length ? ` { ${assignments.join(", ")} }` : "()"}`;
64853
+ return `new ${renderMemberType(context, member, enclosingClassId).replace(/\?$/u, "")}${assignments.length ? ` { ${assignments.join(", ")} }` : "()"}`;
64730
64854
  }
64731
64855
  if (member.kind === "action") {
64732
64856
  return renderActionListeners(context, member, value);
@@ -66114,52 +66238,40 @@ function commentEndIndex(source, index) {
66114
66238
  return null;
66115
66239
  }
66116
66240
  function stripInitializerComments(source) {
66117
- const lines = [{ parts: [], removedComment: false }];
66118
- let quote6 = null;
66119
- let segmentStart = 0;
66120
- const specialCharacters = /["'\\/\n]/g;
66121
- for (let token = specialCharacters.exec(source); token !== null; token = specialCharacters.exec(source)) {
66122
- const index = token.index;
66123
- const character = token[0];
66124
- if (quote6 !== null) {
66125
- if (character === "\\") specialCharacters.lastIndex = index + 2;
66126
- else if (character === quote6) quote6 = null;
66127
- continue;
66128
- }
66129
- const afterComment = commentEndIndex(source, index);
66130
- if (afterComment !== null) {
66131
- const line = lines[lines.length - 1];
66132
- if (segmentStart < index) {
66133
- line.parts.push(source.slice(segmentStart, index));
66134
- }
66135
- line.removedComment = true;
66136
- specialCharacters.lastIndex = afterComment;
66137
- segmentStart = afterComment;
66138
- continue;
66139
- }
66140
- if (character === "\n") {
66141
- if (segmentStart < index) {
66142
- lines[lines.length - 1].parts.push(source.slice(segmentStart, index));
66143
- }
66144
- lines.push({ parts: [], removedComment: false });
66145
- segmentStart = index + 1;
66146
- continue;
66241
+ const lexed = lex(source);
66242
+ const commentLines = /* @__PURE__ */ new Set();
66243
+ const parts = [];
66244
+ let cursor = 0;
66245
+ for (const token of lexed.tokens) {
66246
+ if (token.kind !== "comment") continue;
66247
+ parts.push(source.slice(cursor, token.start));
66248
+ parts.push(token.raw.replace(/[^\r\n]/g, ""));
66249
+ cursor = token.end;
66250
+ for (let line = token.range.start.line; line <= token.range.end.line; line++) {
66251
+ commentLines.add(line);
66147
66252
  }
66148
- if (character === '"' || character === "'") quote6 = character;
66149
66253
  }
66150
- if (segmentStart < source.length) {
66151
- lines[lines.length - 1].parts.push(source.slice(segmentStart));
66254
+ parts.push(source.slice(cursor));
66255
+ const literalNewlines = /* @__PURE__ */ new Set();
66256
+ for (const token of lexed.roots) {
66257
+ if (token.kind !== "string") continue;
66258
+ for (let line = token.range.start.line; line < token.range.end.line; line++) {
66259
+ literalNewlines.add(line);
66260
+ }
66152
66261
  }
66153
- return lines.map((line) => ({
66154
- text: line.parts.join("").trimEnd(),
66155
- removedComment: line.removedComment
66262
+ return parts.join("").split("\n").map((line, index) => ({
66263
+ text: literalNewlines.has(index) ? line : line.trimEnd(),
66264
+ removedComment: commentLines.has(index)
66156
66265
  })).filter((line) => !line.removedComment || line.text.trim().length > 0).map((line) => line.text).join("\n").trim();
66157
66266
  }
66158
66267
  function normalizeBodySource(source) {
66159
66268
  const trimmed = source.trim();
66160
66269
  const lines = trimmed.split("\n");
66161
66270
  if (lines.length < 2) return trimmed;
66162
- const continuations = lines.slice(1).filter((line) => line.trim().length > 0);
66271
+ const literalLines = neoScriptLiteralContinuationLines(trimmed);
66272
+ const continuations = lines.slice(1).filter(
66273
+ (line, index) => !literalLines.has(index + 1) && line.trim().length > 0
66274
+ );
66163
66275
  if (continuations.length === 0) return trimmed;
66164
66276
  const common = Math.min(
66165
66277
  ...continuations.map((line) => line.length - line.trimStart().length)
@@ -66167,7 +66279,10 @@ function normalizeBodySource(source) {
66167
66279
  if (common === 0) return trimmed;
66168
66280
  return [
66169
66281
  lines[0],
66170
- ...lines.slice(1).map((line) => line.trim().length === 0 ? "" : line.slice(common))
66282
+ ...lines.slice(1).map((line, index) => {
66283
+ if (literalLines.has(index + 1)) return line;
66284
+ return line.trim().length === 0 ? "" : line.slice(common);
66285
+ })
66171
66286
  ].join("\n");
66172
66287
  }
66173
66288
  function normalizeInitializerSource(source) {
@@ -66192,7 +66307,8 @@ function normalizeInitializerSourceUncached(source) {
66192
66307
  const stripped = stripInitializerComments(source);
66193
66308
  const lines = stripped.split("\n");
66194
66309
  if (lines.length < 2) return stripped;
66195
- const continuations = lines.slice(1).filter((line) => line.length > 0);
66310
+ const literalLines = neoScriptLiteralContinuationLines(stripped);
66311
+ const continuations = lines.slice(1).filter((line, index) => !literalLines.has(index + 1) && line.length > 0);
66196
66312
  if (continuations.length === 0) return stripped;
66197
66313
  const common = Math.min(
66198
66314
  ...continuations.map((line) => line.length - line.trimStart().length)
@@ -66200,7 +66316,9 @@ function normalizeInitializerSourceUncached(source) {
66200
66316
  if (common === 0) return stripped;
66201
66317
  return [
66202
66318
  lines[0],
66203
- ...lines.slice(1).map((line) => line.length === 0 ? line : line.slice(common))
66319
+ ...lines.slice(1).map(
66320
+ (line, index) => literalLines.has(index + 1) || line.length === 0 ? line : line.slice(common)
66321
+ )
66204
66322
  ].join("\n");
66205
66323
  }
66206
66324
  function constructorExpressionSlice(source) {
@@ -66332,12 +66450,16 @@ function matchesStoredInitializer(defaultValue, source) {
66332
66450
  if (!isObjectRecord2(defaultValue) || !isObjectRecord2(defaultValue.init))
66333
66451
  return false;
66334
66452
  const code = defaultValue.init.code;
66335
- return typeof code === "string" && normalizeInitializerSource(code) === normalizeInitializerSource(source);
66453
+ return typeof code === "string" && sameNeoScriptTokens(
66454
+ normalizeInitializerSource(code),
66455
+ normalizeInitializerSource(source)
66456
+ );
66336
66457
  }
66337
66458
  var normalizedInitializers, normalizedInitializerCharacters, MAX_NORMALIZED_INITIALIZER_CHARACTERS;
66338
66459
  var init_init_source = __esm({
66339
66460
  "src/project-source/init-source.ts"() {
66340
66461
  "use strict";
66462
+ init_lexer();
66341
66463
  init_value_comparison();
66342
66464
  normalizedInitializers = /* @__PURE__ */ new Map();
66343
66465
  normalizedInitializerCharacters = 0;
@@ -66543,12 +66665,12 @@ function innerBody(body) {
66543
66665
  }
66544
66666
  function preserveEquivalentBody(authored, base) {
66545
66667
  if (base === void 0) return authored;
66546
- const normalize = (value) => value.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).join("\n");
66547
- return normalize(authored) === normalize(base ?? "") ? base : authored;
66668
+ return sameNeoScriptTokens(authored, base ?? "") ? base : authored;
66548
66669
  }
66549
66670
  var init_lower_constructors = __esm({
66550
66671
  "src/project-source/lower-constructors.ts"() {
66551
66672
  "use strict";
66673
+ init_lexer();
66552
66674
  init_pending_id();
66553
66675
  init_declared_constructors();
66554
66676
  init_required_constructor_id();
@@ -66620,7 +66742,6 @@ var MEMBER_KIND_SOURCE_TYPE_NAMES, MEMBER_KIND_NUMBERS, SOURCE_TYPE_NAME_BY_MEMB
66620
66742
  var init_member_kind_type_names = __esm({
66621
66743
  "src/project-source/member-kind-type-names.ts"() {
66622
66744
  "use strict";
66623
- init_members();
66624
66745
  MEMBER_KIND_SOURCE_TYPE_NAMES = {
66625
66746
  null: "null",
66626
66747
  bool: "bool",
@@ -69213,8 +69334,7 @@ function functionBodySource(body, isVoid2) {
69213
69334
  function preserveEquivalentCode(authored, base) {
69214
69335
  if (authored === null) return null;
69215
69336
  if (base !== null && base !== void 0) {
69216
- const normalize = (value) => value.split("\n").map((line) => line.trim()).filter((line) => line.length > 0).join("\n");
69217
- if (normalize(authored) === normalize(base)) return base;
69337
+ if (sameNeoScriptTokens(authored, base)) return base;
69218
69338
  }
69219
69339
  return authored;
69220
69340
  }
@@ -69380,6 +69500,7 @@ var UNSET_LIST_COLUMN_WIDTH, EMPTY_GENERIC_TYPE_ENVIRONMENT, STRUCTURED_LEAF_COM
69380
69500
  var init_lower_members = __esm({
69381
69501
  "src/project-source/lower-members.ts"() {
69382
69502
  "use strict";
69503
+ init_lexer();
69383
69504
  init_initializer_reference_spellings();
69384
69505
  init_listener_sources();
69385
69506
  init_project_source_ast();
@@ -69531,7 +69652,6 @@ var init_project_file_registry = __esm({
69531
69652
  "use strict";
69532
69653
  init_language_spec();
69533
69654
  init_project_source_identifiers();
69534
- init_files();
69535
69655
  PROJECT_FILE_REGISTRIES = [
69536
69656
  {
69537
69657
  fileType: "image" /* Image */,
@@ -71245,7 +71365,6 @@ var init_supplemental_records = __esm({
71245
71365
  init_project_source_parser();
71246
71366
  init_strict_ir();
71247
71367
  init_declaration_path();
71248
- init_dialogue_group_types();
71249
71368
  init_value_comparison();
71250
71369
  init_projection();
71251
71370
  init_emitter();
@@ -71907,7 +72026,7 @@ function conditionProjectionMatches(context, prior, body) {
71907
72026
  prior.getter,
71908
72027
  context.sourceSchema.uiActionResolver(alias, bindingNames)
71909
72028
  );
71910
- if (projected !== null && normalizeSourceCode(body) === normalizeSourceCode(projected)) {
72029
+ if (projected !== null && sameNeoScriptTokens(body, projected)) {
71911
72030
  return true;
71912
72031
  }
71913
72032
  }
@@ -71926,7 +72045,7 @@ function lowerActionLogic(context, prior, fn, fallbackCode, inline, useId, uiRes
71926
72045
  const code = functionCode(fn) ?? fallbackCode;
71927
72046
  if (prior?.type === 0) {
71928
72047
  const projected = uiActionSource(prior.action, uiResolver);
71929
- if (projected !== null && normalizeSourceCode(code) === normalizeSourceCode(projected)) {
72048
+ if (projected !== null && sameNeoScriptTokens(code, projected)) {
71930
72049
  return prior;
71931
72050
  }
71932
72051
  }
@@ -73010,13 +73129,11 @@ function sourceFunctionForPrior(context, prior) {
73010
73129
  }
73011
73130
  function isCanonicalProjectedCode(authoredCode, priorCode, context) {
73012
73131
  if (typeof priorCode !== "string") return false;
73013
- return normalizeSourceCode(authoredCode) === normalizeSourceCode(
73132
+ return sameNeoScriptTokens(
73133
+ authoredCode,
73014
73134
  rewritePulledThis(priorCode, context.sourcePrimaryAlias)
73015
73135
  );
73016
73136
  }
73017
- function normalizeSourceCode(code) {
73018
- return code.replaceAll("\r\n", "\n").trim().split("\n").map((line) => line.trim()).join("\n");
73019
- }
73020
73137
  function rewritePulledThis(code, alias) {
73021
73138
  return rewriteNeoScriptThisReceiver(code, alias);
73022
73139
  }
@@ -73272,6 +73389,7 @@ var SourceSchemaIndex;
73272
73389
  var init_dialogue_lower = __esm({
73273
73390
  "src/project-source/dialogue-lower.ts"() {
73274
73391
  "use strict";
73392
+ init_lexer();
73275
73393
  init_lower_support();
73276
73394
  init_dialogue_source_names();
73277
73395
  init_dialogue_group_paths();
@@ -73282,7 +73400,6 @@ var init_dialogue_lower = __esm({
73282
73400
  init_executable_parser();
73283
73401
  init_strict_ir();
73284
73402
  init_localization_types();
73285
- init_members();
73286
73403
  init_neoscript();
73287
73404
  init_value_comparison();
73288
73405
  init_projection();
@@ -73290,7 +73407,6 @@ var init_dialogue_lower = __esm({
73290
73407
  init_ui_action_source();
73291
73408
  init_source_format();
73292
73409
  init_supplemental_records();
73293
- init_dialogue_group_types();
73294
73410
  SourceSchemaIndex = class {
73295
73411
  classesByName;
73296
73412
  classesById;
@@ -73573,10 +73689,10 @@ var init_dialogue_lower = __esm({
73573
73689
  }
73574
73690
  });
73575
73691
 
73576
- // ../src/runtime/neoscript/NSGetterRuntimeError.ts
73692
+ // ../packages/neoscript-runtime/src/neoscript/NSGetterRuntimeError.ts
73577
73693
  var NSGetterRuntimeError, UncompiledInitializerRuntimeError;
73578
73694
  var init_NSGetterRuntimeError = __esm({
73579
- "../src/runtime/neoscript/NSGetterRuntimeError.ts"() {
73695
+ "../packages/neoscript-runtime/src/neoscript/NSGetterRuntimeError.ts"() {
73580
73696
  "use strict";
73581
73697
  init_runtime_source();
73582
73698
  NSGetterRuntimeError = class extends Error {
@@ -75314,7 +75430,7 @@ var init_project_schema_manifest = __esm({
75314
75430
  }
75315
75431
  });
75316
75432
 
75317
- // ../src/models/interfaces/interface-types.ts
75433
+ // ../packages/models/src/interfaces/interface-types.ts
75318
75434
  function isInterfacePropertyMember(member) {
75319
75435
  return member.kind === void 0 || member.kind === 0 /* Property */;
75320
75436
  }
@@ -75430,7 +75546,7 @@ function getInterfaceMemberKeyOrder(neoInterface) {
75430
75546
  return result;
75431
75547
  }
75432
75548
  var init_interface_types = __esm({
75433
- "../src/models/interfaces/interface-types.ts"() {
75549
+ "../packages/models/src/interfaces/interface-types.ts"() {
75434
75550
  "use strict";
75435
75551
  init_core_types();
75436
75552
  init_neoscript_types();
@@ -75441,7 +75557,7 @@ var init_interface_types = __esm({
75441
75557
  }
75442
75558
  });
75443
75559
 
75444
- // ../src/models/dialogue/dialogue-group-language.ts
75560
+ // ../packages/models/src/dialogue/dialogue-group-language.ts
75445
75561
  function dialogueGroupLanguageContract(group) {
75446
75562
  return {
75447
75563
  id: group.id,
@@ -75481,10 +75597,9 @@ function lookupEntry(collectionMemberId, memberById2, classById) {
75481
75597
  }
75482
75598
  var KINDS;
75483
75599
  var init_dialogue_group_language = __esm({
75484
- "../src/models/dialogue/dialogue-group-language.ts"() {
75600
+ "../packages/models/src/dialogue/dialogue-group-language.ts"() {
75485
75601
  "use strict";
75486
75602
  init_members();
75487
- init_dialogue_group_types();
75488
75603
  KINDS = {
75489
75604
  [0 /* Standard */]: "standard",
75490
75605
  [1 /* Lookup */]: "lookup",
@@ -77058,10 +77173,10 @@ var init_neoscript_language_context_adapter = __esm({
77058
77173
  }
77059
77174
  });
77060
77175
 
77061
- // ../src/common/overlay-readonly-map.ts
77176
+ // ../packages/neoscript-runtime/src/internal/overlay-readonly-map.ts
77062
77177
  var OverlayReadonlyMap;
77063
77178
  var init_overlay_readonly_map = __esm({
77064
- "../src/common/overlay-readonly-map.ts"() {
77179
+ "../packages/neoscript-runtime/src/internal/overlay-readonly-map.ts"() {
77065
77180
  "use strict";
77066
77181
  OverlayReadonlyMap = class {
77067
77182
  constructor(parent, own) {
@@ -77104,7 +77219,7 @@ var init_overlay_readonly_map = __esm({
77104
77219
  }
77105
77220
  });
77106
77221
 
77107
- // ../src/runtime/neoscript/initializer-dependencies.ts
77222
+ // ../packages/neoscript-runtime/src/neoscript/initializer-dependencies.ts
77108
77223
  function materializeInitializerDependencies(pending, materialize) {
77109
77224
  const active = /* @__PURE__ */ new Set();
77110
77225
  for (const rootId of pending) {
@@ -77137,7 +77252,7 @@ function materializeInitializerDependencies(pending, materialize) {
77137
77252
  }
77138
77253
  var PendingInitializerDependency;
77139
77254
  var init_initializer_dependencies = __esm({
77140
- "../src/runtime/neoscript/initializer-dependencies.ts"() {
77255
+ "../packages/neoscript-runtime/src/neoscript/initializer-dependencies.ts"() {
77141
77256
  "use strict";
77142
77257
  init_NSGetterRuntimeError();
77143
77258
  PendingInitializerDependency = class extends NSGetterRuntimeError {
@@ -77150,7 +77265,7 @@ var init_initializer_dependencies = __esm({
77150
77265
  }
77151
77266
  });
77152
77267
 
77153
- // ../src/models/members/lookup-declared-type.ts
77268
+ // ../packages/models/src/members/lookup-declared-type.ts
77154
77269
  function lookupDeclaredTypeInfo2(member, collectionTypeInfo) {
77155
77270
  if (collectionTypeInfo === null) return null;
77156
77271
  if (collectionTypeInfo.type !== 6 /* List */ && collectionTypeInfo.type !== 5 /* Dictionary */) {
@@ -77172,14 +77287,13 @@ function lookupDeclaredTypeInfo2(member, collectionTypeInfo) {
77172
77287
  };
77173
77288
  }
77174
77289
  var init_lookup_declared_type = __esm({
77175
- "../src/models/members/lookup-declared-type.ts"() {
77290
+ "../packages/models/src/members/lookup-declared-type.ts"() {
77176
77291
  "use strict";
77177
- init_member_kind_enum();
77178
77292
  init_member_kinds();
77179
77293
  }
77180
77294
  });
77181
77295
 
77182
- // ../src/database/member-declared-type-info.ts
77296
+ // ../packages/neoscript-runtime/src/values/member-declared-type-info.ts
77183
77297
  function resolveMemberDeclaredTypeInfo(member, members) {
77184
77298
  return resolveMemberDeclaredTypeInfoInternal(member, members, /* @__PURE__ */ new Set());
77185
77299
  }
@@ -77296,7 +77410,7 @@ function resolveMemberDeclaredTypeInfoInternal(member, members, seen) {
77296
77410
  };
77297
77411
  }
77298
77412
  var init_member_declared_type_info = __esm({
77299
- "../src/database/member-declared-type-info.ts"() {
77413
+ "../packages/neoscript-runtime/src/values/member-declared-type-info.ts"() {
77300
77414
  "use strict";
77301
77415
  init_members();
77302
77416
  init_lookup_declared_type();
@@ -77306,7 +77420,7 @@ var init_member_declared_type_info = __esm({
77306
77420
  }
77307
77421
  });
77308
77422
 
77309
- // ../src/database/value-row-owner-members.ts
77423
+ // ../packages/neoscript-runtime/src/values/value-row-owner-members.ts
77310
77424
  function valueIdsWithSourceChains(targetValueIds, valuesById) {
77311
77425
  const result = new Set(targetValueIds);
77312
77426
  for (const targetId of targetValueIds) {
@@ -77842,7 +77956,7 @@ function findOwningMembersForValues(document, valueIds, additionalRoots, travers
77842
77956
  return owners;
77843
77957
  }
77844
77958
  var init_value_row_owner_members = __esm({
77845
- "../src/database/value-row-owner-members.ts"() {
77959
+ "../packages/neoscript-runtime/src/values/value-row-owner-members.ts"() {
77846
77960
  "use strict";
77847
77961
  init_members();
77848
77962
  init_inheritance();
@@ -77851,7 +77965,7 @@ var init_value_row_owner_members = __esm({
77851
77965
  }
77852
77966
  });
77853
77967
 
77854
- // ../src/database/constructor-argument-ownership.ts
77968
+ // ../packages/neoscript-runtime/src/values/constructor-argument-ownership.ts
77855
77969
  function resolveSemanticOwnerMembersForValues(document, targetValueIds, additionalRoots, rootOwners, rootKinds) {
77856
77970
  const result = /* @__PURE__ */ new Map();
77857
77971
  if (targetValueIds.size === 0) return result;
@@ -78174,7 +78288,7 @@ function indexChildrenByContainerId(rows) {
78174
78288
  }
78175
78289
  var MaterializedValueGraphContext;
78176
78290
  var init_constructor_argument_ownership = __esm({
78177
- "../src/database/constructor-argument-ownership.ts"() {
78291
+ "../packages/neoscript-runtime/src/values/constructor-argument-ownership.ts"() {
78178
78292
  "use strict";
78179
78293
  init_constructor_parameter_settlement();
78180
78294
  init_generics();
@@ -78468,7 +78582,7 @@ var init_constructor_argument_ownership = __esm({
78468
78582
  }
78469
78583
  });
78470
78584
 
78471
- // ../src/models/members/stored-value-placement-index.ts
78585
+ // ../packages/models/src/members/stored-value-placement-index.ts
78472
78586
  function buildStoredValuePlacementIndex(args) {
78473
78587
  return createStoredValuePlacementTraversal(args)();
78474
78588
  }
@@ -78837,7 +78951,7 @@ function isStringRecord5(value) {
78837
78951
  return Object.values(value).every((item) => typeof item === "string");
78838
78952
  }
78839
78953
  var init_stored_value_placement_index = __esm({
78840
- "../src/models/members/stored-value-placement-index.ts"() {
78954
+ "../packages/models/src/members/stored-value-placement-index.ts"() {
78841
78955
  "use strict";
78842
78956
  init_inheritance();
78843
78957
  init_constructor_parameter_settlement();
@@ -78847,7 +78961,7 @@ var init_stored_value_placement_index = __esm({
78847
78961
  }
78848
78962
  });
78849
78963
 
78850
- // ../src/runtime/neoscript/unattributable-reads.ts
78964
+ // ../packages/neoscript-runtime/src/neoscript/unattributable-reads.ts
78851
78965
  function ownershipChainRead(kind, rowId) {
78852
78966
  return `${kind}:${rowId}`;
78853
78967
  }
@@ -78870,7 +78984,7 @@ function classifyUnattributableRead(reason) {
78870
78984
  }
78871
78985
  var OWNERSHIP_CHAIN_PREFIXES, CONTAINER_ENTRIES_PREFIX, OWNERSHIP_CHAIN_READ;
78872
78986
  var init_unattributable_reads = __esm({
78873
- "../src/runtime/neoscript/unattributable-reads.ts"() {
78987
+ "../packages/neoscript-runtime/src/neoscript/unattributable-reads.ts"() {
78874
78988
  "use strict";
78875
78989
  OWNERSHIP_CHAIN_PREFIXES = [
78876
78990
  "generic-parent-resolution:",
@@ -78886,13 +79000,13 @@ var init_unattributable_reads = __esm({
78886
79000
  }
78887
79001
  });
78888
79002
 
78889
- // ../src/runtime/world-grid-query-reads.ts
79003
+ // ../packages/neoscript-runtime/src/world-grid-query-reads.ts
78890
79004
  function worldGridQueryReadKey(read) {
78891
79005
  return read.kind === "placement" ? JSON.stringify([read.kind, read.valueId]) : JSON.stringify([read.kind, read.gridId, read.cell.x, read.cell.y]);
78892
79006
  }
78893
79007
  var WorldGridQueryReadSet;
78894
79008
  var init_world_grid_query_reads = __esm({
78895
- "../src/runtime/world-grid-query-reads.ts"() {
79009
+ "../packages/neoscript-runtime/src/world-grid-query-reads.ts"() {
78896
79010
  "use strict";
78897
79011
  init_collections();
78898
79012
  WorldGridQueryReadSet = class {
@@ -78917,7 +79031,7 @@ var init_world_grid_query_reads = __esm({
78917
79031
  }
78918
79032
  });
78919
79033
 
78920
- // ../src/runtime/neoscript/initializer-context.ts
79034
+ // ../packages/neoscript-runtime/src/neoscript/initializer-context.ts
78921
79035
  function initializerEvaluatorCacheKey(document) {
78922
79036
  return document.evaluatorCache?.key ?? document;
78923
79037
  }
@@ -78926,9 +79040,8 @@ function initializerEvaluatorCacheRevision(document) {
78926
79040
  }
78927
79041
  var InitializerReadSet;
78928
79042
  var init_initializer_context = __esm({
78929
- "../src/runtime/neoscript/initializer-context.ts"() {
79043
+ "../packages/neoscript-runtime/src/neoscript/initializer-context.ts"() {
78930
79044
  "use strict";
78931
- init_collections();
78932
79045
  init_unattributable_reads();
78933
79046
  init_world_grid_query_reads();
78934
79047
  InitializerReadSet = class {
@@ -78970,21 +79083,21 @@ var init_initializer_context = __esm({
78970
79083
  }
78971
79084
  });
78972
79085
 
78973
- // ../src/runtime/declaration-default-source.ts
79086
+ // ../packages/neoscript-runtime/src/declaration-default-source.ts
78974
79087
  function declarationDefaultSource(id2, stored, resolveGraph) {
78975
79088
  if (stored !== null && !isCollapseStampedInstanceRoot(stored)) return stored;
78976
79089
  const graph = resolveGraph(id2);
78977
79090
  return defaultSourceWithListeners(graph?.rowsById.get(id2) ?? stored, graph);
78978
79091
  }
78979
79092
  var init_declaration_default_source = __esm({
78980
- "../src/runtime/declaration-default-source.ts"() {
79093
+ "../packages/neoscript-runtime/src/declaration-default-source.ts"() {
78981
79094
  "use strict";
78982
79095
  init_instance_provenance();
78983
79096
  init_member_change_listeners();
78984
79097
  }
78985
79098
  });
78986
79099
 
78987
- // ../src/runtime/listener-write-index.ts
79100
+ // ../packages/neoscript-runtime/src/listener-write-index.ts
78988
79101
  function listenerWritesByOwner(state) {
78989
79102
  if (state === void 0) return empty;
78990
79103
  let index = indexes.get(state);
@@ -79007,14 +79120,14 @@ function changeListenerWriteEdit(write) {
79007
79120
  }
79008
79121
  var indexes, empty;
79009
79122
  var init_listener_write_index = __esm({
79010
- "../src/runtime/listener-write-index.ts"() {
79123
+ "../packages/neoscript-runtime/src/listener-write-index.ts"() {
79011
79124
  "use strict";
79012
79125
  indexes = /* @__PURE__ */ new WeakMap();
79013
79126
  empty = /* @__PURE__ */ new Map();
79014
79127
  }
79015
79128
  });
79016
79129
 
79017
- // ../src/runtime/neoscript/typed-aggregate-row-references.ts
79130
+ // ../packages/neoscript-runtime/src/neoscript/typed-aggregate-row-references.ts
79018
79131
  function visitTypedAggregateRowReferences(value, rawType, visitor) {
79019
79132
  visitor.beforeVisit?.();
79020
79133
  const pending = [{ value, type: rawType }];
@@ -79040,13 +79153,12 @@ function visitTypedAggregateRowReferences(value, rawType, visitor) {
79040
79153
  }
79041
79154
  }
79042
79155
  var init_typed_aggregate_row_references = __esm({
79043
- "../src/runtime/neoscript/typed-aggregate-row-references.ts"() {
79156
+ "../packages/neoscript-runtime/src/neoscript/typed-aggregate-row-references.ts"() {
79044
79157
  "use strict";
79045
- init_members();
79046
79158
  }
79047
79159
  });
79048
79160
 
79049
- // ../src/runtime/neoscript/cell-pattern.ts
79161
+ // ../packages/neoscript-runtime/src/neoscript/cell-pattern.ts
79050
79162
  function integer2(value, name, minimum = -2147483648) {
79051
79163
  if (typeof value !== "number" || !Number.isInteger(value)) {
79052
79164
  throw new TypeError(`${name} must be an integer.`);
@@ -79241,14 +79353,14 @@ function evaluateCellPatternNative(memberId, receiver, args, ctx) {
79241
79353
  }
79242
79354
  }
79243
79355
  var init_cell_pattern2 = __esm({
79244
- "../src/runtime/neoscript/cell-pattern.ts"() {
79356
+ "../packages/neoscript-runtime/src/neoscript/cell-pattern.ts"() {
79245
79357
  "use strict";
79246
79358
  init_cell_pattern();
79247
79359
  init_member_kinds();
79248
79360
  }
79249
79361
  });
79250
79362
 
79251
- // ../src/models/classes/world-layer-link-target.ts
79363
+ // ../packages/models/src/classes/world-layer-link-target.ts
79252
79364
  function validateWorldLayerLinkClassTargets(args) {
79253
79365
  const relationResolver = createEffectiveClassRelationResolver(args);
79254
79366
  const worldKindsByClassId = indexWorldSystemClassKinds(
@@ -79387,17 +79499,16 @@ function resolveWorldLayerLinkTarget(args) {
79387
79499
  };
79388
79500
  }
79389
79501
  var init_world_layer_link_target = __esm({
79390
- "../src/models/classes/world-layer-link-target.ts"() {
79502
+ "../packages/models/src/classes/world-layer-link-target.ts"() {
79391
79503
  "use strict";
79392
79504
  init_classes();
79393
79505
  init_core();
79394
79506
  init_internal_record_relations();
79395
- init_project_version_types();
79396
79507
  init_classes();
79397
79508
  }
79398
79509
  });
79399
79510
 
79400
- // ../src/runtime/world-grid-query.ts
79511
+ // ../packages/neoscript-runtime/src/world-grid-query.ts
79401
79512
  function getWorldGridQueryIndex(source) {
79402
79513
  const previous = indexes2.get(source.cacheKey);
79403
79514
  if (previous !== void 0 && sameRevision(previous.revision, source.revision))
@@ -79638,7 +79749,7 @@ function checkedCoordinate(value) {
79638
79749
  }
79639
79750
  var WorldGridQueryError, MissingWorldObjectPlacementError, indexes2, building, WorldGridQueryIndex;
79640
79751
  var init_world_grid_query = __esm({
79641
- "../src/runtime/world-grid-query.ts"() {
79752
+ "../packages/neoscript-runtime/src/world-grid-query.ts"() {
79642
79753
  "use strict";
79643
79754
  init_classes();
79644
79755
  init_world_layer_link_target();
@@ -79753,7 +79864,7 @@ var init_world_grid_query = __esm({
79753
79864
  }
79754
79865
  });
79755
79866
 
79756
- // ../src/runtime/neoscript/getter-subscriptions.ts
79867
+ // ../packages/neoscript-runtime/src/neoscript/getter-subscriptions.ts
79757
79868
  function* readKeys(reads) {
79758
79869
  yield* reads.valueIds;
79759
79870
  yield* reads.containerIds;
@@ -79762,7 +79873,7 @@ function* readKeys(reads) {
79762
79873
  }
79763
79874
  var NeoScriptGetterSubscription, NO_SUBSCRIPTIONS, staticReadKey, NeoScriptGetterSubscriptions;
79764
79875
  var init_getter_subscriptions = __esm({
79765
- "../src/runtime/neoscript/getter-subscriptions.ts"() {
79876
+ "../packages/neoscript-runtime/src/neoscript/getter-subscriptions.ts"() {
79766
79877
  "use strict";
79767
79878
  init_initializer_context();
79768
79879
  NeoScriptGetterSubscription = class {
@@ -79898,7 +80009,7 @@ var init_getter_subscriptions = __esm({
79898
80009
  }
79899
80010
  });
79900
80011
 
79901
- // ../src/models/decimal/decimal-math.ts
80012
+ // ../packages/models/src/decimal/decimal-math.ts
79902
80013
  function pow10(exponent) {
79903
80014
  return TEN ** BigInt(exponent);
79904
80015
  }
@@ -80154,7 +80265,7 @@ function floatFromDecimalString(value) {
80154
80265
  }
80155
80266
  var DecimalOverflowError, DecimalDivisionByZeroError, DecimalDigitsRangeError, DecimalNonFiniteError, DecimalClampRangeError, MATH_CLAMP_RANGE_MESSAGE, TEN;
80156
80267
  var init_decimal_math = __esm({
80157
- "../src/models/decimal/decimal-math.ts"() {
80268
+ "../packages/models/src/decimal/decimal-math.ts"() {
80158
80269
  "use strict";
80159
80270
  init_member_kinds();
80160
80271
  DecimalOverflowError = class extends Error {
@@ -80172,15 +80283,15 @@ var init_decimal_math = __esm({
80172
80283
  }
80173
80284
  });
80174
80285
 
80175
- // ../src/models/decimal/index.ts
80286
+ // ../packages/models/src/decimal/index.ts
80176
80287
  var init_decimal = __esm({
80177
- "../src/models/decimal/index.ts"() {
80288
+ "../packages/models/src/decimal/index.ts"() {
80178
80289
  "use strict";
80179
80290
  init_decimal_math();
80180
80291
  }
80181
80292
  });
80182
80293
 
80183
- // ../src/models/members/read-class-member.ts
80294
+ // ../packages/models/src/members/read-class-member.ts
80184
80295
  function readClassMember(args) {
80185
80296
  const { member, schemaKey } = args;
80186
80297
  const declaration = member.kind !== 10 /* NSProperty */ && member.defaultValue != null ? member.defaultValue : void 0;
@@ -80199,16 +80310,16 @@ function readClassMember(args) {
80199
80310
  return { kind: "missing" };
80200
80311
  }
80201
80312
  var init_read_class_member = __esm({
80202
- "../src/models/members/read-class-member.ts"() {
80313
+ "../packages/models/src/members/read-class-member.ts"() {
80203
80314
  "use strict";
80204
80315
  init_member_kinds();
80205
80316
  }
80206
80317
  });
80207
80318
 
80208
- // ../src/runtime/neoscript/NeoScriptScope.ts
80319
+ // ../packages/neoscript-runtime/src/neoscript/NeoScriptScope.ts
80209
80320
  var NeoScriptScope;
80210
80321
  var init_NeoScriptScope = __esm({
80211
- "../src/runtime/neoscript/NeoScriptScope.ts"() {
80322
+ "../packages/neoscript-runtime/src/neoscript/NeoScriptScope.ts"() {
80212
80323
  "use strict";
80213
80324
  NeoScriptScope = class {
80214
80325
  constructor(parent = null, initialBindings) {
@@ -80284,7 +80395,7 @@ var init_NeoScriptScope = __esm({
80284
80395
  }
80285
80396
  });
80286
80397
 
80287
- // ../src/runtime/neoscript/evaluateNSGetter.ts
80398
+ // ../packages/neoscript-runtime/src/neoscript/evaluateNSGetter.ts
80288
80399
  function isCatchableNeoScriptRuntimeError(error) {
80289
80400
  return error instanceof NSGetterRuntimeError && !(error instanceof UncompiledInitializerRuntimeError) && !(error instanceof PendingInitializerDependency) && !(error instanceof NonCatchableNSGetterRuntimeError);
80290
80401
  }
@@ -91828,7 +91939,7 @@ function collectionEntryUsesReferenceResolution(collection, key, ctx) {
91828
91939
  }
91829
91940
  var DELEGATE_LEXICAL_THIS, DELEGATE_LEXICAL_ROOT, NonCatchableNSGetterRuntimeError, NativeFunctionDelegateUnavailableError, CorruptNeoScriptIRError, NeoScriptResourceLimitError, NeoScriptWallClockTimeoutError, DEFAULT_NEO_SCRIPT_EXECUTION_BUDGET_LIMITS, liveListIndexesByProject, evaluatorOwnershipCachesByBase, MAX_CONSTRUCTION_DEPTH, MAX_LOOP_ITERATIONS, resolutionCacheByMembers, NO_SCHEMA_REVISION, LazyValueOverlay, READONLY_FOREACH_BINDING_ERROR, READONLY_CATCH_BINDING_ERROR, DIALOGUE_CONTEXT_PARAMETER_ID, NS_MATH_OP_NAMES, DOUBLE_INTEGRAL_MAGNITUDE, EMPTY_SUPPLIED_CONSTRUCTOR_FIELDS;
91830
91941
  var init_evaluateNSGetter = __esm({
91831
- "../src/runtime/neoscript/evaluateNSGetter.ts"() {
91942
+ "../packages/neoscript-runtime/src/neoscript/evaluateNSGetter.ts"() {
91832
91943
  "use strict";
91833
91944
  init_debug();
91834
91945
  init_core();
@@ -92041,7 +92152,7 @@ var init_evaluateNSGetter = __esm({
92041
92152
  }
92042
92153
  });
92043
92154
 
92044
- // ../src/runtime/neoscript/evaluateInitializer.ts
92155
+ // ../packages/neoscript-runtime/src/neoscript/evaluateInitializer.ts
92045
92156
  function sharedHeadlessResolver(overlay) {
92046
92157
  const base = overlay.base;
92047
92158
  if (base.databaseVM !== void 0) return void 0;
@@ -92635,7 +92746,7 @@ function evaluateMemberInitializer(args) {
92635
92746
  }
92636
92747
  var evaluatorLookupsByDocument, headlessResolversByLookupKey, indexedEvaluatorLookupsByDocument;
92637
92748
  var init_evaluateInitializer = __esm({
92638
- "../src/runtime/neoscript/evaluateInitializer.ts"() {
92749
+ "../packages/neoscript-runtime/src/neoscript/evaluateInitializer.ts"() {
92639
92750
  "use strict";
92640
92751
  init_NSGetterRuntimeError();
92641
92752
  init_declaration_default_source();
@@ -92655,7 +92766,7 @@ var init_evaluateInitializer = __esm({
92655
92766
  }
92656
92767
  });
92657
92768
 
92658
- // ../src/database/initializer-identifiers.ts
92769
+ // ../packages/neoscript-runtime/src/values/initializer-identifiers.ts
92659
92770
  function initializerReferencedIdentifiers(source) {
92660
92771
  let expression;
92661
92772
  try {
@@ -92688,13 +92799,13 @@ function initializerReferencesAnyIdentifier(source, names) {
92688
92799
  return false;
92689
92800
  }
92690
92801
  var init_initializer_identifiers = __esm({
92691
- "../src/database/initializer-identifiers.ts"() {
92802
+ "../packages/neoscript-runtime/src/values/initializer-identifiers.ts"() {
92692
92803
  "use strict";
92693
92804
  init_executable_parser();
92694
92805
  }
92695
92806
  });
92696
92807
 
92697
- // ../src/runtime/initializer-materialization.ts
92808
+ // ../packages/neoscript-runtime/src/initializer-materialization.ts
92698
92809
  function declarationInitializerContext(document) {
92699
92810
  const key = initializerEvaluatorCacheKey(document);
92700
92811
  const revision = initializerEvaluatorCacheRevision(document);
@@ -92925,7 +93036,7 @@ function materializeMemberDefaultValue(args) {
92925
93036
  }
92926
93037
  var declarationInitializerContextByDocument;
92927
93038
  var init_initializer_materialization = __esm({
92928
- "../src/runtime/initializer-materialization.ts"() {
93039
+ "../packages/neoscript-runtime/src/initializer-materialization.ts"() {
92929
93040
  "use strict";
92930
93041
  init_unattributable_reads();
92931
93042
  init_deep_clone_plain_data();
@@ -92941,7 +93052,7 @@ var init_initializer_materialization = __esm({
92941
93052
  }
92942
93053
  });
92943
93054
 
92944
- // ../src/runtime/virtual-instance-graph.ts
93055
+ // ../packages/neoscript-runtime/src/virtual-instance-graph.ts
92945
93056
  function buildVirtualInstanceMaterializedIndex(args) {
92946
93057
  const rowsById = new Map(
92947
93058
  (args.materializedRows ?? args.document.values).map((row) => [row.id, row])
@@ -95976,14 +96087,13 @@ function assertStoredConstructionStamp(root, classId = root.classId) {
95976
96087
  }
95977
96088
  var KEPT_ROW_SAMPLE_LIMIT, CORPUS_SCANNING_MEMBER_KINDS, VirtualExpansionUnsupportedError, ROOT_PATH, OpenGenericComparisonError, SYNTHETIC_LINEAGE_PREFIXES, resolverDocumentsByDocument;
95978
96089
  var init_virtual_instance_graph = __esm({
95979
- "../src/runtime/virtual-instance-graph.ts"() {
96090
+ "../packages/neoscript-runtime/src/virtual-instance-graph.ts"() {
95980
96091
  "use strict";
95981
96092
  init_listener_endpoint_projection();
95982
96093
  init_overlay_readonly_map();
95983
96094
  init_member_change_listeners();
95984
96095
  init_initializer_dependencies();
95985
96096
  init_constructor_argument_ownership();
95986
- init_classes();
95987
96097
  init_constructor_parameter_settlement();
95988
96098
  init_generics();
95989
96099
  init_inheritance();
@@ -95992,10 +96102,8 @@ var init_virtual_instance_graph = __esm({
95992
96102
  init_members();
95993
96103
  init_instance_provenance();
95994
96104
  init_member_value_id();
95995
- init_packed_value_encoding();
95996
96105
  init_stored_value_placement_index();
95997
96106
  init_unordered_list_membership();
95998
- init_neoscript_types();
95999
96107
  init_neoscript_guards();
96000
96108
  init_project_schema_index();
96001
96109
  init_initializer_context();
@@ -96021,7 +96129,7 @@ var init_virtual_instance_graph = __esm({
96021
96129
  }
96022
96130
  });
96023
96131
 
96024
- // ../src/runtime/listener-endpoint-projection.ts
96132
+ // ../packages/neoscript-runtime/src/listener-endpoint-projection.ts
96025
96133
  function projectListenerEndpoint(args) {
96026
96134
  const { descriptor } = args;
96027
96135
  if (!descriptor.pathKey.startsWith("$/")) return void 0;
@@ -96048,7 +96156,7 @@ function projectListenerEndpoint(args) {
96048
96156
  return claim(descriptor.pathKey) === args.id ? node : void 0;
96049
96157
  }
96050
96158
  var init_listener_endpoint_projection = __esm({
96051
- "../src/runtime/listener-endpoint-projection.ts"() {
96159
+ "../packages/neoscript-runtime/src/listener-endpoint-projection.ts"() {
96052
96160
  "use strict";
96053
96161
  init_virtual_instance_graph();
96054
96162
  }
@@ -96655,7 +96763,7 @@ var init_listener_emission = __esm({
96655
96763
  }
96656
96764
  });
96657
96765
 
96658
- // ../src/runtime/effective-value-comparison.ts
96766
+ // ../packages/neoscript-runtime/src/effective-value-comparison.ts
96659
96767
  function createEffectiveValueComparator() {
96660
96768
  const pairs = /* @__PURE__ */ new WeakMap();
96661
96769
  const keys = /* @__PURE__ */ new WeakMap();
@@ -96736,7 +96844,7 @@ function effectiveValuesEqual(left, right) {
96736
96844
  return createEffectiveValueComparator()(left, right) === 0;
96737
96845
  }
96738
96846
  var init_effective_value_comparison = __esm({
96739
- "../src/runtime/effective-value-comparison.ts"() {
96847
+ "../packages/neoscript-runtime/src/effective-value-comparison.ts"() {
96740
96848
  "use strict";
96741
96849
  }
96742
96850
  });
@@ -97020,7 +97128,7 @@ var init_compile = __esm({
97020
97128
  }
97021
97129
  });
97022
97130
 
97023
- // ../src/database/variant-value-graph.ts
97131
+ // ../packages/neoscript-runtime/src/values/variant-value-graph.ts
97024
97132
  function variantRootMemberId(variantId) {
97025
97133
  return `variant-root:${variantId}`;
97026
97134
  }
@@ -97220,10 +97328,9 @@ function withVariantPlacementRoots(document) {
97220
97328
  }
97221
97329
  var NO_PLACEMENT_ROOTS, VARIANT_ROOT_POSITION;
97222
97330
  var init_variant_value_graph = __esm({
97223
- "../src/database/variant-value-graph.ts"() {
97331
+ "../packages/neoscript-runtime/src/values/variant-value-graph.ts"() {
97224
97332
  "use strict";
97225
97333
  init_members();
97226
- init_classes();
97227
97334
  init_core();
97228
97335
  init_constructor_argument_ownership();
97229
97336
  NO_PLACEMENT_ROOTS = [];
@@ -97233,7 +97340,7 @@ var init_variant_value_graph = __esm({
97233
97340
  }
97234
97341
  });
97235
97342
 
97236
- // ../src/models/variants/variants.ts
97343
+ // ../packages/models/src/variants/variants.ts
97237
97344
  function isNonEmptyString2(value) {
97238
97345
  if (typeof value !== "string") return false;
97239
97346
  return value.length > 0;
@@ -97265,7 +97372,7 @@ function isNeoClassVariantFolder(value) {
97265
97372
  }
97266
97373
  var NEO_VARIANT_INITIALIZE_SCHEMA_KEY, NEO_VARIANT_APPLY_SCHEMA_KEY, NEO_VARIANT_OVERRIDES_SCHEMA_KEY, NEO_VARIANT_CHILD_OVERRIDES_SCHEMA_KEY;
97267
97374
  var init_variants = __esm({
97268
- "../src/models/variants/variants.ts"() {
97375
+ "../packages/models/src/variants/variants.ts"() {
97269
97376
  "use strict";
97270
97377
  NEO_VARIANT_INITIALIZE_SCHEMA_KEY = "Initialize";
97271
97378
  NEO_VARIANT_APPLY_SCHEMA_KEY = "Apply";
@@ -97274,7 +97381,7 @@ var init_variants = __esm({
97274
97381
  }
97275
97382
  });
97276
97383
 
97277
- // ../src/database/canonical-json.ts
97384
+ // ../packages/neoscript-runtime/src/values/canonical-json.ts
97278
97385
  function canonicalJsonStringify(value) {
97279
97386
  return JSON.stringify(toCanonicalJsonValue(value));
97280
97387
  }
@@ -97319,13 +97426,13 @@ function toCanonicalJsonValue(value) {
97319
97426
  return canonicalObject;
97320
97427
  }
97321
97428
  var init_canonical_json = __esm({
97322
- "../src/database/canonical-json.ts"() {
97429
+ "../packages/neoscript-runtime/src/values/canonical-json.ts"() {
97323
97430
  "use strict";
97324
97431
  init_value_comparison();
97325
97432
  }
97326
97433
  });
97327
97434
 
97328
- // ../src/runtime/effective-value-reader.ts
97435
+ // ../packages/neoscript-runtime/src/effective-value-reader.ts
97329
97436
  function rootReadScope(document) {
97330
97437
  const cached = rootReadScopes.get(document);
97331
97438
  if (cached !== void 0 && cached.members === document.members && cached.values === document.values && cached.variants === document.variants) {
@@ -97601,7 +97708,7 @@ function isAggregateTypeInfo2(type) {
97601
97708
  }
97602
97709
  var rootReadScopes, EffectiveValueReader;
97603
97710
  var init_effective_value_reader = __esm({
97604
- "../src/runtime/effective-value-reader.ts"() {
97711
+ "../packages/neoscript-runtime/src/effective-value-reader.ts"() {
97605
97712
  "use strict";
97606
97713
  init_canonical_json();
97607
97714
  init_effective_value_comparison();
@@ -98009,7 +98116,7 @@ var init_effective_value_reader = __esm({
98009
98116
  }
98010
98117
  });
98011
98118
 
98012
- // ../src/runtime/virtual-instance-values.ts
98119
+ // ../packages/neoscript-runtime/src/virtual-instance-values.ts
98013
98120
  function expandStoredInstance2(args) {
98014
98121
  return expandStoredInstance({
98015
98122
  ...args,
@@ -98035,7 +98142,7 @@ function resolveStoredClassValue2(args) {
98035
98142
  });
98036
98143
  }
98037
98144
  var init_virtual_instance_values = __esm({
98038
- "../src/runtime/virtual-instance-values.ts"() {
98145
+ "../packages/neoscript-runtime/src/virtual-instance-values.ts"() {
98039
98146
  "use strict";
98040
98147
  init_evaluateInitializer();
98041
98148
  init_virtual_instance_graph();
@@ -98131,9 +98238,7 @@ function compileDelegateClosureValue(code, signature) {
98131
98238
  var init_compile_delegate_closure = __esm({
98132
98239
  "../src/database/neoscript/compile-delegate-closure.ts"() {
98133
98240
  "use strict";
98134
- init_members();
98135
98241
  init_neoscript_guards();
98136
- init_neoscript_types();
98137
98242
  init_compile();
98138
98243
  }
98139
98244
  });
@@ -98977,7 +99082,7 @@ var init_document_initializer_compiler = __esm({
98977
99082
  }
98978
99083
  });
98979
99084
 
98980
- // ../src/runtime/materialize-values.ts
99085
+ // ../packages/neoscript-runtime/src/materialize-values.ts
98981
99086
  function materializeInitializerValue2(args) {
98982
99087
  return materializeInitializerValue({
98983
99088
  ...args,
@@ -98985,7 +99090,7 @@ function materializeInitializerValue2(args) {
98985
99090
  });
98986
99091
  }
98987
99092
  var init_materialize_values = __esm({
98988
- "../src/runtime/materialize-values.ts"() {
99093
+ "../packages/neoscript-runtime/src/materialize-values.ts"() {
98989
99094
  "use strict";
98990
99095
  init_evaluateInitializer();
98991
99096
  init_initializer_materialization();
@@ -99113,7 +99218,7 @@ var init_project_read_base = __esm({
99113
99218
  }
99114
99219
  });
99115
99220
 
99116
- // ../src/models/dialogue/dialogue-types.ts
99221
+ // ../packages/models/src/dialogue/dialogue-types.ts
99117
99222
  function isNonArrayObject(value) {
99118
99223
  if (!isRequiredType(value, isObject)) return false;
99119
99224
  return !Array.isArray(value);
@@ -99410,18 +99515,17 @@ function isDialogue(value) {
99410
99515
  return isDialogueProps(value);
99411
99516
  }
99412
99517
  var init_dialogue_types2 = __esm({
99413
- "../src/models/dialogue/dialogue-types.ts"() {
99518
+ "../packages/models/src/dialogue/dialogue-types.ts"() {
99414
99519
  "use strict";
99415
99520
  init_core_types();
99416
99521
  init_structural_narrow();
99417
- init_member_kind_enum();
99418
99522
  init_logic_types();
99419
99523
  init_neoscript_guards();
99420
99524
  init_dialogue_source_identifiers();
99421
99525
  }
99422
99526
  });
99423
99527
 
99424
- // ../src/models/dialogue/priority-types.ts
99528
+ // ../packages/models/src/dialogue/priority-types.ts
99425
99529
  function isPriorityTypeBase(value) {
99426
99530
  const v = value;
99427
99531
  if (typeof v !== "object") return false;
@@ -99462,7 +99566,7 @@ function isPriorityGroup(value) {
99462
99566
  }
99463
99567
  var DEFAULT_PRIORITY_OPTION_IDS, DefaultPriorityGroup;
99464
99568
  var init_priority_types = __esm({
99465
- "../src/models/dialogue/priority-types.ts"() {
99569
+ "../packages/models/src/dialogue/priority-types.ts"() {
99466
99570
  "use strict";
99467
99571
  init_core_types();
99468
99572
  DEFAULT_PRIORITY_OPTION_IDS = {
@@ -100755,7 +100859,7 @@ var init_project_document_read = __esm({
100755
100859
  }
100756
100860
  });
100757
100861
 
100758
- // ../src/models/localization/localized-text-create-envelope.ts
100862
+ // ../packages/models/src/localization/localized-text-create-envelope.ts
100759
100863
  function completeLocalizedTextCreateEnvelope(data, config) {
100760
100864
  const text = asUnknownRecord(data);
100761
100865
  if (text === null) return data;
@@ -100810,7 +100914,7 @@ function asUnknownRecord(value) {
100810
100914
  return value;
100811
100915
  }
100812
100916
  var init_localized_text_create_envelope = __esm({
100813
- "../src/models/localization/localized-text-create-envelope.ts"() {
100917
+ "../packages/models/src/localization/localized-text-create-envelope.ts"() {
100814
100918
  "use strict";
100815
100919
  init_localization_types();
100816
100920
  }
@@ -101626,7 +101730,6 @@ var init_neo_script_recompile_scope = __esm({
101626
101730
  init_lexer();
101627
101731
  init_generated_csharp_identifiers();
101628
101732
  init_dialogue_group_language();
101629
- init_member_kind_enum();
101630
101733
  init_member_kinds();
101631
101734
  init_inheritance();
101632
101735
  init_effective_storage();
@@ -102614,7 +102717,6 @@ var UNIVERSAL_SEARCH_MAX_SUBTITLE_BYTES, utf8Encoder;
102614
102717
  var init_universal_search_projection = __esm({
102615
102718
  "../src/models/search/universal-search-projection.ts"() {
102616
102719
  "use strict";
102617
- init_classes();
102618
102720
  UNIVERSAL_SEARCH_MAX_SUBTITLE_BYTES = 512;
102619
102721
  utf8Encoder = new TextEncoder();
102620
102722
  }
@@ -103015,7 +103117,6 @@ var init_valueHeadPlacementGraph = __esm({
103015
103117
  init_classes();
103016
103118
  init_member_kinds();
103017
103119
  init_universal_search_projection();
103018
- init_member_kinds();
103019
103120
  }
103020
103121
  });
103021
103122
 
@@ -103896,7 +103997,6 @@ var init_packed_value_write_fold = __esm({
103896
103997
  init_project();
103897
103998
  init_member_kinds();
103898
103999
  init_effective_distribution();
103899
- init_member_subtree_distribution();
103900
104000
  init_packed_value_encoding();
103901
104001
  init_canonical_json();
103902
104002
  init_constructor_argument_ownership();
@@ -104127,9 +104227,6 @@ var init_project_version_relation_sweep_trigger = __esm({
104127
104227
  var init_packed_root_merge = __esm({
104128
104228
  "../src/database/packed-root-merge.ts"() {
104129
104229
  "use strict";
104130
- init_member_kinds();
104131
- init_packed_value_encoding();
104132
- init_project();
104133
104230
  }
104134
104231
  });
104135
104232
 
@@ -104148,8 +104245,6 @@ var init_immediate_commit_rules = __esm({
104148
104245
  "../src/database/immediate-commit-rules.ts"() {
104149
104246
  "use strict";
104150
104247
  init_core();
104151
- init_member_kinds();
104152
- init_packed_value_encoding();
104153
104248
  init_packed_root_merge();
104154
104249
  init_project_record_semantics();
104155
104250
  WORLD_LAYER_LINK_KINDS = /* @__PURE__ */ new Set([
@@ -107045,7 +107140,6 @@ var init_project_commit_preparation_scoped_loader = __esm({
107045
107140
  init_primary_localized_text_writes();
107046
107141
  init_localization_types();
107047
107142
  init_member_localization();
107048
- init_member_kind_enum();
107049
107143
  init_members();
107050
107144
  init_inheritance();
107051
107145
  init_core();
@@ -107371,7 +107465,6 @@ var init_dialogue_context_resolver = __esm({
107371
107465
  "../src/models/dialogue-context-resolver.ts"() {
107372
107466
  "use strict";
107373
107467
  init_member_kinds();
107374
- init_dialogue_group_types();
107375
107468
  init_neoscript_types();
107376
107469
  }
107377
107470
  });
@@ -107725,7 +107818,6 @@ function isPrimitiveTextVariableType(typeInfo) {
107725
107818
  var init_dialogue_logic_compile_pure = __esm({
107726
107819
  "../src/database/dialogue-logic-compile-pure.ts"() {
107727
107820
  "use strict";
107728
- init_members();
107729
107821
  init_logic_types();
107730
107822
  init_neoscript();
107731
107823
  init_dialogue_context_resolver2();
@@ -107733,15 +107825,14 @@ var init_dialogue_logic_compile_pure = __esm({
107733
107825
  }
107734
107826
  });
107735
107827
 
107736
- // ../src/runtime/neoscript/index.ts
107828
+ // ../packages/neoscript-runtime/src/neoscript/index.ts
107737
107829
  var init_neoscript2 = __esm({
107738
- "../src/runtime/neoscript/index.ts"() {
107830
+ "../packages/neoscript-runtime/src/neoscript/index.ts"() {
107739
107831
  "use strict";
107740
107832
  init_NSGetterRuntimeError();
107741
107833
  init_evaluateNSGetter();
107742
107834
  init_evaluateInitializer();
107743
107835
  init_initializer_context();
107744
- init_getter_subscriptions();
107745
107836
  }
107746
107837
  });
107747
107838
 
@@ -109114,7 +109205,7 @@ var init_project_migration_member_listeners = __esm({
109114
109205
  }
109115
109206
  });
109116
109207
 
109117
- // ../src/runtime/tile-class-conversion.ts
109208
+ // ../packages/neoscript-runtime/src/tile-class-conversion.ts
109118
109209
  function planTileClassConversion(args) {
109119
109210
  if (args.storedRoot.classId === args.targetClassId) {
109120
109211
  return { nextRoot: args.storedRoot, creates: [] };
@@ -109172,7 +109263,7 @@ function record6(value) {
109172
109263
  return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
109173
109264
  }
109174
109265
  var init_tile_class_conversion = __esm({
109175
- "../src/runtime/tile-class-conversion.ts"() {
109266
+ "../packages/neoscript-runtime/src/tile-class-conversion.ts"() {
109176
109267
  "use strict";
109177
109268
  init_instance_provenance();
109178
109269
  init_virtual_instance_values();
@@ -109440,15 +109531,8 @@ function compileProjectMigrationAction(document, migration) {
109440
109531
  var init_project_migration_runner = __esm({
109441
109532
  "../src/database/project-migration-runner.ts"() {
109442
109533
  "use strict";
109443
- init_evaluateNSGetter();
109444
109534
  init_project_migration_member_listeners();
109445
109535
  init_compiler_adapter();
109446
- init_neoscript2();
109447
- init_members();
109448
- init_packed_value_encoding();
109449
- init_project_root_members();
109450
- init_virtual_instance_values();
109451
- init_tile_class_conversion();
109452
109536
  init_project_version_intents();
109453
109537
  init_compile_ns_property();
109454
109538
  init_project_migration_created_values();
@@ -109774,11 +109858,6 @@ var SourceBodyCompileError, VOID_ACTION_TYPE_INFO, BOOL_TYPE_INFO, STRING_TYPE_I
109774
109858
  var init_general_function_call_ir_source_recompile = __esm({
109775
109859
  "../src/database/general-function-call-ir-source-recompile.ts"() {
109776
109860
  "use strict";
109777
- init_members();
109778
- init_core();
109779
- init_dialogue_types2();
109780
- init_logic_types();
109781
- init_inheritance();
109782
109861
  init_project_content_hash();
109783
109862
  init_project_document_read();
109784
109863
  init_compile_ns_property();
@@ -109786,7 +109865,6 @@ var init_general_function_call_ir_source_recompile = __esm({
109786
109865
  init_dialogue_logic_compile_pure();
109787
109866
  init_project_migration_runner();
109788
109867
  init_compiler_adapter();
109789
- init_neoscript();
109790
109868
  init_dialogue_node_index();
109791
109869
  init_strict_ir();
109792
109870
  init_neo_script_derived_bodies();
@@ -116588,7 +116666,6 @@ var init_user_delegate_target_validation = __esm({
116588
116666
  "../src/database/user-delegate-target-validation.ts"() {
116589
116667
  "use strict";
116590
116668
  init_member_kinds();
116591
- init_member_storage();
116592
116669
  init_effective_storage();
116593
116670
  init_project_root_members();
116594
116671
  init_project_schema_index();
@@ -116684,7 +116761,6 @@ var init_animation_clips = __esm({
116684
116761
  init_member_kinds();
116685
116762
  init_structured_leaf_fields();
116686
116763
  init_effective_storage();
116687
- init_member_storage();
116688
116764
  init_neoscript_types();
116689
116765
  init_neoscript_guards();
116690
116766
  init_members();
@@ -118258,7 +118334,6 @@ var init_projectVariantValidation = __esm({
118258
118334
  "use strict";
118259
118335
  init_generated_csharp_identifiers();
118260
118336
  init_project_source_variants();
118261
- init_classes();
118262
118337
  VARIANT_WORLD_KIND = "variant";
118263
118338
  VARIANT_FOLDER_WORLD_KIND = "variantFolder";
118264
118339
  LOOKUP_VARIANT_WORLD_KIND = "lookupVariant";
@@ -120836,7 +120911,6 @@ var init_projectInterfaceValidation = __esm({
120836
120911
  init_generated_csharp_identifiers();
120837
120912
  init_project_source_identifiers();
120838
120913
  init_classes();
120839
- init_interface_types();
120840
120914
  init_member_kinds();
120841
120915
  init_float32();
120842
120916
  init_stored_value_shape();
@@ -121469,8 +121543,6 @@ var SYSTEM_OWNED_OPERATIONS;
121469
121543
  var init_reserved_record_id_validation = __esm({
121470
121544
  "../src/database/reserved-record-id-validation.ts"() {
121471
121545
  "use strict";
121472
- init_system_record_id();
121473
- init_world_system_classes();
121474
121546
  SYSTEM_OWNED_OPERATIONS = /* @__PURE__ */ new Set([
121475
121547
  "migration",
121476
121548
  "version-create"
@@ -126739,7 +126811,8 @@ function mergedOverStoredRow(base, lowered) {
126739
126811
  if ("action" in argument2) continue;
126740
126812
  const stored = storedArgs[key];
126741
126813
  if (!isObjectRecord2(stored)) continue;
126742
- if (stored.code !== argument2.code) continue;
126814
+ if (typeof stored.code !== "string") continue;
126815
+ if (!sameNeoScriptTokens(stored.code, argument2.code)) continue;
126743
126816
  if (!("action" in stored)) continue;
126744
126817
  preserved ??= { ...loweredArgs };
126745
126818
  preserved[key] = stored;
@@ -127084,6 +127157,27 @@ function drainValueReferenceObligationsV4(state, manifest, options) {
127084
127157
  ...collectionValueObligations(manifest),
127085
127158
  ...options.registry.referenceObligations
127086
127159
  ]) {
127160
+ if (obligation.kind === "reference" && options.unavailableReferenceMemberIds?.has(obligation.memberId))
127161
+ continue;
127162
+ if (options.unavailableValueIds?.size) {
127163
+ let targetId;
127164
+ switch (obligation.kind) {
127165
+ case "collectionValue":
127166
+ targetId = obligation.collectionValueId;
127167
+ break;
127168
+ case "constructorProjection":
127169
+ targetId = obligation.targetId;
127170
+ break;
127171
+ case "reference":
127172
+ if (obligation.target.spelling === "id")
127173
+ targetId = obligation.target.id;
127174
+ else if (obligation.target.spelling === "symbol")
127175
+ targetId = obligation.target.resolved.id;
127176
+ break;
127177
+ }
127178
+ if (targetId !== void 0 && options.unavailableValueIds.has(targetId))
127179
+ continue;
127180
+ }
127087
127181
  const failure = settleReferenceObligation(
127088
127182
  context,
127089
127183
  obligation,
@@ -131726,6 +131820,10 @@ function annotationId2(annotations) {
131726
131820
  }
131727
131821
  function addReconstructed(context, recordKind, recordId, fileFields, source, options = {}) {
131728
131822
  const key = `${recordKind}:${recordId}`;
131823
+ const base = context.state[key]?.data;
131824
+ if (recordKind === "value" && isObjectRecord2(base) && isObjectRecord2(fileFields.init) && typeof fileFields.init.code === "string" && matchesStoredInitializer(base, fileFields.init.code)) {
131825
+ fileFields = { ...fileFields, init: base.init };
131826
+ }
131729
131827
  const existing = context.reconstructed.get(key);
131730
131828
  const line = source.range.start.line + 1;
131731
131829
  if (existing !== void 0) {
@@ -134025,6 +134123,7 @@ var INFERRED_GENERIC_CLASS_PREFIX, MEMBER_KIND_DICTIONARY2, MEMBER_KIND_LIST2, M
134025
134123
  var init_value_sources = __esm({
134026
134124
  "src/project-source/value-sources.ts"() {
134027
134125
  "use strict";
134126
+ init_lexer();
134028
134127
  init_codecs();
134029
134128
  init_reference_target_types();
134030
134129
  init_listener_template_graph();
@@ -134039,7 +134138,6 @@ var init_value_sources = __esm({
134039
134138
  init_constructor_argument_ownership();
134040
134139
  init_compile();
134041
134140
  init_variant_value_graph();
134042
- init_classes();
134043
134141
  init_world_system_classes();
134044
134142
  init_members();
134045
134143
  init_instance_provenance();
@@ -136940,26 +137038,94 @@ ${declarations.join("\n\n")}
136940
137038
  }
136941
137039
  function lowerProjectRootSourceV4(state, analysis, manifest, options = {}) {
136942
137040
  const registry = options.registry ?? createValueLowerRegistryV4();
137041
+ const unavailableSlots = /* @__PURE__ */ new Set();
137042
+ const unavailableValueIds = /* @__PURE__ */ new Set();
136943
137043
  const validated = validateProjectRootEnvelopeV4(
136944
137044
  state,
136945
137045
  analysis,
136946
137046
  registry.parsedInitializers
136947
137047
  );
136948
137048
  if (validated === null) {
136949
- return { records: [], memberValueIds: /* @__PURE__ */ new Map(), seeds: /* @__PURE__ */ new Map() };
137049
+ return {
137050
+ records: [],
137051
+ memberValueIds: /* @__PURE__ */ new Map(),
137052
+ seeds: /* @__PURE__ */ new Map(),
137053
+ unavailableSlots,
137054
+ unavailableValueIds
137055
+ };
136950
137056
  }
136951
137057
  const { expected, global, slots } = validated;
136952
- const bindings = expected.map((root, index) => ({
136953
- memberId: root.memberId,
136954
- purpose: "stored",
136955
- initializer: slots[index].initializer,
136956
- source: global.source,
136957
- label: `root.${root.slot.name}`
136958
- }));
136959
- return lowerStoredValueBindingsV4(state, manifest, bindings, {
136960
- analysis,
136961
- registry
137058
+ const initializerStart = global.initializerSource?.range.start;
137059
+ const errors = analysis.diagnostics.filter(
137060
+ (diagnostic) => diagnostic.severity === "error" && diagnostic.uri === global.source.uri
137061
+ );
137062
+ const bindings = expected.flatMap((root, index) => {
137063
+ const slot = slots[index];
137064
+ if (errors.length > 0 && initializerStart !== void 0) {
137065
+ const line = initializerStart.line + slot.start.line - 1;
137066
+ const character = slot.start.column - 1 + (slot.start.line === 1 ? initializerStart.character : 0);
137067
+ const lines = slot.initializer.split("\n");
137068
+ const endLine = line + lines.length - 1;
137069
+ const endCharacter = lines.length === 1 ? character + slot.initializer.length : lines[lines.length - 1].length;
137070
+ if (errors.some(
137071
+ ({ range: { start } }) => (start.line > line || start.line === line && start.character >= character) && (start.line < endLine || start.line === endLine && start.character < endCharacter)
137072
+ )) {
137073
+ unavailableSlots.add(slot.name);
137074
+ collectAuthoredValueIds(
137075
+ parseCachedInitializer(registry.parsedInitializers, slot.initializer),
137076
+ unavailableValueIds
137077
+ );
137078
+ return [];
137079
+ }
137080
+ } else if (errors.length > 0) {
137081
+ unavailableSlots.add(slot.name);
137082
+ collectAuthoredValueIds(
137083
+ parseCachedInitializer(registry.parsedInitializers, slot.initializer),
137084
+ unavailableValueIds
137085
+ );
137086
+ return [];
137087
+ }
137088
+ return [
137089
+ {
137090
+ memberId: root.memberId,
137091
+ purpose: "stored",
137092
+ initializer: slots[index].initializer,
137093
+ source: global.source,
137094
+ label: `root.${root.slot.name}`
137095
+ }
137096
+ ];
136962
137097
  });
137098
+ return {
137099
+ ...lowerStoredValueBindingsV4(state, manifest, bindings, {
137100
+ analysis,
137101
+ registry
137102
+ }),
137103
+ unavailableSlots,
137104
+ unavailableValueIds
137105
+ };
137106
+ }
137107
+ function collectAuthoredValueIds(expression, ids) {
137108
+ const pending = [expression];
137109
+ while (pending.length > 0) {
137110
+ const node = pending.pop();
137111
+ if (Array.isArray(node)) {
137112
+ for (const entry of node) pending.push(entry);
137113
+ continue;
137114
+ }
137115
+ if (!isObjectRecord2(node)) continue;
137116
+ if (node.kind === "annotated" && Array.isArray(node.annotations)) {
137117
+ for (const annotation2 of node.annotations) {
137118
+ if (!isObjectRecord2(annotation2) || annotation2.name !== "id" || !Array.isArray(annotation2.args))
137119
+ continue;
137120
+ const argument2 = annotation2.args[0];
137121
+ if (isObjectRecord2(argument2) && argument2.kind === "litString" && typeof argument2.value === "string")
137122
+ ids.add(argument2.value);
137123
+ }
137124
+ }
137125
+ for (const [key, value] of Object.entries(node)) {
137126
+ if (key !== "pos" && key !== "range") pending.push(value);
137127
+ }
137128
+ }
136963
137129
  }
136964
137130
  function validateProjectRootEnvelopeV4(state, analysis, parsedInitializers) {
136965
137131
  const project = Object.values(state).find(
@@ -137068,7 +137234,8 @@ function resolveRootPathCollectionValuesV4(args) {
137068
137234
  placements,
137069
137235
  rootValues,
137070
137236
  fail2,
137071
- args.resolveVirtualPath
137237
+ args.resolveVirtualPath,
137238
+ args.unavailableSlots
137072
137239
  );
137073
137240
  if (target !== null) resolved.set(member.id, target);
137074
137241
  }
@@ -137107,7 +137274,8 @@ function resolveRootPathVariantFolderCollectionValuesV4(args) {
137107
137274
  placements,
137108
137275
  rootValues,
137109
137276
  fail2,
137110
- args.resolveVirtualPath
137277
+ args.resolveVirtualPath,
137278
+ args.unavailableSlots
137111
137279
  );
137112
137280
  if (target !== null) resolved.set(folder.id, target);
137113
137281
  }
@@ -137145,7 +137313,8 @@ function resolveRootPathDialogueGroupCollectionValuesV4(args) {
137145
137313
  label: String(record7.fileFields.name)
137146
137314
  }
137147
137315
  }),
137148
- args.resolveVirtualPath
137316
+ args.resolveVirtualPath,
137317
+ args.unavailableSlots
137149
137318
  );
137150
137319
  if (target !== null) record7.fileFields.collectionValueId = target;
137151
137320
  }
@@ -137163,7 +137332,7 @@ function rootSlotValueIds(state) {
137163
137332
  }
137164
137333
  return values;
137165
137334
  }
137166
- function walkRootValuePath(path, state, registry, placements, rootValues, fail2, resolveVirtualPath) {
137335
+ function walkRootValuePath(path, state, registry, placements, rootValues, fail2, resolveVirtualPath, unavailableSlots) {
137167
137336
  const segments = path.split(".");
137168
137337
  const slotName = segments[1];
137169
137338
  if (segments[0] !== "root" || slotName === void 0) {
@@ -137172,6 +137341,7 @@ function walkRootValuePath(path, state, registry, placements, rootValues, fail2,
137172
137341
  );
137173
137342
  return null;
137174
137343
  }
137344
+ if (unavailableSlots?.has(slotName)) return null;
137175
137345
  const slotIndex = PROJECT_ROOT_SOURCE_SLOTS.findIndex(
137176
137346
  (slot) => slot.name === slotName
137177
137347
  );
@@ -139215,8 +139385,12 @@ ${statements.join("\n")}
139215
139385
  STATIC_MEMBER_OWNERSHIP_RECOVERY_SOURCE
139216
139386
  );
139217
139387
  }
139388
+ const formatSource = options.formatSource;
139218
139389
  return {
139219
- files,
139390
+ files: formatSource ? files.map((file) => ({
139391
+ ...file,
139392
+ content: formatSource(file.path, file.content)
139393
+ })) : files,
139220
139394
  recordFiles,
139221
139395
  materializedConstructors,
139222
139396
  materializedConstructorOverrideKeys,
@@ -140906,24 +141080,25 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
140906
141080
  diagnostic2.range.start.character + 1,
140907
141081
  diagnostic2.code,
140908
141082
  diagnostic2.severity,
140909
- diagnostic2.range
141083
+ diagnostic2.range,
141084
+ diagnostic2.relatedInformation
140910
141085
  );
140911
141086
  if (positioned.severity === "error") parseErrors.push(positioned);
140912
141087
  else parseWarnings.push(positioned);
140913
141088
  }
140914
141089
  if (analysis.diagnostics.some(
140915
- (diagnostic2) => diagnostic2.code === "duplicate-project-id" && diagnostic2.severity === "error"
141090
+ (diagnostic2) => diagnostic2.severity === "error" && (diagnostic2.code === "duplicate-project-id" || diagnostic2.code === "invalid-project-global-initializer")
140916
141091
  )) {
140917
141092
  return refusedStatus(conflictedFiles, parseErrors, parseWarnings);
140918
141093
  }
140919
141094
  const rootDeclaration = analysis.configuration.globals.find(
140920
141095
  (global) => global.type.name === "Root"
140921
141096
  );
140922
- const rootHasCompilerError = rootDeclaration !== void 0 && analysis.diagnostics.some(
140923
- (error) => error.severity === "error" && error.uri === rootDeclaration.source.uri && sourceRangeContains(rootDeclaration.source.range, error.range.start)
141097
+ const rootHasEnvelopeError = rootDeclaration !== void 0 && analysis.diagnostics.some(
141098
+ (error) => error.severity === "error" && (error.code === "invalid-root-envelope" || error.code === "protected-root-envelope") && error.uri === rootDeclaration.source.uri && sourceRangeContains(rootDeclaration.source.range, error.range.start)
140924
141099
  );
140925
141100
  try {
140926
- if (!rootHasCompilerError) {
141101
+ if (!rootHasEnvelopeError) {
140927
141102
  validateProjectRootEnvelopeV4(
140928
141103
  loweringRecords,
140929
141104
  analysis,
@@ -140956,7 +141131,7 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
140956
141131
  ...analysis,
140957
141132
  configuration: {
140958
141133
  globals: analysis.configuration.globals.filter(
140959
- (global) => global.type.name !== "Root" || rootEnvelopeValid && !rootHasCompilerError
141134
+ (global) => global.type.name !== "Root" || rootEnvelopeValid && !rootHasEnvelopeError
140960
141135
  )
140961
141136
  },
140962
141137
  schema: {
@@ -141159,8 +141334,28 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
141159
141334
  }) : {
141160
141335
  records: [],
141161
141336
  memberValueIds: /* @__PURE__ */ new Map(),
141162
- seeds: /* @__PURE__ */ new Map()
141163
- };
141337
+ seeds: /* @__PURE__ */ new Map(),
141338
+ unavailableSlots: new Set(
141339
+ PROJECT_ROOT_SOURCE_SLOTS.map((slot) => slot.name)
141340
+ ),
141341
+ unavailableValueIds: /* @__PURE__ */ new Set()
141342
+ };
141343
+ const unavailableReferenceMemberIds = /* @__PURE__ */ new Set();
141344
+ if (rootValues.unavailableSlots.size > 0) {
141345
+ for (const member of manifest.members) {
141346
+ if (member.kind !== "lookup") continue;
141347
+ const spelled = member.collectionValueId;
141348
+ if (typeof spelled !== "string" || !spelled.startsWith("__pending__:root-path:") && !rootValues.unavailableValueIds.has(spelled))
141349
+ continue;
141350
+ if (rootValues.unavailableValueIds.has(spelled)) {
141351
+ unavailableReferenceMemberIds.add(member.id);
141352
+ continue;
141353
+ }
141354
+ const slot = spelled.slice("__pending__:root-path:".length).split(".")[1];
141355
+ if (slot !== void 0 && rootValues.unavailableSlots.has(slot))
141356
+ unavailableReferenceMemberIds.add(member.id);
141357
+ }
141358
+ }
141164
141359
  reportPhase("documents-static-root", "Reading variants and dialogues\u2026");
141165
141360
  authoredValueSeeds = new Map([...authoredValueSeeds, ...rootValues.seeds]);
141166
141361
  const rootPathResolutionState = overlayProspectiveSourceRecords(
@@ -141198,6 +141393,7 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
141198
141393
  manifest,
141199
141394
  state: rootPathResolutionState,
141200
141395
  resolveVirtualPath,
141396
+ unavailableSlots: rootValues.unavailableSlots,
141201
141397
  registry: valueLowerRegistry,
141202
141398
  siteForMember: (memberId) => {
141203
141399
  const span2 = sourceByKey.get(recordStateKey("member", memberId))?.span;
@@ -141227,6 +141423,7 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
141227
141423
  manifest,
141228
141424
  state: rootPathResolutionState,
141229
141425
  resolveVirtualPath,
141426
+ unavailableSlots: rootValues.unavailableSlots,
141230
141427
  registry: valueLowerRegistry,
141231
141428
  siteForFolder: (folderId) => {
141232
141429
  const span2 = sourceByKey.get(
@@ -141340,6 +141537,7 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
141340
141537
  manifest,
141341
141538
  state: rootPathResolutionState,
141342
141539
  resolveVirtualPath,
141540
+ unavailableSlots: rootValues.unavailableSlots,
141343
141541
  registry: valueLowerRegistry
141344
141542
  });
141345
141543
  if (collectionBindings !== void 0) {
@@ -141543,6 +141741,8 @@ function computeStatus(workspace, options, conflictedFiles, parseErrors, parseWa
141543
141741
  registry: valueLowerRegistry,
141544
141742
  analysis: projectAnalysisV4,
141545
141743
  deletedValueIds,
141744
+ unavailableReferenceMemberIds,
141745
+ unavailableValueIds: rootValues.unavailableValueIds,
141546
141746
  sourceTextByUri
141547
141747
  }
141548
141748
  );
@@ -143007,6 +143207,7 @@ var ANIMATION_DOCUMENT_RECORD_KINDS, ANIMATION_REPLAY_RECORD_KINDS, PROSPECTIVE_
143007
143207
  var init_workspace_status_core = __esm({
143008
143208
  "src/project-source/workspace-status-core.ts"() {
143009
143209
  "use strict";
143210
+ init_project_root();
143010
143211
  init_source_text();
143011
143212
  init_runtime_diagnostic();
143012
143213
  init_NSGetterRuntimeError();
@@ -143473,6 +143674,7 @@ var init_dialogue_status_cache = __esm({
143473
143674
  // node_modules/ignore/index.js
143474
143675
  var require_ignore = __commonJS({
143475
143676
  "node_modules/ignore/index.js"(exports, module) {
143677
+ "use strict";
143476
143678
  function makeArray(subject) {
143477
143679
  return Array.isArray(subject) ? subject : [subject];
143478
143680
  }
@@ -145877,7 +146079,8 @@ function projectStatusJsonV4(status, options) {
145877
146079
  code: error.code ?? null,
145878
146080
  severity: error.severity,
145879
146081
  blocking: isBlockingSchemaSourceError(error),
145880
- message: error.message
146082
+ message: error.message,
146083
+ ...error.relatedInformation?.length ? { relatedInformation: error.relatedInformation } : {}
145881
146084
  })
145882
146085
  ),
145883
146086
  records: status.changes.map(
@@ -145965,6 +146168,52 @@ var init_status_output = __esm({
145965
146168
  }
145966
146169
  });
145967
146170
 
146171
+ // ../packages/neoscript-language/src/node-format-options.ts
146172
+ import { parseSync } from "editorconfig";
146173
+ function readNeoScriptFormatOptions(path, fallback = {}, cache) {
146174
+ const config = parseSync(path, cache ? { cache } : {});
146175
+ const indentSize = config.indent_size === "tab" ? config.tab_width : config.indent_size;
146176
+ const options = {
146177
+ ...DEFAULT_NEO_SCRIPT_FORMAT_OPTIONS,
146178
+ ...fallback,
146179
+ ...config.indent_style === "tab" || config.indent_style === "space" ? { insertSpaces: config.indent_style === "space" } : {},
146180
+ ...typeof indentSize === "number" && Number.isInteger(indentSize) && indentSize > 0 && indentSize <= 100 ? { tabSize: indentSize } : {},
146181
+ ...config.end_of_line === "lf" ? { endOfLine: "\n" } : {},
146182
+ ...config.end_of_line === "crlf" ? { endOfLine: "\r\n" } : {},
146183
+ ...config.end_of_line === "cr" ? { endOfLine: "\r" } : {},
146184
+ ...typeof config.insert_final_newline === "boolean" ? { finalNewline: config.insert_final_newline } : {},
146185
+ ...typeof config.trim_trailing_whitespace === "boolean" ? { trimTrailingWhitespace: config.trim_trailing_whitespace } : {}
146186
+ };
146187
+ return options;
146188
+ }
146189
+ function createNeoScriptFormatOptionsResolver() {
146190
+ const cache = /* @__PURE__ */ new Map();
146191
+ return (path, fallback) => readNeoScriptFormatOptions(path, fallback, cache);
146192
+ }
146193
+ var init_node_format_options = __esm({
146194
+ "../packages/neoscript-language/src/node-format-options.ts"() {
146195
+ "use strict";
146196
+ init_formatter();
146197
+ }
146198
+ });
146199
+
146200
+ // src/project-source/workspace-format.ts
146201
+ import { join as join10 } from "node:path";
146202
+ function createWorkspaceSourceFormatter(root) {
146203
+ const optionsFor = createNeoScriptFormatOptionsResolver();
146204
+ return (path, source) => formatNeoScript(source, {
146205
+ ...optionsFor(join10(root, path)),
146206
+ kind: "definition"
146207
+ });
146208
+ }
146209
+ var init_workspace_format = __esm({
146210
+ "src/project-source/workspace-format.ts"() {
146211
+ "use strict";
146212
+ init_formatter();
146213
+ init_node_format_options();
146214
+ }
146215
+ });
146216
+
145968
146217
  // src/project-source/project-file-source-preservation.ts
145969
146218
  function applySourceEdits(source, edits, start = 0, end = source.length) {
145970
146219
  const chunks = [];
@@ -155049,6 +155298,7 @@ function gzipSync(data, opts) {
155049
155298
  var require2, _a, Worker4, isMarkedAsUntransferable, u8, u16, i32, fleb, fdeb, clim, freb, _a, fl, revfl, _b, fd, revfd, rev, x, i, hMap, flt, i, i, i, i, fdt, i, flm, fdm, shft, slc, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, deo, et, dflt, crct, crc, dopt, wbytes, gzh, gzhl, td, tds;
155050
155299
  var init_esm = __esm({
155051
155300
  "../node_modules/fflate/esm/index.mjs"() {
155301
+ "use strict";
155052
155302
  require2 = createRequire("/");
155053
155303
  try {
155054
155304
  _a = require2("worker_threads"), Worker4 = _a.Worker, isMarkedAsUntransferable = _a.isMarkedAsUntransferable;
@@ -155615,7 +155865,6 @@ var init_client_commit_transport = __esm({
155615
155865
  var init_project_version_semver = __esm({
155616
155866
  "../src/database/project-version-semver.ts"() {
155617
155867
  "use strict";
155618
- init_project();
155619
155868
  }
155620
155869
  });
155621
155870
 
@@ -155624,10 +155873,8 @@ var ProjectVersionBumpRequiredError;
155624
155873
  var init_project_version_compatibility = __esm({
155625
155874
  "../src/database/project-version-compatibility.ts"() {
155626
155875
  "use strict";
155627
- init_project();
155628
155876
  init_project_version_semver();
155629
155877
  init_project_version_intents();
155630
- init_internal_record_relations();
155631
155878
  ProjectVersionBumpRequiredError = class extends Error {
155632
155879
  response;
155633
155880
  constructor(response) {
@@ -156029,25 +156276,25 @@ var init_client_commit_submit = __esm({
156029
156276
  import { spawn } from "node:child_process";
156030
156277
  import { createHash as createHash9 } from "node:crypto";
156031
156278
  import { existsSync as existsSync9, readFileSync as readFileSync12, readdirSync as readdirSync3 } from "node:fs";
156032
- import { join as join10, relative as relative5, sep as sep5 } from "node:path";
156279
+ import { join as join11, relative as relative5, sep as sep5 } from "node:path";
156033
156280
  function fingerprintPushInputs(workspace, options = {}) {
156034
156281
  const paths = /* @__PURE__ */ new Set([
156035
- join10(workspace.root, "neo.json"),
156282
+ join11(workspace.root, "neo.json"),
156036
156283
  ...listProjectSourceFilesV4(workspace.root),
156037
156284
  ...options.includeTests === false ? [] : listProjectTestFilesV1(workspace.root),
156038
- ...workspace.config.unityConfigPath === void 0 ? [] : [join10(workspace.root, workspace.config.unityConfigPath)]
156285
+ ...workspace.config.unityConfigPath === void 0 ? [] : [join11(workspace.root, workspace.config.unityConfigPath)]
156039
156286
  ]);
156040
156287
  const visitManaged = (directory) => {
156041
156288
  if (!existsSync9(directory)) return;
156042
156289
  for (const entry of readdirSync3(directory, { withFileTypes: true })) {
156043
156290
  if (entry.isSymbolicLink()) continue;
156044
- const path = join10(directory, entry.name);
156291
+ const path = join11(directory, entry.name);
156045
156292
  if (entry.isDirectory()) visitManaged(path);
156046
156293
  else if (entry.isFile()) paths.add(path);
156047
156294
  }
156048
156295
  };
156049
- visitManaged(join10(workspace.root, "Files", "Images"));
156050
- visitManaged(join10(workspace.root, "Files", "AudioClips"));
156296
+ visitManaged(join11(workspace.root, "Files", "Images"));
156297
+ visitManaged(join11(workspace.root, "Files", "AudioClips"));
156051
156298
  const hash = createHash9("sha256");
156052
156299
  for (const path of [...paths].sort()) {
156053
156300
  const name = relative5(workspace.root, path).split(sep5).join("/");
@@ -156226,7 +156473,7 @@ import {
156226
156473
  writeFileSync as writeFileSync10
156227
156474
  } from "node:fs";
156228
156475
  import { tmpdir } from "node:os";
156229
- import { join as join11 } from "node:path";
156476
+ import { join as join12 } from "node:path";
156230
156477
  async function pullProjectBinariesV4(args) {
156231
156478
  const resolvePath = createWorkspaceSourcePathResolver(args.workspace.root);
156232
156479
  const plans = /* @__PURE__ */ new Map();
@@ -156292,7 +156539,7 @@ async function pullProjectBinariesV4(args) {
156292
156539
  try {
156293
156540
  const stagedPaths = /* @__PURE__ */ new Map();
156294
156541
  if (downloads.length > 0) {
156295
- stagingDirectory = mkdtempSync(join11(tmpdir(), "neo-pull-files-"));
156542
+ stagingDirectory = mkdtempSync(join12(tmpdir(), "neo-pull-files-"));
156296
156543
  const directory = stagingDirectory;
156297
156544
  const client = args.client ?? NeoApiClient.forBaseUrl(args.workspace.config.apiBaseUrl);
156298
156545
  await mapWithConcurrency(
@@ -156310,7 +156557,7 @@ async function pullProjectBinariesV4(args) {
156310
156557
  `Project file ${plan.fileId} content changed while pull was in progress (${plan.remoteDigest} -> ${response.sha256}). Pull again against a stable version head.`
156311
156558
  );
156312
156559
  }
156313
- const stagedPath = join11(directory, String(index));
156560
+ const stagedPath = join12(directory, String(index));
156314
156561
  writeFileSync10(stagedPath, response.bytes);
156315
156562
  stagedPaths.set(plan.fileId, stagedPath);
156316
156563
  }
@@ -156479,7 +156726,7 @@ function fileName(data) {
156479
156726
  }
156480
156727
  function removePreviousConflict(root, state) {
156481
156728
  if (state?.conflict?.artifactPath === void 0) return;
156482
- rmSync6(join11(root, state.conflict.artifactPath), { force: true });
156729
+ rmSync6(join12(root, state.conflict.artifactPath), { force: true });
156483
156730
  }
156484
156731
  var DOWNLOAD_CONCURRENCY;
156485
156732
  var init_project_file_pull = __esm({
@@ -156496,7 +156743,7 @@ var init_project_file_pull = __esm({
156496
156743
  });
156497
156744
 
156498
156745
  // src/project-source/project-file-push.ts
156499
- import { join as join12 } from "node:path";
156746
+ import { join as join13 } from "node:path";
156500
156747
  import { readFileSync as readFileSync14 } from "node:fs";
156501
156748
  import { randomUUID as randomUUID4 } from "node:crypto";
156502
156749
  async function cleanupRejectedProjectFilePushesV4(args) {
@@ -156560,7 +156807,7 @@ function prepareProjectFilePushesV4(args) {
156560
156807
  `Project file ${recordId} has upload bytes but its source change has no record data.`
156561
156808
  );
156562
156809
  }
156563
- const absolute = join12(args.workspace.root, binary.path);
156810
+ const absolute = join13(args.workspace.root, binary.path);
156564
156811
  const bytes = new Uint8Array(readFileSync14(absolute));
156565
156812
  const digest2 = sha256Bytes(bytes);
156566
156813
  if (binary.localSha256 !== null && digest2 !== binary.localSha256) {
@@ -157187,9 +157434,7 @@ function collectNeoScriptFileReferences(roots, files) {
157187
157434
  var init_neoscript_file_references = __esm({
157188
157435
  "../src/models/exports/neoscript-file-references.ts"() {
157189
157436
  "use strict";
157190
- init_member_kind_enum();
157191
157437
  init_neoscript_guards();
157192
- init_neoscript_types();
157193
157438
  }
157194
157439
  });
157195
157440
 
@@ -157563,6 +157808,7 @@ function parseNumberSkeleton(tokens) {
157563
157808
  var DATE_TIME_REGEX, WHITE_SPACE_REGEX, FRACTION_PRECISION_REGEX, SIGNIFICANT_PRECISION_REGEX, INTEGER_WIDTH_REGEX, CONCISE_INTEGER_WIDTH_REGEX;
157564
157809
  var init_icu_skeleton_parser = __esm({
157565
157810
  "../node_modules/@formatjs/icu-skeleton-parser/index.js"() {
157811
+ "use strict";
157566
157812
  DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
157567
157813
  WHITE_SPACE_REGEX = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
157568
157814
  FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
@@ -157741,6 +157987,7 @@ function parse3(message, opts = {}) {
157741
157987
  var ErrorKind, SPACE_SEPARATOR_REGEX, IDENTIFIER_PREFIX_REGEX, timeData, SPACE_SEPARATOR_START_REGEX, SPACE_SEPARATOR_END_REGEX, hasNativeFromEntries, hasTrimStart, hasTrimEnd, fromEntries, trimStart, trimEnd, IDENTIFIER_PREFIX_RE, Parser2;
157742
157988
  var init_icu_messageformat_parser = __esm({
157743
157989
  "../node_modules/@formatjs/icu-messageformat-parser/index.js"() {
157990
+ "use strict";
157744
157991
  init_icu_skeleton_parser();
157745
157992
  ErrorKind = /* @__PURE__ */ (function(ErrorKind2) {
157746
157993
  ErrorKind2[ErrorKind2["EXPECT_ARGUMENT_CLOSING_BRACE"] = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE";
@@ -160510,7 +160757,6 @@ var init_project_unity_export_utils = __esm({
160510
160757
  init_classes();
160511
160758
  init_generics();
160512
160759
  init_core();
160513
- init_files();
160514
160760
  init_localization_types();
160515
160761
  init_members();
160516
160762
  init_project_unity_localization_smart_format();
@@ -160582,7 +160828,7 @@ var init_project_unity_export_utils = __esm({
160582
160828
  }
160583
160829
  });
160584
160830
 
160585
- // ../src/models/interfaces/interface-conformance.ts
160831
+ // ../packages/models/src/interfaces/interface-conformance.ts
160586
160832
  function functionsCompatible(left, right) {
160587
160833
  if (!isInterfaceFunctionMember(left) || !isInterfaceFunctionMember(right)) {
160588
160834
  return false;
@@ -160993,10 +161239,9 @@ function resolveMemberImplementation(schemaClass2, group, context) {
160993
161239
  return { state: "conforming", member, schemaEntry };
160994
161240
  }
160995
161241
  var init_interface_conformance = __esm({
160996
- "../src/models/interfaces/interface-conformance.ts"() {
161242
+ "../packages/models/src/interfaces/interface-conformance.ts"() {
160997
161243
  "use strict";
160998
161244
  init_member_kinds();
160999
- init_member_storage();
161000
161245
  init_classes();
161001
161246
  init_generics();
161002
161247
  init_inheritance();
@@ -168877,7 +169122,6 @@ var init_generate_unity_classes = __esm({
168877
169122
  init_interface_types();
168878
169123
  init_interface_graph();
168879
169124
  init_internal_record_relations();
168880
- init_dialogue_group_types();
168881
169125
  init_inheritance();
168882
169126
  init_neoscript();
168883
169127
  init_unity_codegen_docs();
@@ -169057,7 +169301,6 @@ function buildProjectUnityExport(document, metadata, fileReferenceCache) {
169057
169301
  var init_project_version_contracts = __esm({
169058
169302
  "../src/database/project-version-contracts.ts"() {
169059
169303
  "use strict";
169060
- init_project();
169061
169304
  init_project_unity_export_utils();
169062
169305
  init_unity_codegen_docs();
169063
169306
  init_generate_unity_classes();
@@ -169065,7 +169308,7 @@ var init_project_version_contracts = __esm({
169065
169308
  }
169066
169309
  });
169067
169310
 
169068
- // ../src/models/dialogue/dialogue-diagnostics.ts
169311
+ // ../packages/models/src/dialogue/dialogue-diagnostics.ts
169069
169312
  function buildDialogueSemanticDiagnostics(args) {
169070
169313
  const context = buildDialogueSemanticDiagnosticContext(args);
169071
169314
  const diagnostics = args.dialogues.flatMap(
@@ -171424,7 +171667,7 @@ function optionLabel(option) {
171424
171667
  return option.id;
171425
171668
  }
171426
171669
  var init_dialogue_diagnostics = __esm({
171427
- "../src/models/dialogue/dialogue-diagnostics.ts"() {
171670
+ "../packages/models/src/dialogue/dialogue-diagnostics.ts"() {
171428
171671
  "use strict";
171429
171672
  init_members();
171430
171673
  init_inheritance();
@@ -171432,9 +171675,6 @@ var init_dialogue_diagnostics = __esm({
171432
171675
  init_interface_types();
171433
171676
  init_interface_graph();
171434
171677
  init_neoscript();
171435
- init_dialogue_types2();
171436
- init_dialogue_group_types();
171437
- init_logic_types();
171438
171678
  init_core();
171439
171679
  init_lookup_declared_type();
171440
171680
  init_members();
@@ -172201,7 +172441,6 @@ var init_project_unity_export_diagnostics = __esm({
172201
172441
  "use strict";
172202
172442
  init_project_world_placement_bindings();
172203
172443
  init_dialogue_diagnostics();
172204
- init_dialogue_types2();
172205
172444
  init_members();
172206
172445
  init_core_types();
172207
172446
  init_inheritance();
@@ -172606,14 +172845,14 @@ var init_local_export_preparation = __esm({
172606
172845
  // src/unity-export-artifacts.ts
172607
172846
  import { createHash as createHash11 } from "node:crypto";
172608
172847
  import { readFileSync as readFileSync15 } from "node:fs";
172609
- import { join as join13 } from "node:path";
172848
+ import { join as join14 } from "node:path";
172610
172849
  function hashBytes(bytes) {
172611
172850
  return createHash11("sha256").update(bytes).digest("hex");
172612
172851
  }
172613
172852
  function readUnityExportArtifact(root, hash) {
172614
172853
  if (!/^[a-f0-9]{64}$/.test(hash)) return void 0;
172615
172854
  try {
172616
- const content = readFileSync15(join13(root, ARTIFACTS_PATH, hash));
172855
+ const content = readFileSync15(join14(root, ARTIFACTS_PATH, hash));
172617
172856
  return hashBytes(content) === hash ? content : void 0;
172618
172857
  } catch {
172619
172858
  return void 0;
@@ -172855,10 +173094,10 @@ import {
172855
173094
  unlinkSync as unlinkSync2,
172856
173095
  writeFileSync as writeFileSync11
172857
173096
  } from "node:fs";
172858
- import { basename as basename2, dirname as dirname9, join as join14 } from "node:path";
173097
+ import { basename as basename2, dirname as dirname9, join as join15 } from "node:path";
172859
173098
  function writeUnityFile(path, content) {
172860
173099
  mkdirSync10(dirname9(path), { recursive: true });
172861
- const temporary = join14(
173100
+ const temporary = join15(
172862
173101
  dirname9(path),
172863
173102
  `.${basename2(path)}.${randomUUID5()}.tmp`
172864
173103
  );
@@ -172924,7 +173163,7 @@ function readManifest(path, content = readFileIfExists(path)) {
172924
173163
  return { projectId: data.projectId, codegenRevision, files };
172925
173164
  }
172926
173165
  function unityGeneratedOutputHashes(directory, projectId) {
172927
- const manifestPath = join14(directory, MANIFEST_FILE);
173166
+ const manifestPath = join15(directory, MANIFEST_FILE);
172928
173167
  const manifestBytes = readFileIfExists(manifestPath);
172929
173168
  if (manifestBytes === null) return null;
172930
173169
  const manifest = readManifest(manifestPath, manifestBytes);
@@ -172935,7 +173174,7 @@ function unityGeneratedOutputHashes(directory, projectId) {
172935
173174
  hashes.set(manifestPath, sha256(manifestBytes));
172936
173175
  for (const file of manifest.files) {
172937
173176
  if (file.hash === null) return null;
172938
- const path = join14(directory, file.path);
173177
+ const path = join15(directory, file.path);
172939
173178
  const bytes = readFileIfExists(path);
172940
173179
  if (bytes === null || sha256(bytes) !== file.hash) return null;
172941
173180
  hashes.set(path, file.hash);
@@ -172961,7 +173200,7 @@ function planUnityGeneratedFiles(directory, projectId, files) {
172961
173200
  if (file.content.trim().length === 0)
172962
173201
  throw new Error(`Empty generated C# file: ${file.path}`);
172963
173202
  }
172964
- const manifestPath = join14(directory, MANIFEST_FILE);
173203
+ const manifestPath = join15(directory, MANIFEST_FILE);
172965
173204
  const manifest = readManifest(manifestPath);
172966
173205
  const previousFiles = manifest?.files ?? [];
172967
173206
  const previousById = new Map(previousFiles.map((file) => [file.id, file]));
@@ -172974,23 +173213,23 @@ function planUnityGeneratedFiles(directory, projectId, files) {
172974
173213
  if (incomingById.get(file.id)?.path === file.path && manifest?.projectId === projectId)
172975
173214
  continue;
172976
173215
  operations.push(
172977
- [join14(directory, file.path), null],
172978
- [join14(directory, file.path + ".meta"), null]
173216
+ [join15(directory, file.path), null],
173217
+ [join15(directory, file.path + ".meta"), null]
172979
173218
  );
172980
173219
  }
172981
173220
  operations.push(
172982
- [join14(directory, "NeoGeneratedTypes.cs"), null],
172983
- [join14(directory, "NeoGeneratedTypes.cs.meta"), null]
173221
+ [join15(directory, "NeoGeneratedTypes.cs"), null],
173222
+ [join15(directory, "NeoGeneratedTypes.cs.meta"), null]
172984
173223
  );
172985
173224
  for (const file of files) {
172986
173225
  const old = manifest?.projectId === projectId ? previousById.get(file.id) : void 0;
172987
- const path = join14(directory, file.path);
173226
+ const path = join15(directory, file.path);
172988
173227
  if (old !== void 0 && old.path !== file.path) {
172989
173228
  if (!previousPaths.has(file.path.toLowerCase()) && (existsSync11(path) || existsSync11(path + ".meta")))
172990
173229
  throw new Error(
172991
173230
  `Generated rename destination is not owned by the manifest: ${file.path}`
172992
173231
  );
172993
- const meta = join14(directory, old.path + ".meta");
173232
+ const meta = join15(directory, old.path + ".meta");
172994
173233
  operations.push([
172995
173234
  path + ".meta",
172996
173235
  existsSync11(meta) ? readFileSync16(meta, "utf8") : null
@@ -173069,7 +173308,7 @@ var init_unity_generated_files = __esm({
173069
173308
  // src/export-cache.ts
173070
173309
  import { createHash as createHash14 } from "node:crypto";
173071
173310
  import { readFileSync as readFileSync17, readdirSync as readdirSync4, rmSync as rmSync8 } from "node:fs";
173072
- import { basename as basename3, dirname as dirname10, join as join15, relative as relative6, sep as sep6 } from "node:path";
173311
+ import { basename as basename3, dirname as dirname10, join as join16, relative as relative6, sep as sep6 } from "node:path";
173073
173312
  function readIfExists(path) {
173074
173313
  try {
173075
173314
  return readFileSync17(path);
@@ -173080,10 +173319,10 @@ function readIfExists(path) {
173080
173319
  }
173081
173320
  }
173082
173321
  function isManagedOutput(path, target, jsonDirectories) {
173083
- if (path === join15(target.projectJsonDirectory, "project.json")) return true;
173322
+ if (path === join16(target.projectJsonDirectory, "project.json")) return true;
173084
173323
  if (jsonDirectories.has(dirname10(path)) && basename3(path).endsWith(".json"))
173085
173324
  return true;
173086
- if (path === join15(target.generatedTypesDirectory, "NeoGeneratedFiles.json"))
173325
+ if (path === join16(target.generatedTypesDirectory, "NeoGeneratedFiles.json"))
173087
173326
  return true;
173088
173327
  const generated = relative6(target.generatedTypesDirectory, path).split(sep6).join("/");
173089
173328
  return /^Generated\/[a-zA-Z0-9_%./-]+\.g\.cs$/.test(generated) && generated.split("/").every((part) => part !== "." && part !== ".." && part !== "");
@@ -173178,7 +173417,7 @@ function jsonFiles(directory) {
173178
173417
  function readReceipt(root) {
173179
173418
  try {
173180
173419
  const cache = JSON.parse(
173181
- readFileSync17(join15(root, CACHE_PATH), "utf8")
173420
+ readFileSync17(join16(root, CACHE_PATH), "utf8")
173182
173421
  );
173183
173422
  if (!isObjectRecord2(cache) || typeof cache.hash !== "string") return null;
173184
173423
  if (!isReceipt(cache.receipt)) return null;
@@ -173292,7 +173531,7 @@ var init_export_cache = __esm({
173292
173531
  if (receipt.inputHash !== inputHash) return null;
173293
173532
  if (receipt.exportStateHash !== exportStateHash(state)) return null;
173294
173533
  const directories = /* @__PURE__ */ new Set([
173295
- join15(target.projectJsonDirectory, "Partitions"),
173534
+ join16(target.projectJsonDirectory, "Partitions"),
173296
173535
  target.localizationResourcesDirectory,
173297
173536
  target.localizationStreamingAssetsDirectory
173298
173537
  ]);
@@ -173316,7 +173555,7 @@ var init_export_cache = __esm({
173316
173555
  for (const directory of receipt.jsonDirectories) {
173317
173556
  const expected = new Set(directory.files);
173318
173557
  for (const file of jsonFiles(directory.path))
173319
- if (!expected.has(file)) deletes.push(join15(directory.path, file));
173558
+ if (!expected.has(file)) deletes.push(join16(directory.path, file));
173320
173559
  }
173321
173560
  } catch {
173322
173561
  return null;
@@ -173333,7 +173572,7 @@ var init_export_cache = __esm({
173333
173572
  retained.add(output.hash);
173334
173573
  if (previousHashes.has(output.hash) && !this.artifactsIncomplete)
173335
173574
  continue;
173336
- const artifact = join15(root, ARTIFACTS_PATH, output.hash);
173575
+ const artifact = join16(root, ARTIFACTS_PATH, output.hash);
173337
173576
  const cached = readIfExists(artifact);
173338
173577
  if (cached !== void 0 && hashBytes(cached) === output.hash) continue;
173339
173578
  const content = contents.get(output.path) ?? readIfExists(output.path);
@@ -173341,7 +173580,7 @@ var init_export_cache = __esm({
173341
173580
  writeUnityFile(artifact, content);
173342
173581
  }
173343
173582
  writeUnityFile(
173344
- join15(root, CACHE_PATH),
173583
+ join16(root, CACHE_PATH),
173345
173584
  JSON.stringify({
173346
173585
  hash: hashBytes(JSON.stringify(receipt)),
173347
173586
  receipt
@@ -173349,7 +173588,7 @@ var init_export_cache = __esm({
173349
173588
  );
173350
173589
  for (const hash of previousHashes)
173351
173590
  if (!retained.has(hash))
173352
- rmSync8(join15(root, ARTIFACTS_PATH, hash), { force: true });
173591
+ rmSync8(join16(root, ARTIFACTS_PATH, hash), { force: true });
173353
173592
  this.artifactsIncomplete = false;
173354
173593
  this.root = root;
173355
173594
  this.receipt = receipt;
@@ -173360,9 +173599,9 @@ var init_export_cache = __esm({
173360
173599
 
173361
173600
  // src/export-state.ts
173362
173601
  import { existsSync as existsSync12, readFileSync as readFileSync18 } from "node:fs";
173363
- import { join as join16 } from "node:path";
173602
+ import { join as join17 } from "node:path";
173364
173603
  function readExportState(root) {
173365
- const path = join16(root, EXPORT_STATE_FILE);
173604
+ const path = join17(root, EXPORT_STATE_FILE);
173366
173605
  if (!existsSync12(path)) return null;
173367
173606
  const parsed = JSON.parse(readFileSync18(path, "utf8"));
173368
173607
  if (typeof parsed !== "object" || parsed === null) {
@@ -173430,7 +173669,7 @@ function readStringMap(path, field, value) {
173430
173669
  return map;
173431
173670
  }
173432
173671
  function writeExportState(root, state) {
173433
- const path = join16(root, EXPORT_STATE_FILE);
173672
+ const path = join17(root, EXPORT_STATE_FILE);
173434
173673
  const content = `${JSON.stringify(state)}
173435
173674
  `;
173436
173675
  if (existsSync12(path) && readFileSync18(path, "utf8") === content) return;
@@ -173442,7 +173681,7 @@ var init_export_state = __esm({
173442
173681
  "use strict";
173443
173682
  init_value_comparison();
173444
173683
  init_unity_generated_files();
173445
- EXPORT_STATE_FILE = join16(".neo", "export.json");
173684
+ EXPORT_STATE_FILE = join17(".neo", "export.json");
173446
173685
  }
173447
173686
  });
173448
173687
 
@@ -173510,7 +173749,6 @@ var RECORD_BOOKKEEPING, CONSTRUCTOR_BODIES;
173510
173749
  var init_unity_codegen_fingerprint = __esm({
173511
173750
  "src/unity-codegen-fingerprint.ts"() {
173512
173751
  "use strict";
173513
- init_member_kind_enum();
173514
173752
  init_unity_codegen_revision();
173515
173753
  init_compiler();
173516
173754
  init_registry();
@@ -173536,11 +173774,11 @@ import {
173536
173774
  readdirSync as readdirSync5,
173537
173775
  statSync as statSync3
173538
173776
  } from "node:fs";
173539
- import { dirname as dirname11, join as join17, relative as relative7, resolve as resolve3, sep as sep7 } from "node:path";
173777
+ import { dirname as dirname11, join as join18, relative as relative7, resolve as resolve3, sep as sep7 } from "node:path";
173540
173778
  async function resolveUnityExportTarget(workspace, unityProject) {
173541
173779
  if (unityProject !== null) {
173542
173780
  const root = resolve3(unityProject);
173543
- if (!isDirectory(join17(root, "Assets"))) {
173781
+ if (!isDirectory(join18(root, "Assets"))) {
173544
173782
  throw new Error(
173545
173783
  `--unity-project "${root}" is not a Unity project: it has no Assets/ folder.`
173546
173784
  );
@@ -173564,7 +173802,7 @@ ${candidates.map((path) => ` ${path}`).join("\n")}`
173564
173802
  const assetPath = resolve3(workspace.root, linked);
173565
173803
  const root = findAncestor(
173566
173804
  dirname11(assetPath),
173567
- (directory) => isDirectory(join17(directory, "Assets"))
173805
+ (directory) => isDirectory(join18(directory, "Assets"))
173568
173806
  );
173569
173807
  if (root === null) {
173570
173808
  throw new Error(
@@ -173578,7 +173816,7 @@ ${candidates.map((path) => ` ${path}`).join("\n")}`
173578
173816
  async function linkDetectedConfigAsset(workspace) {
173579
173817
  const root = findAncestor(
173580
173818
  workspace.root,
173581
- (directory) => isDirectory(join17(directory, "Assets")) && existsSync13(join17(directory, "ProjectSettings", "ProjectVersion.txt"))
173819
+ (directory) => isDirectory(join18(directory, "Assets")) && existsSync13(join18(directory, "ProjectSettings", "ProjectVersion.txt"))
173582
173820
  );
173583
173821
  if (root === null) {
173584
173822
  throw new Error(
@@ -173591,7 +173829,7 @@ async function linkDetectedConfigAsset(workspace) {
173591
173829
  );
173592
173830
  const linkLine = (path) => `"unityConfigPath": "${relativeConfigPath(workspace.root, path)}"`;
173593
173831
  if (candidates.length === 0) {
173594
- const found = assets.length === 0 ? `no NeoComposeConfig asset under "${join17(root, "Assets")}"` : `NeoComposeConfig assets for other projects:
173832
+ const found = assets.length === 0 ? `no NeoComposeConfig asset under "${join18(root, "Assets")}"` : `NeoComposeConfig assets for other projects:
173595
173833
  ${assets.map((path) => ` ${path}`).join("\n")}`;
173596
173834
  throw new Error(
173597
173835
  `"${NEO_CONFIG_FILE}" has no "unityConfigPath", and the Unity project "${root}" has ${found}
@@ -173642,7 +173880,7 @@ function readUnityExportTarget(unityProjectRoot, configAssetPath) {
173642
173880
  `Unity config asset "${configAssetPath}" field "${name}": ${normalized.error}`
173643
173881
  );
173644
173882
  }
173645
- return join17(unityProjectRoot, normalized);
173883
+ return join18(unityProjectRoot, normalized);
173646
173884
  };
173647
173885
  const streaming = field("useStreamingAssetsForNonMainLocales");
173648
173886
  if (streaming !== "0" && streaming !== "1") {
@@ -173705,7 +173943,7 @@ function findConfigAssets(unityProjectRoot) {
173705
173943
  const visit = (directory) => {
173706
173944
  for (const entry of readdirSync5(directory, { withFileTypes: true })) {
173707
173945
  if (entry.name.startsWith(".")) continue;
173708
- const path = join17(directory, entry.name);
173946
+ const path = join18(directory, entry.name);
173709
173947
  if (entry.isDirectory()) {
173710
173948
  if (!entry.name.endsWith("~")) visit(path);
173711
173949
  continue;
@@ -173726,7 +173964,7 @@ function findConfigAssets(unityProjectRoot) {
173726
173964
  }
173727
173965
  }
173728
173966
  };
173729
- visit(join17(unityProjectRoot, "Assets"));
173967
+ visit(join18(unityProjectRoot, "Assets"));
173730
173968
  return found.sort();
173731
173969
  }
173732
173970
  function findAncestor(start, matches) {
@@ -173763,7 +174001,7 @@ __export(export_exports, {
173763
174001
  });
173764
174002
  import { createHash as createHash16, randomUUID as randomUUID6 } from "node:crypto";
173765
174003
  import { existsSync as existsSync14, readFileSync as readFileSync20, readdirSync as readdirSync6 } from "node:fs";
173766
- import { join as join18 } from "node:path";
174004
+ import { join as join19 } from "node:path";
173767
174005
  async function runExport(workspace, options, session) {
173768
174006
  const inputs = exportInputs(workspace);
173769
174007
  const target = await resolveUnityExportTarget(
@@ -173949,7 +174187,7 @@ async function exportUnityProject(args) {
173949
174187
  const read2 = lap();
173950
174188
  let schemaSkew2 = null;
173951
174189
  for (const { path, content, current } of cached.writes) {
173952
- if (path === join18(target.projectJsonDirectory, "project.json"))
174190
+ if (path === join19(target.projectJsonDirectory, "project.json"))
173953
174191
  schemaSkew2 = replacedSchemaVersion(current, content);
173954
174192
  writeUnityFile(path, content);
173955
174193
  }
@@ -174092,18 +174330,18 @@ ${errors.map((error) => ` ${formatDiagnostic(error)}`).join("\n")}`
174092
174330
  const planned = /* @__PURE__ */ new Set([
174093
174331
  ...dataFileBytes.keys(),
174094
174332
  ...localizationFiles.writes.keys(),
174095
- join18(target.generatedTypesDirectory, "NeoGeneratedFiles.json")
174333
+ join19(target.generatedTypesDirectory, "NeoGeneratedFiles.json")
174096
174334
  ]);
174097
174335
  const staleFiles = [
174098
174336
  ...staleJsonFiles(
174099
- join18(target.projectJsonDirectory, PARTITIONS_DIRECTORY),
174337
+ join19(target.projectJsonDirectory, PARTITIONS_DIRECTORY),
174100
174338
  planned
174101
174339
  ),
174102
174340
  ...localizationFiles.directories.flatMap(
174103
174341
  (directory) => staleJsonFiles(directory, planned)
174104
174342
  )
174105
174343
  ];
174106
- const projectJsonPath = join18(target.projectJsonDirectory, PROJECT_JSON_FILE);
174344
+ const projectJsonPath = join19(target.projectJsonDirectory, PROJECT_JSON_FILE);
174107
174345
  let schemaSkew = null;
174108
174346
  onPhase(`Writing changed files into ${target.unityProjectRoot}\u2026`);
174109
174347
  const written = [];
@@ -174186,7 +174424,7 @@ ${errors.map((error) => ` ${formatDiagnostic(error)}`).join("\n")}`
174186
174424
  outputHashes: dataFileHashes,
174187
174425
  generatedOutputHashes: currentGeneratedOutputs ?? /* @__PURE__ */ new Map(),
174188
174426
  jsonDirectories: [
174189
- join18(target.projectJsonDirectory, PARTITIONS_DIRECTORY),
174427
+ join19(target.projectJsonDirectory, PARTITIONS_DIRECTORY),
174190
174428
  ...localizationFiles.directories
174191
174429
  ],
174192
174430
  localChanges: source.localChanges,
@@ -174283,19 +174521,19 @@ function planDataFiles(target, metadata, unityExport) {
174283
174521
  ];
174284
174522
  const files = /* @__PURE__ */ new Map();
174285
174523
  files.set(
174286
- join18(target.projectJsonDirectory, MAIN_PARTITION_FILE),
174524
+ join19(target.projectJsonDirectory, MAIN_PARTITION_FILE),
174287
174525
  JSON.stringify(values, null, 4)
174288
174526
  );
174289
174527
  for (const key of Object.keys(valuePartitions).sort(compareOrdinal)) {
174290
174528
  const file = `${PARTITIONS_DIRECTORY}/${partitionFileName(key)}`;
174291
174529
  partitions.push({ key, file });
174292
174530
  files.set(
174293
- join18(target.projectJsonDirectory, file),
174531
+ join19(target.projectJsonDirectory, file),
174294
174532
  JSON.stringify(valuePartitions[key], null, 4)
174295
174533
  );
174296
174534
  }
174297
174535
  files.set(
174298
- join18(target.projectJsonDirectory, PROJECT_JSON_FILE),
174536
+ join19(target.projectJsonDirectory, PROJECT_JSON_FILE),
174299
174537
  JSON.stringify({ metadata, partitions, ...schema }, null, 4)
174300
174538
  );
174301
174539
  return files;
@@ -174321,7 +174559,7 @@ function planLocalizationFiles(target, unityExport, args) {
174321
174559
  for (const file of files) {
174322
174560
  if (!isSafeLocalizationFileName(file.fileName)) continue;
174323
174561
  const directory = target.useStreamingAssetsForNonMainLocales && file.locale !== mainLocale ? target.localizationStreamingAssetsDirectory : target.localizationResourcesDirectory;
174324
- writes.set(join18(directory, file.fileName), file.content);
174562
+ writes.set(join19(directory, file.fileName), file.content);
174325
174563
  }
174326
174564
  return {
174327
174565
  writes,
@@ -174343,7 +174581,7 @@ function staleJsonFiles(directory, planned) {
174343
174581
  const stale = [];
174344
174582
  for (const entry of readdirSync6(directory, { withFileTypes: true })) {
174345
174583
  if (!entry.isFile() || !entry.name.endsWith(".json")) continue;
174346
- const path = join18(directory, entry.name);
174584
+ const path = join19(directory, entry.name);
174347
174585
  if (!planned.has(path)) stale.push(path);
174348
174586
  }
174349
174587
  return stale;
@@ -174366,8 +174604,8 @@ function replacedSchemaVersion(current, next) {
174366
174604
  return schemaVersion === PROJECT_UNITY_EXPORT_SCHEMA_VERSION ? null : schemaVersion;
174367
174605
  }
174368
174606
  function writeSidecar(unityProjectRoot, args) {
174369
- const directory = join18(unityProjectRoot, "Library", "NeoCompose");
174370
- const path = join18(directory, "export.json");
174607
+ const directory = join19(unityProjectRoot, "Library", "NeoCompose");
174608
+ const path = join19(directory, "export.json");
174371
174609
  if (args.nothingWritten && existsSync14(path)) {
174372
174610
  let current;
174373
174611
  try {
@@ -174375,7 +174613,7 @@ function writeSidecar(unityProjectRoot, args) {
174375
174613
  } catch {
174376
174614
  current = null;
174377
174615
  }
174378
- const ingestedPath = join18(directory, "export.ingested");
174616
+ const ingestedPath = join19(directory, "export.ingested");
174379
174617
  if (typeof current === "object" && current !== null && "exportId" in current && typeof current.exportId === "string" && JSON.stringify({ ...current, exportId: args.sidecar.exportId }) === JSON.stringify(args.sidecar) && existsSync14(ingestedPath) && readFileSync20(ingestedPath, "utf8").trim() === current.exportId) {
174380
174618
  return false;
174381
174619
  }
@@ -174570,7 +174808,7 @@ var init_identity_ledger = __esm({
174570
174808
 
174571
174809
  // src/commands/push-body-diagnostics.ts
174572
174810
  import { existsSync as existsSync15, readFileSync as readFileSync21 } from "node:fs";
174573
- import { join as join19 } from "node:path";
174811
+ import { join as join20 } from "node:path";
174574
174812
  function createNeoScriptBodySourceLocator(workspace, status) {
174575
174813
  const textByFile = /* @__PURE__ */ new Map();
174576
174814
  return {
@@ -174592,7 +174830,7 @@ function createNeoScriptBodySourceLocator(workspace, status) {
174592
174830
  textOf(file) {
174593
174831
  const cached = textByFile.get(file);
174594
174832
  if (cached !== void 0) return cached;
174595
- const path = join19(workspace.root, file);
174833
+ const path = join20(workspace.root, file);
174596
174834
  const text = existsSync15(path) ? readFileSync21(path, "utf8") : null;
174597
174835
  textByFile.set(file, text);
174598
174836
  return text;
@@ -174758,7 +174996,7 @@ import {
174758
174996
  readFileSync as readFileSync22,
174759
174997
  statSync as statSync4
174760
174998
  } from "node:fs";
174761
- import { join as join20, relative as relative8, sep as sep8 } from "node:path";
174999
+ import { join as join21, relative as relative8, sep as sep8 } from "node:path";
174762
175000
  function assignPendingIds(changes, authoredValueSeeds, reconstructed3, previousLedger = {}) {
174763
175001
  const assigned = /* @__PURE__ */ new Map();
174764
175002
  const minted = /* @__PURE__ */ new Map();
@@ -175287,7 +175525,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
175287
175525
  binaryChanges: status.binaryChanges ?? []
175288
175526
  });
175289
175527
  const hasSourceBodies = (status.sourceSnapshot?.analysis.compiledBodies.length ?? 0) > 0;
175290
- if (status.changes.length === 0 && status.authoredValueSeeds.size === 0 && (!hasSourceBodies || purpose === "export" /* Export */)) {
175528
+ if (status.changes.length === 0 && status.authoredValueSeeds.size === 0 && options.forceRecompile !== true && (!hasSourceBodies || purpose !== "evaluation" /* Evaluation */)) {
175291
175529
  return status;
175292
175530
  }
175293
175531
  const initConversions = status.initConversions ?? [];
@@ -175310,6 +175548,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
175310
175548
  const bodySourceLocator = createNeoScriptBodySourceLocator(workspace, status);
175311
175549
  const compileContext = compileSchema === null ? null : prepareCompleteNeoScriptBodyChanges(workspace, status, compileSchema, {
175312
175550
  completeSweep: options.forceRecompile === true,
175551
+ refreshSourceLocations: purpose === "evaluation" /* Evaluation */,
175313
175552
  bodySourceLocator
175314
175553
  });
175315
175554
  const now = candidateTimestamp(purpose);
@@ -175412,7 +175651,7 @@ async function pushWorkspace(workspace, options, preparationOverride, confirmed
175412
175651
  );
175413
175652
  }
175414
175653
  if (options.noVerify !== true) {
175415
- const preparedBuildDir = configuredHook === void 0 ? void 0 : join20(
175654
+ const preparedBuildDir = configuredHook === void 0 ? void 0 : join21(
175416
175655
  workspace.root,
175417
175656
  ".neo",
175418
175657
  "test-build",
@@ -175429,7 +175668,7 @@ async function pushWorkspace(workspace, options, preparationOverride, confirmed
175429
175668
  const documentJson = JSON.stringify(candidate.document);
175430
175669
  mkdirSync11(preparedBuildDir, { recursive: true });
175431
175670
  writeFileSync12(
175432
- join20(preparedBuildDir, "candidate.json"),
175671
+ join21(preparedBuildDir, "candidate.json"),
175433
175672
  `${JSON.stringify({
175434
175673
  version: 1,
175435
175674
  projectFingerprint: `sha256:${preparedLocal.source.sourceHash}`,
@@ -176807,7 +177046,7 @@ function authoredMemberFormsByFile(root, alternates) {
176807
177046
  for (const alternate of alternates) {
176808
177047
  let existing = contents.get(alternate.path);
176809
177048
  if (existing === void 0) {
176810
- const absolute = join20(root, alternate.path);
177049
+ const absolute = join21(root, alternate.path);
176811
177050
  existing = existsSync16(absolute) ? readFileSync22(absolute, "utf8") : null;
176812
177051
  contents.set(alternate.path, existing);
176813
177052
  }
@@ -176878,20 +177117,20 @@ function rewriteFilesFromState(workspace, records3 = new Map(
176878
177117
  const authoredSources = new Map(
176879
177118
  sourceSnapshot?.inputs.map((input) => [input.uri, input.text])
176880
177119
  );
177120
+ const formatSource = createWorkspaceSourceFormatter(workspace.root);
176881
177121
  const files = result.files.map((file) => {
176882
177122
  const preserved = preservedSourceFiles.get(file.path);
176883
177123
  if (preserved !== void 0 && preservedFileMatchesEmission(preserved, file.content)) {
176884
177124
  return { ...file, content: preserved };
176885
177125
  }
176886
- const path = join20(workspace.root, file.path);
177126
+ const path = join21(workspace.root, file.path);
176887
177127
  const authored = preserved ?? authoredSources.get(file.path) ?? (existsSync16(path) ? readFileSync22(path, "utf8") : void 0);
176888
- return {
176889
- ...file,
176890
- content: restoreAuthoredMemberForms(
176891
- authored === void 0 ? file.content : preserveProjectFileRegistrySource(authored, file.content, records3),
176892
- authoredForms.get(file.path) ?? []
176893
- )
176894
- };
177128
+ const restored = restoreAuthoredMemberForms(
177129
+ authored === void 0 ? file.content : preserveProjectFileRegistrySource(authored, file.content, records3),
177130
+ authoredForms.get(file.path) ?? []
177131
+ );
177132
+ const content = authored !== void 0 && sameNeoScriptTokens(authored, restored, "documentation") ? authored : formatSource(file.path, restored);
177133
+ return { ...file, content };
176895
177134
  });
176896
177135
  const finalInputs = files.map((file) => {
176897
177136
  const kind = neoProjectSourceKind(file.path, file.content);
@@ -177437,6 +177676,12 @@ function compileNSFunctionChange(context, memberData, locator) {
177437
177676
  }
177438
177677
  function prepareCompleteNeoScriptBodyChanges(workspace, status, schema, options = {}) {
177439
177678
  const completeSweep = options.completeSweep ?? false;
177679
+ const refreshSourceLocations = completeSweep || options.refreshSourceLocations === true;
177680
+ const changedSources = new Set(
177681
+ status.changes.map(
177682
+ (change) => recordStateKey(change.recordKind, change.recordId)
177683
+ )
177684
+ );
177440
177685
  const context = createPostPushCompileContext(schema);
177441
177686
  const locator = options.bodySourceLocator ?? createNeoScriptBodySourceLocator(workspace, status);
177442
177687
  const bodyKey = (owner, name, unit) => JSON.stringify([owner, name, unit]);
@@ -177482,6 +177727,8 @@ function prepareCompleteNeoScriptBodyChanges(workspace, status, schema, options
177482
177727
  ]) {
177483
177728
  for (const row of records3) {
177484
177729
  if (typeof row.id !== "string") continue;
177730
+ if (!refreshSourceLocations && !changedSources.has(recordStateKey(kind, row.id)))
177731
+ continue;
177485
177732
  const owner = kind === "constructor" ? context.classesById.get(String(row.classId)) : context.ownersByMemberId.get(row.id);
177486
177733
  if (typeof owner?.name !== "string") continue;
177487
177734
  const sources2 = {};
@@ -177868,6 +178115,8 @@ var compileNSVoidBody2, compileNSFunction2, compileNSGetter2, compileNSSetter2,
177868
178115
  var init_push = __esm({
177869
178116
  "src/commands/push.ts"() {
177870
178117
  "use strict";
178118
+ init_workspace_format();
178119
+ init_lexer();
177871
178120
  init_dialogue_group_symbols();
177872
178121
  init_dialogue_source_diagnostic();
177873
178122
  init_lower_constructors();
@@ -178664,7 +178913,7 @@ import {
178664
178913
  rmSync as rmSync10,
178665
178914
  writeFileSync as writeFileSync13
178666
178915
  } from "node:fs";
178667
- import { dirname as dirname12, join as join21, relative as relative9, sep as sep9 } from "node:path";
178916
+ import { dirname as dirname12, join as join22, relative as relative9, sep as sep9 } from "node:path";
178668
178917
  function prepareWorkspaceResetV4(workspace, document, options = {}) {
178669
178918
  const emissionRecords = options.regenerateSourceNames ? regenerateDialogueSourceNamesV4(document.records) : document.records;
178670
178919
  const layoutWorkspace = workspaceForSourceLayoutV4(workspace, document);
@@ -178678,6 +178927,7 @@ function prepareWorkspaceResetV4(workspace, document, options = {}) {
178678
178927
  dialogueGroupSymbols
178679
178928
  );
178680
178929
  const emitted = emitProjectDocumentFilesV4(emissionRecords, {
178930
+ formatSource: createWorkspaceSourceFormatter(workspace.root),
178681
178931
  localValues,
178682
178932
  dialogueGroupSymbols,
178683
178933
  binaryPaths: workspaceBinaryPathsV4(workspace, status?.binaryFiles),
@@ -178705,10 +178955,10 @@ function resetWorkspaceToProjectSourcesV4(workspace, document, options = {}) {
178705
178955
  rmSync10(resolveSourcePath(path), { force: true });
178706
178956
  }
178707
178957
  for (const file of LEGACY_ROOT_FILES) {
178708
- rmSync10(join21(workspace.root, file), { force: true });
178958
+ rmSync10(join22(workspace.root, file), { force: true });
178709
178959
  }
178710
178960
  for (const privatePath of LEGACY_PRIVATE_PATHS) {
178711
- rmSync10(join21(workspace.root, privatePath), { recursive: true, force: true });
178961
+ rmSync10(join22(workspace.root, privatePath), { recursive: true, force: true });
178712
178962
  }
178713
178963
  for (const file of emitted.files) {
178714
178964
  const absolute = resolveSourcePath(file.path);
@@ -178779,6 +179029,7 @@ var LEGACY_ROOT_FILES, LEGACY_PRIVATE_PATHS;
178779
179029
  var init_reset = __esm({
178780
179030
  "src/project-source/reset.ts"() {
178781
179031
  "use strict";
179032
+ init_workspace_format();
178782
179033
  init_dialogue_group_symbols();
178783
179034
  init_language_spec();
178784
179035
  init_source_layout();
@@ -179276,6 +179527,7 @@ async function finishFormat4Pull(args) {
179276
179527
  workspace,
179277
179528
  layoutStatus?.binaryFiles
179278
179529
  );
179530
+ const formatSource = createWorkspaceSourceFormatter(workspace.root);
179279
179531
  const localResult = emitProjectDocumentFilesV4(
179280
179532
  candidateValueRecordsForEmissionV4(
179281
179533
  localRecords,
@@ -179283,6 +179535,7 @@ async function finishFormat4Pull(args) {
179283
179535
  workspace.config.projectId
179284
179536
  ),
179285
179537
  {
179538
+ formatSource,
179286
179539
  localValues,
179287
179540
  binaryPaths,
179288
179541
  recordFiles,
@@ -179294,7 +179547,13 @@ async function finishFormat4Pull(args) {
179294
179547
  }
179295
179548
  const serverResult = conflictCount === 0 ? null : emitProjectDocumentFilesV4(
179296
179549
  buildEmitRecordSet(document, plans, "server"),
179297
- { recordFiles, localValues, binaryPaths, dialogueGroupSymbols }
179550
+ {
179551
+ formatSource,
179552
+ recordFiles,
179553
+ localValues,
179554
+ binaryPaths,
179555
+ dialogueGroupSymbols
179556
+ }
179298
179557
  );
179299
179558
  const resolveSourcePath = createWorkspaceSourcePathResolver(workspace.root);
179300
179559
  if (!destructive && Object.keys(workspace.state.records).length === 0) {
@@ -179778,6 +180037,7 @@ function composeProspectivePullRecord(recordKind, recordId, data, serverRecord)
179778
180037
  var init_pull = __esm({
179779
180038
  "src/commands/pull.ts"() {
179780
180039
  "use strict";
180040
+ init_workspace_format();
179781
180041
  init_dialogue_group_symbols();
179782
180042
  init_project_file_source_preservation();
179783
180043
  init_push();
@@ -179815,7 +180075,7 @@ __export(init_exports, {
179815
180075
  runInit: () => runInit
179816
180076
  });
179817
180077
  import { existsSync as existsSync19, mkdirSync as mkdirSync14, readFileSync as readFileSync25, writeFileSync as writeFileSync15 } from "node:fs";
179818
- import { join as join22, resolve as resolve4 } from "node:path";
180078
+ import { join as join23, resolve as resolve4 } from "node:path";
179819
180079
  async function runInit(options) {
179820
180080
  let projectId = options.projectId;
179821
180081
  let projects = [];
@@ -179912,8 +180172,8 @@ async function runInit(options) {
179912
180172
  }) : "neo";
179913
180173
  }
179914
180174
  const root = resolve4(directory);
179915
- if (existsSync19(join22(root, NEO_CONFIG_FILE))) {
179916
- throw new Error(`"${join22(root, NEO_CONFIG_FILE)}" already exists.`);
180175
+ if (existsSync19(join23(root, NEO_CONFIG_FILE))) {
180176
+ throw new Error(`"${join23(root, NEO_CONFIG_FILE)}" already exists.`);
179917
180177
  }
179918
180178
  mkdirSync14(root, { recursive: true });
179919
180179
  await acquireWorkspaceLock(root, "init");
@@ -179939,7 +180199,7 @@ async function runInit(options) {
179939
180199
  });
179940
180200
  }
179941
180201
  function ensurePrivateStateIgnored(root) {
179942
- const path = join22(root, ".gitignore");
180202
+ const path = join23(root, ".gitignore");
179943
180203
  const existing = existsSync19(path) ? readFileSync25(path, "utf8") : "";
179944
180204
  if (existing.split(/\r?\n/u).some((line) => line.trim() === ".neo/" || line.trim() === ".neo")) {
179945
180205
  return;
@@ -180910,7 +181170,6 @@ var init_project_integrity = __esm({
180910
181170
  "use strict";
180911
181171
  init_member_storage_key();
180912
181172
  init_system_record_id();
180913
- init_member_kind_enum();
180914
181173
  init_value_comparison();
180915
181174
  init_stored_value_placements();
180916
181175
  UNORDERED_MEMBERSHIP_KEY = "(container)";
@@ -181287,7 +181546,7 @@ var init_neoscript_language_adapter = __esm({
181287
181546
  }
181288
181547
  });
181289
181548
 
181290
- // ../src/models/members/member-change-listener-patches.ts
181549
+ // ../packages/models/src/members/member-change-listener-patches.ts
181291
181550
  function validateChangeListenerOwnerPatches(patches) {
181292
181551
  if (patches.length === 0)
181293
181552
  throw new Error("A listener patch must edit at least one owner.");
@@ -181345,7 +181604,7 @@ function applyChangeListenerOwnerPatches(current, patches) {
181345
181604
  return Object.keys(next).length === 0 ? void 0 : next;
181346
181605
  }
181347
181606
  var init_member_change_listener_patches = __esm({
181348
- "../src/models/members/member-change-listener-patches.ts"() {
181607
+ "../packages/models/src/members/member-change-listener-patches.ts"() {
181349
181608
  "use strict";
181350
181609
  init_core();
181351
181610
  init_member_kinds();
@@ -181624,13 +181883,13 @@ var init_game_save_record_read2 = __esm({
181624
181883
  }
181625
181884
  });
181626
181885
 
181627
- // ../src/models/save-overlay-resolution.ts
181886
+ // ../packages/models/src/save-overlay-resolution.ts
181628
181887
  function isRemovedEntry(entry) {
181629
181888
  return typeof entry === "object" && entry !== null && Reflect.get(entry, "mark") === REMOVED_MARK;
181630
181889
  }
181631
181890
  var REMOVED_MARK;
181632
181891
  var init_save_overlay_resolution = __esm({
181633
- "../src/models/save-overlay-resolution.ts"() {
181892
+ "../packages/models/src/save-overlay-resolution.ts"() {
181634
181893
  "use strict";
181635
181894
  REMOVED_MARK = "removed";
181636
181895
  }
@@ -183200,8 +183459,6 @@ var init_script = __esm({
183200
183459
  init_save_overlay_resolution();
183201
183460
  init_members();
183202
183461
  init_neoscript();
183203
- init_dialogue_types2();
183204
- init_logic_types();
183205
183462
  init_dialogue_logic_compile_pure();
183206
183463
  init_project_migration_runner();
183207
183464
  init_inheritance();
@@ -183249,7 +183506,7 @@ import {
183249
183506
  basename as basename4,
183250
183507
  dirname as dirname14,
183251
183508
  isAbsolute as isAbsolute3,
183252
- join as join23,
183509
+ join as join24,
183253
183510
  relative as relative10,
183254
183511
  resolve as resolve5,
183255
183512
  sep as sep10
@@ -183462,7 +183719,7 @@ function preparedHookCandidate(workspace) {
183462
183719
  );
183463
183720
  }
183464
183721
  const parsed = JSON.parse(
183465
- readFileSync27(join23(directory, "candidate.json"), "utf8")
183722
+ readFileSync27(join24(directory, "candidate.json"), "utf8")
183466
183723
  );
183467
183724
  if (!isRecord12(parsed)) {
183468
183725
  throw new NeoTestPreparedCandidateError(
@@ -183519,7 +183776,7 @@ function fingerprintTestCandidateInputs(workspace) {
183519
183776
  }
183520
183777
  function testCandidateCachePath(workspace, inputFingerprint) {
183521
183778
  const cacheKey = createHash18("sha256").update(inputFingerprint).digest("hex");
183522
- return join23(
183779
+ return join24(
183523
183780
  workspace.root,
183524
183781
  ".neo",
183525
183782
  "test-build",
@@ -183544,7 +183801,7 @@ function cachedTestCandidate(workspace, inputFingerprint) {
183544
183801
  }
183545
183802
  if (typeof parsed.documentSha256 !== "string") return null;
183546
183803
  const documentJson = readFileSync27(
183547
- join23(dirname14(candidatePath), "document.json"),
183804
+ join24(dirname14(candidatePath), "document.json"),
183548
183805
  "utf8"
183549
183806
  );
183550
183807
  if (createHash18("sha256").update(documentJson).digest("hex") !== parsed.documentSha256) {
@@ -183565,7 +183822,7 @@ function cacheTestCandidate(workspace, inputFingerprint, candidate) {
183565
183822
  const documentJson = JSON.stringify(candidate.document);
183566
183823
  const documentSha256 = createHash18("sha256").update(documentJson).digest("hex");
183567
183824
  const candidatePath = testCandidateCachePath(workspace, inputFingerprint);
183568
- atomicWrite(join23(dirname14(candidatePath), "document.json"), documentJson);
183825
+ atomicWrite(join24(dirname14(candidatePath), "document.json"), documentJson);
183569
183826
  atomicWrite(
183570
183827
  candidatePath,
183571
183828
  JSON.stringify({
@@ -183632,7 +183889,7 @@ function compileSpec(workspace, compile, absolutePath, projectCompilationHash2)
183632
183889
  const source = readFileSync27(absolutePath, "utf8");
183633
183890
  const sourceHash = createHash18("sha256").update(source).digest("hex");
183634
183891
  const artifactHash = createHash18("sha256").update(path).update("\0").update(sourceHash).digest("hex");
183635
- const artifactPath = join23(
183892
+ const artifactPath = join24(
183636
183893
  workspace.root,
183637
183894
  ".neo",
183638
183895
  "test-build",
@@ -184502,7 +184759,7 @@ function testBuildFiles(root) {
184502
184759
  const visit = (directory) => {
184503
184760
  for (const entry of readdirSync7(directory, { withFileTypes: true })) {
184504
184761
  if (entry.isSymbolicLink()) continue;
184505
- const path = join23(directory, entry.name);
184762
+ const path = join24(directory, entry.name);
184506
184763
  if (entry.isDirectory()) visit(path);
184507
184764
  else if (entry.isFile()) {
184508
184765
  const stats = statSync5(path);
@@ -184563,7 +184820,7 @@ function formatStatusCounts(passed, failed, total, skipped = 0) {
184563
184820
  async function runTest(workspace, options, dependencies = {}) {
184564
184821
  const started = Date.now();
184565
184822
  const performanceStarted = performance.now();
184566
- const testBuildRoot = join23(workspace.root, ".neo", "test-build");
184823
+ const testBuildRoot = join24(workspace.root, ".neo", "test-build");
184567
184824
  maintainNeoTestBuildCache(testBuildRoot);
184568
184825
  const startedAt = new Date(started).toISOString();
184569
184826
  let projectFingerprint = null;
@@ -184748,7 +185005,7 @@ async function runTest(workspace, options, dependencies = {}) {
184748
185005
  }))
184749
185006
  };
184750
185007
  atomicWrite(
184751
- join23(workspace.root, ".neo", "test-build", "v1", "manifest.json"),
185008
+ join24(workspace.root, ".neo", "test-build", "v1", "manifest.json"),
184752
185009
  `${JSON.stringify(buildManifest, null, 2)}
184753
185010
  `
184754
185011
  );
@@ -184852,7 +185109,7 @@ async function runTest(workspace, options, dependencies = {}) {
184852
185109
  if (options.outputFile !== null) {
184853
185110
  try {
184854
185111
  atomicWrite(
184855
- isAbsolute3(options.outputFile) ? options.outputFile : join23(workspace.root, options.outputFile),
185112
+ isAbsolute3(options.outputFile) ? options.outputFile : join24(workspace.root, options.outputFile),
184856
185113
  serialized
184857
185114
  );
184858
185115
  } catch (error) {
@@ -184997,7 +185254,6 @@ var init_test = __esm({
184997
185254
  init_project2();
184998
185255
  init_test_prelude();
184999
185256
  init_strict_ir();
185000
- init_members();
185001
185257
  init_neoscript2();
185002
185258
  init_evaluator_lookups();
185003
185259
  init_neoscript_language_adapter();
@@ -185085,7 +185341,7 @@ import {
185085
185341
  existsSync as existsSync21,
185086
185342
  readFileSync as readFileSync28
185087
185343
  } from "node:fs";
185088
- import { extname as extname2, isAbsolute as isAbsolute4, join as join24, relative as relative11, sep as sep11 } from "node:path";
185344
+ import { extname as extname2, isAbsolute as isAbsolute4, join as join25, relative as relative11, sep as sep11 } from "node:path";
185089
185345
  function inspectNeoDoctor(workspace) {
185090
185346
  const formatCompatible = workspace.config.formatVersion === CURRENT_FORMAT_VERSION;
185091
185347
  const compiler = inspectCompilerContract();
@@ -185204,7 +185460,7 @@ function inspectSourceContract(workspace) {
185204
185460
  }
185205
185461
  }
185206
185462
  function inspectExtensionContract(root) {
185207
- const cachePath2 = join24(root, PROJECT_SOURCE_ANALYSIS_V4_CACHE_PATH);
185463
+ const cachePath2 = join25(root, PROJECT_SOURCE_ANALYSIS_V4_CACHE_PATH);
185208
185464
  if (!existsSync21(cachePath2)) {
185209
185465
  return {
185210
185466
  id: NEO_VSCODE_EXTENSION_ID,
@@ -185288,7 +185544,7 @@ function inspectTrackedBinary(root, record7, errors) {
185288
185544
  `Project file ${record7.recordId} has an invalid SHA-256 base digest.`
185289
185545
  );
185290
185546
  }
185291
- const absolute = join24(root, path);
185547
+ const absolute = join25(root, path);
185292
185548
  if (existsSync21(absolute) && !canAccess(absolute, fsConstants.R_OK)) {
185293
185549
  errors.push(`Tracked project file ${path} is not readable.`);
185294
185550
  }
@@ -186077,7 +186333,7 @@ __export(migrate_exports, {
186077
186333
  });
186078
186334
  import { randomUUID as randomUUID10 } from "node:crypto";
186079
186335
  import { existsSync as existsSync22, mkdirSync as mkdirSync16, readFileSync as readFileSync29, writeFileSync as writeFileSync17 } from "node:fs";
186080
- import { join as join25, relative as relative12 } from "node:path";
186336
+ import { join as join26, relative as relative12 } from "node:path";
186081
186337
  async function runMigrate(workspace, subcommand, positional, targetRef, json, dependencies = {}) {
186082
186338
  if (subcommand === "new") {
186083
186339
  const name = positional[0];
@@ -186086,7 +186342,7 @@ async function runMigrate(workspace, subcommand, positional, targetRef, json, de
186086
186342
  "Usage: neo migrate new <name> [--target <ClassName|project>]"
186087
186343
  );
186088
186344
  }
186089
- const migrationsDir = join25(workspace.root, "Migrations");
186345
+ const migrationsDir = join26(workspace.root, "Migrations");
186090
186346
  mkdirSync16(migrationsDir, { recursive: true });
186091
186347
  let nextOrder = 1;
186092
186348
  for (const path of listProjectSourceFilesV4(workspace.root)) {
@@ -186100,7 +186356,7 @@ async function runMigrate(workspace, subcommand, positional, targetRef, json, de
186100
186356
  nextOrder = Math.max(nextOrder, Number(migration.fileFields.order) + 1);
186101
186357
  }
186102
186358
  const relPath = migrationFileName(nextOrder, name);
186103
- const absolute = join25(workspace.root, relPath);
186359
+ const absolute = join26(workspace.root, relPath);
186104
186360
  if (existsSync22(absolute)) {
186105
186361
  throw new Error(`"${relPath}" already exists.`);
186106
186362
  }
@@ -188343,68 +188599,53 @@ var init_branch = __esm({
188343
188599
  }
188344
188600
  });
188345
188601
 
188346
- // ../src/models/localization/localization-import.ts
188602
+ // ../packages/models/src/localization/localization-import.ts
188347
188603
  var init_localization_import = __esm({
188348
- "../src/models/localization/localization-import.ts"() {
188604
+ "../packages/models/src/localization/localization-import.ts"() {
188349
188605
  "use strict";
188350
188606
  }
188351
188607
  });
188352
188608
 
188353
- // ../src/models/dialogue/dialogue-lookup-candidates.ts
188609
+ // ../packages/models/src/dialogue/dialogue-lookup-candidates.ts
188354
188610
  var init_dialogue_lookup_candidates = __esm({
188355
- "../src/models/dialogue/dialogue-lookup-candidates.ts"() {
188611
+ "../packages/models/src/dialogue/dialogue-lookup-candidates.ts"() {
188356
188612
  "use strict";
188357
188613
  }
188358
188614
  });
188359
188615
 
188360
- // ../src/models/dialogue/dialogue-record-split.ts
188616
+ // ../packages/models/src/dialogue/dialogue-record-split.ts
188361
188617
  var init_dialogue_record_split = __esm({
188362
- "../src/models/dialogue/dialogue-record-split.ts"() {
188618
+ "../packages/models/src/dialogue/dialogue-record-split.ts"() {
188363
188619
  "use strict";
188364
- init_dialogue_types2();
188365
188620
  }
188366
188621
  });
188367
188622
 
188368
- // ../src/models/dialogue/dialogue-localized-text-links.ts
188623
+ // ../packages/models/src/dialogue/dialogue-localized-text-links.ts
188369
188624
  var init_dialogue_localized_text_links = __esm({
188370
- "../src/models/dialogue/dialogue-localized-text-links.ts"() {
188625
+ "../packages/models/src/dialogue/dialogue-localized-text-links.ts"() {
188371
188626
  "use strict";
188372
- init_localized_text_create_envelope();
188373
- init_localization_types();
188374
- init_dialogue_types2();
188375
188627
  }
188376
188628
  });
188377
188629
 
188378
- // ../src/models/dialogue/dialogue-db-response-types.ts
188630
+ // ../packages/models/src/dialogue/dialogue-db-response-types.ts
188379
188631
  var init_dialogue_db_response_types = __esm({
188380
- "../src/models/dialogue/dialogue-db-response-types.ts"() {
188632
+ "../packages/models/src/dialogue/dialogue-db-response-types.ts"() {
188381
188633
  "use strict";
188382
- init_dialogue_group_types();
188383
- init_priority_types();
188384
188634
  }
188385
188635
  });
188386
188636
 
188387
- // ../src/common/error-message.ts
188388
- var init_error_message = __esm({
188389
- "../src/common/error-message.ts"() {
188390
- "use strict";
188391
- }
188392
- });
188393
-
188394
- // ../src/models/dialogue/dialogue-triggering.ts
188637
+ // ../packages/models/src/dialogue/dialogue-triggering.ts
188395
188638
  var DEFAULT_RECENCY_HALF_LIFE_SECONDS;
188396
188639
  var init_dialogue_triggering = __esm({
188397
- "../src/models/dialogue/dialogue-triggering.ts"() {
188640
+ "../packages/models/src/dialogue/dialogue-triggering.ts"() {
188398
188641
  "use strict";
188399
- init_error_message();
188400
- init_dialogue_group_types();
188401
188642
  DEFAULT_RECENCY_HALF_LIFE_SECONDS = 60 * 60 * 24;
188402
188643
  }
188403
188644
  });
188404
188645
 
188405
- // ../src/models/dialogue/index.ts
188646
+ // ../packages/models/src/dialogue/index.ts
188406
188647
  var init_dialogue = __esm({
188407
- "../src/models/dialogue/index.ts"() {
188648
+ "../packages/models/src/dialogue/index.ts"() {
188408
188649
  "use strict";
188409
188650
  init_dialogue_types2();
188410
188651
  init_dialogue_source_identifiers();
@@ -188421,17 +188662,16 @@ var init_dialogue = __esm({
188421
188662
  }
188422
188663
  });
188423
188664
 
188424
- // ../src/models/localization/localization-export.ts
188665
+ // ../packages/models/src/localization/localization-export.ts
188425
188666
  var init_localization_export = __esm({
188426
- "../src/models/localization/localization-export.ts"() {
188667
+ "../packages/models/src/localization/localization-export.ts"() {
188427
188668
  "use strict";
188428
- init_localization_types();
188429
188669
  }
188430
188670
  });
188431
188671
 
188432
- // ../src/models/localization/index.ts
188672
+ // ../packages/models/src/localization/index.ts
188433
188673
  var init_localization2 = __esm({
188434
- "../src/models/localization/index.ts"() {
188674
+ "../packages/models/src/localization/index.ts"() {
188435
188675
  "use strict";
188436
188676
  init_localization_types();
188437
188677
  init_localization_export();
@@ -188440,29 +188680,52 @@ var init_localization2 = __esm({
188440
188680
  }
188441
188681
  });
188442
188682
 
188443
- // ../src/models/unity/unity-sprite-slices.ts
188683
+ // ../packages/models/src/unity/unity-sprite-slices.ts
188444
188684
  var init_unity_sprite_slices = __esm({
188445
- "../src/models/unity/unity-sprite-slices.ts"() {
188685
+ "../packages/models/src/unity/unity-sprite-slices.ts"() {
188446
188686
  "use strict";
188447
188687
  }
188448
188688
  });
188449
188689
 
188450
- // ../src/models/unity/index.ts
188690
+ // ../packages/models/src/unity/index.ts
188451
188691
  var init_unity = __esm({
188452
- "../src/models/unity/index.ts"() {
188692
+ "../packages/models/src/unity/index.ts"() {
188453
188693
  "use strict";
188454
188694
  init_unity_import_settings();
188455
188695
  init_unity_sprite_slices();
188456
188696
  }
188457
188697
  });
188458
188698
 
188699
+ // ../src/models/project/project-types.ts
188700
+ var init_project_types2 = __esm({
188701
+ "../src/models/project/project-types.ts"() {
188702
+ "use strict";
188703
+ init_project_types();
188704
+ }
188705
+ });
188706
+
188707
+ // ../src/models/project/project-version-types.ts
188708
+ var init_project_version_types2 = __esm({
188709
+ "../src/models/project/project-version-types.ts"() {
188710
+ "use strict";
188711
+ init_project_version_types();
188712
+ }
188713
+ });
188714
+
188715
+ // ../src/models/project/index.ts
188716
+ var init_project3 = __esm({
188717
+ "../src/models/project/index.ts"() {
188718
+ "use strict";
188719
+ init_project();
188720
+ init_project_types2();
188721
+ init_project_version_types2();
188722
+ }
188723
+ });
188724
+
188459
188725
  // ../src/models/wiki/wiki-types.ts
188460
188726
  var init_wiki_types = __esm({
188461
188727
  "../src/models/wiki/wiki-types.ts"() {
188462
188728
  "use strict";
188463
- init_core_types();
188464
- init_auth_ownership_types();
188465
- init_structural_narrow();
188466
188729
  }
188467
188730
  });
188468
188731
 
@@ -188478,8 +188741,6 @@ var init_wiki = __esm({
188478
188741
  var init_interface_reference_sites = __esm({
188479
188742
  "../src/models/interfaces/interface-reference-sites.ts"() {
188480
188743
  "use strict";
188481
- init_member_kinds();
188482
- init_interface_types();
188483
188744
  }
188484
188745
  });
188485
188746
 
@@ -188487,11 +188748,6 @@ var init_interface_reference_sites = __esm({
188487
188748
  var init_interface_validation = __esm({
188488
188749
  "../src/models/interfaces/interface-validation.ts"() {
188489
188750
  "use strict";
188490
- init_member_kinds();
188491
- init_schema_identifiers();
188492
- init_interface_conformance();
188493
- init_interface_graph();
188494
- init_interface_types();
188495
188751
  }
188496
188752
  });
188497
188753
 
@@ -188514,7 +188770,7 @@ var init_models = __esm({
188514
188770
  init_dialogue();
188515
188771
  init_localization2();
188516
188772
  init_unity();
188517
- init_project();
188773
+ init_project3();
188518
188774
  init_wiki();
188519
188775
  init_interfaces();
188520
188776
  }
@@ -188790,11 +189046,9 @@ var init_project_localization_service = __esm({
188790
189046
  "use strict";
188791
189047
  init_localizable_member_value_writes();
188792
189048
  init_member_localization();
188793
- init_localization_import();
188794
189049
  init_packed_value_encoding();
188795
189050
  init_inheritance();
188796
189051
  init_members();
188797
- init_core();
188798
189052
  init_primary_localized_text_writes();
188799
189053
  init_models();
188800
189054
  init_project_version_intents();
@@ -189057,10 +189311,10 @@ var init_content = __esm({
189057
189311
  }
189058
189312
  });
189059
189313
 
189060
- // ../src/runtime/member-change-listener-runtime.ts
189314
+ // ../packages/neoscript-runtime/src/member-change-listener-runtime.ts
189061
189315
  var EMPTY, MemberChangeListenerRuntime;
189062
189316
  var init_member_change_listener_runtime = __esm({
189063
- "../src/runtime/member-change-listener-runtime.ts"() {
189317
+ "../packages/neoscript-runtime/src/member-change-listener-runtime.ts"() {
189064
189318
  "use strict";
189065
189319
  init_core();
189066
189320
  init_listener_write_index();
@@ -190140,7 +190394,6 @@ var init_dialogue_dryrun_listeners = __esm({
190140
190394
  "use strict";
190141
190395
  init_listener_write_index();
190142
190396
  init_evaluateNSGetter();
190143
- init_members();
190144
190397
  init_member_change_listeners();
190145
190398
  init_member_change_listener_runtime();
190146
190399
  init_initializer_replay();
@@ -191366,7 +191619,7 @@ __export(dev_exports, {
191366
191619
  runDev: () => runDev
191367
191620
  });
191368
191621
  import { readdirSync as readdirSync8, statSync as statSync6, watch } from "node:fs";
191369
- import { basename as basename5, dirname as dirname15, join as join26, resolve as resolve6 } from "node:path";
191622
+ import { basename as basename5, dirname as dirname15, join as join27, resolve as resolve6 } from "node:path";
191370
191623
  import { emitKeypressEvents } from "node:readline";
191371
191624
  async function runDev(root, loadWorkspace2, options) {
191372
191625
  const session = new UnityExportSession({ reusePersistedReceipt: false });
@@ -191477,7 +191730,7 @@ function countsAsExportInput(root, relativePath, event, directories) {
191477
191730
  if (relativePath.split("/").some((part) => NEO_PROJECT_IGNORED_DIRECTORY_NAMES.has(part)))
191478
191731
  return false;
191479
191732
  if (event === "rename") {
191480
- if (statSync6(join26(root, relativePath), {
191733
+ if (statSync6(join27(root, relativePath), {
191481
191734
  throwIfNoEntry: false
191482
191735
  })?.isDirectory()) {
191483
191736
  directories.add(relativePath);
@@ -191498,7 +191751,7 @@ function countsAsExportInput(root, relativePath, event, directories) {
191498
191751
  function rememberDirectories(root, relativePath, directories) {
191499
191752
  let entries;
191500
191753
  try {
191501
- entries = readdirSync8(join26(root, relativePath), { withFileTypes: true });
191754
+ entries = readdirSync8(join27(root, relativePath), { withFileTypes: true });
191502
191755
  } catch (error) {
191503
191756
  if (error instanceof Error && "code" in error) {
191504
191757
  if (error.code === "ENOENT") return;
@@ -191556,7 +191809,7 @@ __export(resolve_exports, {
191556
191809
  runResolve: () => runResolve
191557
191810
  });
191558
191811
  import { readFileSync as readFileSync31, rmSync as rmSync13, writeFileSync as writeFileSync18 } from "node:fs";
191559
- import { join as join27, relative as relative13 } from "node:path";
191812
+ import { join as join28, relative as relative13 } from "node:path";
191560
191813
  function runResolve(workspace, side) {
191561
191814
  const sources2 = readResolvedProjectSourcesV4(workspace.root, side);
191562
191815
  const marked = sources2.filter((file) => file.marked);
@@ -191579,12 +191832,12 @@ function runResolve(workspace, side) {
191579
191832
  const conflict2 = binary?.conflict;
191580
191833
  if (binary === void 0 || conflict2 === void 0) continue;
191581
191834
  binary.path = declaredPaths.get(state.recordId) ?? binary.path;
191582
- const destination = join27(workspace.root, binary.path);
191835
+ const destination = join28(workspace.root, binary.path);
191583
191836
  if (side === "theirs") {
191584
191837
  if (conflict2.remoteSha256 !== null && conflict2.artifactPath !== void 0) {
191585
191838
  writeVerifiedBinaryDownloadV4(
191586
191839
  destination,
191587
- readFileSync31(join27(workspace.root, conflict2.artifactPath)),
191840
+ readFileSync31(join28(workspace.root, conflict2.artifactPath)),
191588
191841
  conflict2.remoteSha256
191589
191842
  );
191590
191843
  binary.sha256 = conflict2.remoteSha256;
@@ -191594,7 +191847,7 @@ function runResolve(workspace, side) {
191594
191847
  }
191595
191848
  }
191596
191849
  if (conflict2.artifactPath !== void 0) {
191597
- rmSync13(join27(workspace.root, conflict2.artifactPath), { force: true });
191850
+ rmSync13(join28(workspace.root, conflict2.artifactPath), { force: true });
191598
191851
  }
191599
191852
  delete binary.conflict;
191600
191853
  resolvedBinaries += 1;
@@ -191975,7 +192228,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
191975
192228
  async function main() {
191976
192229
  const args = parseArgs(process.argv.slice(2));
191977
192230
  if (args.command === "--version") {
191978
- console.log("0.75.0");
192231
+ console.log("0.75.2");
191979
192232
  return;
191980
192233
  }
191981
192234
  if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {