@neocompose/cli 0.34.1 → 0.34.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.2] - 2026-08-19
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Treat unknown top-level document fields with a JSON `null` value as absent
|
|
8
|
+
while continuing to reject unknown non-null authored data, so harmless fields
|
|
9
|
+
emitted by an older CLI do not block project commands.
|
|
10
|
+
|
|
3
11
|
## [0.34.1] - 2026-08-19
|
|
4
12
|
|
|
5
13
|
### Fixed
|
package/dist/neo.mjs
CHANGED
|
@@ -35172,8 +35172,9 @@ function fieldDisposition(recordKind, field) {
|
|
|
35172
35172
|
return null;
|
|
35173
35173
|
}
|
|
35174
35174
|
function assertKnownDocumentFields(recordKind, value) {
|
|
35175
|
-
for (const field of Object.
|
|
35175
|
+
for (const [field, fieldValue] of Object.entries(value)) {
|
|
35176
35176
|
if (fieldDisposition(recordKind, field) !== null) continue;
|
|
35177
|
+
if (fieldValue === null) continue;
|
|
35177
35178
|
throw new SchemaDocumentContractError(recordKind, field);
|
|
35178
35179
|
}
|
|
35179
35180
|
}
|
|
@@ -35188,6 +35189,7 @@ function partitionDocumentFields(recordKind, value) {
|
|
|
35188
35189
|
if (fieldValue === void 0) continue;
|
|
35189
35190
|
const disposition = fieldDisposition(recordKind, field);
|
|
35190
35191
|
if (disposition === null) {
|
|
35192
|
+
if (fieldValue === null) continue;
|
|
35191
35193
|
throw new SchemaDocumentContractError(recordKind, field);
|
|
35192
35194
|
}
|
|
35193
35195
|
result[disposition][field] = fieldValue;
|
|
@@ -35198,6 +35200,11 @@ function normalizeDocumentFields(recordKind, value) {
|
|
|
35198
35200
|
assertKnownDocumentFields(recordKind, value);
|
|
35199
35201
|
const contract = SCHEMA_DOCUMENT_FIELD_CONTRACTS[recordKind];
|
|
35200
35202
|
const normalized = deepOmitUndefined(value);
|
|
35203
|
+
for (const [field, fieldValue] of Object.entries(normalized)) {
|
|
35204
|
+
if (fieldValue === null && fieldDisposition(recordKind, field) === null) {
|
|
35205
|
+
delete normalized[field];
|
|
35206
|
+
}
|
|
35207
|
+
}
|
|
35201
35208
|
for (const [field, rule] of Object.entries(contract.normalization)) {
|
|
35202
35209
|
const current = normalized[field];
|
|
35203
35210
|
if (rule === "nullIsAbsent") {
|
|
@@ -113174,7 +113181,7 @@ var init_registry2 = __esm({
|
|
|
113174
113181
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
113175
113182
|
formatVersion: 3,
|
|
113176
113183
|
contractVersion: "3.14",
|
|
113177
|
-
cliVersion: "0.34.
|
|
113184
|
+
cliVersion: "0.34.2",
|
|
113178
113185
|
projectFileUploadBatchSize: 32,
|
|
113179
113186
|
documentRecords: {
|
|
113180
113187
|
member: {
|
|
@@ -119776,7 +119783,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
119776
119783
|
async function main() {
|
|
119777
119784
|
const args = parseArgs(process.argv.slice(2));
|
|
119778
119785
|
if (args.command === "--version") {
|
|
119779
|
-
console.log("0.34.
|
|
119786
|
+
console.log("0.34.2");
|
|
119780
119787
|
return;
|
|
119781
119788
|
}
|
|
119782
119789
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -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.34.
|
|
12
|
+
<!-- reviewed-through-cli: 0.34.2 -->
|
|
13
13
|
|
|
14
14
|
# Neo Compose CLI
|
|
15
15
|
|
|
@@ -47,8 +47,9 @@ Treat pull followed immediately by status or dry-run as a semantic no-op. If it
|
|
|
47
47
|
reports project changes, stop and report a round-trip bug instead of pushing.
|
|
48
48
|
|
|
49
49
|
The compiler reports file:line:column diagnostics and fails closed. Unknown
|
|
50
|
-
authorable server fields require a CLI contract update; never preserve
|
|
51
|
-
opaque JSON or guessed syntax.
|
|
50
|
+
non-null authorable server fields require a CLI contract update; never preserve
|
|
51
|
+
them as opaque JSON or guessed syntax. An unknown top-level document field whose
|
|
52
|
+
value is exactly JSON `null` is treated as absent.
|
|
52
53
|
|
|
53
54
|
## Honor hard authoring invariants
|
|
54
55
|
|
|
@@ -83,7 +83,7 @@ wrappers.
|
|
|
83
83
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
84
84
|
|
|
85
85
|
```html
|
|
86
|
-
<!-- reviewed-through-cli: 0.34.
|
|
86
|
+
<!-- reviewed-through-cli: 0.34.2 -->
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
The quoted version above is checked too, so this instruction cannot go stale
|