@neocompose/cli 0.33.0 → 0.33.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,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.33.2] - 2026-08-19
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Preserve authored non-null generic fields while projecting the local schema
|
|
8
|
+
manifest used by `neo script check --all`, so a `T` field read remains `T`
|
|
9
|
+
instead of becoming `T?` from the storage placeholder's structural flags.
|
|
10
|
+
- Compile prospective functions, properties, migrations, and ad-hoc scripts
|
|
11
|
+
against the complete project context, including declared constructors,
|
|
12
|
+
project files, and variants. `neo test` now resolves required Class-header
|
|
13
|
+
constructors instead of incorrectly falling back to their stored fields.
|
|
14
|
+
|
|
15
|
+
## [0.33.1] - 2026-08-19
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Preserve an authored non-null `T` member while recompiling an open generic
|
|
20
|
+
Class from its lowered project records, so `neo test` no longer rejects
|
|
21
|
+
valid generic getters as returning `T?` during animation declaration replay.
|
|
22
|
+
- Identify the actual NeoScript property and getter or setter position when
|
|
23
|
+
prospective replay compilation fails, instead of reporting only the
|
|
24
|
+
unrelated animation value that triggered whole-document validation.
|
|
25
|
+
|
|
3
26
|
## [0.33.0] - 2026-08-19
|
|
4
27
|
|
|
5
28
|
### Added
|
package/dist/neo.mjs
CHANGED
|
@@ -32824,7 +32824,7 @@ function memberType(member, environment, visiting, field) {
|
|
|
32824
32824
|
return typeParameter(
|
|
32825
32825
|
string2(member.genericParamId, `${field}.genericParamId`),
|
|
32826
32826
|
environment,
|
|
32827
|
-
|
|
32827
|
+
false
|
|
32828
32828
|
);
|
|
32829
32829
|
}
|
|
32830
32830
|
return { ...unknownType(), nullable };
|
|
@@ -61279,7 +61279,14 @@ function memberRuntimeType(record3, context, seen = /* @__PURE__ */ new Set(), g
|
|
|
61279
61279
|
}
|
|
61280
61280
|
return genericParameterLanguageType(
|
|
61281
61281
|
genericParamId,
|
|
61282
|
-
|
|
61282
|
+
// A Generic schema member is a value-less placeholder, so its stored
|
|
61283
|
+
// `required` is always false even when the authored slot is spelled
|
|
61284
|
+
// `T`. Project-source declarations forbid `T?` member slots because
|
|
61285
|
+
// the concrete binding owns storage nullability. While compiling the
|
|
61286
|
+
// open declaring Class, preserve the authored `T` surface instead of
|
|
61287
|
+
// turning every read into `T?`; closed receivers still take the
|
|
61288
|
+
// concrete binding branch above and retain its real nullability.
|
|
61289
|
+
true,
|
|
61283
61290
|
context,
|
|
61284
61291
|
genericEnvironment
|
|
61285
61292
|
);
|
|
@@ -94844,7 +94851,7 @@ function replayAnimationDeclarationInitializersV4(records2, document, fallbackDo
|
|
|
94844
94851
|
documentBodiesCompiled = true;
|
|
94845
94852
|
} catch (error) {
|
|
94846
94853
|
throw new Error(
|
|
94847
|
-
`Animation declaration replay failed for value "${row.id}": ${
|
|
94854
|
+
`Animation declaration replay failed for value "${row.id}": ${describePulledProjectBodyCompileError(error)}`,
|
|
94848
94855
|
{ cause: error }
|
|
94849
94856
|
);
|
|
94850
94857
|
}
|
|
@@ -96098,6 +96105,16 @@ var init_server_preparation_preflight = __esm({
|
|
|
96098
96105
|
});
|
|
96099
96106
|
|
|
96100
96107
|
// src/project-source/initializer-replay.ts
|
|
96108
|
+
function describePulledProjectBodyCompileError(error) {
|
|
96109
|
+
const fallback = error instanceof Error ? error.message : String(error);
|
|
96110
|
+
if (!(error instanceof CompileError)) return fallback;
|
|
96111
|
+
const site = pulledBodyCompileSites.get(error);
|
|
96112
|
+
if (site === void 0) return fallback;
|
|
96113
|
+
const position = `${error.line}:${error.column}`;
|
|
96114
|
+
const detailPrefix = `${position}: `;
|
|
96115
|
+
const detail = error.message.startsWith(detailPrefix) ? error.message.slice(detailPrefix.length) : error.message;
|
|
96116
|
+
return `Member "${site.memberName}" (${site.memberId}) ${error.unit ?? "body"} failed at ${position}: ${detail}`;
|
|
96117
|
+
}
|
|
96101
96118
|
function replayStoredConstructionV4(args) {
|
|
96102
96119
|
const document = args.document ?? readPulledProjectDocumentV4(args.records);
|
|
96103
96120
|
const compilationProject = args.compilationProject ?? (args.compileDocumentBodies === true ? createNeoScriptCompilationProject({
|
|
@@ -96343,11 +96360,21 @@ function compilePulledProjectDocumentForEvaluationV4(document, compilationProjec
|
|
|
96343
96360
|
)
|
|
96344
96361
|
);
|
|
96345
96362
|
for (const member of compileArgs.members) {
|
|
96346
|
-
|
|
96347
|
-
|
|
96348
|
-
|
|
96349
|
-
|
|
96350
|
-
|
|
96363
|
+
try {
|
|
96364
|
+
compileAuthoredMemberBodies({
|
|
96365
|
+
...compileArgs,
|
|
96366
|
+
member,
|
|
96367
|
+
thisClass: ownerClassByMemberId.get(member.id) ?? null
|
|
96368
|
+
});
|
|
96369
|
+
} catch (error) {
|
|
96370
|
+
if (error instanceof CompileError) {
|
|
96371
|
+
pulledBodyCompileSites.set(error, {
|
|
96372
|
+
memberId: member.id,
|
|
96373
|
+
memberName: member.name
|
|
96374
|
+
});
|
|
96375
|
+
}
|
|
96376
|
+
throw error;
|
|
96377
|
+
}
|
|
96351
96378
|
}
|
|
96352
96379
|
for (const site of valueInitializerCompilationSites(document).values()) {
|
|
96353
96380
|
if (isInitValueContent(site.row) && site.row.init.compiled !== void 0) {
|
|
@@ -96509,7 +96536,7 @@ function replayWorkspace(records2) {
|
|
|
96509
96536
|
state: { records: stateRecords }
|
|
96510
96537
|
};
|
|
96511
96538
|
}
|
|
96512
|
-
var pulledValueInitializerCompilationSites;
|
|
96539
|
+
var pulledBodyCompileSites, pulledValueInitializerCompilationSites;
|
|
96513
96540
|
var init_initializer_replay = __esm({
|
|
96514
96541
|
"src/project-source/initializer-replay.ts"() {
|
|
96515
96542
|
"use strict";
|
|
@@ -96524,6 +96551,7 @@ var init_initializer_replay = __esm({
|
|
|
96524
96551
|
init_constructors2();
|
|
96525
96552
|
init_neoscript_evaluator();
|
|
96526
96553
|
init_compiler_adapter();
|
|
96554
|
+
pulledBodyCompileSites = /* @__PURE__ */ new WeakMap();
|
|
96527
96555
|
pulledValueInitializerCompilationSites = /* @__PURE__ */ new WeakMap();
|
|
96528
96556
|
}
|
|
96529
96557
|
});
|
|
@@ -107110,6 +107138,7 @@ function createCliNeoScriptContext(options) {
|
|
|
107110
107138
|
const members = [...options.documents.members];
|
|
107111
107139
|
const vm = {
|
|
107112
107140
|
project: options.documents.project,
|
|
107141
|
+
projectFiles: [...options.documents.projectFiles ?? []],
|
|
107113
107142
|
members,
|
|
107114
107143
|
classes: [...options.documents.classes],
|
|
107115
107144
|
enums: [...options.documents.enums],
|
|
@@ -107129,7 +107158,9 @@ function createCliNeoScriptContext(options) {
|
|
|
107129
107158
|
...options.functionReturnTypeInfo ? { functionReturnTypeInfo: options.functionReturnTypeInfo } : {},
|
|
107130
107159
|
...options.functionArguments ? { functionArguments: options.functionArguments } : {},
|
|
107131
107160
|
...options.functionDeferred !== void 0 ? { functionDeferred: options.functionDeferred } : {},
|
|
107132
|
-
...options.functionName ? { functionName: options.functionName } : {}
|
|
107161
|
+
...options.functionName ? { functionName: options.functionName } : {},
|
|
107162
|
+
...options.documents.variants?.length ? { variants: [...options.documents.variants] } : {},
|
|
107163
|
+
...options.documents.variantFolders?.length ? { variantFolders: [...options.documents.variantFolders] } : {}
|
|
107133
107164
|
});
|
|
107134
107165
|
if (!options.manifest) return compilerContext;
|
|
107135
107166
|
const projection = projectSchemaManifest(options.manifest, {
|
|
@@ -107768,11 +107799,14 @@ function readDocumentArrays(raw) {
|
|
|
107768
107799
|
}
|
|
107769
107800
|
return {
|
|
107770
107801
|
project: raw.project,
|
|
107802
|
+
projectFiles: arrayOf2("projectFiles"),
|
|
107771
107803
|
members: arrayOf2("members"),
|
|
107772
107804
|
classes: arrayOf2("classes"),
|
|
107773
107805
|
constructors: arrayOf2("constructors"),
|
|
107774
107806
|
enums: arrayOf2("enums"),
|
|
107775
107807
|
interfaces: arrayOf2("interfaces"),
|
|
107808
|
+
variants: arrayOf2("variants"),
|
|
107809
|
+
variantFolders: arrayOf2("variantFolders"),
|
|
107776
107810
|
values: arrayOf2("values"),
|
|
107777
107811
|
dialogues: arrayOf2("dialogues"),
|
|
107778
107812
|
dialogueRecords: arrayOf2("dialogueRecords"),
|
|
@@ -107780,7 +107814,6 @@ function readDocumentArrays(raw) {
|
|
|
107780
107814
|
dialogueGroups: arrayOf2("dialogueGroups"),
|
|
107781
107815
|
priorityGroups: arrayOf2("priorityGroups"),
|
|
107782
107816
|
migrations: arrayOf2("migrations"),
|
|
107783
|
-
projectFiles: arrayOf2("projectFiles"),
|
|
107784
107817
|
localizationConfig: raw.localizationConfig,
|
|
107785
107818
|
localizedTexts: arrayOf2("localizedTexts")
|
|
107786
107819
|
};
|
|
@@ -108383,12 +108416,19 @@ async function runScript(workspace, command, options, dependencies = {}) {
|
|
|
108383
108416
|
unit,
|
|
108384
108417
|
code: source
|
|
108385
108418
|
});
|
|
108386
|
-
const
|
|
108419
|
+
const compilerProject = {
|
|
108387
108420
|
project: document.project,
|
|
108421
|
+
projectFiles: document.projectFiles,
|
|
108388
108422
|
members: document.members,
|
|
108389
108423
|
classes: document.classes,
|
|
108424
|
+
constructors: document.constructors,
|
|
108390
108425
|
enums: document.enums,
|
|
108391
108426
|
interfaces: document.interfaces,
|
|
108427
|
+
variants: document.variants,
|
|
108428
|
+
variantFolders: document.variantFolders
|
|
108429
|
+
};
|
|
108430
|
+
const compileContext = {
|
|
108431
|
+
...compilerProject,
|
|
108392
108432
|
thisClass,
|
|
108393
108433
|
returnTypeInfo: parseReturns(options.returns, document),
|
|
108394
108434
|
dialogueContext: null
|
|
@@ -108437,11 +108477,7 @@ async function runScript(workspace, command, options, dependencies = {}) {
|
|
|
108437
108477
|
}
|
|
108438
108478
|
compiled = compileNeoScriptBodyOrThrow(
|
|
108439
108479
|
() => compileNSFunction(source, {
|
|
108440
|
-
|
|
108441
|
-
members: document.members,
|
|
108442
|
-
classes: document.classes,
|
|
108443
|
-
enums: document.enums,
|
|
108444
|
-
interfaces: document.interfaces,
|
|
108480
|
+
...compilerProject,
|
|
108445
108481
|
thisClass,
|
|
108446
108482
|
returnTypeInfo: nsFunctionDefinition.returnTypeInfo,
|
|
108447
108483
|
argumentTypes: nsFunctionDefinition.argumentTypes,
|
|
@@ -108457,11 +108493,7 @@ async function runScript(workspace, command, options, dependencies = {}) {
|
|
|
108457
108493
|
}
|
|
108458
108494
|
compiled = compileNeoScriptBodyOrThrow(
|
|
108459
108495
|
() => compileNSSetter(source, {
|
|
108460
|
-
|
|
108461
|
-
members: document.members,
|
|
108462
|
-
classes: document.classes,
|
|
108463
|
-
enums: document.enums,
|
|
108464
|
-
interfaces: document.interfaces,
|
|
108496
|
+
...compilerProject,
|
|
108465
108497
|
thisClass,
|
|
108466
108498
|
valueTypeInfo: resolveScriptPropertyReturnTypeInfo(
|
|
108467
108499
|
setterMember,
|
|
@@ -112370,10 +112402,27 @@ async function buildPostPushCompileSchema(workspace, status) {
|
|
|
112370
112402
|
}
|
|
112371
112403
|
return {
|
|
112372
112404
|
project,
|
|
112405
|
+
projectFiles: [...bucket("project-file").values()],
|
|
112373
112406
|
members: [...bucket("member").values()],
|
|
112374
112407
|
classes: [...bucket("class").values()],
|
|
112408
|
+
constructors: [...bucket("constructor").values()],
|
|
112375
112409
|
enums: [...bucket("enum").values()],
|
|
112376
|
-
interfaces: [...bucket("interface").values()]
|
|
112410
|
+
interfaces: [...bucket("interface").values()],
|
|
112411
|
+
variants: [...bucket("variant").values()],
|
|
112412
|
+
variantFolders: [...bucket("variant-folder").values()]
|
|
112413
|
+
};
|
|
112414
|
+
}
|
|
112415
|
+
function postPushCompilerProject(schema) {
|
|
112416
|
+
return {
|
|
112417
|
+
project: schema.project,
|
|
112418
|
+
projectFiles: schema.projectFiles,
|
|
112419
|
+
members: schema.members,
|
|
112420
|
+
classes: schema.classes,
|
|
112421
|
+
constructors: schema.constructors,
|
|
112422
|
+
enums: schema.enums,
|
|
112423
|
+
interfaces: schema.interfaces,
|
|
112424
|
+
variants: schema.variants,
|
|
112425
|
+
variantFolders: schema.variantFolders
|
|
112377
112426
|
};
|
|
112378
112427
|
}
|
|
112379
112428
|
function containingClass(schema, memberId) {
|
|
@@ -112405,11 +112454,7 @@ function compileNSPropertyChange(schema, memberData, locator) {
|
|
|
112405
112454
|
const code = memberData.code;
|
|
112406
112455
|
next.getter = compileNeoScriptBodyOrThrow(
|
|
112407
112456
|
() => compileNSGetter2(code, {
|
|
112408
|
-
|
|
112409
|
-
members: schema.members,
|
|
112410
|
-
classes: schema.classes,
|
|
112411
|
-
enums: schema.enums,
|
|
112412
|
-
interfaces: schema.interfaces,
|
|
112457
|
+
...postPushCompilerProject(schema),
|
|
112413
112458
|
thisClass,
|
|
112414
112459
|
returnTypeInfo,
|
|
112415
112460
|
dialogueContext: null,
|
|
@@ -112426,11 +112471,7 @@ function compileNSPropertyChange(schema, memberData, locator) {
|
|
|
112426
112471
|
const setterCode = memberData.setterCode;
|
|
112427
112472
|
next.setter = compileNeoScriptBodyOrThrow(
|
|
112428
112473
|
() => compileNSSetter2(setterCode, {
|
|
112429
|
-
|
|
112430
|
-
members: schema.members,
|
|
112431
|
-
classes: schema.classes,
|
|
112432
|
-
enums: schema.enums,
|
|
112433
|
-
interfaces: schema.interfaces,
|
|
112474
|
+
...postPushCompilerProject(schema),
|
|
112434
112475
|
thisClass,
|
|
112435
112476
|
valueTypeInfo: returnTypeInfo,
|
|
112436
112477
|
implicitMemberAccess: true,
|
|
@@ -112455,11 +112496,7 @@ function compileNSFunctionChange(schema, memberData, locator) {
|
|
|
112455
112496
|
const thisClass = containingClass(schema, memberData.id);
|
|
112456
112497
|
next.action = compileNeoScriptBodyOrThrow(
|
|
112457
112498
|
() => compileNSFunction2(code, {
|
|
112458
|
-
|
|
112459
|
-
members: schema.members,
|
|
112460
|
-
classes: schema.classes,
|
|
112461
|
-
enums: schema.enums,
|
|
112462
|
-
interfaces: schema.interfaces,
|
|
112499
|
+
...postPushCompilerProject(schema),
|
|
112463
112500
|
thisClass,
|
|
112464
112501
|
returnTypeInfo: contract.returnTypeInfo,
|
|
112465
112502
|
argumentTypes: contract.argumentTypes,
|
|
@@ -112799,11 +112836,7 @@ function compileMigrationAction(schema, migrationData, locator) {
|
|
|
112799
112836
|
const code = String(migrationData.code);
|
|
112800
112837
|
return compileNeoScriptBodyOrThrow(
|
|
112801
112838
|
() => compileNSVoidBody2(code, {
|
|
112802
|
-
|
|
112803
|
-
members: schema.members,
|
|
112804
|
-
classes: schema.classes,
|
|
112805
|
-
enums: schema.enums,
|
|
112806
|
-
interfaces: schema.interfaces,
|
|
112839
|
+
...postPushCompilerProject(schema),
|
|
112807
112840
|
thisClass,
|
|
112808
112841
|
dialogueContext: null,
|
|
112809
112842
|
migrationContext: true
|
|
@@ -112911,7 +112944,7 @@ var init_registry2 = __esm({
|
|
|
112911
112944
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
112912
112945
|
formatVersion: 3,
|
|
112913
112946
|
contractVersion: "3.13",
|
|
112914
|
-
cliVersion: "0.33.
|
|
112947
|
+
cliVersion: "0.33.2",
|
|
112915
112948
|
projectFileUploadBatchSize: 32,
|
|
112916
112949
|
documentRecords: {
|
|
112917
112950
|
member: {
|
|
@@ -116784,10 +116817,14 @@ async function runPendingMigrations(workspace, client, raw, migrations, onlyRef,
|
|
|
116784
116817
|
const compiled = pinned !== void 0 && pinned !== null ? pinned : compileNeoScriptBodyOrThrow(
|
|
116785
116818
|
() => compileNSVoidBody(migrationCode, {
|
|
116786
116819
|
project: document.project,
|
|
116820
|
+
projectFiles: document.projectFiles,
|
|
116787
116821
|
members: document.members,
|
|
116788
116822
|
classes: document.classes,
|
|
116823
|
+
constructors: document.constructors,
|
|
116789
116824
|
enums: document.enums,
|
|
116790
116825
|
interfaces: document.interfaces,
|
|
116826
|
+
variants: document.variants,
|
|
116827
|
+
variantFolders: document.variantFolders,
|
|
116791
116828
|
thisClass,
|
|
116792
116829
|
dialogueContext: null,
|
|
116793
116830
|
migrationContext: true
|
|
@@ -119506,7 +119543,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
119506
119543
|
async function main() {
|
|
119507
119544
|
const args = parseArgs(process.argv.slice(2));
|
|
119508
119545
|
if (args.command === "--version") {
|
|
119509
|
-
console.log("0.33.
|
|
119546
|
+
console.log("0.33.2");
|
|
119510
119547
|
return;
|
|
119511
119548
|
}
|
|
119512
119549
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -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.33.
|
|
86
|
+
<!-- reviewed-through-cli: 0.33.2 -->
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
The quoted version above is checked too, so this instruction cannot go stale
|