@neocompose/cli 0.31.0 → 0.31.1

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.31.1] - 2026-08-14
4
+
5
+ ### Fixed
6
+
7
+ - `neo script check` now preserves inline Class-body context and callable
8
+ delegate/action member types, so inherited generic selectors, unqualified
9
+ instance/static fields, and action invocation statements compile as authored.
10
+
3
11
  ## [0.31.0] - 2026-08-13
4
12
 
5
13
  ### Added
package/dist/neo.mjs CHANGED
@@ -31333,6 +31333,29 @@ function memberType(member, environment, visiting, field) {
31333
31333
  `${field}.returnType`
31334
31334
  );
31335
31335
  }
31336
+ if (kind === "delegate") {
31337
+ return {
31338
+ kind: "delegate",
31339
+ returnType: manifestReturnType(
31340
+ member.returnType,
31341
+ environment,
31342
+ `${field}.returnType`
31343
+ ),
31344
+ parameterTypes: argumentsList(member.arguments, environment, field).map(
31345
+ (argument2) => argument2.type
31346
+ ),
31347
+ nullable
31348
+ };
31349
+ }
31350
+ if (kind === "action") {
31351
+ return {
31352
+ kind: "action",
31353
+ parameterTypes: argumentsList(member.arguments, environment, field).map(
31354
+ (argument2) => argument2.type
31355
+ ),
31356
+ nullable: false
31357
+ };
31358
+ }
31336
31359
  if (kind === "generic") {
31337
31360
  return typeParameter(
31338
31361
  string2(member.genericParamId, `${field}.genericParamId`),
@@ -31478,10 +31501,14 @@ function scriptContexts(members, environment) {
31478
31501
  const classId = owner?.kind === "classMember" && typeof owner.classId === "string" ? owner.classId : void 0;
31479
31502
  const memberId = string2(member.id, "member.id");
31480
31503
  const isStatic = boolean(member.isStatic, `member ${memberId}.isStatic`);
31504
+ const declaringType = classId ? { kind: "named", typeId: classId } : void 0;
31481
31505
  const context = {
31482
31506
  kind: member.kind === "computed" ? "property" : "function",
31483
31507
  memberId,
31484
- ...!isStatic && classId ? { thisClass: { kind: "named", typeId: classId } } : {},
31508
+ ...declaringType ? { declaringType } : {},
31509
+ ...!isStatic && declaringType ? { thisClass: declaringType } : {},
31510
+ implicitMemberAccess: true,
31511
+ staticMember: isStatic,
31485
31512
  returnType: manifestReturnType(
31486
31513
  member.returnType,
31487
31514
  environment,
@@ -31798,6 +31825,9 @@ function contextFromManifestScript(project, context) {
31798
31825
  kind: context.kind,
31799
31826
  project,
31800
31827
  ...context.thisClass ? { thisClass: context.thisClass } : {},
31828
+ ...context.declaringType ? { declaringType: context.declaringType } : {},
31829
+ ...context.implicitMemberAccess !== void 0 ? { implicitMemberAccess: context.implicitMemberAccess } : {},
31830
+ ...context.staticMember !== void 0 ? { staticMember: context.staticMember } : {},
31801
31831
  ...context.returnType ? { returnType: context.returnType } : {},
31802
31832
  ...context.parameters ? { parameters: context.parameters } : {},
31803
31833
  ...context.deferred !== void 0 ? { deferred: context.deferred } : {},
@@ -109424,7 +109454,7 @@ var init_registry2 = __esm({
109424
109454
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
109425
109455
  formatVersion: 3,
109426
109456
  contractVersion: "3.12",
109427
- cliVersion: "0.31.0",
109457
+ cliVersion: "0.31.1",
109428
109458
  projectFileUploadBatchSize: 32,
109429
109459
  documentRecords: {
109430
109460
  member: {
@@ -116016,7 +116046,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
116016
116046
  async function main() {
116017
116047
  const args = parseArgs(process.argv.slice(2));
116018
116048
  if (args.command === "--version") {
116019
- console.log("0.31.0");
116049
+ console.log("0.31.1");
116020
116050
  return;
116021
116051
  }
116022
116052
  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.31.0",
3
+ "version": "0.31.1",
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.31.0 -->
12
+ <!-- reviewed-through-cli: 0.31.1 -->
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.31.0 -->
86
+ <!-- reviewed-through-cli: 0.31.1 -->
87
87
  ```
88
88
 
89
89
  The quoted version above is checked too, so this instruction cannot go stale
@@ -33,6 +33,9 @@ neo script eval --function Outpost.RefreshUnlock --this-value <id> --args '[3]'
33
33
 
34
34
  Prefer `--json` for automation.
35
35
 
36
+ Inside an inline Class body, unqualified names resolve against that Class;
37
+ invoke delegate and action members directly with `Selector()` or `OnChanged()`.
38
+
36
39
  ## Nullability and ownership
37
40
 
38
41
  Do not access a nullable receiver directly. First narrow it with a condition, or