@neocompose/cli 0.53.4 → 0.53.7

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,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.53.7] - 2026-09-22
4
+
5
+ - Adding a value under a row that stores packed children, such as a new list on an item whose sprite is packed, keeps those children readable in `neo test`, `neo status`, and `neo push --dry-run`. A constructed instance replayed from that row used to receive the child's id instead of its value and fail with "NSFunction argument 1 does not match its declared runtime type."
6
+ - Editing a function's or property's source drops its stale compiled body before local verification. Changing a function's parameters while keeping its `@id` no longer fails with 'Convex project document field "members" has an invalid shape'.
7
+
8
+ ## [0.53.6] - 2026-09-19
9
+
10
+ - Full project reads, including initial pulls and resyncs, fetch published snapshots directly in bounded pages, reducing Convex requests and duplicate database reads. Normal incremental pulls keep their existing delta transport.
11
+
12
+ ## [0.53.5] - 2026-09-19
13
+
14
+ - `neo test` and `neo push --dry-run` compile pending member initializers and their newly authored callable dependencies when a deletion replays a surviving constructed instance. Adding a computed default and deleting an owned row in one push no longer fails with "has no compiled body".
15
+ - Clearing a stored list, dictionary, or nested object override, or resetting a scalar to its declared default, preserves its stored binding during source verification. `neo test` and `neo push --dry-run` no longer reject these edits as omitted parent changes.
16
+
3
17
  ## [0.53.4] - 2026-09-19
4
18
 
5
19
  - `neo test` preserves runtime types and getter overrides for nested save objects after writes rebuild the evaluator ownership index. Virtual children reuse their known owning graph when no stored parent link exists.
package/dist/neo.mjs CHANGED
@@ -38465,16 +38465,26 @@ function composeDocumentRecord(recordKind, recordId, authoredFields, baseRecord)
38465
38465
  }
38466
38466
  assertKnownDocumentFields(recordKind, baseRecord.data);
38467
38467
  const base = partitionDocumentFields(recordKind, baseRecord.data);
38468
- const invalidatesDerivedConstructor = recordKind === "constructor" && !schemaDocumentAuthoredSemanticallyEqual(
38468
+ const derived = Object.entries(base.derived);
38469
+ const authoredEdited = derived.length > 0 && !schemaDocumentAuthoredSemanticallyEqual(
38469
38470
  recordKind,
38470
38471
  baseRecord.data,
38471
38472
  normalizedAuthored
38472
38473
  );
38473
- if (!invalidatesDerivedConstructor) Object.assign(data, base.derived);
38474
+ for (const [field, value] of derived) {
38475
+ if (authoredEdited && compiledFromAuthoredBody(recordKind, field)) {
38476
+ continue;
38477
+ }
38478
+ data[field] = value;
38479
+ }
38474
38480
  Object.assign(data, base.volatile);
38475
38481
  }
38476
38482
  return { recordKind, recordId, data };
38477
38483
  }
38484
+ function compiledFromAuthoredBody(recordKind, field) {
38485
+ if (recordKind === "constructor") return true;
38486
+ return recordKind === "member" && field !== "valueId";
38487
+ }
38478
38488
  function assertOnlyAuthoredFields(recordKind, fields) {
38479
38489
  for (const field of Object.keys(fields)) {
38480
38490
  const disposition = fieldDisposition(recordKind, field);
@@ -85700,6 +85710,171 @@ var init_init_source = __esm({
85700
85710
  }
85701
85711
  });
85702
85712
 
85713
+ // ../src/database/document-initializer-compiler.ts
85714
+ function initializerCompilerState(document, compilationProject) {
85715
+ const existing = documentInitializerCompilerStates.get(document);
85716
+ if (existing !== void 0) {
85717
+ if (compilationProject !== void 0) {
85718
+ existing.compilationProject = compilationProject;
85719
+ }
85720
+ return existing;
85721
+ }
85722
+ const created = {
85723
+ compilationProject: compilationProject ?? null
85724
+ };
85725
+ documentInitializerCompilerStates.set(document, created);
85726
+ return created;
85727
+ }
85728
+ function compilationProjectForDocument(document, state) {
85729
+ state.compilationProject ??= createNeoScriptCompilationProject({
85730
+ project: document.project,
85731
+ projectFiles: document.projectFiles,
85732
+ members: document.members,
85733
+ classes: document.classes,
85734
+ enums: document.enums,
85735
+ interfaces: document.interfaces,
85736
+ constructors: document.constructors ?? []
85737
+ });
85738
+ return state.compilationProject;
85739
+ }
85740
+ function documentMemberCompilationIndex(document) {
85741
+ const existing = documentMemberCompilationIndexes.get(document);
85742
+ if (existing !== void 0) return existing;
85743
+ const created = {
85744
+ membersById: new Map(
85745
+ document.members.map((member) => [member.id, member])
85746
+ ),
85747
+ ownerClassesByMemberId: new Map(
85748
+ document.classes.flatMap(
85749
+ (schemaClass2) => Object.values(schemaClass2.schema).map(
85750
+ (memberId) => [memberId, schemaClass2]
85751
+ )
85752
+ )
85753
+ )
85754
+ };
85755
+ documentMemberCompilationIndexes.set(document, created);
85756
+ return created;
85757
+ }
85758
+ function documentInitializerCompiler(document, compilationProject) {
85759
+ const state = initializerCompilerState(document, compilationProject);
85760
+ return (site) => {
85761
+ if (site.sourceValueId !== null) {
85762
+ compileValueInitializerDependency(
85763
+ document,
85764
+ site.sourceValueId,
85765
+ compilationProjectForDocument(document, state)
85766
+ );
85767
+ return;
85768
+ }
85769
+ if (site.memberId === null) return;
85770
+ compileMemberInitializerDependency(
85771
+ document,
85772
+ site.memberId,
85773
+ compilationProjectForDocument(document, state)
85774
+ );
85775
+ };
85776
+ }
85777
+ function valueInitializerCompilationSites(document) {
85778
+ const cached = documentValueInitializerCompilationSites.get(document);
85779
+ if (cached !== void 0) return cached;
85780
+ const rows = document.values.filter(isInitValueContent);
85781
+ const valuesById = new Map(
85782
+ document.values.map((value) => [value.id, value])
85783
+ );
85784
+ const ownershipTargetIds = valueIdsWithSourceChains(
85785
+ new Set(rows.map((row) => row.id)),
85786
+ valuesById
85787
+ );
85788
+ const rootOwners = /* @__PURE__ */ new Map();
85789
+ const owners = resolveOwnerMembersForValues(
85790
+ document,
85791
+ ownershipTargetIds,
85792
+ void 0,
85793
+ rootOwners
85794
+ );
85795
+ const sites = /* @__PURE__ */ new Map();
85796
+ for (const row of rows) {
85797
+ const member = owners.get(row.id);
85798
+ if (member === void 0) continue;
85799
+ const ownerContext = initializerOwnerContext(
85800
+ document,
85801
+ row.id,
85802
+ rootOwners,
85803
+ valuesById
85804
+ );
85805
+ sites.set(row.id, {
85806
+ row,
85807
+ member,
85808
+ ownerClass: ownerContext.ownerClass,
85809
+ lexicalThisClass: ownerContext.lexicalThisClass
85810
+ });
85811
+ }
85812
+ documentValueInitializerCompilationSites.set(document, sites);
85813
+ return sites;
85814
+ }
85815
+ function compileValueInitializerDependency(document, valueId, compilationProject) {
85816
+ const site = valueInitializerCompilationSites(document).get(valueId);
85817
+ if (site === void 0) {
85818
+ throw new Error(
85819
+ "Cannot compile initializer dependency because its source value row is unresolved."
85820
+ );
85821
+ }
85822
+ compileValueRowInitializerBody({
85823
+ project: document.project,
85824
+ projectFiles: document.projectFiles,
85825
+ members: document.members,
85826
+ classes: document.classes,
85827
+ enums: document.enums,
85828
+ interfaces: document.interfaces,
85829
+ constructors: document.constructors ?? [],
85830
+ member: site.member,
85831
+ valueRow: { ...site.row },
85832
+ valueId: site.row.id,
85833
+ initializerOwnerClass: site.ownerClass,
85834
+ lexicalThisClass: site.lexicalThisClass,
85835
+ storedConstructionReplay: true,
85836
+ ...compilationProject === void 0 ? {} : { compilationProject }
85837
+ });
85838
+ }
85839
+ function compileMemberInitializerDependency(document, memberId, compilationProject) {
85840
+ const compileArgs = {
85841
+ project: document.project,
85842
+ projectFiles: document.projectFiles,
85843
+ members: document.members,
85844
+ classes: document.classes,
85845
+ enums: document.enums,
85846
+ interfaces: document.interfaces,
85847
+ constructors: document.constructors ?? []
85848
+ };
85849
+ const memberIndex = documentMemberCompilationIndex(document);
85850
+ const member = memberIndex.membersById.get(memberId);
85851
+ if (member === void 0) {
85852
+ throw new Error(
85853
+ `Cannot compile initializer dependency for missing member "${memberId}".`
85854
+ );
85855
+ }
85856
+ const thisClass = memberIndex.ownerClassesByMemberId.get(memberId) ?? null;
85857
+ compileMemberInitializerBody({
85858
+ ...compileArgs,
85859
+ member,
85860
+ thisClass,
85861
+ ...compilationProject === void 0 ? {} : { compilationProject }
85862
+ });
85863
+ }
85864
+ var documentInitializerCompilerStates, documentMemberCompilationIndexes, documentValueInitializerCompilationSites;
85865
+ var init_document_initializer_compiler = __esm({
85866
+ "../src/database/document-initializer-compiler.ts"() {
85867
+ "use strict";
85868
+ init_members();
85869
+ init_compile_ns_property();
85870
+ init_compiler_adapter();
85871
+ init_value_row_owner_members();
85872
+ documentInitializerCompilerStates = /* @__PURE__ */ new WeakMap();
85873
+ documentMemberCompilationIndexes = /* @__PURE__ */ new WeakMap();
85874
+ documentValueInitializerCompilationSites = /* @__PURE__ */ new WeakMap();
85875
+ }
85876
+ });
85877
+
85703
85878
  // ../src/runtime/materialize-values.ts
85704
85879
  function materializeInitializerValue2(args) {
85705
85880
  return materializeInitializerValue({
@@ -86040,8 +86215,8 @@ __export(project_document_read_exports, {
86040
86215
  readArrayField: () => readArrayField,
86041
86216
  readProjectDocument: () => readProjectDocument,
86042
86217
  readProjectDocumentContentHashHeads: () => readProjectDocumentContentHashHeads,
86043
- readProjectDocumentManifestPage: () => readProjectDocumentManifestPage,
86044
86218
  readProjectDocumentManifestPageRecords: () => readProjectDocumentManifestPageRecords,
86219
+ readProjectDocumentPage: () => readProjectDocumentPage,
86045
86220
  readProjectDocumentRevisionMarker: () => readProjectDocumentRevisionMarker,
86046
86221
  withStoredValueBase: () => withStoredValueBase
86047
86222
  });
@@ -86059,7 +86234,7 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
86059
86234
  "Chunked project document read received an empty partition key."
86060
86235
  );
86061
86236
  }
86062
- const firstPageResult = await runner.fetchManifestPage(
86237
+ const firstPageResult = await runner.fetchPage(
86063
86238
  {
86064
86239
  numItems: DOCUMENT_MANIFEST_PAGE_SIZE,
86065
86240
  cursor: null
@@ -86067,7 +86242,7 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
86067
86242
  firstMapKey
86068
86243
  );
86069
86244
  if (firstPageResult === null) return null;
86070
- const firstPage = readProjectDocumentManifestPage(firstPageResult);
86245
+ const firstPage = readProjectDocumentPage(firstPageResult);
86071
86246
  if (firstPage.metadata === null) {
86072
86247
  throw new Error(
86073
86248
  "Convex project document manifest first page is missing version metadata."
@@ -86079,18 +86254,20 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
86079
86254
  const snapshots = createProjectDocumentSnapshotLoader(
86080
86255
  (ids) => fetchScopedSnapshotBatch(runner, ids, readBase)
86081
86256
  );
86082
- const rememberRecords = async (records2) => {
86257
+ const rememberRecords = async (page) => {
86258
+ if (page.snapshots !== void 0) snapshots.seed(page.snapshots);
86259
+ const records2 = page.records;
86083
86260
  for (const record6 of records2) {
86084
86261
  recordsByKey.set(`${record6.recordKind} ${record6.recordId}`, record6);
86085
86262
  }
86086
86263
  await snapshots.enqueue(records2.map((record6) => record6.snapshotId));
86087
86264
  };
86088
86265
  try {
86089
- await rememberRecords(firstPage.records);
86266
+ await rememberRecords(firstPage);
86090
86267
  const fetchRemainingPages = async (mapKey, initialCursor) => {
86091
86268
  let cursor = initialCursor;
86092
86269
  while (cursor !== null) {
86093
- const pageResult = await runner.fetchManifestPage(
86270
+ const pageResult = await runner.fetchPage(
86094
86271
  {
86095
86272
  numItems: DOCUMENT_MANIFEST_PAGE_SIZE,
86096
86273
  cursor
@@ -86103,15 +86280,15 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
86103
86280
  "Convex project document manifest returned null for a continuation page."
86104
86281
  );
86105
86282
  }
86106
- const page = readProjectDocumentManifestPage(pageResult);
86283
+ const page = readProjectDocumentPage(pageResult);
86107
86284
  assertProjectReadBase(readBase, page.readBase);
86108
- await rememberRecords(page.records);
86285
+ await rememberRecords(page);
86109
86286
  cursor = page.continueCursor;
86110
86287
  }
86111
86288
  };
86112
86289
  await fetchRemainingPages(firstMapKey, firstPage.continueCursor);
86113
86290
  for (const mapKey of mapKeys.slice(1)) {
86114
- const pageResult = await runner.fetchManifestPage(
86291
+ const pageResult = await runner.fetchPage(
86115
86292
  { numItems: DOCUMENT_MANIFEST_PAGE_SIZE, cursor: null },
86116
86293
  mapKey,
86117
86294
  readBase,
@@ -86122,9 +86299,9 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
86122
86299
  `Convex project document manifest returned null for partition "${mapKey ?? "all"}".`
86123
86300
  );
86124
86301
  }
86125
- const page = readProjectDocumentManifestPage(pageResult);
86302
+ const page = readProjectDocumentPage(pageResult);
86126
86303
  assertProjectReadBase(readBase, page.readBase);
86127
- await rememberRecords(page.records);
86304
+ await rememberRecords(page);
86128
86305
  await fetchRemainingPages(mapKey, page.continueCursor);
86129
86306
  }
86130
86307
  const snapshotsById = await snapshots.finish();
@@ -86155,7 +86332,8 @@ async function fetchProjectDocumentRawChunkedOnce(runner, options = {}) {
86155
86332
  }
86156
86333
  }
86157
86334
  const records2 = [...recordsByKey.values()];
86158
- await runner.validateReadBase(readBase);
86335
+ if (options.revisionValidation !== "live-subscription")
86336
+ await runner.validateReadBase(readBase);
86159
86337
  return assembleProjectDocumentRaw({
86160
86338
  version: metadata.version,
86161
86339
  versions: metadata.versions,
@@ -86187,7 +86365,7 @@ async function fetchProjectDocumentPartitionRecords(runner, mapKey, readBase) {
86187
86365
  try {
86188
86366
  let cursor = null;
86189
86367
  do {
86190
- const pageResult = await runner.fetchManifestPage(
86368
+ const pageResult = await runner.fetchPage(
86191
86369
  { numItems: DOCUMENT_MANIFEST_PAGE_SIZE, cursor },
86192
86370
  mapKey,
86193
86371
  readBase,
@@ -86198,11 +86376,12 @@ async function fetchProjectDocumentPartitionRecords(runner, mapKey, readBase) {
86198
86376
  `Convex project document manifest returned null for partition "${mapKey}".`
86199
86377
  );
86200
86378
  }
86201
- const page = readProjectDocumentManifestPage(pageResult);
86379
+ const page = readProjectDocumentPage(pageResult);
86202
86380
  assertProjectReadBase(readBase, page.readBase);
86203
86381
  for (const record6 of page.records) {
86204
86382
  recordsByKey.set(`${record6.recordKind} ${record6.recordId}`, record6);
86205
86383
  }
86384
+ if (page.snapshots !== void 0) snapshots.seed(page.snapshots);
86206
86385
  await snapshots.enqueue(page.records.map((record6) => record6.snapshotId));
86207
86386
  cursor = page.continueCursor;
86208
86387
  } while (cursor !== null);
@@ -86228,42 +86407,30 @@ async function fetchProjectDocumentPartitionRecords(runner, mapKey, readBase) {
86228
86407
  }
86229
86408
  }
86230
86409
  async function fetchProjectDocumentValueRecords(runner, valueIds, readBase) {
86231
- if (runner.fetchValueHeadsPage === void 0) {
86410
+ if (runner.fetchValueSnapshotsPage === void 0) {
86232
86411
  throw new Error(
86233
- "Partition-scoped document reads require a value-head reader for member defaults."
86412
+ "Partition-scoped document reads require a value-snapshot reader for member defaults."
86234
86413
  );
86235
86414
  }
86236
86415
  const values = /* @__PURE__ */ new Map();
86237
86416
  let cursor = null;
86238
86417
  do {
86239
- const page = await runner.fetchValueHeadsPage(valueIds, cursor, readBase);
86240
- if (!isObject4(page)) throw new Error("Value-head page must be an object.");
86241
- const revision = readProjectDocumentRevisionMarker({
86242
- documentRevision: page.documentRevision
86243
- });
86244
- if (revision === null)
86245
- throw new Error("Value-head page has no document revision.");
86246
- assertProjectReadBase(readBase, revision.readBase);
86247
- if (!Array.isArray(page.snapshotIds) || !page.snapshotIds.every((id2) => typeof id2 === "string"))
86248
- throw new Error(
86249
- "Value-head page snapshotIds must be an array of strings."
86250
- );
86251
- if (page.continueCursor !== null && typeof page.continueCursor !== "string")
86252
- throw new Error(
86253
- "Value-head page continueCursor must be a string or null."
86254
- );
86255
- const loaded = await fetchProjectDocumentSnapshots(
86256
- (ids) => fetchScopedSnapshotBatch(runner, ids, readBase),
86257
- page.snapshotIds
86258
- );
86259
- for (const snapshot of loaded.values()) {
86418
+ const page = readProjectDocumentPage(
86419
+ await runner.fetchValueSnapshotsPage(valueIds, cursor, readBase)
86420
+ );
86421
+ assertProjectReadBase(readBase, page.readBase);
86422
+ if (page.snapshots === void 0)
86423
+ throw new Error("Value snapshot page is missing snapshots.");
86424
+ if (page.continueCursor !== null && page.continueCursor === cursor)
86425
+ throw new Error("Value snapshot page cursor made no progress.");
86426
+ for (const snapshot of page.snapshots) {
86260
86427
  if (snapshot.recordKind !== "value")
86261
- throw new Error("Value-head page returned a non-value snapshot.");
86428
+ throw new Error("Value snapshot page returned a non-value snapshot.");
86262
86429
  if (snapshot.deleted)
86263
- throw new Error("Value-head page returned a deleted snapshot.");
86430
+ throw new Error("Value snapshot page returned a deleted snapshot.");
86264
86431
  if (!valueIds.includes(snapshot.recordId))
86265
86432
  throw new Error(
86266
- `Value-head page returned unrequested value "${snapshot.recordId}".`
86433
+ `Value snapshot page returned unrequested value "${snapshot.recordId}".`
86267
86434
  );
86268
86435
  values.set(snapshot.recordId, snapshot);
86269
86436
  }
@@ -86281,10 +86448,23 @@ async function fetchScopedSnapshotBatch(runner, ids, readBase) {
86281
86448
  assertProjectReadBase(readBase, readProjectReadBase(result.readBase));
86282
86449
  return result;
86283
86450
  }
86284
- function readProjectDocumentManifestPage(value) {
86451
+ function readProjectDocumentPage(value) {
86285
86452
  if (!isObject4(value)) {
86286
86453
  throw new Error("Convex project document manifest page must be an object.");
86287
86454
  }
86455
+ let snapshots;
86456
+ if (value.snapshots !== void 0) {
86457
+ if (!Array.isArray(value.snapshots))
86458
+ throw new Error("Snapshot page snapshots must be an array.");
86459
+ const ids = value.snapshots.map((snapshot) => {
86460
+ if (!isObject4(snapshot))
86461
+ throw new Error("Snapshot page entry must be an object.");
86462
+ if (typeof snapshot.id !== "string")
86463
+ throw new Error("Snapshot page entry is missing an id.");
86464
+ return snapshot.id;
86465
+ });
86466
+ snapshots = ids.length === 0 ? [] : readProjectDocumentSnapshotBatch(value, ids);
86467
+ }
86288
86468
  const continueCursor = value.continueCursor;
86289
86469
  if (continueCursor !== null && typeof continueCursor !== "string") {
86290
86470
  throw new Error(
@@ -86307,7 +86487,12 @@ function readProjectDocumentManifestPage(value) {
86307
86487
  releaseChannels: metadata.releaseChannels,
86308
86488
  documentRevision: metadata.documentRevision
86309
86489
  },
86310
- records: readProjectDocumentManifestRecords(value.records),
86490
+ ...snapshots === void 0 ? {} : { snapshots },
86491
+ records: snapshots === void 0 ? readProjectDocumentManifestRecords(value.records) : snapshots.map((snapshot) => ({
86492
+ recordKind: snapshot.recordKind,
86493
+ recordId: snapshot.recordId,
86494
+ snapshotId: snapshot.id
86495
+ })),
86311
86496
  continueCursor
86312
86497
  };
86313
86498
  }
@@ -86355,7 +86540,7 @@ function readProjectDocumentManifestPageRecords(value) {
86355
86540
  if (!isObject4(value)) {
86356
86541
  throw new Error("Convex project document manifest page must be an object.");
86357
86542
  }
86358
- return readProjectDocumentManifestRecords(value.records);
86543
+ return readProjectDocumentPage(value).records;
86359
86544
  }
86360
86545
  async function fetchProjectDocumentSnapshots(fetchBatch, snapshotIds) {
86361
86546
  const loader = createProjectDocumentSnapshotLoader(fetchBatch);
@@ -86401,6 +86586,12 @@ function createProjectDocumentSnapshotLoader(fetchBatch) {
86401
86586
  active.add(work);
86402
86587
  };
86403
86588
  return {
86589
+ seed(snapshots) {
86590
+ for (const snapshot of snapshots) {
86591
+ seen.add(snapshot.id);
86592
+ snapshotsById.set(snapshot.id, snapshot);
86593
+ }
86594
+ },
86404
86595
  async enqueue(snapshotIds) {
86405
86596
  checkFailure();
86406
86597
  for (const id2 of snapshotIds) {
@@ -96596,9 +96787,42 @@ function appendAuthoredOwnedValueCascadeDeletes(args) {
96596
96787
  }
96597
96788
  }
96598
96789
  if (survivingConstructionIds.size > 0) {
96790
+ const replayMembers = documentMemberCompilationIndex(postScope.document);
96791
+ const replayConstructors = indexRecordsById(
96792
+ postScope.document.constructors ?? []
96793
+ );
96794
+ let compilationProject;
96795
+ for (const change of args.authoredChanges) {
96796
+ if (change.operation === "delete") continue;
96797
+ const member = change.recordKind === "member" ? replayMembers.membersById.get(change.recordId) : void 0;
96798
+ const constructor2 = change.recordKind === "constructor" ? replayConstructors.get(change.recordId) : void 0;
96799
+ const callable2 = member !== void 0 && (member.kind === 23 /* NSFunction */ || member.kind === 10 /* NSProperty */ || member.kind === 26 /* NSAction */);
96800
+ if (constructor2 === void 0 && !callable2) continue;
96801
+ compilationProject ??= cachedServerCompilationProject(postScope.document);
96802
+ const compileArgs = { ...postScope.document, compilationProject };
96803
+ if (constructor2 !== void 0)
96804
+ compileConstructorRecord({
96805
+ ...compileArgs,
96806
+ constructors: postScope.document.constructors ?? [],
96807
+ constructor: constructor2
96808
+ });
96809
+ if (callable2)
96810
+ compileAuthoredMemberBodies({
96811
+ ...compileArgs,
96812
+ member,
96813
+ thisClass: replayMembers.ownerClassesByMemberId.get(member.id) ?? null
96814
+ });
96815
+ }
96816
+ const replayDocument = {
96817
+ ...postScope.document,
96818
+ initializerCompiler: documentInitializerCompiler(
96819
+ postScope.document,
96820
+ compilationProject
96821
+ )
96822
+ };
96599
96823
  const resolverDocument = composeResolverDocument(
96600
- postScope.document,
96601
- initializerEvaluatorLookups(postScope.document)
96824
+ replayDocument,
96825
+ initializerEvaluatorLookups(replayDocument)
96602
96826
  );
96603
96827
  const materializedIndex = buildVirtualInstanceMaterializedIndex({
96604
96828
  document: resolverDocument
@@ -100831,6 +101055,7 @@ var SERVER_COMPILATION_PROJECT_CACHE_LIMIT, serverCompilationProjectCache, READ_
100831
101055
  var init_project_version_schema_commit = __esm({
100832
101056
  "../src/database/project-version-schema-commit.ts"() {
100833
101057
  "use strict";
101058
+ init_document_initializer_compiler();
100834
101059
  init_effective_value_comparison();
100835
101060
  init_classes();
100836
101061
  init_constructor_parameter_settlement();
@@ -114574,7 +114799,7 @@ var init_stored_value_placements = __esm({
114574
114799
  });
114575
114800
 
114576
114801
  // src/project-source/root-source.ts
114577
- function emitProjectRootSourceV4(records2, manifest, materializedConstructors, localValues) {
114802
+ function emitProjectRootSourceV4(records2, manifest, materializedConstructors, localValues, options = {}) {
114578
114803
  const project = [...records2.values()].find(
114579
114804
  (record6) => !record6.deleted && record6.recordKind === "project"
114580
114805
  );
@@ -114586,6 +114811,7 @@ function emitProjectRootSourceV4(records2, manifest, materializedConstructors, l
114586
114811
  );
114587
114812
  const classes = new Map(manifest.classes.map((entry) => [entry.id, entry]));
114588
114813
  const values = emitStoredValueBindingSourcesV4(records2, memberIds, {
114814
+ ...options,
114589
114815
  manifest,
114590
114816
  targetTypedRoot: true,
114591
114817
  localValues
@@ -115159,7 +115385,7 @@ function cliEvaluatorLookups(document, options = {}) {
115159
115385
  return cliEvaluatorRuntime(document, options).databaseVM;
115160
115386
  }
115161
115387
  function cliEvaluatorRuntime(document, options = {}) {
115162
- const initializerCompiler = isPulledInitializerCompilationDocumentV4(document) ? pulledInitializerCompilerV4(document) : void 0;
115388
+ const initializerCompiler = isPulledInitializerCompilationDocumentV4(document) ? documentInitializerCompiler(document) : void 0;
115163
115389
  const databaseVM = headlessVirtualInstanceLookups(document, {
115164
115390
  ...options,
115165
115391
  ...initializerCompiler === void 0 ? {} : { initializerCompiler }
@@ -115845,36 +116071,59 @@ function prospectiveInitializerRecordsV4(args) {
115845
116071
  }
115846
116072
  for (const seed of args.authoredValueSeeds) {
115847
116073
  if (seed.valueId === void 0) continue;
115848
- records2.set(`value:${seed.valueId}`, {
115849
- recordKind: "value",
115850
- recordId: seed.valueId,
115851
- contentHash: "local-seed",
115852
- deleted: false,
115853
- data: {
115854
- id: seed.valueId,
116074
+ setSeedValueRecord(records2, {
116075
+ id: seed.valueId,
116076
+ projectId: args.workspace.config.projectId,
116077
+ ...encodeStoredValueNode(seed),
116078
+ createdAt: 0,
116079
+ updatedAt: 0
116080
+ });
116081
+ for (const row of seed.values ?? []) {
116082
+ setSeedValueRecord(records2, {
116083
+ id: row.id,
115855
116084
  projectId: args.workspace.config.projectId,
115856
- ...encodeStoredValueNode(seed),
116085
+ ...encodeStoredValueRowFields(row),
115857
116086
  createdAt: 0,
115858
116087
  updatedAt: 0
115859
- }
115860
- });
115861
- for (const row of seed.values ?? []) {
115862
- records2.set(`value:${row.id}`, {
116088
+ });
116089
+ }
116090
+ }
116091
+ return records2;
116092
+ }
116093
+ function setSeedValueRecord(records2, data) {
116094
+ const key = `value:${data.id}`;
116095
+ const physical = records2.get(key)?.data;
116096
+ if (isObjectRecord2(physical) && rowCarriesPackedValueContent(physical)) {
116097
+ const row = {
116098
+ projectId: data.projectId,
116099
+ createdAt: 0,
116100
+ updatedAt: 0,
116101
+ ...physical
116102
+ };
116103
+ if (!isMemberValue(row)) {
116104
+ throw new PackedValueEncodingError(
116105
+ `Seeded row "${key}" replaces a row that packs a child but is not a well-formed value row, so its packed children cannot be kept.`
116106
+ );
116107
+ }
116108
+ for (const child of decodePackedValueRow(row).children) {
116109
+ const childKey = `value:${child.id}`;
116110
+ if (records2.has(childKey)) continue;
116111
+ records2.set(childKey, {
115863
116112
  recordKind: "value",
115864
- recordId: row.id,
116113
+ recordId: child.id,
115865
116114
  contentHash: "local-seed",
115866
116115
  deleted: false,
115867
- data: {
115868
- id: row.id,
115869
- projectId: args.workspace.config.projectId,
115870
- ...encodeStoredValueRowFields(row),
115871
- createdAt: 0,
115872
- updatedAt: 0
115873
- }
116116
+ data: child
115874
116117
  });
115875
116118
  }
115876
116119
  }
115877
- return records2;
116120
+ records2.set(key, {
116121
+ recordKind: "value",
116122
+ recordId: data.id,
116123
+ contentHash: "local-seed",
116124
+ deleted: false,
116125
+ data
116126
+ });
115878
116127
  }
115879
116128
  function initializerCode(records2, valueId) {
115880
116129
  const row = records2.get(`value:${valueId}`)?.data;
@@ -117245,7 +117494,7 @@ function collapseLocalizedSourceRevertsV4(args) {
117245
117494
  document: comparison,
117246
117495
  changes: normalized,
117247
117496
  editedValueIds: new Set(edited.map((change) => change.recordId)),
117248
- initializerCompiler: pulledInitializerCompilerV4(comparison)
117497
+ initializerCompiler: documentInitializerCompiler(comparison)
117249
117498
  });
117250
117499
  const normalizedById = new Map(
117251
117500
  normalized.map((change) => [change.recordId, change])
@@ -119031,69 +119280,6 @@ function createPulledConstructionReplayContext(args) {
119031
119280
  valuesById: new Map(args.document.values.map((value) => [value.id, value]))
119032
119281
  };
119033
119282
  }
119034
- function pulledInitializerCompilerStateV4(document, compilationProject) {
119035
- const existing = pulledInitializerCompilerStates.get(document);
119036
- if (existing !== void 0) {
119037
- if (compilationProject !== void 0) {
119038
- existing.compilationProject = compilationProject;
119039
- }
119040
- return existing;
119041
- }
119042
- const created = {
119043
- compilationProject: compilationProject ?? null
119044
- };
119045
- pulledInitializerCompilerStates.set(document, created);
119046
- return created;
119047
- }
119048
- function compilationProjectForPulledDocumentV4(document, state) {
119049
- state.compilationProject ??= createNeoScriptCompilationProject({
119050
- project: document.project,
119051
- projectFiles: document.projectFiles,
119052
- members: document.members,
119053
- classes: document.classes,
119054
- enums: document.enums,
119055
- interfaces: document.interfaces,
119056
- constructors: document.constructors ?? []
119057
- });
119058
- return state.compilationProject;
119059
- }
119060
- function memberCompilationIndexV4(document) {
119061
- const existing = pulledMemberCompilationIndexes.get(document);
119062
- if (existing !== void 0) return existing;
119063
- const created = {
119064
- membersById: new Map(
119065
- document.members.map((member) => [member.id, member])
119066
- ),
119067
- ownerClassesByMemberId: new Map(
119068
- document.classes.flatMap(
119069
- (schemaClass2) => Object.values(schemaClass2.schema).map(
119070
- (memberId) => [memberId, schemaClass2]
119071
- )
119072
- )
119073
- )
119074
- };
119075
- pulledMemberCompilationIndexes.set(document, created);
119076
- return created;
119077
- }
119078
- function pulledInitializerCompilerV4(document, compilationProject) {
119079
- const state = pulledInitializerCompilerStateV4(document, compilationProject);
119080
- return (site) => {
119081
- if (site.sourceValueId !== null) {
119082
- compilePulledValueInitializerBodyV4(
119083
- document,
119084
- site.sourceValueId,
119085
- compilationProjectForPulledDocumentV4(document, state)
119086
- );
119087
- return;
119088
- }
119089
- if (site.memberId === null) return;
119090
- compilePulledMemberInitializerBodyV4(
119091
- document,
119092
- site.memberId,
119093
- compilationProjectForPulledDocumentV4(document, state)
119094
- );
119095
- };
119096
- }
119097
119283
  function describePulledProjectBodyCompileError(error) {
119098
119284
  const fallback = error instanceof Error ? error.message : String(error);
119099
119285
  if (!(error instanceof CompileError)) return fallback;
@@ -119210,7 +119396,7 @@ function replayStoredConstructionV4(args) {
119210
119396
  // Replays need distinct compiler closures but read one immutable
119211
119397
  // member/value graph. Share its project-sized evaluator indexes.
119212
119398
  evaluatorCache: { key: document, revision: void 0 },
119213
- initializerCompiler: pulledInitializerCompilerV4(
119399
+ initializerCompiler: documentInitializerCompiler(
119214
119400
  document,
119215
119401
  compilationProject
119216
119402
  )
@@ -119264,68 +119450,6 @@ function compilePulledUncompiledConstructorsV4(document, compilationProject, rep
119264
119450
  }
119265
119451
  assertPulledConstructorsCompiled(document, replayContext);
119266
119452
  }
119267
- function valueInitializerCompilationSites(document) {
119268
- const cached = pulledValueInitializerCompilationSites.get(document);
119269
- if (cached !== void 0) return cached;
119270
- const rows = document.values.filter(isInitValueContent);
119271
- const valuesById = new Map(
119272
- document.values.map((value) => [value.id, value])
119273
- );
119274
- const ownershipTargetIds = valueIdsWithSourceChains(
119275
- new Set(rows.map((row) => row.id)),
119276
- valuesById
119277
- );
119278
- const rootOwners = /* @__PURE__ */ new Map();
119279
- const owners = resolveOwnerMembersForValues(
119280
- document,
119281
- ownershipTargetIds,
119282
- void 0,
119283
- rootOwners
119284
- );
119285
- const sites = /* @__PURE__ */ new Map();
119286
- for (const row of rows) {
119287
- const member = owners.get(row.id);
119288
- if (member === void 0) continue;
119289
- const ownerContext = initializerOwnerContext(
119290
- document,
119291
- row.id,
119292
- rootOwners,
119293
- valuesById
119294
- );
119295
- sites.set(row.id, {
119296
- row,
119297
- member,
119298
- ownerClass: ownerContext.ownerClass,
119299
- lexicalThisClass: ownerContext.lexicalThisClass
119300
- });
119301
- }
119302
- pulledValueInitializerCompilationSites.set(document, sites);
119303
- return sites;
119304
- }
119305
- function compilePulledValueInitializerBodyV4(document, valueId, compilationProject) {
119306
- const site = valueInitializerCompilationSites(document).get(valueId);
119307
- if (site === void 0) {
119308
- throw new Error(
119309
- "Cannot compile initializer dependency because its source value row is unresolved."
119310
- );
119311
- }
119312
- compileValueRowInitializerBody({
119313
- project: document.project,
119314
- projectFiles: document.projectFiles,
119315
- members: document.members,
119316
- classes: document.classes,
119317
- enums: document.enums,
119318
- interfaces: document.interfaces,
119319
- constructors: document.constructors ?? [],
119320
- member: site.member,
119321
- valueRow: site.row,
119322
- valueId: String(Reflect.get(site.row, "id")),
119323
- initializerOwnerClass: site.ownerClass,
119324
- lexicalThisClass: site.lexicalThisClass,
119325
- storedConstructionReplay: true,
119326
- ...compilationProject === void 0 ? {} : { compilationProject }
119327
- });
119328
- }
119329
119453
  function compilePulledProjectDocumentForEvaluationV4(document, compilationProject) {
119330
119454
  const sharedCompilationProject = compilationProject ?? createNeoScriptCompilationProject({
119331
119455
  project: document.project,
@@ -119336,7 +119460,7 @@ function compilePulledProjectDocumentForEvaluationV4(document, compilationProjec
119336
119460
  interfaces: document.interfaces,
119337
119461
  constructors: document.constructors ?? []
119338
119462
  });
119339
- pulledInitializerCompilerStateV4(document, sharedCompilationProject);
119463
+ documentInitializerCompiler(document, sharedCompilationProject);
119340
119464
  const compileArgs = {
119341
119465
  project: document.project,
119342
119466
  projectFiles: document.projectFiles,
@@ -119351,7 +119475,7 @@ function compilePulledProjectDocumentForEvaluationV4(document, compilationProjec
119351
119475
  compileConstructorRecord({ ...compileArgs, constructor: constructor2 });
119352
119476
  }
119353
119477
  assertPulledConstructorsCompiled(document);
119354
- const memberIndex = memberCompilationIndexV4(document);
119478
+ const memberIndex = documentMemberCompilationIndex(document);
119355
119479
  for (const member of compileArgs.members) {
119356
119480
  try {
119357
119481
  compileAuthoredMemberBodies({
@@ -119387,31 +119511,6 @@ function assertPulledConstructorsCompiled(document, replayContext) {
119387
119511
  }
119388
119512
  if (replayContext !== void 0) replayContext.constructorsValidated = true;
119389
119513
  }
119390
- function compilePulledMemberInitializerBodyV4(document, memberId, compilationProject) {
119391
- const compileArgs = {
119392
- project: document.project,
119393
- projectFiles: document.projectFiles,
119394
- members: document.members,
119395
- classes: document.classes,
119396
- enums: document.enums,
119397
- interfaces: document.interfaces,
119398
- constructors: document.constructors ?? []
119399
- };
119400
- const memberIndex = memberCompilationIndexV4(document);
119401
- const member = memberIndex.membersById.get(memberId);
119402
- if (member === void 0) {
119403
- throw new Error(
119404
- `Cannot compile initializer dependency for missing member "${memberId}".`
119405
- );
119406
- }
119407
- const thisClass = memberIndex.ownerClassesByMemberId.get(memberId) ?? null;
119408
- compileMemberInitializerBody({
119409
- ...compileArgs,
119410
- member,
119411
- thisClass,
119412
- ...compilationProject === void 0 ? {} : { compilationProject }
119413
- });
119414
- }
119415
119514
  function samePulledRecords(left, right) {
119416
119515
  if (left === right) return true;
119417
119516
  if (left.size !== right.size) return false;
@@ -119549,10 +119648,11 @@ function replayWorkspace(records2) {
119549
119648
  state: { records: stateRecords }
119550
119649
  };
119551
119650
  }
119552
- var pulledBodyCompileSites, pulledInitializerCompilerStates, pulledMemberCompilationIndexes, pulledValueInitializerCompilationSites, recentPulledDocuments, RECENT_PULLED_DOCUMENT_LIMIT;
119651
+ var pulledBodyCompileSites, recentPulledDocuments, RECENT_PULLED_DOCUMENT_LIMIT;
119553
119652
  var init_initializer_replay = __esm({
119554
119653
  "src/project-source/initializer-replay.ts"() {
119555
119654
  "use strict";
119655
+ init_document_initializer_compiler();
119556
119656
  init_members();
119557
119657
  init_compile_ns_property();
119558
119658
  init_materialize_values();
@@ -119565,9 +119665,6 @@ var init_initializer_replay = __esm({
119565
119665
  init_constructors2();
119566
119666
  init_compiler_adapter();
119567
119667
  pulledBodyCompileSites = /* @__PURE__ */ new WeakMap();
119568
- pulledInitializerCompilerStates = /* @__PURE__ */ new WeakMap();
119569
- pulledMemberCompilationIndexes = /* @__PURE__ */ new WeakMap();
119570
- pulledValueInitializerCompilationSites = /* @__PURE__ */ new WeakMap();
119571
119668
  recentPulledDocuments = [];
119572
119669
  RECENT_PULLED_DOCUMENT_LIMIT = 4;
119573
119670
  }
@@ -119580,18 +119677,19 @@ function inferredGenericClassBinding(classId) {
119580
119677
  function inferredGenericClassId(binding) {
119581
119678
  return binding?.startsWith(INFERRED_GENERIC_CLASS_PREFIX) ? binding.slice(INFERRED_GENERIC_CLASS_PREFIX.length) : null;
119582
119679
  }
119583
- function emitStaticValueSourcesV4(records2, manifest, localValues) {
119680
+ function emitStaticValueSourcesV4(records2, manifest, localValues, options = {}) {
119584
119681
  const memberIds = [];
119585
119682
  for (const record6 of records2.values()) {
119586
119683
  if (record6.recordKind === "member" && !record6.deleted && isObjectRecord2(record6.data) && record6.data.modifier === 3 && typeof record6.data.valueId === "string")
119587
119684
  memberIds.push(record6.recordId);
119588
119685
  }
119589
119686
  return emitStoredValueBindingSourcesV4(records2, memberIds, {
119687
+ ...options,
119590
119688
  manifest,
119591
119689
  localValues
119592
119690
  });
119593
119691
  }
119594
- function buildValueEmitContext(records2, manifest) {
119692
+ function buildValueEmitContext(records2, manifest, options = {}) {
119595
119693
  const rawMembers = dataById(records2, "member");
119596
119694
  const manifestMembers = new Map(
119597
119695
  manifest.members.map((member) => [member.id, member])
@@ -119622,6 +119720,7 @@ function buildValueEmitContext(records2, manifest) {
119622
119720
  let materializedGraph;
119623
119721
  let effectiveValues;
119624
119722
  return {
119723
+ storedValueBase: options.storedValueBase,
119625
119724
  records: records2,
119626
119725
  readDocument,
119627
119726
  readCompilationProject,
@@ -119629,7 +119728,7 @@ function buildValueEmitContext(records2, manifest) {
119629
119728
  readEffectiveValues: () => effectiveValues ??= new EffectiveValueReader({
119630
119729
  ...readDocument(),
119631
119730
  evaluatorCache: { key: readDocument(), revision: void 0 },
119632
- initializerCompiler: pulledInitializerCompilerV4(
119731
+ initializerCompiler: documentInitializerCompiler(
119633
119732
  readDocument(),
119634
119733
  readCompilationProject()
119635
119734
  )
@@ -119685,7 +119784,7 @@ function buildValueEmitContext(records2, manifest) {
119685
119784
  }
119686
119785
  function emitStoredValueBindingSourcesV4(records2, memberIds, options) {
119687
119786
  const context = {
119688
- ...buildValueEmitContext(records2, options.manifest),
119787
+ ...buildValueEmitContext(records2, options.manifest, options),
119689
119788
  localValues: options.localValues
119690
119789
  };
119691
119790
  const members = context.members;
@@ -119734,13 +119833,13 @@ function targetTypedVariantConstruction(code) {
119734
119833
  if (!prefix.test(code)) return code;
119735
119834
  return code.replace(prefix, "new(");
119736
119835
  }
119737
- function emitVariantValueSourcesV4(records2, manifest) {
119836
+ function emitVariantValueSourcesV4(records2, manifest, options = {}) {
119738
119837
  const initializers = /* @__PURE__ */ new Map();
119739
119838
  const recordKeysByVariant = /* @__PURE__ */ new Map();
119740
119839
  if (manifest.variants.length === 0) {
119741
119840
  return { initializers, recordKeysByVariant };
119742
119841
  }
119743
- const context = buildValueEmitContext(records2, manifest);
119842
+ const context = buildValueEmitContext(records2, manifest, options);
119744
119843
  const variantClass = [...manifest.classes].find(
119745
119844
  (entry) => entry.name === NEO_VARIANT_TYPE_NAME
119746
119845
  );
@@ -120026,8 +120125,8 @@ function rowBackedDefaultMemberIdsV4(state) {
120026
120125
  }
120027
120126
  return result;
120028
120127
  }
120029
- function emitMemberDefaultSourcesV4(records2, manifest) {
120030
- const context = buildValueEmitContext(records2, manifest);
120128
+ function emitMemberDefaultSourcesV4(records2, manifest, options = {}) {
120129
+ const context = buildValueEmitContext(records2, manifest, options);
120031
120130
  const initializers = /* @__PURE__ */ new Map();
120032
120131
  const recordKeysByMember = /* @__PURE__ */ new Map();
120033
120132
  for (const record6 of records2.values()) {
@@ -125339,11 +125438,13 @@ function classValueBody(context, member, value, visited, targetTyped, outerEnvir
125339
125438
  if (childMember === void 0)
125340
125439
  throw new Error(`Class ${name}.${key} has no member record.`);
125341
125440
  const preservesExternalBinding = context.collectionBindingValueIds.has(childId);
125342
- if (!preservesExternalBinding && emitsAsMemberDefaultDerivedAbsence(context, childMember, childId)) {
125441
+ const baseChildBody = context.storedValueBase?.get(childId)?.value;
125442
+ const clearedStoredClassOverrides = isObjectRecord2(baseChildBody) && Object.keys(baseChildBody).length > 0;
125443
+ if (!preservesExternalBinding && !clearedStoredClassOverrides && emitsAsMemberDefaultDerivedAbsence(context, childMember, childId)) {
125343
125444
  continue;
125344
125445
  }
125345
125446
  const replayChildId = replayBody[key];
125346
- if (!preservesExternalBinding && replayGraph !== null && typeof replayChildId === "string" && materializedValueSubgraphsEqual(
125447
+ if (!preservesExternalBinding && !context.storedValueBase?.has(childId) && replayGraph !== null && typeof replayChildId === "string" && materializedValueSubgraphsEqual(
125347
125448
  context,
125348
125449
  context.readEffectiveValues(),
125349
125450
  replayGraph,
@@ -127126,9 +127227,14 @@ function emitProjectDocumentFilesV4(records2, options = {}) {
127126
127227
  onInvalidStaticMemberOwnership: (recovery) => staticMemberOwnershipRecoveries.push(recovery)
127127
127228
  });
127128
127229
  const localValues = new LocalValueEmissionV4(options.localValues ?? []);
127129
- const staticValues = emitStaticValueSourcesV4(records2, manifest, localValues);
127130
- const memberDefaults = emitMemberDefaultSourcesV4(records2, manifest);
127131
- const variantValues = emitVariantValueSourcesV4(records2, manifest);
127230
+ const staticValues = emitStaticValueSourcesV4(
127231
+ records2,
127232
+ manifest,
127233
+ localValues,
127234
+ options
127235
+ );
127236
+ const memberDefaults = emitMemberDefaultSourcesV4(records2, manifest, options);
127237
+ const variantValues = emitVariantValueSourcesV4(records2, manifest, options);
127132
127238
  const baseSource = emitProjectSourcesV4(manifest, {
127133
127239
  staticInitializers: staticValues.initializers,
127134
127240
  defaultInitializers: memberDefaults.initializers,
@@ -127198,7 +127304,8 @@ function emitProjectDocumentFilesV4(records2, options = {}) {
127198
127304
  records2,
127199
127305
  manifest,
127200
127306
  materializedConstructors,
127201
- localValues
127307
+ localValues,
127308
+ options
127202
127309
  );
127203
127310
  const dialogueFiles = emitDialogueProjectSourcesV4(records2);
127204
127311
  const localFiles = localValues.files();
@@ -131995,6 +132102,9 @@ function createPendingProjectSourceIdentityV4(workspace, status, authoredValueSe
131995
132102
  }
131996
132103
  materializePendingSourceLocalization(records2, status);
131997
132104
  const emission = emitProjectDocumentFilesV4(records2, {
132105
+ storedValueBase: storedValueRowsByIdV4(
132106
+ Object.values(workspace.state.records)
132107
+ ),
131998
132108
  recordFiles: projectRecordFilesV4(
131999
132109
  Object.values(workspace.state.records),
132000
132110
  status.reconstructed.values()
@@ -133445,6 +133555,7 @@ var init_push = __esm({
133445
133555
  "src/commands/push.ts"() {
133446
133556
  "use strict";
133447
133557
  init_packed_value_parity();
133558
+ init_stored_value_placements();
133448
133559
  init_push_recovery();
133449
133560
  init_project_version_transaction_result();
133450
133561
  init_performance();
@@ -133556,7 +133667,7 @@ function readRawSingleton(raw, key) {
133556
133667
  async function fetchProjectDocument(workspace) {
133557
133668
  const convex = await createConvexClient(workspace);
133558
133669
  const raw = await fetchProjectDocumentRawChunked2({
133559
- fetchManifestPage: (paginationOpts, mapKey, readBase) => convex.query(api2.projectDocuments.getDocumentManifestPage, {
133670
+ fetchPage: (paginationOpts, mapKey, readBase) => convex.query(api2.projectDocuments.getDocumentSnapshotPage, {
133560
133671
  projectId: workspace.config.projectId,
133561
133672
  versionId: workspace.config.versionId,
133562
133673
  paginationOpts,
@@ -138725,7 +138836,7 @@ var init_registry2 = __esm({
138725
138836
  "schema-contract/registry.mjs"() {
138726
138837
  "use strict";
138727
138838
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
138728
- cliVersion: "0.53.4",
138839
+ cliVersion: "0.53.7",
138729
138840
  projectFileUploadBatchSize: 32,
138730
138841
  documentRecords: {
138731
138842
  member: {
@@ -146546,7 +146657,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
146546
146657
  async function main() {
146547
146658
  const args = parseArgs(process.argv.slice(2));
146548
146659
  if (args.command === "--version") {
146549
- console.log("0.53.4");
146660
+ console.log("0.53.7");
146550
146661
  return;
146551
146662
  }
146552
146663
  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.53.4",
3
+ "version": "0.53.7",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -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.53.4 -->
12
+ <!-- reviewed-through-cli: 0.53.7 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -97,7 +97,7 @@ wrappers.
97
97
  The marker near the top of `SKILL.md` must exactly match the package version:
98
98
 
99
99
  ```html
100
- <!-- reviewed-through-cli: 0.53.4 -->
100
+ <!-- reviewed-through-cli: 0.53.7 -->
101
101
  ```
102
102
 
103
103
  The quoted version above is checked too, so this instruction cannot go stale