@neocompose/cli 0.43.0 → 0.43.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.43.1] - 2026-09-03
4
+
5
+ ### Changed
6
+
7
+ - Use one project-file assignment validator for local and trusted preparation,
8
+ and remove the obsolete test-only single-level migration target resolver.
9
+
3
10
  ## [0.43.0] - 2026-09-02
4
11
 
5
12
  ### Fixed
package/dist/neo.mjs CHANGED
@@ -372,10 +372,6 @@ var init_auth_api_base_url = __esm({
372
372
  // src/token-store.ts
373
373
  var token_store_exports = {};
374
374
  __export(token_store_exports, {
375
- NEO_CONFIG_HOME_ENV_VAR: () => NEO_CONFIG_HOME_ENV_VAR,
376
- NEO_CREDENTIAL_NAMESPACE_ENV_VAR: () => NEO_CREDENTIAL_NAMESPACE_ENV_VAR,
377
- NEO_TOKEN_ENV_VAR: () => NEO_TOKEN_ENV_VAR,
378
- credentialsDir: () => credentialsDir,
379
375
  deleteCredential: () => deleteCredential,
380
376
  keychainAccount: () => keychainAccount,
381
377
  loadCredential: () => loadCredential,
@@ -22462,7 +22458,7 @@ function reportVariantTypePositions(uri, type, diagnostics, root = "nested") {
22462
22458
  severity: "error",
22463
22459
  source: "neo-project",
22464
22460
  code: "variant-type-position",
22465
- message: variantTypePositionMessage(type.name, root)
22461
+ message: variantTypePositionMessage(type.name)
22466
22462
  });
22467
22463
  return;
22468
22464
  }
@@ -22470,7 +22466,7 @@ function reportVariantTypePositions(uri, type, diagnostics, root = "nested") {
22470
22466
  reportVariantTypePositions(uri, argument2, diagnostics);
22471
22467
  }
22472
22468
  }
22473
- function variantTypePositionMessage(typeName, root) {
22469
+ function variantTypePositionMessage(typeName) {
22474
22470
  if (isNeoVariantFolderTypeName(typeName)) {
22475
22471
  return `'${typeName}' is reference-only: it declares variant folders as top-level globals and is never a member, entry, parameter, or generic binding type.`;
22476
22472
  }
@@ -37229,7 +37225,6 @@ function memberFromDocument(record3, members, owners, classNames, context) {
37229
37225
  "returnTypeInfo"
37230
37226
  ),
37231
37227
  script: isAbstract || getterSource === null ? null : propertyScript(
37232
- record3,
37233
37228
  common.owner,
37234
37229
  classNames,
37235
37230
  getterSource,
@@ -37280,7 +37275,7 @@ function memberFromDocument(record3, members, owners, classNames, context) {
37280
37275
  ...signature,
37281
37276
  ...bodyModeValue === "ui" ? { bodyMode: "ui" } : {},
37282
37277
  ...uiActionValue === null ? {} : { uiAction: jsonValue(uiActionValue, record3, "uiAction") },
37283
- script: isAbstract || code === null ? null : functionScript(record3, common.owner, classNames, code)
37278
+ script: isAbstract || code === null ? null : functionScript(common.owner, classNames, code)
37284
37279
  };
37285
37280
  }
37286
37281
  if (kind === MEMBER_KIND.FunctionRef) {
@@ -37887,8 +37882,8 @@ function memberModifier(overrideOf, modifier) {
37887
37882
  if (modifier === "static") return "static";
37888
37883
  return "virtual";
37889
37884
  }
37890
- function propertyScript(record3, owner, classNames, getterSource, setterSource) {
37891
- const path = scriptPath(record3, owner, classNames);
37885
+ function propertyScript(owner, classNames, getterSource, setterSource) {
37886
+ const path = scriptPath(owner, classNames);
37892
37887
  const sourceText = [
37893
37888
  "get {",
37894
37889
  getterSource,
@@ -37905,8 +37900,8 @@ function propertyScript(record3, owner, classNames, getterSource, setterSource)
37905
37900
  source: zeroSpan(path)
37906
37901
  };
37907
37902
  }
37908
- function functionScript(record3, owner, classNames, sourceText) {
37909
- const path = scriptPath(record3, owner, classNames);
37903
+ function functionScript(owner, classNames, sourceText) {
37904
+ const path = scriptPath(owner, classNames);
37910
37905
  return {
37911
37906
  kind: "function",
37912
37907
  path,
@@ -37914,7 +37909,7 @@ function functionScript(record3, owner, classNames, sourceText) {
37914
37909
  source: zeroSpan(path)
37915
37910
  };
37916
37911
  }
37917
- function scriptPath(record3, ownerValue, classNames) {
37912
+ function scriptPath(ownerValue, classNames) {
37918
37913
  const owner = isRecord2(ownerValue) ? ownerValue : {};
37919
37914
  const sharedMember = owner.kind === "sharedClassMember" && Array.isArray(owner.members) ? owner.members.find(isRecord2) : void 0;
37920
37915
  let ownerClassId;
@@ -42725,36 +42720,36 @@ var MemberKind;
42725
42720
  var init_member_kind_enum = __esm({
42726
42721
  "../src/models/members/member-kind-enum.ts"() {
42727
42722
  "use strict";
42728
- MemberKind = /* @__PURE__ */ ((MemberKind16) => {
42729
- MemberKind16[MemberKind16["Null"] = 0] = "Null";
42730
- MemberKind16[MemberKind16["Bool"] = 1] = "Bool";
42731
- MemberKind16[MemberKind16["Int"] = 2] = "Int";
42732
- MemberKind16[MemberKind16["String"] = 3] = "String";
42733
- MemberKind16[MemberKind16["Float"] = 4] = "Float";
42734
- MemberKind16[MemberKind16["Dictionary"] = 5] = "Dictionary";
42735
- MemberKind16[MemberKind16["List"] = 6] = "List";
42736
- MemberKind16[MemberKind16["Class"] = 7] = "Class";
42737
- MemberKind16[MemberKind16["Enum"] = 8] = "Enum";
42738
- MemberKind16[MemberKind16["Lookup"] = 9] = "Lookup";
42739
- MemberKind16[MemberKind16["NSProperty"] = 10] = "NSProperty";
42740
- MemberKind16[MemberKind16["Sprite"] = 11] = "Sprite";
42741
- MemberKind16[MemberKind16["Audio"] = 12] = "Audio";
42742
- MemberKind16[MemberKind16["Function"] = 13] = "Function";
42743
- MemberKind16[MemberKind16["Vector2"] = 14] = "Vector2";
42744
- MemberKind16[MemberKind16["Vector2Int"] = 15] = "Vector2Int";
42745
- MemberKind16[MemberKind16["Vector3"] = 16] = "Vector3";
42746
- MemberKind16[MemberKind16["Vector3Int"] = 17] = "Vector3Int";
42747
- MemberKind16[MemberKind16["DialogueLookup"] = 18] = "DialogueLookup";
42748
- MemberKind16[MemberKind16["Color"] = 19] = "Color";
42749
- MemberKind16[MemberKind16["Decimal"] = 20] = "Decimal";
42750
- MemberKind16[MemberKind16["Generic"] = 21] = "Generic";
42751
- MemberKind16[MemberKind16["Interface"] = 22] = "Interface";
42752
- MemberKind16[MemberKind16["NSFunction"] = 23] = "NSFunction";
42753
- MemberKind16[MemberKind16["FunctionRef"] = 24] = "FunctionRef";
42754
- MemberKind16[MemberKind16["NSDelegate"] = 25] = "NSDelegate";
42755
- MemberKind16[MemberKind16["NSAction"] = 26] = "NSAction";
42756
- MemberKind16[MemberKind16["Variant"] = 27] = "Variant";
42757
- return MemberKind16;
42723
+ MemberKind = /* @__PURE__ */ ((MemberKind13) => {
42724
+ MemberKind13[MemberKind13["Null"] = 0] = "Null";
42725
+ MemberKind13[MemberKind13["Bool"] = 1] = "Bool";
42726
+ MemberKind13[MemberKind13["Int"] = 2] = "Int";
42727
+ MemberKind13[MemberKind13["String"] = 3] = "String";
42728
+ MemberKind13[MemberKind13["Float"] = 4] = "Float";
42729
+ MemberKind13[MemberKind13["Dictionary"] = 5] = "Dictionary";
42730
+ MemberKind13[MemberKind13["List"] = 6] = "List";
42731
+ MemberKind13[MemberKind13["Class"] = 7] = "Class";
42732
+ MemberKind13[MemberKind13["Enum"] = 8] = "Enum";
42733
+ MemberKind13[MemberKind13["Lookup"] = 9] = "Lookup";
42734
+ MemberKind13[MemberKind13["NSProperty"] = 10] = "NSProperty";
42735
+ MemberKind13[MemberKind13["Sprite"] = 11] = "Sprite";
42736
+ MemberKind13[MemberKind13["Audio"] = 12] = "Audio";
42737
+ MemberKind13[MemberKind13["Function"] = 13] = "Function";
42738
+ MemberKind13[MemberKind13["Vector2"] = 14] = "Vector2";
42739
+ MemberKind13[MemberKind13["Vector2Int"] = 15] = "Vector2Int";
42740
+ MemberKind13[MemberKind13["Vector3"] = 16] = "Vector3";
42741
+ MemberKind13[MemberKind13["Vector3Int"] = 17] = "Vector3Int";
42742
+ MemberKind13[MemberKind13["DialogueLookup"] = 18] = "DialogueLookup";
42743
+ MemberKind13[MemberKind13["Color"] = 19] = "Color";
42744
+ MemberKind13[MemberKind13["Decimal"] = 20] = "Decimal";
42745
+ MemberKind13[MemberKind13["Generic"] = 21] = "Generic";
42746
+ MemberKind13[MemberKind13["Interface"] = 22] = "Interface";
42747
+ MemberKind13[MemberKind13["NSFunction"] = 23] = "NSFunction";
42748
+ MemberKind13[MemberKind13["FunctionRef"] = 24] = "FunctionRef";
42749
+ MemberKind13[MemberKind13["NSDelegate"] = 25] = "NSDelegate";
42750
+ MemberKind13[MemberKind13["NSAction"] = 26] = "NSAction";
42751
+ MemberKind13[MemberKind13["Variant"] = 27] = "Variant";
42752
+ return MemberKind13;
42758
42753
  })(MemberKind || {});
42759
42754
  }
42760
42755
  });
@@ -51233,135 +51228,11 @@ var init_enum_types = __esm({
51233
51228
  }
51234
51229
  });
51235
51230
 
51236
- // ../src/models/interfaces/interface-types.ts
51237
- function isInterfaceFunctionMember(member) {
51238
- return member.kind === 1 /* Function */;
51239
- }
51240
- function interfacePropertyIsSettable(member) {
51241
- return member.accessors === 1 /* GetSet */;
51242
- }
51243
- function containsForbiddenMemberTypeInfo(typeInfo) {
51244
- if (typeInfo.type === NS_TYPE_UNKNOWN) return true;
51245
- if (typeInfo.type === 21 /* Generic */) return true;
51246
- if (typeInfo.type === 6 /* List */ || typeInfo.type === 5 /* Dictionary */ || typeInfo.type === 9 /* Lookup */) {
51247
- return containsForbiddenMemberTypeInfo(typeInfo.entryTypeInfo);
51248
- }
51249
- if (typeInfo.type === 7 /* Class */ && typeInfo.typeArguments) {
51250
- return Object.values(typeInfo.typeArguments).some(
51251
- containsForbiddenMemberTypeInfo
51252
- );
51253
- }
51254
- return false;
51255
- }
51256
- function isNeoInterfaceMember(value) {
51257
- if (typeof value !== "object") return false;
51258
- if (value === null) return false;
51259
- const member = value;
51260
- if (typeof member.id !== "string" || member.id.length === 0) return false;
51261
- if (!isValidDocsText(member.docsText)) return false;
51262
- if (member.access !== void 0 && !isMemberAccessKind(member.access))
51263
- return false;
51264
- if (member.kind === void 0 || member.kind === 0 /* Property */) {
51265
- const property2 = value;
51266
- if (!isNSTypeInfo(property2.typeInfo)) return false;
51267
- if (containsForbiddenMemberTypeInfo(property2.typeInfo)) return false;
51268
- return property2.accessors === void 0 || property2.accessors === 0 /* Get */ || property2.accessors === 1 /* GetSet */;
51269
- }
51270
- if (member.kind !== 1 /* Function */) return false;
51271
- const fn = value;
51272
- if (!isNSFunctionReturnTypeInfo(fn.returnTypeInfo)) return false;
51273
- if (containsForbiddenMemberTypeInfo(fn.returnTypeInfo)) return false;
51274
- if (!Array.isArray(fn.argumentTypes)) return false;
51275
- for (const argumentType of fn.argumentTypes) {
51276
- if (!isNSFunctionArgumentTypeInfo(argumentType)) return false;
51277
- if (containsForbiddenMemberTypeInfo(argumentType)) return false;
51278
- }
51279
- if (fn.dispatch !== void 0 && fn.dispatch !== 0 /* Synchronous */ && fn.dispatch !== 1 /* Asynchronous */)
51280
- return false;
51281
- if (fn.dispatch === 1 /* Asynchronous */ && hasAnyParameterDefault(fn.argumentTypes)) {
51282
- return false;
51283
- }
51284
- return validateParameterDefaults(fn.argumentTypes).length === 0;
51285
- }
51286
- function isInterfaceMembersRecord(value) {
51287
- if (typeof value !== "object") return false;
51288
- if (value === null) return false;
51289
- if (Array.isArray(value)) return false;
51290
- for (const [key, member] of Object.entries(value)) {
51291
- if (key.length === 0) return false;
51292
- if (!isNeoInterfaceMember(member)) return false;
51293
- }
51294
- return true;
51295
- }
51296
- function isOptionalStringArray(value) {
51297
- if (value === void 0) return true;
51298
- if (!Array.isArray(value)) return false;
51299
- return value.every((entry) => typeof entry === "string" && entry.length > 0);
51300
- }
51301
- function isNeoInterfaceBase(value) {
51302
- if (typeof value !== "object") return false;
51303
- if (value === null) return false;
51304
- const neoInterface = value;
51305
- if (typeof neoInterface.name !== "string") return false;
51306
- if (!isValidDocsText(neoInterface.docsText)) return false;
51307
- if (!isInterfaceMembersRecord(neoInterface.members)) return false;
51308
- if (!isOptionalStringArray(neoInterface.memberKeyOrder)) return false;
51309
- if (!isOptionalStringArray(neoInterface.extendsInterfaceIds)) return false;
51310
- if (neoInterface.system !== void 0 && !isSystemMetadata(neoInterface.system)) {
51311
- return false;
51312
- }
51313
- return true;
51314
- }
51315
- function isNeoInterfaceProps(value) {
51316
- if (!isNeoInterfaceBase(value)) return false;
51317
- if (!isWithId(value)) return false;
51318
- const neoInterface = value;
51319
- if (typeof neoInterface.projectId !== "string") return false;
51320
- if (!isEpochMillis(neoInterface.createdAt)) return false;
51321
- return isEpochMillis(neoInterface.updatedAt);
51322
- }
51323
- function isNeoInterface(value) {
51324
- return isNeoInterfaceProps(value);
51325
- }
51326
- function getInterfaceMemberKeyOrder(neoInterface) {
51327
- const memberKeys = Object.keys(neoInterface.members);
51328
- const seen = /* @__PURE__ */ new Set();
51329
- const result = [];
51330
- for (const memberKey of neoInterface.memberKeyOrder ?? []) {
51331
- if (!Object.prototype.hasOwnProperty.call(neoInterface.members, memberKey)) {
51332
- continue;
51333
- }
51334
- if (seen.has(memberKey)) continue;
51335
- seen.add(memberKey);
51336
- result.push(memberKey);
51337
- }
51338
- for (const memberKey of memberKeys) {
51339
- if (seen.has(memberKey)) continue;
51340
- seen.add(memberKey);
51341
- result.push(memberKey);
51342
- }
51343
- return result;
51344
- }
51345
- var init_interface_types = __esm({
51346
- "../src/models/interfaces/interface-types.ts"() {
51347
- "use strict";
51348
- init_core();
51349
- init_neoscript_types();
51350
- init_docs_text2();
51351
- init_neoscript_guards();
51352
- init_parameter_defaults();
51353
- init_member_kinds();
51354
- }
51355
- });
51356
-
51357
51231
  // ../src/models/enum/enum-responses.ts
51358
51232
  var init_enum_responses = __esm({
51359
51233
  "../src/models/enum/enum-responses.ts"() {
51360
51234
  "use strict";
51361
- init_members();
51362
- init_classes();
51363
51235
  init_enum_types();
51364
- init_interface_types();
51365
51236
  }
51366
51237
  });
51367
51238
 
@@ -53327,7 +53198,6 @@ var init_add_class_member = __esm({
53327
53198
  init_enum2();
53328
53199
  init_classes();
53329
53200
  init_initial_class_internal_record_relation();
53330
- init_project_version_types();
53331
53201
  }
53332
53202
  });
53333
53203
 
@@ -53347,8 +53217,6 @@ var init_edit_member_props = __esm({
53347
53217
  var init_delete_member_response = __esm({
53348
53218
  "../src/models/members/delete-member-response.ts"() {
53349
53219
  "use strict";
53350
- init_member_kinds();
53351
- init_classes();
53352
53220
  }
53353
53221
  });
53354
53222
 
@@ -57495,12 +57363,131 @@ var init_dialogue_lookup_candidates = __esm({
57495
57363
  }
57496
57364
  });
57497
57365
 
57366
+ // ../src/models/interfaces/interface-types.ts
57367
+ function isInterfaceFunctionMember(member) {
57368
+ return member.kind === 1 /* Function */;
57369
+ }
57370
+ function interfacePropertyIsSettable(member) {
57371
+ return member.accessors === 1 /* GetSet */;
57372
+ }
57373
+ function containsForbiddenMemberTypeInfo(typeInfo) {
57374
+ if (typeInfo.type === NS_TYPE_UNKNOWN) return true;
57375
+ if (typeInfo.type === 21 /* Generic */) return true;
57376
+ if (typeInfo.type === 6 /* List */ || typeInfo.type === 5 /* Dictionary */ || typeInfo.type === 9 /* Lookup */) {
57377
+ return containsForbiddenMemberTypeInfo(typeInfo.entryTypeInfo);
57378
+ }
57379
+ if (typeInfo.type === 7 /* Class */ && typeInfo.typeArguments) {
57380
+ return Object.values(typeInfo.typeArguments).some(
57381
+ containsForbiddenMemberTypeInfo
57382
+ );
57383
+ }
57384
+ return false;
57385
+ }
57386
+ function isNeoInterfaceMember(value) {
57387
+ if (typeof value !== "object") return false;
57388
+ if (value === null) return false;
57389
+ const member = value;
57390
+ if (typeof member.id !== "string" || member.id.length === 0) return false;
57391
+ if (!isValidDocsText(member.docsText)) return false;
57392
+ if (member.access !== void 0 && !isMemberAccessKind(member.access))
57393
+ return false;
57394
+ if (member.kind === void 0 || member.kind === 0 /* Property */) {
57395
+ const property2 = value;
57396
+ if (!isNSTypeInfo(property2.typeInfo)) return false;
57397
+ if (containsForbiddenMemberTypeInfo(property2.typeInfo)) return false;
57398
+ return property2.accessors === void 0 || property2.accessors === 0 /* Get */ || property2.accessors === 1 /* GetSet */;
57399
+ }
57400
+ if (member.kind !== 1 /* Function */) return false;
57401
+ const fn = value;
57402
+ if (!isNSFunctionReturnTypeInfo(fn.returnTypeInfo)) return false;
57403
+ if (containsForbiddenMemberTypeInfo(fn.returnTypeInfo)) return false;
57404
+ if (!Array.isArray(fn.argumentTypes)) return false;
57405
+ for (const argumentType of fn.argumentTypes) {
57406
+ if (!isNSFunctionArgumentTypeInfo(argumentType)) return false;
57407
+ if (containsForbiddenMemberTypeInfo(argumentType)) return false;
57408
+ }
57409
+ if (fn.dispatch !== void 0 && fn.dispatch !== 0 /* Synchronous */ && fn.dispatch !== 1 /* Asynchronous */)
57410
+ return false;
57411
+ if (fn.dispatch === 1 /* Asynchronous */ && hasAnyParameterDefault(fn.argumentTypes)) {
57412
+ return false;
57413
+ }
57414
+ return validateParameterDefaults(fn.argumentTypes).length === 0;
57415
+ }
57416
+ function isInterfaceMembersRecord(value) {
57417
+ if (typeof value !== "object") return false;
57418
+ if (value === null) return false;
57419
+ if (Array.isArray(value)) return false;
57420
+ for (const [key, member] of Object.entries(value)) {
57421
+ if (key.length === 0) return false;
57422
+ if (!isNeoInterfaceMember(member)) return false;
57423
+ }
57424
+ return true;
57425
+ }
57426
+ function isOptionalStringArray(value) {
57427
+ if (value === void 0) return true;
57428
+ if (!Array.isArray(value)) return false;
57429
+ return value.every((entry) => typeof entry === "string" && entry.length > 0);
57430
+ }
57431
+ function isNeoInterfaceBase(value) {
57432
+ if (typeof value !== "object") return false;
57433
+ if (value === null) return false;
57434
+ const neoInterface = value;
57435
+ if (typeof neoInterface.name !== "string") return false;
57436
+ if (!isValidDocsText(neoInterface.docsText)) return false;
57437
+ if (!isInterfaceMembersRecord(neoInterface.members)) return false;
57438
+ if (!isOptionalStringArray(neoInterface.memberKeyOrder)) return false;
57439
+ if (!isOptionalStringArray(neoInterface.extendsInterfaceIds)) return false;
57440
+ if (neoInterface.system !== void 0 && !isSystemMetadata(neoInterface.system)) {
57441
+ return false;
57442
+ }
57443
+ return true;
57444
+ }
57445
+ function isNeoInterfaceProps(value) {
57446
+ if (!isNeoInterfaceBase(value)) return false;
57447
+ if (!isWithId(value)) return false;
57448
+ const neoInterface = value;
57449
+ if (typeof neoInterface.projectId !== "string") return false;
57450
+ if (!isEpochMillis(neoInterface.createdAt)) return false;
57451
+ return isEpochMillis(neoInterface.updatedAt);
57452
+ }
57453
+ function isNeoInterface(value) {
57454
+ return isNeoInterfaceProps(value);
57455
+ }
57456
+ function getInterfaceMemberKeyOrder(neoInterface) {
57457
+ const memberKeys = Object.keys(neoInterface.members);
57458
+ const seen = /* @__PURE__ */ new Set();
57459
+ const result = [];
57460
+ for (const memberKey of neoInterface.memberKeyOrder ?? []) {
57461
+ if (!Object.prototype.hasOwnProperty.call(neoInterface.members, memberKey)) {
57462
+ continue;
57463
+ }
57464
+ if (seen.has(memberKey)) continue;
57465
+ seen.add(memberKey);
57466
+ result.push(memberKey);
57467
+ }
57468
+ for (const memberKey of memberKeys) {
57469
+ if (seen.has(memberKey)) continue;
57470
+ seen.add(memberKey);
57471
+ result.push(memberKey);
57472
+ }
57473
+ return result;
57474
+ }
57475
+ var init_interface_types = __esm({
57476
+ "../src/models/interfaces/interface-types.ts"() {
57477
+ "use strict";
57478
+ init_core();
57479
+ init_neoscript_types();
57480
+ init_docs_text2();
57481
+ init_neoscript_guards();
57482
+ init_parameter_defaults();
57483
+ init_member_kinds();
57484
+ }
57485
+ });
57486
+
57498
57487
  // ../src/models/interfaces/interface-responses.ts
57499
57488
  var init_interface_responses = __esm({
57500
57489
  "../src/models/interfaces/interface-responses.ts"() {
57501
57490
  "use strict";
57502
- init_member_kinds();
57503
- init_classes();
57504
57491
  init_interface_types();
57505
57492
  }
57506
57493
  });
@@ -58005,7 +57992,6 @@ var init_dialogue_db_response_types = __esm({
58005
57992
  init_dialogue_types();
58006
57993
  init_dialogue_group_types();
58007
57994
  init_priority_types();
58008
- init_localization_types();
58009
57995
  }
58010
57996
  });
58011
57997
 
@@ -66101,6 +66087,17 @@ function initializerReferencesAnyIdentifier(source, names) {
66101
66087
  }
66102
66088
  return false;
66103
66089
  }
66090
+ function compilationProjectContext(args, members = args.members) {
66091
+ return {
66092
+ project: args.project,
66093
+ projectFiles: args.projectFiles ?? [],
66094
+ members: [...members],
66095
+ classes: [...args.classes],
66096
+ enums: [...args.enums],
66097
+ interfaces: [...args.interfaces ?? []],
66098
+ ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject }
66099
+ };
66100
+ }
66104
66101
  function compileNSPropertyBodies(args) {
66105
66102
  if (args.member.kind !== 10 /* NSProperty */) return;
66106
66103
  if (isMemberNSPropertyContractBase(args.member)) return;
@@ -66120,16 +66117,10 @@ function compileNSPropertyBodies(args) {
66120
66117
  const getter = compileUnit2(
66121
66118
  "getter",
66122
66119
  () => compileNSGetter(code, {
66123
- project: args.project,
66124
- projectFiles: args.projectFiles ?? [],
66125
- members: [...members],
66126
- classes: [...args.classes],
66127
- enums: [...args.enums],
66128
- interfaces: [...args.interfaces ?? []],
66120
+ ...compilationProjectContext(args, members),
66129
66121
  constructors: args.constructors ?? [],
66130
66122
  variants: args.variants ?? [],
66131
66123
  variantFolders: args.variantFolders ?? [],
66132
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66133
66124
  thisClass: args.thisClass,
66134
66125
  returnTypeInfo,
66135
66126
  implicitMemberAccess: true,
@@ -66159,16 +66150,10 @@ function compileNSPropertyBodies(args) {
66159
66150
  const setter = compileUnit2(
66160
66151
  "setter",
66161
66152
  () => compileNSSetter(setterCode, {
66162
- project: args.project,
66163
- projectFiles: args.projectFiles ?? [],
66164
- members: [...members],
66165
- classes: [...args.classes],
66166
- enums: [...args.enums],
66167
- interfaces: [...args.interfaces ?? []],
66153
+ ...compilationProjectContext(args, members),
66168
66154
  constructors: args.constructors ?? [],
66169
66155
  variants: args.variants ?? [],
66170
66156
  variantFolders: args.variantFolders ?? [],
66171
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66172
66157
  thisClass: args.thisClass,
66173
66158
  valueTypeInfo: returnTypeInfo,
66174
66159
  implicitMemberAccess: true,
@@ -66212,16 +66197,10 @@ function compileNSFunctionBody(args) {
66212
66197
  const action2 = compileUnit2(
66213
66198
  "function",
66214
66199
  () => compileNSFunction("", {
66215
- project: args.project,
66216
- projectFiles: args.projectFiles ?? [],
66217
- members: [...members],
66218
- classes: [...args.classes],
66219
- enums: [...args.enums],
66220
- interfaces: [...args.interfaces ?? []],
66200
+ ...compilationProjectContext(args, members),
66221
66201
  constructors: args.constructors ?? [],
66222
66202
  variants: args.variants ?? [],
66223
66203
  variantFolders: args.variantFolders ?? [],
66224
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66225
66204
  thisClass: args.thisClass,
66226
66205
  functionName: args.member.name,
66227
66206
  implicitMemberAccess: true,
@@ -66261,16 +66240,10 @@ function compileNSFunctionBody(args) {
66261
66240
  const action = compileUnit2(
66262
66241
  "function",
66263
66242
  () => compileNSFunction(code, {
66264
- project: args.project,
66265
- projectFiles: args.projectFiles ?? [],
66266
- members: [...members],
66267
- classes: [...args.classes],
66268
- enums: [...args.enums],
66269
- interfaces: [...args.interfaces ?? []],
66243
+ ...compilationProjectContext(args, members),
66270
66244
  constructors: args.constructors ?? [],
66271
66245
  variants: args.variants ?? [],
66272
66246
  variantFolders: args.variantFolders ?? [],
66273
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66274
66247
  thisClass: args.thisClass,
66275
66248
  functionName: args.member.name,
66276
66249
  implicitMemberAccess: true,
@@ -66300,16 +66273,10 @@ function compileMemberInitializerBody(args) {
66300
66273
  compiled = compileUnit2(
66301
66274
  "getter",
66302
66275
  () => compileNSInitializer(defaultValue.init.code, {
66303
- project: args.project,
66304
- projectFiles: args.projectFiles ?? [],
66305
- members: [...members],
66306
- classes: [...args.classes],
66307
- enums: [...args.enums],
66308
- interfaces: [...args.interfaces ?? []],
66276
+ ...compilationProjectContext(args, members),
66309
66277
  constructors: args.constructors ?? [],
66310
66278
  variants: args.variants ?? [],
66311
66279
  variantFolders: args.variantFolders ?? [],
66312
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66313
66280
  returnTypeInfo,
66314
66281
  initializerName: args.member.name,
66315
66282
  argumentTypes: initializerArgumentTypes(
@@ -66363,12 +66330,7 @@ function compileValueRowInitializerBody(args) {
66363
66330
  compiled = compileUnit2(
66364
66331
  "getter",
66365
66332
  () => compileNSInitializer(container.init.code, {
66366
- project: args.project,
66367
- projectFiles: args.projectFiles ?? [],
66368
- members: [...args.members],
66369
- classes: [...args.classes],
66370
- enums: [...args.enums],
66371
- interfaces: [...args.interfaces ?? []],
66333
+ ...compilationProjectContext(args),
66372
66334
  constructors: args.constructors ?? [],
66373
66335
  variants: args.variants ?? [],
66374
66336
  variantFolders: args.variantFolders ?? [],
@@ -66379,7 +66341,6 @@ function compileValueRowInitializerBody(args) {
66379
66341
  args.initializerOwnerClass,
66380
66342
  args.constructors ?? []
66381
66343
  ),
66382
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66383
66344
  ...args.storedConstructionReplay === true ? { storedConstructionReplay: true } : {}
66384
66345
  })
66385
66346
  );
@@ -66446,14 +66407,8 @@ function compileConstructorRecord(args) {
66446
66407
  const action = compileUnit2(
66447
66408
  "function",
66448
66409
  () => compileNSConstructor(code, {
66449
- project: args.project,
66450
- projectFiles: args.projectFiles ?? [],
66451
- members: [...args.members],
66452
- classes: [...args.classes],
66453
- enums: [...args.enums],
66454
- interfaces: [...args.interfaces ?? []],
66410
+ ...compilationProjectContext(args),
66455
66411
  constructors: args.constructors,
66456
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66457
66412
  thisClass: owner,
66458
66413
  argumentTypes,
66459
66414
  constructorName: owner.name
@@ -66490,14 +66445,8 @@ function compileConstructorBaseArguments(args, owner) {
66490
66445
  return compileUnit2(
66491
66446
  "getter",
66492
66447
  () => compileNSInitializer(baseArgument.code, {
66493
- project: args.project,
66494
- projectFiles: args.projectFiles ?? [],
66495
- members: [...args.members],
66496
- classes: [...args.classes],
66497
- enums: [...args.enums],
66498
- interfaces: [...args.interfaces ?? []],
66448
+ ...compilationProjectContext(args),
66499
66449
  constructors: args.constructors,
66500
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66501
66450
  returnTypeInfo,
66502
66451
  argumentTypes,
66503
66452
  initializerName: `${owner.name} base argument ${baseArgument.name}`
@@ -66617,14 +66566,8 @@ function compileConstructorBaseInitializerFields(args, owner) {
66617
66566
  return compileUnit2(
66618
66567
  "getter",
66619
66568
  () => compileNSInitializer(field.code, {
66620
- project: args.project,
66621
- projectFiles: args.projectFiles ?? [],
66622
- members: [...args.members],
66623
- classes: [...args.classes],
66624
- enums: [...args.enums],
66625
- interfaces: [...args.interfaces ?? []],
66569
+ ...compilationProjectContext(args),
66626
66570
  constructors: args.constructors,
66627
- ...args.compilationProject === void 0 ? {} : { compilationProject: args.compilationProject },
66628
66571
  returnTypeInfo,
66629
66572
  argumentTypes: args.constructor.argumentTypes,
66630
66573
  initializerName: `${owner.name} base initializer ${field.name}`
@@ -67893,7 +67836,6 @@ var init_constructor_argument_ownership = __esm({
67893
67836
  childrenByContainerId;
67894
67837
  edgesByOwnerValueId;
67895
67838
  referenceCountByTargetValueId;
67896
- classesById;
67897
67839
  membersById;
67898
67840
  constructorsById;
67899
67841
  contextualRootMembersByValueId;
@@ -67908,9 +67850,6 @@ var init_constructor_argument_ownership = __esm({
67908
67850
  this.valuesById = rows;
67909
67851
  this.document = { ...document, values: [...rows.values()] };
67910
67852
  this.contextualRootMembersByValueId = contextualRootMembersByValueId;
67911
- this.classesById = new Map(
67912
- document.classes.map((schemaClass2) => [schemaClass2.id, schemaClass2])
67913
- );
67914
67853
  this.membersById = new Map(
67915
67854
  document.members.map((member) => [member.id, member])
67916
67855
  );
@@ -69927,7 +69866,21 @@ function invalidateEvaluatorIndexes(ctx) {
69927
69866
  function trackedRowForValueReference(value, ctx) {
69928
69867
  if (typeof value !== "object" || value === null) return null;
69929
69868
  const indexes = evaluatorIndexes(ctx);
69930
- return indexes.rowByValueReference.get(value) ?? indexes.baseRowByValueReference?.get(value) ?? ctx.vm.databaseVM?.rowForValueReference?.(value) ?? null;
69869
+ const indexed = indexes.rowByValueReference.get(value) ?? indexes.baseRowByValueReference?.get(value) ?? ctx.vm.databaseVM?.rowForValueReference?.(value) ?? null;
69870
+ if (indexed !== null) return indexed;
69871
+ if (value !== ctx.thisValue || typeof ctx.thisValueRowId !== "string") {
69872
+ return null;
69873
+ }
69874
+ return evalValueById(
69875
+ ctx,
69876
+ ctx.thisValueRowId,
69877
+ ctx.__runtimeSessionValues,
69878
+ ctx.__valueOverlay
69879
+ );
69880
+ }
69881
+ function bindThisValue(ctx, thisValue) {
69882
+ const rowId = thisValue === ctx.thisValue ? ctx.thisValueRowId : trackedRowForValueReference(thisValue, ctx)?.id;
69883
+ return { ...ctx, thisValue, thisValueRowId: rowId };
69931
69884
  }
69932
69885
  function assertStoredReplayMutableValue(value, ctx, label) {
69933
69886
  if (ctx.storedConstructionReplay !== true) return;
@@ -71651,8 +71604,7 @@ function dispatchNSSetter(target, value, scope, ctx, writes) {
71651
71604
  evaluateNSSetter(
71652
71605
  setter,
71653
71606
  {
71654
- ...ctx,
71655
- thisValue: receiver,
71607
+ ...bindThisValue(ctx, receiver),
71656
71608
  __setterCallStack: innerStack
71657
71609
  },
71658
71610
  value,
@@ -72233,7 +72185,7 @@ function evalPointer(pointer, scope, ctx) {
72233
72185
  try {
72234
72186
  return executeCompiledFunction(
72235
72187
  action,
72236
- { ...ctx, thisValue: innerThis },
72188
+ bindThisValue(ctx, innerThis),
72237
72189
  args,
72238
72190
  runtimeSignature.returnTypeInfo.type === NS_TYPE_VOID,
72239
72191
  runtimeSignature
@@ -72476,7 +72428,7 @@ function invokeDelegateValue(value, args, ctx, callSiteId, ownerReceiver) {
72476
72428
  const runtimeSignature = receiver === null ? signature : substituteCallableSignatureForReceiver(signature, receiver, ctx);
72477
72429
  return executeCompiledFunction(
72478
72430
  action,
72479
- { ...ctx, thisValue: receiver },
72431
+ bindThisValue(ctx, receiver),
72480
72432
  args,
72481
72433
  runtimeSignature.returnTypeInfo.type === NS_TYPE_VOID,
72482
72434
  runtimeSignature
@@ -73146,8 +73098,7 @@ function dispatchNSGetterById(memberId, receiver, ctx) {
73146
73098
  const innerStack = new Set(stack);
73147
73099
  innerStack.add(memberId);
73148
73100
  return evaluateNSGetter(getter, {
73149
- ...ctx,
73150
- thisValue: receiver,
73101
+ ...bindThisValue(ctx, receiver),
73151
73102
  __getterCallStack: innerStack
73152
73103
  });
73153
73104
  }
@@ -75683,7 +75634,7 @@ function runDeclaredConstructorChain(args) {
75683
75634
  args.applyBaseInitializerBlock(record3, args.argumentValues, args.thisValue);
75684
75635
  executeCompiledFunction(
75685
75636
  record3.action,
75686
- { ...ctx, thisValue: args.thisValue },
75637
+ bindThisValue(ctx, args.thisValue),
75687
75638
  args.argumentValues,
75688
75639
  true
75689
75640
  );
@@ -75758,7 +75709,7 @@ function evaluateBaseInitializerFields(args) {
75758
75709
  });
75759
75710
  const value = executeCompiledFunction(
75760
75711
  getter,
75761
- { ...ctx, thisValue: args.thisValue },
75712
+ bindThisValue(ctx, args.thisValue),
75762
75713
  args.argumentValues,
75763
75714
  false
75764
75715
  );
@@ -75999,9 +75950,7 @@ function evaluateInitializerInContext(init, member, ctx, createdValues, argument
75999
75950
  const closeFrame = pushConstructionFrame(ctx, `${member.name} initializer`);
76000
75951
  let result;
76001
75952
  try {
76002
- const initializerCtx = ctx.thisValue === null ? ctx : Object.assign({}, ctx, {
76003
- thisValue: null
76004
- });
75953
+ const initializerCtx = ctx.thisValue === null ? ctx : bindThisValue(ctx, null);
76005
75954
  result = evaluateNSGetterWithEffects(
76006
75955
  compiled,
76007
75956
  initializerCtx,
@@ -81136,6 +81085,7 @@ var init_evaluateInitializer = __esm({
81136
81085
  "../src/view-models/neoscript-evaluator/evaluateInitializer.ts"() {
81137
81086
  "use strict";
81138
81087
  init_deep_clone_plain_data();
81088
+ init_collections();
81139
81089
  init_instance_provenance();
81140
81090
  init_members();
81141
81091
  init_project2();
@@ -81625,24 +81575,17 @@ var init_project_record_migrations = __esm({
81625
81575
  var project_document_read_exports = {};
81626
81576
  __export(project_document_read_exports, {
81627
81577
  DOCUMENT_MANIFEST_PAGE_SIZE: () => DOCUMENT_MANIFEST_PAGE_SIZE,
81628
- DOCUMENT_SNAPSHOT_FETCH_CHUNK_SIZE: () => DOCUMENT_SNAPSHOT_FETCH_CHUNK_SIZE,
81629
- DOCUMENT_SNAPSHOT_FETCH_CONCURRENCY: () => DOCUMENT_SNAPSHOT_FETCH_CONCURRENCY,
81630
- appendProjectRecordToBuckets: () => appendProjectRecordToBuckets,
81631
81578
  assembleProjectDocumentRaw: () => assembleProjectDocumentRaw,
81632
- emptyProjectRecordBuckets: () => emptyProjectRecordBuckets,
81633
81579
  fetchProjectDocumentPartitionRecords: () => fetchProjectDocumentPartitionRecords,
81634
81580
  fetchProjectDocumentRawChunked: () => fetchProjectDocumentRawChunked,
81635
81581
  fetchProjectDocumentSnapshots: () => fetchProjectDocumentSnapshots,
81636
81582
  readArrayField: () => readArrayField,
81637
- readField: () => readField,
81638
- readOptionalArrayField: () => readOptionalArrayField,
81639
81583
  readProjectDocument: () => readProjectDocument,
81640
81584
  readProjectDocumentContentHashHeads: () => readProjectDocumentContentHashHeads,
81641
81585
  readProjectDocumentManifestPage: () => readProjectDocumentManifestPage,
81642
81586
  readProjectDocumentManifestPageRecords: () => readProjectDocumentManifestPageRecords,
81643
81587
  readProjectDocumentManifestRecords: () => readProjectDocumentManifestRecords,
81644
81588
  readProjectDocumentRevisionMarker: () => readProjectDocumentRevisionMarker,
81645
- readStoredMembersField: () => readStoredMembersField,
81646
81589
  withStoredValueBase: () => withStoredValueBase
81647
81590
  });
81648
81591
  async function fetchProjectDocumentRawChunked(runner, options = {}) {
@@ -86460,7 +86403,6 @@ var init_root_source = __esm({
86460
86403
  init_projection();
86461
86404
  init_instance_provenance();
86462
86405
  init_value_sources();
86463
- init_root_value_paths();
86464
86406
  init_source_format();
86465
86407
  init_stored_value_placements();
86466
86408
  ROOT_PROJECT_FIELDS2 = [
@@ -87095,16 +87037,6 @@ var init_animation_clips = __esm({
87095
87037
  const member = this.envBindingMember(env, paramId);
87096
87038
  return isMemberClass(member) ? member.classId : null;
87097
87039
  }
87098
- classDescendsFrom(classId, baseClassId) {
87099
- const visited = /* @__PURE__ */ new Set();
87100
- let current = this.classById.get(classId);
87101
- while (current !== void 0 && !visited.has(current.id)) {
87102
- if (current.id === baseClassId) return true;
87103
- visited.add(current.id);
87104
- current = current.extendsClassId ? this.classById.get(current.extendsClassId) : void 0;
87105
- }
87106
- return false;
87107
- }
87108
87040
  /**
87109
87041
  * P48 §1 and §7's segment rules, for every segment the document holds.
87110
87042
  *
@@ -87580,13 +87512,6 @@ var init_animation_clips = __esm({
87580
87512
  };
87581
87513
  return isMemberClass(resolvedEntryMember) ? resolvedEntryMember.classId : void 0;
87582
87514
  }
87583
- requireSingleLookupField(parent, classId, memberId, label) {
87584
- const value = this.scalarField(parent, classId, memberId);
87585
- if (!Array.isArray(value) || value.length !== 1 || typeof value[0] !== "string") {
87586
- throw new Error(`${label} must reference exactly one child.`);
87587
- }
87588
- return value[0];
87589
- }
87590
87515
  requirePositiveIntegerField(parent, classId, memberId, label) {
87591
87516
  const value = this.requireIntegerField(parent, classId, memberId, label);
87592
87517
  if (value < 1) throw new Error(`${label} must be at least 1.`);
@@ -87655,10 +87580,6 @@ var init_animation_clips = __esm({
87655
87580
  const bindingMember = binding?.kind === "member" ? this.memberById.get(binding.memberId) : void 0;
87656
87581
  return isMemberClass(bindingMember) ? bindingMember.classId : null;
87657
87582
  }
87658
- requireClassMember(value) {
87659
- if (!isMemberClass(value)) throw new Error("Expected Class member.");
87660
- return value;
87661
- }
87662
87583
  field(classId, requiredMemberId) {
87663
87584
  const entry = mergeStoredInstanceSchema(
87664
87585
  classId,
@@ -88717,7 +88638,7 @@ function storedConstructionEmitters(state, manifest) {
88717
88638
  if (!isObjectRecord2(record3.data)) continue;
88718
88639
  if (!isObjectRecord2(record3.data.value)) continue;
88719
88640
  const constructorArgs = record3.data.constructorArgs;
88720
- const hasInstanceProvenance = carriesStoredInstanceProvenance(record3.data);
88641
+ const hasInstanceProvenance = isVirtualInstanceRootShape(record3.data);
88721
88642
  if (constructorArgs !== void 0 && constructorArgs !== null && !hasInstanceProvenance) {
88722
88643
  continue;
88723
88644
  }
@@ -88816,9 +88737,6 @@ function nearestOwnedAncestor(valueId, parents, owners) {
88816
88737
  }
88817
88738
  return null;
88818
88739
  }
88819
- function carriesStoredInstanceProvenance(value) {
88820
- return isVirtualInstanceRootShape(value);
88821
- }
88822
88740
  function readMaterializedConstructionBuildCacheV2(root, state) {
88823
88741
  try {
88824
88742
  const parsed = JSON.parse(
@@ -89660,7 +89578,7 @@ function withoutFields(value, ignored) {
89660
89578
  Object.entries(value).filter(([field]) => !ignored.has(field))
89661
89579
  );
89662
89580
  }
89663
- var NON_CONTRACT_MEMBER_FIELDS, NS_PROPERTY_BODY_FIELDS, NS_FUNCTION_BODY_FIELDS, collectCompiledClassIds;
89581
+ var NON_CONTRACT_MEMBER_FIELDS, NS_PROPERTY_BODY_FIELDS, NS_FUNCTION_BODY_FIELDS;
89664
89582
  var init_neo_script_recompile_scope = __esm({
89665
89583
  "../src/database/neo-script-recompile-scope.ts"() {
89666
89584
  "use strict";
@@ -89700,7 +89618,6 @@ var init_neo_script_recompile_scope = __esm({
89700
89618
  "bodyMode",
89701
89619
  "uiAction"
89702
89620
  ]);
89703
- collectCompiledClassIds = collectConstructedClassIds;
89704
89621
  }
89705
89622
  });
89706
89623
 
@@ -91134,7 +91051,7 @@ function consumeWorldPlacementSidecarKeys(args) {
91134
91051
  }
91135
91052
  return present;
91136
91053
  }
91137
- var WORLD_PLACEMENT_SIDECAR_KEYS, WORLD_PLACEMENT_SIDECAR_KEY_SET, WORLD_PLACEMENT_ASSET_KIND;
91054
+ var WORLD_PLACEMENT_SIDECAR_KEYS, WORLD_PLACEMENT_ASSET_KIND;
91138
91055
  var init_world_content_sidecar_validation = __esm({
91139
91056
  "../src/models/project/world-content-sidecar-validation.ts"() {
91140
91057
  "use strict";
@@ -91150,9 +91067,6 @@ var init_world_content_sidecar_validation = __esm({
91150
91067
  "assetValueId",
91151
91068
  "variantId"
91152
91069
  ];
91153
- WORLD_PLACEMENT_SIDECAR_KEY_SET = new Set(
91154
- WORLD_PLACEMENT_SIDECAR_KEYS
91155
- );
91156
91070
  WORLD_PLACEMENT_ASSET_KIND = /* @__PURE__ */ new Map([
91157
91071
  [NeoWorldSystemClassKind.TileInstance, NeoWorldSystemClassKind.Tile],
91158
91072
  [NeoWorldSystemClassKind.ObjectPlacementTile, NeoWorldSystemClassKind.Object],
@@ -105870,7 +105784,7 @@ function extractProjectSnapshotDerivedEdges(source) {
105870
105784
  payloadJson: canonicalJsonStringify({ referenceKind: "type-name" })
105871
105785
  });
105872
105786
  }
105873
- for (const targetKey of collectCompiledClassIds(source.data)) {
105787
+ for (const targetKey of collectConstructedClassIds(source.data)) {
105874
105788
  add({
105875
105789
  edgeKind: "compiled-reference",
105876
105790
  targetKey,
@@ -110767,7 +110681,6 @@ function lowerSeedRow(context, member, sourceExpression, source, valueId, path,
110767
110681
  context,
110768
110682
  effectiveClass,
110769
110683
  environment,
110770
- source,
110771
110684
  path
110772
110685
  );
110773
110686
  const body = {};
@@ -111097,7 +111010,6 @@ function lowerStructuralConstructionRow(context, member, expression, source, val
111097
111010
  context,
111098
111011
  effectiveClass,
111099
111012
  environment,
111100
- source,
111101
111013
  path
111102
111014
  );
111103
111015
  const parameters = structuralConstructorParameters(
@@ -112227,7 +112139,7 @@ function selectorReferenceReturnClassId(context, expression) {
112227
112139
  const className = astTypeNameV4(returned.typeArguments[0]);
112228
112140
  return className === null ? null : context.classesByName.get(className)?.id ?? null;
112229
112141
  }
112230
- function animationChildOverrideSeedBindings(context, schemaClass2, environment, source, path) {
112142
+ function animationChildOverrideSeedBindings(context, schemaClass2, environment, path) {
112231
112143
  if (schemaClass2.system?.worldKind !== "animationChildOverride") {
112232
112144
  return void 0;
112233
112145
  }
@@ -116331,7 +116243,7 @@ function discoverProjectBinariesV4(root, explicit, ignoredPaths = []) {
116331
116243
  });
116332
116244
  }
116333
116245
  const reserved = explicit.map((entry) => entry.symbol);
116334
- const symbols = assignDeterministicFileSymbols2(candidates, reserved);
116246
+ const symbols = assignDeterministicFileSymbols(candidates, reserved);
116335
116247
  return candidates.map((candidate) => {
116336
116248
  const inspected = inspectBinaryFile(candidate.absolute, candidate.path);
116337
116249
  return { ...inspected, symbol: symbols.get(candidate.stableId) };
@@ -116582,15 +116494,14 @@ function safePathSegment2(value) {
116582
116494
  function normalizeSlash2(value) {
116583
116495
  return value.split(sep2).join("/").replaceAll("\\", "/");
116584
116496
  }
116585
- var SUPPORTED_BINARY_TYPES, REGISTRY_ENTRY2, assignDeterministicFileSymbols2;
116497
+ var SUPPORTED_BINARY_TYPES, REGISTRY_ENTRY2;
116586
116498
  var init_project_files = __esm({
116587
116499
  "src/project-source/project-files.ts"() {
116588
116500
  "use strict";
116589
116501
  init_src();
116590
116502
  init_projection();
116591
116503
  init_source_format();
116592
- init_members();
116593
- init_project_file_registry();
116504
+ init_project_file_source();
116594
116505
  init_project_file_source();
116595
116506
  SUPPORTED_BINARY_TYPES = /* @__PURE__ */ new Map([
116596
116507
  [".png", { kind: "image", mimeType: "image/png" }],
@@ -116602,7 +116513,6 @@ var init_project_files = __esm({
116602
116513
  [".ogg", { kind: "audio", mimeType: "audio/ogg" }]
116603
116514
  ]);
116604
116515
  REGISTRY_ENTRY2 = /(?:@id\(\s*("(?:[^"\\]|\\.)*")\s*\)\s*)?(?:@settings\(([\s\S]*?)\)\s*)?(NeoImage|NeoAudioClip)\s+([A-Za-z_][A-Za-z0-9_]*)\s*=\s*new\(\s*("(?:[^"\\]|\\.)*")\s*\)\s*;/gy;
116605
- assignDeterministicFileSymbols2 = assignDeterministicProjectFileSymbols;
116606
116516
  }
116607
116517
  });
116608
116518
 
@@ -118296,7 +118206,6 @@ var init_static_value_seed_records = __esm({
118296
118206
  // src/commands/pull.ts
118297
118207
  var pull_exports = {};
118298
118208
  __export(pull_exports, {
118299
- deltaRequiresSourceProjectionV4: () => deltaRequiresSourceProjectionV4,
118300
118209
  projectSourcePathsRequiringRewriteV4: () => projectSourcePathsRequiringRewriteV4,
118301
118210
  runPull: () => runPull
118302
118211
  });
@@ -126391,7 +126300,7 @@ var init_registry2 = __esm({
126391
126300
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
126392
126301
  formatVersion: 4,
126393
126302
  contractVersion: "4.1",
126394
- cliVersion: "0.43.0",
126303
+ cliVersion: "0.43.1",
126395
126304
  projectFileUploadBatchSize: 32,
126396
126305
  documentRecords: {
126397
126306
  member: {
@@ -129524,11 +129433,6 @@ var init_test = __esm({
129524
129433
  // src/commands/doctor.ts
129525
129434
  var doctor_exports = {};
129526
129435
  __export(doctor_exports, {
129527
- NEO_COMPILER_CONTRACT: () => NEO_COMPILER_CONTRACT,
129528
- NEO_FILE_CONTRACT_VERSION: () => NEO_FILE_CONTRACT_VERSION,
129529
- NEO_SOURCE_CONTRACT_VERSION: () => NEO_SOURCE_CONTRACT_VERSION,
129530
- NEO_VSCODE_EXTENSION_CONTRACT_VERSION: () => NEO_VSCODE_EXTENSION_CONTRACT_VERSION,
129531
- NEO_VSCODE_EXTENSION_ID: () => NEO_VSCODE_EXTENSION_ID,
129532
129436
  inspectNeoDoctor: () => inspectNeoDoctor,
129533
129437
  runDoctor: () => runDoctor
129534
129438
  });
@@ -129867,8 +129771,6 @@ var init_doctor = __esm({
129867
129771
  var migrate_exports = {};
129868
129772
  __export(migrate_exports, {
129869
129773
  planCollectionMutation: () => planCollectionMutation,
129870
- resolveAssignTarget: () => resolveAssignTarget,
129871
- resolveCollectionTarget: () => resolveCollectionTarget,
129872
129774
  resolveWriteTarget: () => resolveWriteTarget,
129873
129775
  runMigrate: () => runMigrate
129874
129776
  });
@@ -130063,8 +129965,8 @@ async function runMigrate(workspace, subcommand, positional, targetRef, json, de
130063
129965
  return;
130064
129966
  }
130065
129967
  if (subcommand === "run") {
130066
- const client = NeoApiClient.forBaseUrl(workspace.config.apiBaseUrl);
130067
129968
  if (process.argv.includes("--server")) {
129969
+ const client = NeoApiClient.forBaseUrl(workspace.config.apiBaseUrl);
130068
129970
  const result = await client.post(
130069
129971
  `/api/projects/${workspace.config.projectId}/versions/${workspace.config.versionId}/migrations/run`,
130070
129972
  {
@@ -130082,11 +129984,9 @@ async function runMigrate(workspace, subcommand, positional, targetRef, json, de
130082
129984
  }
130083
129985
  await runPendingMigrations(
130084
129986
  workspace,
130085
- client,
130086
129987
  raw,
130087
129988
  migrations,
130088
- positional[0] ?? null,
130089
- json
129989
+ positional[0] ?? null
130090
129990
  );
130091
129991
  return;
130092
129992
  }
@@ -130279,36 +130179,12 @@ function resolveCollectionTarget(write, env, migrationName) {
130279
130179
  `Migration "${migrationName}" mutates a collection through an unsupported target.`
130280
130180
  );
130281
130181
  }
130282
- function resolveAssignTarget(write, instanceValue, migrationName) {
130283
- if (write.kind !== "assign") {
130284
- throw new Error(
130285
- `Migration "${migrationName}" produced a "${write.kind}" write; the current runner only applies plain assignments (this.<Field> = ...).`
130286
- );
130287
- }
130288
- const target = isObjectRecord2(write.target) ? write.target : {};
130289
- const pointer = isObjectRecord2(target.pointer) ? target.pointer : {};
130290
- const keyOf = isObjectRecord2(pointer.keyOf) ? pointer.keyOf : {};
130291
- const receiver = keyOf.pointer;
130292
- if (!isObjectRecord2(receiver) || receiver.type !== "variable" || receiver.variableId !== "__this__" && receiver.variableId !== "__target__") {
130293
- throw new Error(
130294
- `Migration "${migrationName}" assigns to a non-this receiver; the current runner only applies direct this.<Field> assignments.`
130295
- );
130296
- }
130297
- const childKey = readLiteralKey(keyOf.key, migrationName);
130298
- if (!isObjectRecord2(instanceValue) || typeof instanceValue[childKey] !== "string") {
130299
- throw new Error(
130300
- `Migration "${migrationName}" writes "${childKey}" but the instance has no stored value id for that key.`
130301
- );
130302
- }
130303
- return { childKey };
130304
- }
130305
130182
  function migrationTargetClassName(thisClass) {
130306
130183
  if (thisClass === null) return null;
130307
130184
  if (typeof thisClass.name !== "string") return null;
130308
130185
  return thisClass.name;
130309
130186
  }
130310
- async function runPendingMigrations(workspace, client, raw, migrations, onlyRef, dryRunFlagUnused) {
130311
- void dryRunFlagUnused;
130187
+ async function runPendingMigrations(workspace, raw, migrations, onlyRef) {
130312
130188
  const dryRun = process.argv.includes("--dry-run");
130313
130189
  const document = readDocumentArrays(raw);
130314
130190
  const heads = /* @__PURE__ */ new Map();
@@ -132902,8 +132778,7 @@ var init_dev = __esm({
132902
132778
  var resolve_exports = {};
132903
132779
  __export(resolve_exports, {
132904
132780
  resolveMarkers: () => resolveMarkers,
132905
- runResolve: () => runResolve,
132906
- workspaceFilePath: () => workspaceFilePath
132781
+ runResolve: () => runResolve
132907
132782
  });
132908
132783
  import { readFileSync as readFileSync19, rmSync as rmSync8, writeFileSync as writeFileSync14 } from "node:fs";
132909
132784
  import { join as join20 } from "node:path";
@@ -133005,9 +132880,6 @@ function resolveMarkers(source, side) {
133005
132880
  }
133006
132881
  return output.join("\n");
133007
132882
  }
133008
- function workspaceFilePath(workspace, file) {
133009
- return join20(workspace.root, file);
133010
- }
133011
132883
  var init_resolve = __esm({
133012
132884
  "src/commands/resolve.ts"() {
133013
132885
  "use strict";
@@ -133211,7 +133083,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
133211
133083
  async function main() {
133212
133084
  const args = parseArgs(process.argv.slice(2));
133213
133085
  if (args.command === "--version") {
133214
- console.log("0.43.0");
133086
+ console.log("0.43.1");
133215
133087
  return;
133216
133088
  }
133217
133089
  if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.43.0",
3
+ "version": "0.43.1",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -39,6 +39,7 @@
39
39
  "ignore": "^7.0.6"
40
40
  },
41
41
  "devDependencies": {
42
+ "@neocompose/neoscript-language": "file:../packages/neoscript-language",
42
43
  "esbuild": "^0.28.1",
43
44
  "prettier": "^3.9.5",
44
45
  "uuid": "^14.0.1"
@@ -9,7 +9,7 @@ description: >-
9
9
  `@neocompose/cli` or `node cli/bin/neo.mjs` in the neo-compose repository.
10
10
  ---
11
11
 
12
- <!-- reviewed-through-cli: 0.43.0 -->
12
+ <!-- reviewed-through-cli: 0.43.1 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -83,7 +83,7 @@ wrappers.
83
83
  The marker near the top of `SKILL.md` must exactly match the package version:
84
84
 
85
85
  ```html
86
- <!-- reviewed-through-cli: 0.43.0 -->
86
+ <!-- reviewed-through-cli: 0.43.1 -->
87
87
  ```
88
88
 
89
89
  The quoted version above is checked too, so this instruction cannot go stale