@neocompose/cli 0.21.5 → 0.22.0
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/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.
|
|
12
|
+
<!-- reviewed-through-cli: 0.22.0 -->
|
|
13
13
|
|
|
14
14
|
# Neo Compose CLI
|
|
15
15
|
|
|
@@ -30,7 +30,7 @@ Those are not part of format 4.
|
|
|
30
30
|
existed before the task began.
|
|
31
31
|
4. Run `neo dialogue dryrun <ref>` after dialogue changes.
|
|
32
32
|
5. Run `neo push --dry-run` before every real push. It performs the full local
|
|
33
|
-
|
|
33
|
+
source emission, ID-assignment, transport-shape, hash, and repeat-verification path,
|
|
34
34
|
then rehearses the server's preparation phase — schema-commit
|
|
35
35
|
materialization and whole-graph validation — against the pulled document,
|
|
36
36
|
without prompting, uploading, committing, or rewriting the checkout.
|
|
@@ -51,7 +51,7 @@ opaque JSON or guessed syntax.
|
|
|
51
51
|
- Preserve existing `@id` annotations through rename, reorder, and file moves.
|
|
52
52
|
- Do not add a second `@id` to a root or static member initializer. The member
|
|
53
53
|
ID owns that stored binding. Nested class/list rows still carry their own IDs.
|
|
54
|
-
- Treat `.neo/` as private state and
|
|
54
|
+
- Treat `.neo/` as private state and tracked Neo source as the authorable input.
|
|
55
55
|
- Never seek a force-CAS bypass. Pull, resolve, review, and retry.
|
|
56
56
|
|
|
57
57
|
## Set up a format-4 workspace
|
|
@@ -191,8 +191,11 @@ Conflict source deliberately fails compilation. Edit the desired final source,
|
|
|
191
191
|
or use `neo resolve --mine|--theirs` as a whole-side convenience. Then pull,
|
|
192
192
|
review, dry-run, and push again.
|
|
193
193
|
|
|
194
|
-
`neo push` sends the
|
|
195
|
-
|
|
194
|
+
`neo push` sends the authenticated semantic diff plus a deterministic source
|
|
195
|
+
hash, while the server recompiles the changed NeoScript bodies and
|
|
196
|
+
schema-affected callers and commits only that diff under CAS. Use
|
|
197
|
+
`neo push --dry-run` for the complete source-to-record round-trip check; a
|
|
198
|
+
normal push deliberately does not upload or re-lower the whole source tree. On
|
|
196
199
|
`base-hash-conflict`, pull and resolve. On `version-bump-required`, inspect the
|
|
197
200
|
classification and pass `neo push --accept-bump` only when intended.
|
|
198
201
|
|
|
@@ -60,9 +60,14 @@ LSP state. Preserve diagnostics, completion, hover, signatures, definition,
|
|
|
60
60
|
references, rename, symbols, semantic tokens, code actions, and formatting
|
|
61
61
|
parity for `.neo` and `.neoflow`.
|
|
62
62
|
|
|
63
|
-
Keep trusted server
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
Keep trusted server validation independent of client-generated IR. The CLI
|
|
64
|
+
sends the authenticated semantic diff and a deterministic source identity;
|
|
65
|
+
the server recompiles changed NeoScript bodies and callers affected by
|
|
66
|
+
schema-contract changes. Structural rows, hashes, storage stamps, identities,
|
|
67
|
+
materialization, and CAS bases remain server-validated; unrelated source files
|
|
68
|
+
are not uploaded or recompiled on every push. The explicit trade-off is that a
|
|
69
|
+
CLI lowering mismatch on a normal push is exposed by the next canonical pull;
|
|
70
|
+
`neo push --dry-run` remains the complete source-to-record rehearsal.
|
|
66
71
|
|
|
67
72
|
## Package and release maintenance
|
|
68
73
|
|
|
@@ -73,7 +78,7 @@ wrappers.
|
|
|
73
78
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
74
79
|
|
|
75
80
|
```html
|
|
76
|
-
<!-- reviewed-through-cli: 0.
|
|
81
|
+
<!-- reviewed-through-cli: 0.22.0 -->
|
|
77
82
|
```
|
|
78
83
|
|
|
79
84
|
The quoted version above is checked too, so this instruction cannot go stale
|
|
@@ -22,6 +22,7 @@ neo diff
|
|
|
22
22
|
neo dialogue dryrun <dialogue-ref>
|
|
23
23
|
neo push --dry-run
|
|
24
24
|
neo push
|
|
25
|
+
neo push --dry-run --force-recompile
|
|
25
26
|
```
|
|
26
27
|
|
|
27
28
|
Use `neo pull --regenerate-source-names` to refresh readable naming while
|
|
@@ -29,23 +30,42 @@ retaining normal merge behavior. Use `--reset` to regenerate canonical source
|
|
|
29
30
|
and managed binaries. Use `--force` only to discard local edits for the server
|
|
30
31
|
version.
|
|
31
32
|
|
|
32
|
-
Treat `neo push --dry-run` as a full local commit rehearsal:
|
|
33
|
-
pending-ID assignment
|
|
33
|
+
Treat `neo push --dry-run` as a full local commit rehearsal: source emission,
|
|
34
|
+
in-memory pending-ID assignment, transport shapes, hashes, and repeat
|
|
34
35
|
verification all run. It also runs the server's preparation phase locally —
|
|
35
36
|
schema-commit materialization, seeded structural rows, and whole-graph
|
|
36
37
|
validation — so a rejection that used to cost a real push and return an opaque
|
|
37
38
|
`preparation-failed` now reports before anything is sent. It does not prompt,
|
|
38
39
|
upload, commit, or rewrite source.
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
Normal preparation follows typed compiler dependencies and recompiles only
|
|
42
|
+
bodies affected by changed declarations. Use `--force-recompile` with either a
|
|
43
|
+
dry run or a real push only when diagnosing stale derived IR: it retains the
|
|
44
|
+
exhaustive project-wide body sweep and is intentionally slower.
|
|
45
|
+
|
|
46
|
+
Interactive pushes report the active preparation phase before workspace
|
|
47
|
+
discovery, lowering, compilation, source hashing, and validation begin.
|
|
48
|
+
A normal push prepares that transport once before confirmation and reuses it
|
|
49
|
+
after confirmation; it does not run a second local preparation pass. JSON and
|
|
50
|
+
non-TTY output remain structured and do not emit that terminal-only spinner.
|
|
43
51
|
|
|
44
52
|
A clean dry-run does not promise a clean push. The workspace holds its
|
|
45
53
|
last-pulled state, so everything that grades the live head is still server-only:
|
|
46
|
-
|
|
47
|
-
snapshot-id and content-head
|
|
48
|
-
planning, and finalization.
|
|
54
|
+
project-file staging, authoritative changed/affected NeoScript compilation,
|
|
55
|
+
record/identity/materialization validation, the snapshot-id and content-head
|
|
56
|
+
cross-check, admission classification, chunk planning, and finalization. The
|
|
57
|
+
server does not recompile every unchanged source file merely to prove that an
|
|
58
|
+
authenticated developer used the CLI. Pull again before pushing if time has
|
|
59
|
+
passed.
|
|
60
|
+
|
|
61
|
+
Durable preparation is selected from the semantic record workload, not the
|
|
62
|
+
size of the project-wide source identity. Its storage artifact carries one
|
|
63
|
+
copy of the authored transaction, and resumable staging reads one plan per
|
|
64
|
+
bounded batch while preserving an atomic write boundary per physical chunk.
|
|
65
|
+
The complete source stays local: normal push sends its deterministic hash for
|
|
66
|
+
reconnect identity, not the source bytes. A lowering mismatch can
|
|
67
|
+
therefore surface on the next canonical pull; dry-run is the opt-in full
|
|
68
|
+
source-to-record proof.
|
|
49
69
|
|
|
50
70
|
One accepted push atomically commits records, main-locale text, stored bindings,
|
|
51
71
|
and staged file metadata under CAS. Pending durable IDs and source rewrites
|