@neocompose/cli 0.19.4 → 0.19.6

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,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.19.6] - 2026-08-02
4
+
5
+ ### Changed
6
+
7
+ - A push sends its authored value content as `authoredValueSeeds`, renamed
8
+ from `staticValueSeeds`. The seeds were never only a static member's — they
9
+ carry every authored value row, root values and collection entries included.
10
+ A CLI older than this fails against a server that has it, and vice versa: the
11
+ field is part of the push request and its staged payload.
12
+
13
+ ### Fixed
14
+
15
+ - `neo push` no longer ends in an opaque `500` after a large push has already
16
+ committed. The transaction's results are read back a page at a time, and the
17
+ page was bounded by chunk count alone, so a big enough push read past what
18
+ the server may in one query. Pages are bounded by bytes now, and a workspace
19
+ learns the result of its own push.
20
+ - `neo pull` no longer rejects a project whose committed members carry doc text
21
+ while the local copy still names their pre-push ids.
22
+
23
+ ## [0.19.5] - 2026-08-02
24
+
25
+ ### Fixed
26
+
27
+ - `neo pull` no longer fails with `Stored member value … was not pulled` when
28
+ the workspace holds a newly declared stored static member. Its content is
29
+ carried as a seed until a push materializes it, while the member record
30
+ already binds the pending row, so emitting the local side walked a row the
31
+ document does not contain. The seed is overlaid for emission; rows the
32
+ document already carries win.
33
+
3
34
  ## [0.19.4] - 2026-08-01
4
35
 
5
36
  ### Added
package/dist/neo.mjs CHANGED
@@ -31428,10 +31428,18 @@ function assertMember2(value, path) {
31428
31428
  assertMemberOwner(member.owner, `${path}.owner`);
31429
31429
  assertOptionalDocsText2(member.docsText, `${path}.docsText`);
31430
31430
  const owner = requireRecord(member.owner, `${path}.owner`);
31431
- if (member.docsText !== void 0 && owner.kind !== "classMember" && owner.kind !== "sharedClassMember") {
31431
+ if (member.docsText !== void 0 && owner.kind !== "classMember" && owner.kind !== "sharedClassMember" && // A loose member is not a kind of member — it is a member no class schema
31432
+ // in *this* view claims. A workspace merging its own pending records over
31433
+ // newer server ones sees exactly that: the local class still names the
31434
+ // pending member id the push replaced, so the committed member it now
31435
+ // holds is claimed by nothing. Doc text belongs to the member record, not
31436
+ // to where a schema happens to place it, so rejecting it here fails a pull
31437
+ // for a workspace whose only problem is being mid-sync — the one operation
31438
+ // that would fix it.
31439
+ owner.kind !== "loose") {
31432
31440
  invalid(
31433
31441
  `${path}.docsText`,
31434
- "is allowed only on source-declarable class members."
31442
+ `is allowed only on source-declarable class members; ${JSON.stringify(String(member.name))} is owned by ${JSON.stringify(String(owner.kind))}.`
31435
31443
  );
31436
31444
  }
31437
31445
  nonEmptyString(member.name, `${path}.name`);
@@ -60117,7 +60125,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60117
60125
  parseErrors,
60118
60126
  parseWarnings,
60119
60127
  reconstructed: /* @__PURE__ */ new Map(),
60120
- staticValueSeeds: /* @__PURE__ */ new Map(),
60128
+ authoredValueSeeds: /* @__PURE__ */ new Map(),
60121
60129
  binaryChanges: [],
60122
60130
  binaryFiles: []
60123
60131
  };
@@ -60125,7 +60133,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60125
60133
  const baseDocuments = schemaBaseDocuments(workspace);
60126
60134
  const baseManifest = baseDocuments.length === 0 ? void 0 : documentsToProjectSchemaManifest(baseDocuments);
60127
60135
  let manifest;
60128
- let staticValueSeeds = /* @__PURE__ */ new Map();
60136
+ let authoredValueSeeds = /* @__PURE__ */ new Map();
60129
60137
  let staticMemberValueIds = /* @__PURE__ */ new Map();
60130
60138
  let memberDefaults = {
60131
60139
  records: [],
@@ -60167,7 +60175,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60167
60175
  parseErrors,
60168
60176
  parseWarnings,
60169
60177
  reconstructed: /* @__PURE__ */ new Map(),
60170
- staticValueSeeds,
60178
+ authoredValueSeeds,
60171
60179
  binaryChanges: [],
60172
60180
  binaryFiles: []
60173
60181
  };
@@ -60192,7 +60200,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60192
60200
  parseErrors,
60193
60201
  parseWarnings,
60194
60202
  reconstructed: /* @__PURE__ */ new Map(),
60195
- staticValueSeeds,
60203
+ authoredValueSeeds,
60196
60204
  binaryChanges: [],
60197
60205
  binaryFiles: []
60198
60206
  };
@@ -60241,7 +60249,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60241
60249
  parseErrors,
60242
60250
  parseWarnings,
60243
60251
  reconstructed: /* @__PURE__ */ new Map(),
60244
- staticValueSeeds: /* @__PURE__ */ new Map(),
60252
+ authoredValueSeeds: /* @__PURE__ */ new Map(),
60245
60253
  binaryChanges: [],
60246
60254
  binaryFiles: []
60247
60255
  };
@@ -60289,7 +60297,10 @@ function computeWorkspaceStatus(workspace, options = {}) {
60289
60297
  manifest,
60290
60298
  { registry: valueLowerRegistry }
60291
60299
  );
60292
- staticValueSeeds = new Map([...staticValues.seeds, ...memberDefaults.seeds]);
60300
+ authoredValueSeeds = new Map([
60301
+ ...staticValues.seeds,
60302
+ ...memberDefaults.seeds
60303
+ ]);
60293
60304
  staticMemberValueIds = staticValues.memberValueIds;
60294
60305
  const rootValues = lowerProjectRootSourceV4(
60295
60306
  workspace.state.records,
@@ -60297,7 +60308,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60297
60308
  manifest,
60298
60309
  { registry: valueLowerRegistry }
60299
60310
  );
60300
- staticValueSeeds = new Map([...staticValueSeeds, ...rootValues.seeds]);
60311
+ authoredValueSeeds = new Map([...authoredValueSeeds, ...rootValues.seeds]);
60301
60312
  const rootPathResolutionState = overlayProspectiveSourceRecords(
60302
60313
  workspace.state.records,
60303
60314
  documents,
@@ -60533,7 +60544,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60533
60544
  parseErrors,
60534
60545
  parseWarnings,
60535
60546
  reconstructed: /* @__PURE__ */ new Map(),
60536
- staticValueSeeds: /* @__PURE__ */ new Map(),
60547
+ authoredValueSeeds: /* @__PURE__ */ new Map(),
60537
60548
  binaryChanges: [],
60538
60549
  binaryFiles: []
60539
60550
  };
@@ -60607,7 +60618,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60607
60618
  workspace.state.records,
60608
60619
  reconstructed3,
60609
60620
  changes,
60610
- staticValueSeeds
60621
+ authoredValueSeeds
60611
60622
  )
60612
60623
  );
60613
60624
  } catch (error) {
@@ -60637,7 +60648,7 @@ function computeWorkspaceStatus(workspace, options = {}) {
60637
60648
  parseErrors,
60638
60649
  parseWarnings,
60639
60650
  reconstructed: reconstructed3,
60640
- staticValueSeeds,
60651
+ authoredValueSeeds,
60641
60652
  binaryChanges,
60642
60653
  binaryFiles,
60643
60654
  initConversions: collectInitDefaultConversions(
@@ -63582,6 +63593,51 @@ var init_project_file_pull = __esm({
63582
63593
  }
63583
63594
  });
63584
63595
 
63596
+ // src/project-source/static-value-seed-records.ts
63597
+ function staticValueSeedEmitRecords(status, present) {
63598
+ const records2 = /* @__PURE__ */ new Map();
63599
+ if (status === null) return records2;
63600
+ for (const [memberId, seed] of status.authoredValueSeeds) {
63601
+ const rootId = seed.valueId ?? memberValueIdFromRecord(status, memberId);
63602
+ if (rootId !== null) {
63603
+ addSeedRecord(records2, present, {
63604
+ id: rootId,
63605
+ memberId,
63606
+ value: seed.value,
63607
+ classId: seed.classId
63608
+ });
63609
+ }
63610
+ for (const row of seed.values ?? []) {
63611
+ addSeedRecord(records2, present, { ...row });
63612
+ }
63613
+ }
63614
+ return records2;
63615
+ }
63616
+ function addSeedRecord(records2, present, data) {
63617
+ const key = `value:${data.id}`;
63618
+ if (present.has(key)) return;
63619
+ if (records2.has(key)) return;
63620
+ records2.set(key, {
63621
+ recordKind: "value",
63622
+ recordId: data.id,
63623
+ // A seed has no committed content, so it has no server hash to carry.
63624
+ contentHash: "",
63625
+ deleted: false,
63626
+ data
63627
+ });
63628
+ }
63629
+ function memberValueIdFromRecord(status, memberId) {
63630
+ const member = status.reconstructed.get(`member:${memberId}`)?.fullData;
63631
+ if (!isObjectRecord2(member)) return null;
63632
+ return typeof member.valueId === "string" ? member.valueId : null;
63633
+ }
63634
+ var init_static_value_seed_records = __esm({
63635
+ "src/project-source/static-value-seed-records.ts"() {
63636
+ "use strict";
63637
+ init_projection();
63638
+ }
63639
+ });
63640
+
63585
63641
  // src/commands/pull.ts
63586
63642
  var pull_exports = {};
63587
63643
  __export(pull_exports, {
@@ -63810,6 +63866,12 @@ async function finishFormat4Pull(args) {
63810
63866
  regenerateSourceNames
63811
63867
  } = args;
63812
63868
  const plannedLocalRecords = buildEmitRecordSet(document, plans, "emit");
63869
+ for (const [key, record3] of staticValueSeedEmitRecords(
63870
+ localStatus,
63871
+ new Set(plannedLocalRecords.keys())
63872
+ )) {
63873
+ plannedLocalRecords.set(key, record3);
63874
+ }
63813
63875
  const localRecords = regenerateSourceNames ? regenerateDialogueSourceNamesV4(plannedLocalRecords) : plannedLocalRecords;
63814
63876
  const regeneratedRecordKeys = new Set(
63815
63877
  [...plannedLocalRecords].flatMap(
@@ -64086,6 +64148,7 @@ var init_pull = __esm({
64086
64148
  init_project_documents();
64087
64149
  init_project_file_pull();
64088
64150
  init_dialogue_sources();
64151
+ init_static_value_seed_records();
64089
64152
  }
64090
64153
  });
64091
64154
 
@@ -80977,7 +81040,7 @@ function verifyProjectSourceCommitAgainstStateV4(args) {
80977
81040
  );
80978
81041
  }
80979
81042
  auditAuthoredSeedRowIdentities(
80980
- status.staticValueSeeds,
81043
+ status.authoredValueSeeds,
80981
81044
  args.stateRecords,
80982
81045
  assignments
80983
81046
  );
@@ -80996,7 +81059,7 @@ function verifyProjectSourceCommitAgainstStateV4(args) {
80996
81059
  expectedBaseContentHash: change.kind === "create" ? null : change.casBaseHash ?? null
80997
81060
  };
80998
81061
  });
80999
- const expectedSeeds = [...status.staticValueSeeds].map(
81062
+ const expectedSeeds = [...status.authoredValueSeeds].map(
81000
81063
  ([memberId, seed]) => ({
81001
81064
  memberId: rewritePending(memberId, assignments, usedAssignments),
81002
81065
  value: rewritePending(seed.value, assignments, usedAssignments),
@@ -81040,7 +81103,7 @@ function verifyProjectSourceCommitAgainstStateV4(args) {
81040
81103
  return !isDerivedOnlyRefresh(change, args.stateRecords);
81041
81104
  });
81042
81105
  compareChanges(expectedChanges, verifiableChanges);
81043
- compareSeeds(expectedSeeds, args.staticValueSeeds);
81106
+ compareSeeds(expectedSeeds, args.authoredValueSeeds);
81044
81107
  }
81045
81108
  function isDerivedOnlyRefresh(change, stateRecords) {
81046
81109
  if (change.operation !== "update") return false;
@@ -82273,7 +82336,7 @@ var init_general_function_call_ir_source_recompile = __esm({
82273
82336
  });
82274
82337
 
82275
82338
  // ../src/database/project-version-transaction-types.ts
82276
- function isStaticMemberValueSeedInitContent(content) {
82339
+ function isAuthoredValueSeedInitContent(content) {
82277
82340
  return content.init !== void 0;
82278
82341
  }
82279
82342
  var init_project_version_transaction_types = __esm({
@@ -83880,10 +83943,10 @@ function prepareServerOwnedSchemaCommit(args) {
83880
83943
  requiresCompleteSweep,
83881
83944
  contentHashHeads: args.contentHashHeads
83882
83945
  });
83883
- materializeStaticValueSeeds({
83946
+ materializeAuthoredValueSeeds({
83884
83947
  document: applyProjectVersionWriteChanges(postDocument, prepared),
83885
83948
  prepared,
83886
- staticValueSeeds: args.staticValueSeeds ?? []
83949
+ authoredValueSeeds: args.authoredValueSeeds ?? []
83887
83950
  });
83888
83951
  prepareServerOwnedValueInitializerBodies({
83889
83952
  document: args.document,
@@ -84675,13 +84738,13 @@ function drainConstructedGraphValidations(args) {
84675
84738
  });
84676
84739
  }
84677
84740
  }
84678
- function materializeStaticValueSeeds(args) {
84741
+ function materializeAuthoredValueSeeds(args) {
84679
84742
  const pendingGraphValidations = [];
84680
84743
  materializeStaticSeedBindingMembers(args);
84681
84744
  const seedByMemberId = new Map(
84682
- args.staticValueSeeds.map((seed) => [seed.memberId, seed])
84745
+ args.authoredValueSeeds.map((seed) => [seed.memberId, seed])
84683
84746
  );
84684
- if (seedByMemberId.size !== args.staticValueSeeds.length) {
84747
+ if (seedByMemberId.size !== args.authoredValueSeeds.length) {
84685
84748
  throw new Error("Schema commit contains duplicate member value seeds.");
84686
84749
  }
84687
84750
  const consumedSeedMemberIds = /* @__PURE__ */ new Set();
@@ -84839,9 +84902,9 @@ function materializeStaticValueSeeds(args) {
84839
84902
  });
84840
84903
  }
84841
84904
  }
84842
- for (const seed of args.staticValueSeeds) {
84905
+ for (const seed of args.authoredValueSeeds) {
84843
84906
  if (consumedSeedMemberIds.has(seed.memberId)) continue;
84844
- materializeExistingStaticValueSeed({
84907
+ materializeExistingAuthoredValueSeed({
84845
84908
  document: args.document,
84846
84909
  prepared: args.prepared,
84847
84910
  pendingGraphValidations,
@@ -84855,7 +84918,7 @@ function materializeStaticValueSeeds(args) {
84855
84918
  pending: pendingGraphValidations
84856
84919
  });
84857
84920
  }
84858
- function materializeExistingStaticValueSeed(args) {
84921
+ function materializeExistingAuthoredValueSeed(args) {
84859
84922
  const member = args.document.members.find(
84860
84923
  (candidate) => candidate.id === args.seed.memberId
84861
84924
  );
@@ -84956,7 +85019,7 @@ function materializeExistingStaticValueSeed(args) {
84956
85019
  }
84957
85020
  }
84958
85021
  function materializeStaticSeedBindingMembers(args) {
84959
- const bindings = args.staticValueSeeds.flatMap(
85022
+ const bindings = args.authoredValueSeeds.flatMap(
84960
85023
  (seed) => seed.bindingMembers ?? []
84961
85024
  );
84962
85025
  const ids = new Set(bindings.map((binding) => binding.id));
@@ -85277,14 +85340,14 @@ function materializeSeedLocalizableStringWrites(args) {
85277
85340
  return [...args.seededLocalizedTexts, ...generatedTexts];
85278
85341
  }
85279
85342
  function seedValueContent(seed) {
85280
- if (isStaticMemberValueSeedInitContent(seed)) return { init: seed.init };
85343
+ if (isAuthoredValueSeedInitContent(seed)) return { init: seed.init };
85281
85344
  return {
85282
85345
  value: seed.value,
85283
85346
  ...seed.classId === null ? {} : { classId: seed.classId }
85284
85347
  };
85285
85348
  }
85286
85349
  function seedRootRow(member, seed, rootId) {
85287
- if (isStaticMemberValueSeedInitContent(seed)) {
85350
+ if (isAuthoredValueSeedInitContent(seed)) {
85288
85351
  return { id: rootId, memberId: member.id, init: seed.init };
85289
85352
  }
85290
85353
  return {
@@ -85295,7 +85358,7 @@ function seedRootRow(member, seed, rootId) {
85295
85358
  };
85296
85359
  }
85297
85360
  function authoredSeedRowMatchesValue(row, value) {
85298
- if (isStaticMemberValueSeedInitContent(row)) {
85361
+ if (isAuthoredValueSeedInitContent(row)) {
85299
85362
  return isInitValueContent(value) && value.init.code === row.init.code;
85300
85363
  }
85301
85364
  if (isInitValueContent(value)) return false;
@@ -85369,7 +85432,7 @@ function materializeAuthoredSeedRow(args) {
85369
85432
  );
85370
85433
  }
85371
85434
  if (args.authoredRows.has(args.row.id)) args.usedRows.add(args.row.id);
85372
- if (isStaticMemberValueSeedInitContent(args.row)) {
85435
+ if (isAuthoredValueSeedInitContent(args.row)) {
85373
85436
  const initRow = {
85374
85437
  id: args.row.id,
85375
85438
  projectId: args.document.project.id,
@@ -89357,7 +89420,7 @@ function runServerPreparation(args) {
89357
89420
  document,
89358
89421
  contentHashHeads,
89359
89422
  changes: trustedChanges,
89360
- staticValueSeeds: args.staticValueSeeds,
89423
+ authoredValueSeeds: args.authoredValueSeeds,
89361
89424
  // A CLI push is always a trusted-source commit, so the server always
89362
89425
  // expands read-only source conversions for it.
89363
89426
  expandReadOnlySourceConversions: true
@@ -89631,7 +89694,7 @@ import {
89631
89694
  readFileSync as readFileSync14
89632
89695
  } from "node:fs";
89633
89696
  import { dirname as dirname7, join as join17, relative as relative5, sep as sep5 } from "node:path";
89634
- function assignPendingIds(changes, staticValueSeeds, reconstructed3) {
89697
+ function assignPendingIds(changes, authoredValueSeeds, reconstructed3) {
89635
89698
  const assigned = /* @__PURE__ */ new Map();
89636
89699
  const assign = (pendingId2) => {
89637
89700
  const existing = assigned.get(pendingId2);
@@ -89680,7 +89743,7 @@ function assignPendingIds(changes, staticValueSeeds, reconstructed3) {
89680
89743
  collect(change.recordId);
89681
89744
  collect(change.nextData);
89682
89745
  }
89683
- for (const [memberId, seed] of staticValueSeeds) {
89746
+ for (const [memberId, seed] of authoredValueSeeds) {
89684
89747
  collect(memberId);
89685
89748
  collect(seed);
89686
89749
  }
@@ -89726,7 +89789,7 @@ function assignPendingIds(changes, staticValueSeeds, reconstructed3) {
89726
89789
  }
89727
89790
  }
89728
89791
  const rewrittenSeeds = /* @__PURE__ */ new Map();
89729
- for (const [memberId, seed] of staticValueSeeds) {
89792
+ for (const [memberId, seed] of authoredValueSeeds) {
89730
89793
  const rewrittenId = rewrite(memberId);
89731
89794
  if (typeof rewrittenId !== "string") {
89732
89795
  throw new Error(
@@ -89788,7 +89851,7 @@ function assignPendingIds(changes, staticValueSeeds, reconstructed3) {
89788
89851
  reconstructed3.set(key, record3);
89789
89852
  }
89790
89853
  }
89791
- return { assigned, staticValueSeeds: rewrittenSeeds };
89854
+ return { assigned, authoredValueSeeds: rewrittenSeeds };
89792
89855
  }
89793
89856
  function readAcceptedProjectVersionCommitResponse(value) {
89794
89857
  if (!isObjectRecord2(value) || value.kind !== "accepted") return null;
@@ -90258,7 +90321,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
90258
90321
  type: "push-plan",
90259
90322
  dryRun: options.dryRun,
90260
90323
  changeCount: status.changes.length,
90261
- staticValueSeedCount: status.staticValueSeeds.size,
90324
+ staticValueSeedCount: status.authoredValueSeeds.size,
90262
90325
  changes: status.changes.map((change) => ({
90263
90326
  kind: change.kind,
90264
90327
  recordKind: change.recordKind,
@@ -90283,9 +90346,9 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
90283
90346
  }
90284
90347
  }
90285
90348
  }
90286
- if (status.staticValueSeeds.size > 0) {
90349
+ if (status.authoredValueSeeds.size > 0) {
90287
90350
  console.log(
90288
- ` ${color.dim(`create ${status.staticValueSeeds.size} member value seed(s)`)}`
90351
+ ` ${color.dim(`create ${status.authoredValueSeeds.size} member value seed(s)`)}`
90289
90352
  );
90290
90353
  }
90291
90354
  }
@@ -90351,7 +90414,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
90351
90414
  {
90352
90415
  operation: transactionOperation,
90353
90416
  changes: transportChanges,
90354
- staticValueSeeds: transportSeeds,
90417
+ authoredValueSeeds: transportSeeds,
90355
90418
  stagedFiles,
90356
90419
  sourceBundle: source.bundle,
90357
90420
  pendingIdAssignments: Object.fromEntries(pendingAssignment.assigned),
@@ -90565,11 +90628,11 @@ async function prepareLocalPushArtifactsV4(workspace, status) {
90565
90628
  const source = await createPendingProjectSourceBundleV4(
90566
90629
  workspace,
90567
90630
  status,
90568
- status.staticValueSeeds
90631
+ status.authoredValueSeeds
90569
90632
  );
90570
90633
  const pendingAssignment = assignPendingIds(
90571
90634
  status.changes,
90572
- status.staticValueSeeds,
90635
+ status.authoredValueSeeds,
90573
90636
  status.reconstructed
90574
90637
  );
90575
90638
  const operations = new Set(status.changes.map((change) => change.kind));
@@ -90583,7 +90646,7 @@ async function prepareLocalPushArtifactsV4(workspace, status) {
90583
90646
  intent: createNeoCliPushIntent(change),
90584
90647
  expectedBaseContentHash: change.kind === "create" ? null : change.casBaseHash ?? null
90585
90648
  }));
90586
- const transportSeeds = [...pendingAssignment.staticValueSeeds].map(
90649
+ const transportSeeds = [...pendingAssignment.authoredValueSeeds].map(
90587
90650
  ([memberId, seed]) => ({ memberId, ...seed })
90588
90651
  );
90589
90652
  const preparedFiles = prepareProjectFilePushesV4({
@@ -90602,14 +90665,14 @@ async function prepareLocalPushArtifactsV4(workspace, status) {
90602
90665
  stateRecords: workspace.state.records,
90603
90666
  files: source.files,
90604
90667
  changes: transportChanges,
90605
- staticValueSeeds: transportSeeds,
90668
+ authoredValueSeeds: transportSeeds,
90606
90669
  pendingIdAssignments: Object.fromEntries(pendingAssignment.assigned),
90607
90670
  stagedFiles: preparedFiles
90608
90671
  });
90609
90672
  assertServerPreparationSucceeds({
90610
90673
  workspace,
90611
90674
  changes: transportChanges,
90612
- staticValueSeeds: transportSeeds,
90675
+ authoredValueSeeds: transportSeeds,
90613
90676
  sourceByRecord: status.reconstructed
90614
90677
  });
90615
90678
  return {
@@ -90673,7 +90736,7 @@ function cloneStatusForDryRun(status) {
90673
90736
  return {
90674
90737
  ...status,
90675
90738
  changes: structuredClone(status.changes),
90676
- staticValueSeeds: structuredClone(status.staticValueSeeds),
90739
+ authoredValueSeeds: structuredClone(status.authoredValueSeeds),
90677
90740
  reconstructed: structuredClone(status.reconstructed)
90678
90741
  };
90679
90742
  }
@@ -90691,7 +90754,7 @@ function reportDryRunFailure(error, json) {
90691
90754
  }
90692
90755
  console.error(`Dry run failed: ${message}`);
90693
90756
  }
90694
- async function createPendingProjectSourceBundleV4(workspace, status, staticValueSeeds) {
90757
+ async function createPendingProjectSourceBundleV4(workspace, status, authoredValueSeeds) {
90695
90758
  const records2 = /* @__PURE__ */ new Map();
90696
90759
  for (const [key, state] of Object.entries(workspace.state.records)) {
90697
90760
  records2.set(key, {
@@ -90731,7 +90794,7 @@ async function createPendingProjectSourceBundleV4(workspace, status, staticValue
90731
90794
  (record3) => record3.recordKind === "localization-config"
90732
90795
  );
90733
90796
  const mainLocale = isObjectRecord2(localizationConfig?.data) && typeof localizationConfig.data.mainLocale === "string" ? localizationConfig.data.mainLocale : "en-US";
90734
- for (const seed of staticValueSeeds.values()) {
90797
+ for (const seed of authoredValueSeeds.values()) {
90735
90798
  for (const bindingMember of seed.bindingMembers ?? []) {
90736
90799
  records2.set(`member:${bindingMember.id}`, {
90737
90800
  recordKind: "member",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.19.4",
3
+ "version": "0.19.6",
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.19.4 -->
12
+ <!-- reviewed-through-cli: 0.19.6 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -73,7 +73,7 @@ wrappers.
73
73
  The marker near the top of `SKILL.md` must exactly match the package version:
74
74
 
75
75
  ```html
76
- <!-- reviewed-through-cli: 0.19.4 -->
76
+ <!-- reviewed-through-cli: 0.19.6 -->
77
77
  ```
78
78
 
79
79
  The quoted version above is checked too, so this instruction cannot go stale