@neocompose/cli 0.50.6 → 0.50.8

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.50.6",
3
+ "version": "0.50.8",
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.50.6 -->
12
+ <!-- reviewed-through-cli: 0.50.8 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -44,6 +44,8 @@ Those are not part of format 4.
44
44
  once with the installed CLI so the workspace carries compatible
45
45
  derived-edge extractor metadata.
46
46
  6. Push one reviewed atomic change with `neo push`.
47
+ Completion arrives through a live subscription. Progress counts refresh every
48
+ five seconds while the durable job runs; a disconnect does not cancel it.
47
49
 
48
50
  Treat pull followed immediately by status or dry-run as a semantic no-op. If it
49
51
  reports project changes, stop and report a round-trip bug instead of pushing.
@@ -88,7 +88,7 @@ wrappers.
88
88
  The marker near the top of `SKILL.md` must exactly match the package version:
89
89
 
90
90
  ```html
91
- <!-- reviewed-through-cli: 0.50.6 -->
91
+ <!-- reviewed-through-cli: 0.50.8 -->
92
92
  ```
93
93
 
94
94
  The quoted version above is checked too, so this instruction cannot go stale
@@ -89,11 +89,21 @@ Durable preparation is selected from the semantic record workload, not the
89
89
  size of the project-wide source identity. Its storage artifact carries one
90
90
  copy of the authored transaction, and resumable staging reads one plan per
91
91
  bounded batch while preserving an atomic write boundary per physical chunk.
92
- The complete source stays local: normal push sends its deterministic hash for
93
- reconnect identity, not the source bytes. A lowering mismatch can
92
+ The complete source stays local. Normal push hashes the exact authored source
93
+ inputs already read during preparation, including file paths and formatting,
94
+ without regenerating canonical source. The same source bytes and workspace base
95
+ retain reconnect identity across candidate UUID allocation. A formatting or path
96
+ change produces a new identity. Dry-run uses the same authored hash and separately
97
+ rehearses the complete canonical source round trip. A lowering mismatch can
94
98
  therefore surface on the next canonical pull; dry-run is the opt-in full
95
99
  source-to-record proof.
96
100
 
101
+ When a transaction commits, its status response carries the first bounded result
102
+ page. The CLI downloads further pages when needed and validates the full result
103
+ count before advancing its base. Result application rechecks source bytes,
104
+ managed binaries, and the workspace base before reusing local preparation; edits
105
+ made while waiting trigger fresh analysis and the existing merge behavior.
106
+
97
107
  One accepted push atomically commits records, main-locale text, stored bindings,
98
108
  and staged file metadata under CAS. Pending durable IDs and source rewrites
99
109
  become real only after acceptance.
@@ -254,3 +264,16 @@ machine-readable output and do not depend on interactive pickers or confirms.
254
264
  contents before writing C#, preserves unchanged `.meta` files, removes obsolete
255
265
  outputs listed in `NeoGeneratedFiles.json`, and removes the former
256
266
  `NeoGeneratedTypes.cs`. Stable identities in the manifest preserve `.meta` GUIDs when types are renamed. Keep the manifest with the generated files.
267
+
268
+ ## Push timing diagnostics
269
+
270
+ Set `NEO_COMPOSE_TRACE_PERFORMANCE=1` when measuring a push. It writes
271
+ `neo-performance` JSON lines to stderr for workspace loading, local candidate
272
+ preparation, file uploads, submission, authentication, live transaction completion,
273
+ result download, and local result application. `startedMs` is relative to the
274
+ CLI process and `durationMs` covers the named operation. Nested spans overlap;
275
+ do not add all durations. Normal command JSON remains on stdout.
276
+
277
+ Durable pushes submit compressed JSON directly to a Convex HTTP action and subscribe to completion with the scoped session's refreshing JWT. Bodies above 1 MiB and staged media use an internal Node action; requests beyond the direct transport's bounds use the existing server upload route. The CLI pins the deployment through the authenticated app origin before sending it a session token.
278
+ Results pin the workspace to that transaction's hash, so a concurrent later commit still
279
+ requires a pull before another push.
@@ -163,7 +163,11 @@ construction predating the P75 collapse converges the same way: its next push
163
163
  drops the constructor-settled keys the body duplicated from the creation data
164
164
  and stamps the construction's provenance. That is a one-time storage
165
165
  convergence, not an edit — resolved values do not change, and the argument
166
- rows stay reachable through the creation data that already named them. A construction whose durable constructor arguments changed, whose
166
+ rows stay reachable through the creation data that already named them.
167
+
168
+ Defaulted members may be added without recreating existing instances, including
169
+ instances whose sparse arguments are retained only as constructor data.
170
+ A construction whose durable constructor arguments changed, whose
167
171
  class changed, or which predates a required constructor parameter fails with
168
172
  `construction-arguments-conflict` instead of silently replaying a different
169
173
  recipe. Edit members supported by the recorded construction, or delete and