@neocompose/cli 0.75.0 → 0.75.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 +22 -0
- package/README.md +28 -0
- package/dist/neo.mjs +907 -654
- package/dist/test-worker.mjs +144 -171
- package/package.json +5 -2
- package/skills/neocompose-cli/SKILL.md +13 -1
- package/skills/neocompose-cli/references/cli-development.md +18 -7
- package/skills/neocompose-cli/references/declarations-and-construction.md +25 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neocompose/cli",
|
|
3
|
-
"version": "0.75.
|
|
3
|
+
"version": "0.75.2",
|
|
4
4
|
"description": "Neo Compose native project-source CLI with bidirectional sync.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@inquirer/prompts": "^8.7.3",
|
|
38
38
|
"convex": "^1.46.0",
|
|
39
|
+
"editorconfig": "^3.0.2",
|
|
39
40
|
"fflate": "^0.8.3",
|
|
40
41
|
"ignore": "^7.0.12",
|
|
41
42
|
"valibot": "^1.5.0"
|
|
@@ -46,7 +47,9 @@
|
|
|
46
47
|
"@neocompose/neoscript-language": "file:../packages/neoscript-language",
|
|
47
48
|
"esbuild": "^0.28.2",
|
|
48
49
|
"prettier": "^3.9.9",
|
|
49
|
-
"uuid": "^14.0.2"
|
|
50
|
+
"uuid": "^14.0.2",
|
|
51
|
+
"@neocompose/models": "file:../packages/models",
|
|
52
|
+
"@neocompose/neoscript-runtime": "file:../packages/neoscript-runtime"
|
|
50
53
|
},
|
|
51
54
|
"repository": {
|
|
52
55
|
"type": "git",
|
|
@@ -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.75.
|
|
12
|
+
<!-- reviewed-through-cli: 0.75.2 -->
|
|
13
13
|
|
|
14
14
|
# Neo Compose CLI
|
|
15
15
|
|
|
@@ -299,3 +299,15 @@ Before a real push, report the files changed, the relevant `neo diff`, dialogue
|
|
|
299
299
|
dry-run results when applicable, and `neo push --dry-run`. Do not claim success
|
|
300
300
|
from parsing alone when construction, reference membership, runtime ownership,
|
|
301
301
|
or server verification is involved.
|
|
302
|
+
|
|
303
|
+
## Formatting
|
|
304
|
+
|
|
305
|
+
The CLI and VS Code extension share NeoScript formatting and read `.editorconfig`
|
|
306
|
+
for `.neo` and `.neoflow` files. Set `indent_style`, `indent_size`, `end_of_line`,
|
|
307
|
+
and `insert_final_newline` there to keep regenerated source consistent with your
|
|
308
|
+
editor. Defaults are two spaces, LF, and a final newline. Push preserves authored
|
|
309
|
+
text when regeneration has the same tokens; pull preserves semantically unchanged
|
|
310
|
+
files. Formatting-only body or source-location changes do not create a subsequent
|
|
311
|
+
push, including stored initializer recipes, computed member defaults, and inline
|
|
312
|
+
constructor delegates; real code and string-content edits still do. Formatting preferences belong
|
|
313
|
+
to the checkout, not stored script bodies.
|
|
@@ -76,10 +76,17 @@ NeoScript compilation in the browser-safe `@neocompose/neoscript-language`
|
|
|
76
76
|
service. Monaco, VS Code, CLI, trusted server, and corpus tooling must consume
|
|
77
77
|
that shared implementation. Do not add language intelligence to one adapter.
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
Resolve disk formatting through the Node-only `node-format-options` entrypoint
|
|
80
|
+
and `.editorconfig`; keep filesystem configuration out of browser imports.
|
|
81
|
+
Format regenerated source before compiling it so cached source ranges match
|
|
82
|
+
the written files. Preserve authored source when a push changes no source tokens.
|
|
83
|
+
|
|
84
|
+
Keep evaluation in `@neocompose/neoscript-runtime` and shared schema/value
|
|
85
|
+
contracts in `@neocompose/models`. Models depend on language and manifest;
|
|
86
|
+
runtime depends on those packages. App context projection, database adapters,
|
|
87
|
+
and reactive hosts remain in the app. Packages must not import host code.
|
|
88
|
+
Boundary and import-cycle checks run with `npm run lint:architecture`;
|
|
89
|
+
`npm run test:runtime-package` checks a standalone custom database host.
|
|
83
90
|
|
|
84
91
|
Keep project context refreshable without accumulating stale Monaco providers or
|
|
85
92
|
LSP state. Preserve diagnostics, completion, hover, signatures, definition,
|
|
@@ -97,8 +104,12 @@ forking it in the CLI. The server still verifies a push's uploaded
|
|
|
97
104
|
project-file bytes, and web editor commits use the shared client preparation protocol.
|
|
98
105
|
Unrelated source files are not uploaded or recompiled on every push.
|
|
99
106
|
Optional source maps missing from valid stored bodies do not request a backfill.
|
|
100
|
-
|
|
101
|
-
|
|
107
|
+
Formatting-only source location changes do not create pushes, including when
|
|
108
|
+
other records change. Stored initializer recipes, computed member defaults, and
|
|
109
|
+
inline constructor delegates preserve their pulled code and compiled bodies when
|
|
110
|
+
source tokens are unchanged. String-literal content remains significant.
|
|
111
|
+
Evaluation maps the current local layout; authored edits,
|
|
112
|
+
dependency changes, and explicit forced recompilation retain their normal compile scope. A CLI lowering mismatch on a normal push is exposed by the next
|
|
102
113
|
canonical pull; `neo push --dry-run` remains the complete source-to-record
|
|
103
114
|
rehearsal.
|
|
104
115
|
|
|
@@ -118,7 +129,7 @@ wrappers.
|
|
|
118
129
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
119
130
|
|
|
120
131
|
```html
|
|
121
|
-
<!-- reviewed-through-cli: 0.75.
|
|
132
|
+
<!-- reviewed-through-cli: 0.75.2 -->
|
|
122
133
|
```
|
|
123
134
|
|
|
124
135
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -446,3 +446,28 @@ A lookup's declared class must be assignable to the entry class of its
|
|
|
446
446
|
selection. Constructor arguments and member initializers must select compatible
|
|
447
447
|
targets too. An `NPC` lookup cannot select from `List<Quest>`, even when its
|
|
448
448
|
initializer is typed `NPC`; status reports the conflicting collection annotation.
|
|
449
|
+
|
|
450
|
+
Schema export retains a constructed default's generic arguments, including
|
|
451
|
+
nested collection references. For example, a `NeoAnimationClip<ArmPart>`
|
|
452
|
+
default constructs `new NeoAnimationClip<ArmPart>` and its frames reference
|
|
453
|
+
`List<NeoAnimationFrame<ArmPart>>`.
|
|
454
|
+
|
|
455
|
+
When a construction leaves a required member unsettled, CLI diagnostics point to
|
|
456
|
+
`new` and include the member declaration as a related location. Fix that
|
|
457
|
+
construction before pushing. Valid root initializers still participate in
|
|
458
|
+
reference checking, so an unrelated root error does not imply their values are
|
|
459
|
+
missing or deleted. Independent reference errors remain visible.
|
|
460
|
+
|
|
461
|
+
Object initializer assignments use commas. The last comma is optional; the
|
|
462
|
+
semicolon terminating the enclosing declaration is valid:
|
|
463
|
+
|
|
464
|
+
```neo
|
|
465
|
+
AudioSettings AUDIO_SETTINGS = new() {
|
|
466
|
+
Main = new AudioMixerGroupSettingsFolder("Main", "Master", "MasterVolume", []),
|
|
467
|
+
};
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
A semicolon after `Main = ...` inside the initializer is invalid. Editor and CLI
|
|
471
|
+
diagnostics highlight that separator in the authored file, including global,
|
|
472
|
+
static member, and protected root initializers. Statement semicolons inside
|
|
473
|
+
function or delegate bodies remain valid.
|