@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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
-
|
|
83946
|
+
materializeAuthoredValueSeeds({
|
|
83884
83947
|
document: applyProjectVersionWriteChanges(postDocument, prepared),
|
|
83885
83948
|
prepared,
|
|
83886
|
-
|
|
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
|
|
84741
|
+
function materializeAuthoredValueSeeds(args) {
|
|
84679
84742
|
const pendingGraphValidations = [];
|
|
84680
84743
|
materializeStaticSeedBindingMembers(args);
|
|
84681
84744
|
const seedByMemberId = new Map(
|
|
84682
|
-
args.
|
|
84745
|
+
args.authoredValueSeeds.map((seed) => [seed.memberId, seed])
|
|
84683
84746
|
);
|
|
84684
|
-
if (seedByMemberId.size !== args.
|
|
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.
|
|
84905
|
+
for (const seed of args.authoredValueSeeds) {
|
|
84843
84906
|
if (consumedSeedMemberIds.has(seed.memberId)) continue;
|
|
84844
|
-
|
|
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
|
|
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.
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
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,
|
|
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.
|
|
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.
|
|
90349
|
+
if (status.authoredValueSeeds.size > 0) {
|
|
90287
90350
|
console.log(
|
|
90288
|
-
` ${color.dim(`create ${status.
|
|
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
|
-
|
|
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.
|
|
90631
|
+
status.authoredValueSeeds
|
|
90569
90632
|
);
|
|
90570
90633
|
const pendingAssignment = assignPendingIds(
|
|
90571
90634
|
status.changes,
|
|
90572
|
-
status.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
@@ -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.
|
|
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
|