@neocompose/cli 0.73.0 → 0.73.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,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.73.1] - 2026-10-08
4
+
5
+ - Breaking: rename `PriorityOption` to `NeoPriorityOption` in priority groups, to match `NeoPriorityGroup`. The old name is a compile error that names its replacement, and dialogue priorities that use the option still resolve. Stored data doesn't change. `neo pull` writes the new name.
6
+
3
7
  ## [0.73.0] - 2026-10-08
4
8
 
5
9
  - Trigger dialogues from NeoScript. `root.Dialogues` mirrors the generated C# `Dialogues`, with `TryTrigger(dialogueId, onFinish)`, `CanTrigger(dialogueId)`, `VisitCount`, and `HasVisited`. Standard groups get `TryTrigger(onFinish)` and `CanTrigger()`, lookup groups take their entry class, and `NeoDialogueReference` gets `TryTrigger(onFinish)` and `CanTrigger()`. `TryTrigger` compiles only in functions and dialogue actions. `neo test`, `neo script eval`, and dialogue dry runs return false.
package/dist/neo.mjs CHANGED
@@ -1202,7 +1202,8 @@ var init_dialogue_types = __esm({
1202
1202
  { base: "NeoDialogueReference", value: "NeoDialogueReference" }
1203
1203
  ],
1204
1204
  ["DialogueGroup", { base: "NeoDialogueGroup", value: "NeoDialogueGroup" }],
1205
- ["PriorityGroup", { base: "NeoPriorityGroup", value: "NeoPriorityGroup" }]
1205
+ ["PriorityGroup", { base: "NeoPriorityGroup", value: "NeoPriorityGroup" }],
1206
+ ["PriorityOption", { base: "NeoPriorityOption", value: "NeoPriorityOption" }]
1206
1207
  ]);
1207
1208
  BOOL_TYPE = { kind: "primitive", name: "bool" };
1208
1209
  INT_TYPE = { kind: "primitive", name: "int" };
@@ -27192,6 +27193,7 @@ function sourceDialogueGroups(source) {
27192
27193
  if (cached) return cached;
27193
27194
  const symbols = /* @__PURE__ */ new Map();
27194
27195
  const globals = /* @__PURE__ */ new Map();
27196
+ const priorityGroups = /* @__PURE__ */ new Map();
27195
27197
  const options = /* @__PURE__ */ new Map();
27196
27198
  for (const symbol of source.symbols) {
27197
27199
  if (symbol.kind !== "global") continue;
@@ -27199,12 +27201,13 @@ function sourceDialogueGroups(source) {
27199
27201
  continue;
27200
27202
  const id2 = symbol.id ?? `${symbol.location.uri}#${symbol.name}`;
27201
27203
  globals.set(symbol.name, id2);
27204
+ if (symbol.detail === "NeoPriorityGroup")
27205
+ priorityGroups.set(symbol.name, id2);
27202
27206
  symbols.set(id2, symbol);
27203
27207
  }
27204
27208
  for (const symbol of source.symbols) {
27205
- if (symbol.kind !== "graphChild" || symbol.detail !== "PriorityOption")
27206
- continue;
27207
- const owner = globals.get(symbol.ownerName ?? "");
27209
+ if (symbol.kind !== "graphChild") continue;
27210
+ const owner = priorityGroups.get(symbol.ownerName ?? "");
27208
27211
  if (!owner) continue;
27209
27212
  const id2 = symbol.id ?? `${owner}.${symbol.name}`;
27210
27213
  symbols.set(id2, symbol);
@@ -27545,6 +27548,7 @@ function collectGlobalChildEntries(syntax, declaration) {
27545
27548
  const value = tokens[index + 3];
27546
27549
  entries.push({
27547
27550
  typeName: token.text,
27551
+ typeRange: token.range,
27548
27552
  name: name.text,
27549
27553
  nameRange: name.range,
27550
27554
  annotations: pendingAnnotations,
@@ -49490,7 +49494,7 @@ var init_project_source_type_checker = __esm({
49490
49494
  "Localization",
49491
49495
  "LocalizationStatus",
49492
49496
  "NeoPriorityGroup",
49493
- "PriorityOption",
49497
+ "NeoPriorityOption",
49494
49498
  "NeoDialogueGroup",
49495
49499
  "ImageRegistry",
49496
49500
  "AudioClipRegistry",
@@ -49944,7 +49948,18 @@ function collectDeclarationSymbols(uri, document, declaration, symbols, diagnost
49944
49948
  }
49945
49949
  function collectGlobalChildSymbols(uri, document, declaration, symbols, diagnostics) {
49946
49950
  if (declaration.type.name === "Root") return;
49951
+ const priorityGroup = declaration.type.name === "NeoPriorityGroup";
49947
49952
  for (const entry of collectGlobalChildEntries(document.syntax, declaration)) {
49953
+ if (priorityGroup && entry.typeName !== "NeoPriorityOption") {
49954
+ diagnostics.push({
49955
+ uri,
49956
+ range: entry.typeRange,
49957
+ severity: "error",
49958
+ source: "neo-project",
49959
+ code: "unknown-project-type",
49960
+ message: renamedDialogueTypeMessage(entry.typeName, "value") ?? `Priority group options are declared as \`NeoPriorityOption\`, not \`${entry.typeName}\`.`
49961
+ });
49962
+ }
49948
49963
  collectSymbol(
49949
49964
  uri,
49950
49965
  "graphChild",
@@ -50416,7 +50431,7 @@ var init_project_source_analysis = __esm({
50416
50431
  "Localization",
50417
50432
  "LocalizationStatus",
50418
50433
  "NeoPriorityGroup",
50419
- "PriorityOption",
50434
+ "NeoPriorityOption",
50420
50435
  "NeoDialogueGroup",
50421
50436
  "ImageRegistry",
50422
50437
  "AudioClipRegistry",
@@ -51626,7 +51641,7 @@ var init_registry = __esm({
51626
51641
  "../packages/manifest/schema-contract/registry.mjs"() {
51627
51642
  "use strict";
51628
51643
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
51629
- cliVersion: "0.73.0",
51644
+ cliVersion: "0.73.1",
51630
51645
  projectFileUploadBatchSize: 32,
51631
51646
  documentRecords: {
51632
51647
  member: {
@@ -70188,7 +70203,7 @@ function emitPriorityGroup(data, recordId, name) {
70188
70203
  }
70189
70204
  assertMemberIdentifier2(option.name, "priority option");
70190
70205
  return ` @id(${quote2(option.id)})
70191
- PriorityOption ${option.name} = new();`;
70206
+ NeoPriorityOption ${option.name} = new();`;
70192
70207
  });
70193
70208
  const annotations = [
70194
70209
  `@id(${quote2(recordId)})`,
@@ -71071,7 +71086,7 @@ var init_supplemental_records = __esm({
71071
71086
  init_project_file_source();
71072
71087
  init_source_format();
71073
71088
  init_ui_action_source();
71074
- PRIORITY_OPTION_PATTERN = /^(?:@id\(\s*"((?:[^"\\]|\\.)+)"\s*\)\s*)?PriorityOption\s+([A-Za-z_][A-Za-z0-9_]*)\s*=\s*new\s*\(\s*\)\s*;/;
71089
+ PRIORITY_OPTION_PATTERN = /^(?:@id\(\s*"((?:[^"\\]|\\.)+)"\s*\)\s*)?[A-Za-z_][A-Za-z0-9_]*\s+([A-Za-z_][A-Za-z0-9_]*)\s*=\s*new\s*\(\s*\)\s*;/;
71075
71090
  }
71076
71091
  });
71077
71092
 
@@ -72496,10 +72511,10 @@ function lowerDialogueGroupSettings(context, member, base) {
72496
72511
  member.arguments,
72497
72512
  "priority"
72498
72513
  );
72499
- const priorityOptionId = priorityExpression === null ? null : referenceId3(priorityExpression, "PriorityOption");
72514
+ const priorityOptionId = priorityExpression === null ? null : referenceId3(priorityExpression, "NeoPriorityOption");
72500
72515
  if (priorityExpression !== null && priorityOptionId === null) {
72501
72516
  throw dialogueSourceError(
72502
- 'Trigger priority must be authored as Reference<PriorityOption>(id: "...").',
72517
+ 'Trigger priority must be authored as Reference<NeoPriorityOption>(id: "...").',
72503
72518
  prioritySource
72504
72519
  );
72505
72520
  }
@@ -137416,7 +137431,7 @@ function emitTrigger(context, node) {
137416
137431
  if (optionId) {
137417
137432
  args.push([
137418
137433
  "priority",
137419
- `Reference<PriorityOption>(id: ${quote5(optionId)})`
137434
+ `Reference<NeoPriorityOption>(id: ${quote5(optionId)})`
137420
137435
  ]);
137421
137436
  }
137422
137437
  }
@@ -151992,7 +152007,7 @@ function dialogueGroupCompletions(analysis, document, position) {
151992
152007
  items.push({
151993
152008
  label: name,
151994
152009
  kind: "enumMember",
151995
- detail: "PriorityOption",
152010
+ detail: "NeoPriorityOption",
151996
152011
  insertText: name,
151997
152012
  symbolId: option.id
151998
152013
  });
@@ -191424,7 +191439,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
191424
191439
  async function main() {
191425
191440
  const args = parseArgs(process.argv.slice(2));
191426
191441
  if (args.command === "--version") {
191427
- console.log("0.73.0");
191442
+ console.log("0.73.1");
191428
191443
  return;
191429
191444
  }
191430
191445
  if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
@@ -1609,7 +1609,8 @@ var RENAMED_DIALOGUE_TYPES = /* @__PURE__ */ new Map([
1609
1609
  { base: "NeoDialogueReference", value: "NeoDialogueReference" }
1610
1610
  ],
1611
1611
  ["DialogueGroup", { base: "NeoDialogueGroup", value: "NeoDialogueGroup" }],
1612
- ["PriorityGroup", { base: "NeoPriorityGroup", value: "NeoPriorityGroup" }]
1612
+ ["PriorityGroup", { base: "NeoPriorityGroup", value: "NeoPriorityGroup" }],
1613
+ ["PriorityOption", { base: "NeoPriorityOption", value: "NeoPriorityOption" }]
1613
1614
  ]);
1614
1615
  function renamedDialogueTypeMessage(name, position) {
1615
1616
  const replacement = RENAMED_DIALOGUE_TYPES.get(name)?.[position];
@@ -55287,7 +55288,7 @@ var SPECIALIZED_RELATION_KINDS = /* @__PURE__ */ new Set([
55287
55288
 
55288
55289
  // ../packages/manifest/schema-contract/registry.mjs
55289
55290
  var PROJECT_SCHEMA_CONTRACT = Object.freeze({
55290
- cliVersion: "0.73.0",
55291
+ cliVersion: "0.73.1",
55291
55292
  projectFileUploadBatchSize: 32,
55292
55293
  documentRecords: {
55293
55294
  member: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.73.0",
3
+ "version": "0.73.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.73.0 -->
12
+ <!-- reviewed-through-cli: 0.73.1 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -118,7 +118,7 @@ wrappers.
118
118
  The marker near the top of `SKILL.md` must exactly match the package version:
119
119
 
120
120
  ```html
121
- <!-- reviewed-through-cli: 0.73.0 -->
121
+ <!-- reviewed-through-cli: 0.73.1 -->
122
122
  ```
123
123
 
124
124
  The quoted version above is checked too, so this instruction cannot go stale