@neocompose/cli 0.30.2 → 0.30.3

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.30.3] - 2026-08-13
4
+
5
+ ### Fixed
6
+
7
+ - Identify stored dialogue and migration bodies in `neo script check --all`
8
+ compile failures and print each in-body source position once. The command
9
+ also accepts existing delegate and action types in constructor signatures.
10
+
3
11
  ## [0.30.2] - 2026-08-13
4
12
 
5
13
  ### Fixed
package/dist/neo.mjs CHANGED
@@ -29717,6 +29717,38 @@ function substituteManifestType(type, genericEnvironment, environment, seenParam
29717
29717
  )
29718
29718
  };
29719
29719
  }
29720
+ if (type.kind === "delegate") {
29721
+ return {
29722
+ ...type,
29723
+ returnType: substituteManifestType(
29724
+ type.returnType,
29725
+ genericEnvironment,
29726
+ environment,
29727
+ seenParameters
29728
+ ),
29729
+ parameterTypes: type.parameterTypes.map(
29730
+ (parameter4) => substituteManifestType(
29731
+ parameter4,
29732
+ genericEnvironment,
29733
+ environment,
29734
+ seenParameters
29735
+ )
29736
+ )
29737
+ };
29738
+ }
29739
+ if (type.kind === "action") {
29740
+ return {
29741
+ ...type,
29742
+ parameterTypes: type.parameterTypes.map(
29743
+ (parameter4) => substituteManifestType(
29744
+ parameter4,
29745
+ genericEnvironment,
29746
+ environment,
29747
+ seenParameters
29748
+ )
29749
+ )
29750
+ };
29751
+ }
29720
29752
  return type;
29721
29753
  }
29722
29754
  function substituteManifestSymbol(symbol, genericEnvironment, environment) {
@@ -30040,6 +30072,37 @@ function manifestType2(value, environment, field) {
30040
30072
  nullable
30041
30073
  };
30042
30074
  }
30075
+ if (kind === "delegate") {
30076
+ return {
30077
+ kind: "delegate",
30078
+ returnType: manifestReturnType(
30079
+ type.returnType,
30080
+ environment,
30081
+ `${field}.returnType`
30082
+ ),
30083
+ parameterTypes: records(type.argumentTypes, `${field}.argumentTypes`).map(
30084
+ (argument2, index) => manifestType2(
30085
+ argument2,
30086
+ environment,
30087
+ `${field}.argumentTypes[${index}]`
30088
+ )
30089
+ ),
30090
+ nullable
30091
+ };
30092
+ }
30093
+ if (kind === "action") {
30094
+ return {
30095
+ kind: "action",
30096
+ parameterTypes: records(type.argumentTypes, `${field}.argumentTypes`).map(
30097
+ (argument2, index) => manifestType2(
30098
+ argument2,
30099
+ environment,
30100
+ `${field}.argumentTypes[${index}]`
30101
+ )
30102
+ ),
30103
+ nullable
30104
+ };
30105
+ }
30043
30106
  throw new Error(
30044
30107
  `${field}.kind has unsupported schema type ${JSON.stringify(kind)}.`
30045
30108
  );
@@ -99514,6 +99577,9 @@ function describeBodySite(site) {
99514
99577
  return `Migration '${site.memberName}' (target ${site.ownerName})`;
99515
99578
  }
99516
99579
  const unit = unitLabel(site.unit);
99580
+ if ("recordName" in site) {
99581
+ return `${unit} '${site.recordName}'`;
99582
+ }
99517
99583
  if (site.ownerName === null) {
99518
99584
  return `${unit} '${site.memberName}' (member ${site.recordId}, whose declaring class is not in this push's schema)`;
99519
99585
  }
@@ -100539,6 +100605,13 @@ function buildStoredNeoScriptChecks(document) {
100539
100605
  name: nodeId,
100540
100606
  unit: "condition",
100541
100607
  path: `dialogueNodes.${nodeId}`,
100608
+ bodySite: {
100609
+ recordKind: "dialogue-node",
100610
+ recordId: nodeId,
100611
+ recordName: nodeId,
100612
+ unit: "getter",
100613
+ code: ""
100614
+ },
100542
100615
  run: () => {
100543
100616
  throw new Error(
100544
100617
  `Dialogue node "${nodeId}" references missing dialogue "${String(node.dialogueId)}".`
@@ -100569,6 +100642,13 @@ function buildStoredNeoScriptChecks(document) {
100569
100642
  name: recordName,
100570
100643
  unit: "condition",
100571
100644
  path: `${path}.${index}`,
100645
+ bodySite: {
100646
+ recordKind: "dialogue-node",
100647
+ recordId: nodeId,
100648
+ recordName,
100649
+ unit: "getter",
100650
+ code: typeof conditionValue.code === "string" ? conditionValue.code : ""
100651
+ },
100572
100652
  run: () => {
100573
100653
  compileDialogueLogicWithProjectData(
100574
100654
  {
@@ -100595,6 +100675,13 @@ function buildStoredNeoScriptChecks(document) {
100595
100675
  name: recordName,
100596
100676
  unit: "text-variable",
100597
100677
  path: `${path}.${variableKey}`,
100678
+ bodySite: {
100679
+ recordKind: "dialogue-node",
100680
+ recordId: nodeId,
100681
+ recordName,
100682
+ unit: "getter",
100683
+ code: ""
100684
+ },
100598
100685
  run: () => {
100599
100686
  compileDialogueLogicWithProjectData(
100600
100687
  {
@@ -100670,6 +100757,13 @@ function buildStoredNeoScriptChecks(document) {
100670
100757
  name: recordName,
100671
100758
  unit: "action",
100672
100759
  path: `${nodePath}.actions.${actionId}.logic`,
100760
+ bodySite: {
100761
+ recordKind: "dialogue-node",
100762
+ recordId: nodeId,
100763
+ recordName,
100764
+ unit: "action",
100765
+ code: typeof logic.code === "string" ? logic.code : ""
100766
+ },
100673
100767
  run: () => {
100674
100768
  compileDialogueLogicWithProjectData(
100675
100769
  {
@@ -100714,6 +100808,13 @@ function buildStoredNeoScriptChecks(document) {
100714
100808
  name: groupName,
100715
100809
  unit: "condition",
100716
100810
  path: `dialogueGroups.${groupId}.conditions.${index}`,
100811
+ bodySite: {
100812
+ recordKind: "dialogue-group",
100813
+ recordId: groupId,
100814
+ recordName: groupName,
100815
+ unit: "getter",
100816
+ code: typeof conditionValue.code === "string" ? conditionValue.code : ""
100817
+ },
100717
100818
  run: () => {
100718
100819
  compileDialogueLogicWithProjectData(
100719
100820
  {
@@ -100741,6 +100842,14 @@ function buildStoredNeoScriptChecks(document) {
100741
100842
  name: migrationName,
100742
100843
  unit: "migration",
100743
100844
  path: `migrations.${migrationId}.code`,
100845
+ bodySite: {
100846
+ recordKind: "migration",
100847
+ recordId: migrationId,
100848
+ ownerName: null,
100849
+ memberName: migrationName,
100850
+ unit: "migration",
100851
+ code: typeof migration.code === "string" ? migration.code : ""
100852
+ },
100744
100853
  run: () => {
100745
100854
  if (typeof migration.code !== "string") {
100746
100855
  throw new Error(`Migration "${migrationId}" is missing source code.`);
@@ -100785,9 +100894,6 @@ function optionalString4(value) {
100785
100894
  return typeof value === "string" ? value : null;
100786
100895
  }
100787
100896
  function neoScriptCheckErrorMessage(error) {
100788
- if (error instanceof CompileError) {
100789
- return `${error.line}:${error.column} ${error.message}`;
100790
- }
100791
100897
  return error instanceof Error ? error.message : String(error);
100792
100898
  }
100793
100899
  function resolveLocalScriptMember(manifest, memberRef) {
@@ -101032,7 +101138,7 @@ function runCheckAll(document, manifest, options) {
101032
101138
  for (const check of buildStoredNeoScriptChecks(document)) {
101033
101139
  checked += 1;
101034
101140
  try {
101035
- check.run();
101141
+ compileNeoScriptBodyOrThrow(check.run, check.bodySite, null);
101036
101142
  results.push({
101037
101143
  id: check.id,
101038
101144
  name: check.name,
@@ -104740,7 +104846,7 @@ var init_registry2 = __esm({
104740
104846
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
104741
104847
  formatVersion: 3,
104742
104848
  contractVersion: "3.11",
104743
- cliVersion: "0.30.2",
104849
+ cliVersion: "0.30.3",
104744
104850
  projectFileUploadBatchSize: 32,
104745
104851
  documentRecords: {
104746
104852
  member: {
@@ -111308,7 +111414,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
111308
111414
  async function main() {
111309
111415
  const args = parseArgs(process.argv.slice(2));
111310
111416
  if (args.command === "--version") {
111311
- console.log("0.30.2");
111417
+ console.log("0.30.3");
111312
111418
  return;
111313
111419
  }
111314
111420
  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.30.2",
3
+ "version": "0.30.3",
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.30.2 -->
12
+ <!-- reviewed-through-cli: 0.30.3 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -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.30.2 -->
86
+ <!-- reviewed-through-cli: 0.30.3 -->
87
87
  ```
88
88
 
89
89
  The quoted version above is checked too, so this instruction cannot go stale