@neocompose/cli 0.7.5 → 0.7.6
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 +7 -0
- package/README.md +5 -5
- package/dist/neo.mjs +21 -14
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +8 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
- Document the final relation-only world layer-link contract and keep the
|
|
8
8
|
format-4 Hello World corpus free of the retired value-side binding field.
|
|
9
9
|
|
|
10
|
+
## [0.7.6] - 2026-07-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Regenerate readable NeoFlow source names during force and reset pulls, and
|
|
15
|
+
allow explicit regeneration during a normal pull.
|
|
16
|
+
|
|
10
17
|
## [0.7.5] - 2026-07-22
|
|
11
18
|
|
|
12
19
|
### Fixed
|
package/README.md
CHANGED
|
@@ -338,7 +338,7 @@ neo dialogue new CapitolColdBoot --primary Outpost=Assets.Capitol --group Capito
|
|
|
338
338
|
| `login` / `whoami` | Authenticate and inspect the selected profile. |
|
|
339
339
|
| `init --project <id> [--version <id>]` | Create a format-4 working copy and perform its first reset pull. |
|
|
340
340
|
| `doctor` | Validate format/compiler/editor/source/file contracts; no .NET discovery. |
|
|
341
|
-
| `pull [--force\|--reset]`
|
|
341
|
+
| `pull [--force\|--reset] [--regenerate-source-names]` | Merge remote changes or regenerate canonical source, names, and binaries. |
|
|
342
342
|
| `status [--json]` / `diff [--json]` | Compile source and show semantic records, spans, digests, and upload intent. |
|
|
343
343
|
| `push [--dry-run] [--accept-bump]` | Validate or commit one atomic compare-and-swap transaction. |
|
|
344
344
|
| `dev [--push]` | Watch remote/local changes; pushing remains opt-in. |
|
|
@@ -362,12 +362,12 @@ security boundary.
|
|
|
362
362
|
|
|
363
363
|
## Regenerating dialogue source names
|
|
364
364
|
|
|
365
|
-
Normal pull preserves source filenames and symbols by stable record ID.
|
|
366
|
-
|
|
367
|
-
names
|
|
365
|
+
Normal pull preserves source filenames and symbols by stable record ID. Force
|
|
366
|
+
and reset pulls always derive readable dialogue names from authoritative
|
|
367
|
+
records. To deliberately refresh those names during a normal merge, run:
|
|
368
368
|
|
|
369
369
|
```sh
|
|
370
|
-
neo pull --
|
|
370
|
+
neo pull --regenerate-source-names
|
|
371
371
|
neo status
|
|
372
372
|
neo push --dry-run
|
|
373
373
|
```
|
package/dist/neo.mjs
CHANGED
|
@@ -48051,11 +48051,6 @@ import {
|
|
|
48051
48051
|
} from "node:fs";
|
|
48052
48052
|
import { dirname as dirname5, join as join8 } from "node:path";
|
|
48053
48053
|
async function runPull(workspace, options) {
|
|
48054
|
-
if (options.regenerateSourceNames && !options.reset) {
|
|
48055
|
-
throw new Error(
|
|
48056
|
-
"--regenerate-source-names requires --reset because source-name regeneration rewrites the managed source tree."
|
|
48057
|
-
);
|
|
48058
|
-
}
|
|
48059
48054
|
const destructive = options.force || options.reset;
|
|
48060
48055
|
const hasBaseline = Object.keys(workspace.state.records).length > 0;
|
|
48061
48056
|
let localByKey = /* @__PURE__ */ new Map();
|
|
@@ -48084,7 +48079,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
|
|
|
48084
48079
|
])
|
|
48085
48080
|
);
|
|
48086
48081
|
}
|
|
48087
|
-
if (!destructive && workspace.state.headTransactionHash !== void 0) {
|
|
48082
|
+
if (!destructive && !options.regenerateSourceNames && workspace.state.headTransactionHash !== void 0) {
|
|
48088
48083
|
const convex = await createConvexClient(workspace);
|
|
48089
48084
|
const signal = await convex.query(api2.projectExportData.schemaSignal, {
|
|
48090
48085
|
projectId: workspace.config.projectId,
|
|
@@ -48112,7 +48107,7 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
|
|
|
48112
48107
|
destructive: true
|
|
48113
48108
|
});
|
|
48114
48109
|
const reset = resetWorkspaceToProjectSourcesV4(workspace, document, {
|
|
48115
|
-
regenerateSourceNames:
|
|
48110
|
+
regenerateSourceNames: true
|
|
48116
48111
|
});
|
|
48117
48112
|
for (const [key, state] of binaries.states) {
|
|
48118
48113
|
const record3 = workspace.state.records[key];
|
|
@@ -48252,7 +48247,8 @@ ${blockingErrors.map((error) => ` ${error.message}`).join("\n")}`
|
|
|
48252
48247
|
conflictCount,
|
|
48253
48248
|
conflictKeys,
|
|
48254
48249
|
localStatus,
|
|
48255
|
-
destructive
|
|
48250
|
+
destructive,
|
|
48251
|
+
regenerateSourceNames: destructive || options.regenerateSourceNames
|
|
48256
48252
|
});
|
|
48257
48253
|
}
|
|
48258
48254
|
async function finishFormat4Pull(args) {
|
|
@@ -48264,11 +48260,17 @@ async function finishFormat4Pull(args) {
|
|
|
48264
48260
|
conflictCount,
|
|
48265
48261
|
conflictKeys,
|
|
48266
48262
|
localStatus,
|
|
48267
|
-
destructive
|
|
48263
|
+
destructive,
|
|
48264
|
+
regenerateSourceNames
|
|
48268
48265
|
} = args;
|
|
48269
|
-
const
|
|
48270
|
-
|
|
48266
|
+
const plannedLocalRecords = buildEmitRecordSet(document, plans, "emit");
|
|
48267
|
+
const localRecords = regenerateSourceNames ? regenerateDialogueSourceNamesV4(plannedLocalRecords) : plannedLocalRecords;
|
|
48268
|
+
const regeneratedRecordKeys = new Set(
|
|
48269
|
+
[...plannedLocalRecords].flatMap(
|
|
48270
|
+
([key, record3]) => localRecords.get(key) === record3 ? [] : [key]
|
|
48271
|
+
)
|
|
48271
48272
|
);
|
|
48273
|
+
const localResult = emitProjectDocumentFilesV4(localRecords);
|
|
48272
48274
|
const serverResult = emitProjectDocumentFilesV4(
|
|
48273
48275
|
buildEmitRecordSet(document, plans, "server")
|
|
48274
48276
|
);
|
|
@@ -48305,6 +48307,10 @@ async function finishFormat4Pull(args) {
|
|
|
48305
48307
|
emittedPaths,
|
|
48306
48308
|
mainLocale: workspaceMainLocale(workspace.state.records)
|
|
48307
48309
|
});
|
|
48310
|
+
for (const key of regeneratedRecordKeys) {
|
|
48311
|
+
const path = localResult.recordFiles.get(key);
|
|
48312
|
+
if (path !== void 0) rewritePaths.add(path);
|
|
48313
|
+
}
|
|
48308
48314
|
let written = 0;
|
|
48309
48315
|
for (const path of emittedPaths) {
|
|
48310
48316
|
const local = localByPath.get(path)?.content;
|
|
@@ -48533,6 +48539,7 @@ var init_pull = __esm({
|
|
|
48533
48539
|
init_project_manifest();
|
|
48534
48540
|
init_project_documents();
|
|
48535
48541
|
init_project_file_pull();
|
|
48542
|
+
init_dialogue_sources();
|
|
48536
48543
|
}
|
|
48537
48544
|
});
|
|
48538
48545
|
|
|
@@ -65732,9 +65739,9 @@ ${h("Usage")}
|
|
|
65732
65739
|
neo pull ${d("[--force|--reset] [--regenerate-source-names]")}
|
|
65733
65740
|
|
|
65734
65741
|
${h("Flags")}
|
|
65735
|
-
--force ${d("Discard local edits
|
|
65736
|
-
--reset ${d("Destructively regenerate the entire working copy and
|
|
65737
|
-
--regenerate-source-names ${d("
|
|
65742
|
+
--force ${d("Discard local edits, take the current server schema, and regenerate readable dialogue symbols.")}
|
|
65743
|
+
--reset ${d("Destructively regenerate the entire working copy, binaries, and readable dialogue symbols, even when the sync head is unchanged.")}
|
|
65744
|
+
--regenerate-source-names ${d("Regenerate readable dialogue symbols during an otherwise normal pull.")}
|
|
65738
65745
|
|
|
65739
65746
|
Use ${h("--reset")} to reconstruct every managed ${h(".neo")}/${h(".neoflow")} source file
|
|
65740
65747
|
and tracked project binary from the authoritative server records.
|
package/package.json
CHANGED
|
@@ -62,8 +62,11 @@ neo init --project <id> [--version <id>] [--dir neo]
|
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
For an existing format-4 workspace, `neo pull --reset` regenerates canonical
|
|
65
|
-
source and managed binaries. `neo pull --force`
|
|
66
|
-
of the server
|
|
65
|
+
source, readable dialogue names, and managed binaries. `neo pull --force`
|
|
66
|
+
discards local edits in favor of the server and also regenerates readable
|
|
67
|
+
dialogue names. Use neither casually. A normal
|
|
68
|
+
`neo pull --regenerate-source-names` refreshes only source naming as local
|
|
69
|
+
authored changes while retaining normal merge behavior.
|
|
67
70
|
|
|
68
71
|
Neo never installs, discovers, or requires .NET. `neo doctor` validates the
|
|
69
72
|
format-4 browser compiler, VS Code analysis contract/cache, source bundle, and
|
|
@@ -103,8 +106,9 @@ neo/
|
|
|
103
106
|
|
|
104
107
|
All non-hidden `.neo`, `.neoflow`, and supported managed binaries are tracked.
|
|
105
108
|
`.neo/` is ignored private state. Normal pull preserves declaration placement
|
|
106
|
-
and spelling by stable ID when possible.
|
|
107
|
-
|
|
109
|
+
and spelling by stable ID when possible. Force and reset derive readable
|
|
110
|
+
dialogue names from authoritative records; reset may also regroup source into
|
|
111
|
+
the canonical layout.
|
|
108
112
|
|
|
109
113
|
## Native project declarations
|
|
110
114
|
|