@neocompose/cli 0.2.2 → 0.3.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/CHANGELOG.md +18 -0
- package/README.md +25 -25
- package/dist/neo.mjs +4957 -5058
- package/dist/tooling/NeoCompose.Schema.Tooling.dll +0 -0
- package/dist/tooling/NeoCompose.Schema.Tooling.pdb +0 -0
- package/dist/tooling/NeoCompose.Schema.dll +0 -0
- package/dist/tooling/NeoCompose.Schema.pdb +0 -0
- package/dist/tooling/NeoCompose.Schema.xml +16 -16
- package/dist/tooling/NeoCompose.SchemaCompiler.deps.json +12 -12
- package/dist/tooling/NeoCompose.SchemaCompiler.dll +0 -0
- package/dist/tooling/NeoCompose.SchemaCompiler.pdb +0 -0
- package/dist/tooling/schema-contract.json +6 -6
- package/package.json +2 -1
- package/skills/neocompose-cli/SKILL.md +37 -34
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -19,22 +19,22 @@
|
|
|
19
19
|
<member name="T:NeoCompose.Schema.NeoFileKind">
|
|
20
20
|
<summary>Strongly typed Neo schema option set <c>NeoFileKind</c>.</summary>
|
|
21
21
|
</member>
|
|
22
|
-
<member name="T:NeoCompose.Schema.
|
|
23
|
-
<summary>Neo schema authoring marker <c>[
|
|
22
|
+
<member name="T:NeoCompose.Schema.NeoSchemaClassAttribute">
|
|
23
|
+
<summary>Neo schema authoring marker <c>[NeoSchemaClass]</c>; the compiler reads it statically and never executes authored schema code.</summary>
|
|
24
24
|
</member>
|
|
25
|
-
<member name="P:NeoCompose.Schema.
|
|
25
|
+
<member name="P:NeoCompose.Schema.NeoSchemaClassAttribute.Id">
|
|
26
26
|
<summary>Gets the strongly typed <c>Id</c> option.</summary>
|
|
27
27
|
</member>
|
|
28
|
-
<member name="P:NeoCompose.Schema.
|
|
28
|
+
<member name="P:NeoCompose.Schema.NeoSchemaClassAttribute.Name">
|
|
29
29
|
<summary>Gets or sets the strongly typed <c>Name</c> option.</summary>
|
|
30
30
|
</member>
|
|
31
|
-
<member name="P:NeoCompose.Schema.
|
|
31
|
+
<member name="P:NeoCompose.Schema.NeoSchemaClassAttribute.Hidden">
|
|
32
32
|
<summary>Gets or sets the strongly typed <c>Hidden</c> option.</summary>
|
|
33
33
|
</member>
|
|
34
|
-
<member name="P:NeoCompose.Schema.
|
|
34
|
+
<member name="P:NeoCompose.Schema.NeoSchemaClassAttribute.AllowedStorage">
|
|
35
35
|
<summary>Gets or sets the strongly typed <c>AllowedStorage</c> option.</summary>
|
|
36
36
|
</member>
|
|
37
|
-
<member name="P:NeoCompose.Schema.
|
|
37
|
+
<member name="P:NeoCompose.Schema.NeoSchemaClassAttribute.AllowedStorageKeys">
|
|
38
38
|
<summary>Gets or sets the strongly typed <c>AllowedStorageKeys</c> option.</summary>
|
|
39
39
|
</member>
|
|
40
40
|
<member name="T:NeoCompose.Schema.NeoInterfaceAttribute">
|
|
@@ -379,8 +379,8 @@
|
|
|
379
379
|
<member name="P:NeoCompose.Schema.NeoEntrySettings.File">
|
|
380
380
|
<summary>Gets or initializes the <c>File</c> option.</summary>
|
|
381
381
|
</member>
|
|
382
|
-
<member name="P:NeoCompose.Schema.NeoEntrySettings.
|
|
383
|
-
<summary>Gets or initializes the <c>
|
|
382
|
+
<member name="P:NeoCompose.Schema.NeoEntrySettings.Class">
|
|
383
|
+
<summary>Gets or initializes the <c>Class</c> option.</summary>
|
|
384
384
|
</member>
|
|
385
385
|
<member name="P:NeoCompose.Schema.NeoEntrySettings.Enum">
|
|
386
386
|
<summary>Gets or initializes the <c>Enum</c> option.</summary>
|
|
@@ -502,16 +502,16 @@
|
|
|
502
502
|
<member name="P:NeoCompose.Schema.NeoDictionarySettings.KeyEnum">
|
|
503
503
|
<summary>Gets or initializes the <c>KeyEnum</c> option.</summary>
|
|
504
504
|
</member>
|
|
505
|
-
<member name="T:NeoCompose.Schema.
|
|
506
|
-
<summary>Strongly typed Neo schema authoring options for <c>
|
|
505
|
+
<member name="T:NeoCompose.Schema.NeoClassSettings">
|
|
506
|
+
<summary>Strongly typed Neo schema authoring options for <c>NeoClassSettings</c>.</summary>
|
|
507
507
|
</member>
|
|
508
|
-
<member name="P:NeoCompose.Schema.
|
|
508
|
+
<member name="P:NeoCompose.Schema.NeoClassSettings.Type">
|
|
509
509
|
<summary>Gets or initializes the <c>Type</c> option.</summary>
|
|
510
510
|
</member>
|
|
511
|
-
<member name="P:NeoCompose.Schema.
|
|
511
|
+
<member name="P:NeoCompose.Schema.NeoClassSettings.SchemaOrder">
|
|
512
512
|
<summary>Gets or initializes the <c>SchemaOrder</c> option.</summary>
|
|
513
513
|
</member>
|
|
514
|
-
<member name="P:NeoCompose.Schema.
|
|
514
|
+
<member name="P:NeoCompose.Schema.NeoClassSettings.TypeArguments">
|
|
515
515
|
<summary>Gets or initializes the <c>TypeArguments</c> option.</summary>
|
|
516
516
|
</member>
|
|
517
517
|
<member name="T:NeoCompose.Schema.NeoGenericBindingSettings">
|
|
@@ -523,8 +523,8 @@
|
|
|
523
523
|
<member name="P:NeoCompose.Schema.NeoGenericBindingSettings.GenericParameter">
|
|
524
524
|
<summary>Gets or initializes the <c>GenericParameter</c> option.</summary>
|
|
525
525
|
</member>
|
|
526
|
-
<member name="P:NeoCompose.Schema.NeoGenericBindingSettings.
|
|
527
|
-
<summary>Gets or initializes the <c>
|
|
526
|
+
<member name="P:NeoCompose.Schema.NeoGenericBindingSettings.Member">
|
|
527
|
+
<summary>Gets or initializes the <c>Member</c> option.</summary>
|
|
528
528
|
</member>
|
|
529
529
|
<member name="T:NeoCompose.Schema.NeoEnumSettings">
|
|
530
530
|
<summary>Strongly typed Neo schema authoring options for <c>NeoEnumSettings</c>.</summary>
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
"compilationOptions": {},
|
|
7
7
|
"targets": {
|
|
8
8
|
".NETCoreApp,Version=v6.0": {
|
|
9
|
-
"NeoCompose.SchemaCompiler/
|
|
9
|
+
"NeoCompose.SchemaCompiler/3.0.0": {
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"Microsoft.CodeAnalysis.CSharp": "4.11.0",
|
|
12
|
-
"NeoCompose.Schema": "
|
|
13
|
-
"NeoCompose.Schema.Tooling": "
|
|
12
|
+
"NeoCompose.Schema": "3.0.0",
|
|
13
|
+
"NeoCompose.Schema.Tooling": "3.0.0"
|
|
14
14
|
},
|
|
15
15
|
"runtime": {
|
|
16
16
|
"NeoCompose.SchemaCompiler.dll": {}
|
|
@@ -184,26 +184,26 @@
|
|
|
184
184
|
}
|
|
185
185
|
},
|
|
186
186
|
"System.Threading.Tasks.Extensions/4.5.4": {},
|
|
187
|
-
"NeoCompose.Schema/
|
|
187
|
+
"NeoCompose.Schema/3.0.0": {
|
|
188
188
|
"runtime": {
|
|
189
189
|
"NeoCompose.Schema.dll": {
|
|
190
|
-
"assemblyVersion": "
|
|
191
|
-
"fileVersion": "
|
|
190
|
+
"assemblyVersion": "3.0.0.0",
|
|
191
|
+
"fileVersion": "3.0.0.0"
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
},
|
|
195
|
-
"NeoCompose.Schema.Tooling/
|
|
195
|
+
"NeoCompose.Schema.Tooling/3.0.0": {
|
|
196
196
|
"runtime": {
|
|
197
197
|
"NeoCompose.Schema.Tooling.dll": {
|
|
198
|
-
"assemblyVersion": "
|
|
199
|
-
"fileVersion": "
|
|
198
|
+
"assemblyVersion": "3.0.0.0",
|
|
199
|
+
"fileVersion": "3.0.0.0"
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
},
|
|
205
205
|
"libraries": {
|
|
206
|
-
"NeoCompose.SchemaCompiler/
|
|
206
|
+
"NeoCompose.SchemaCompiler/3.0.0": {
|
|
207
207
|
"type": "project",
|
|
208
208
|
"serviceable": false,
|
|
209
209
|
"sha512": ""
|
|
@@ -285,12 +285,12 @@
|
|
|
285
285
|
"path": "system.threading.tasks.extensions/4.5.4",
|
|
286
286
|
"hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
|
|
287
287
|
},
|
|
288
|
-
"NeoCompose.Schema/
|
|
288
|
+
"NeoCompose.Schema/3.0.0": {
|
|
289
289
|
"type": "project",
|
|
290
290
|
"serviceable": false,
|
|
291
291
|
"sha512": ""
|
|
292
292
|
},
|
|
293
|
-
"NeoCompose.Schema.Tooling/
|
|
293
|
+
"NeoCompose.Schema.Tooling/3.0.0": {
|
|
294
294
|
"type": "project",
|
|
295
295
|
"serviceable": false,
|
|
296
296
|
"sha512": ""
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"formatVersion":
|
|
3
|
-
"contractVersion": "
|
|
4
|
-
"manifestName": "neo-schema-manifest-
|
|
5
|
-
"protocolVersion":
|
|
6
|
-
"sdkVersion": "
|
|
7
|
-
"cliVersion": "0.
|
|
2
|
+
"formatVersion": 3,
|
|
3
|
+
"contractVersion": "3.0",
|
|
4
|
+
"manifestName": "neo-schema-manifest-v3",
|
|
5
|
+
"protocolVersion": 4,
|
|
6
|
+
"sdkVersion": "3.0.0",
|
|
7
|
+
"cliVersion": "0.3.0",
|
|
8
8
|
"apiTarget": "netstandard2.1",
|
|
9
9
|
"referenceAssemblySet": "NETStandard.Library.Ref/2.1.0",
|
|
10
10
|
"requiredToolingFiles": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neocompose/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Neo Compose schema-as-code CLI with compiler-backed C# authoring and bidirectional sync.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
"CHANGELOG.md",
|
|
12
13
|
"README.md",
|
|
13
14
|
"skills"
|
|
14
15
|
],
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: neocompose-cli
|
|
3
3
|
description: >-
|
|
4
|
-
Edit and synchronize a Neo Compose format-
|
|
5
|
-
tracked NeoScript sidecars. Use for
|
|
4
|
+
Edit and synchronize a Neo Compose format-v3 schema as real C# 11 plus
|
|
5
|
+
tracked NeoScript sidecars. Use for classes, interfaces, members,
|
|
6
6
|
enums, templates, localization, schema-aware NeoScript, or batch content
|
|
7
7
|
edits. The working copy is a neo/ directory; run `neo` from the published
|
|
8
8
|
package or `node cli/bin/neo.mjs` in the web repository.
|
|
@@ -12,7 +12,7 @@ description: >-
|
|
|
12
12
|
|
|
13
13
|
A `neo/` working copy is a Git-like checkout of one Neo Compose project
|
|
14
14
|
version. C# and NeoScript are peer authoring surfaces beside the web UI; the
|
|
15
|
-
server remains the shared source of truth. The current contract is format
|
|
15
|
+
server remains the shared source of truth. The current contract is format v3
|
|
16
16
|
and is documented in `specs/schema-as-code-cli.md`.
|
|
17
17
|
|
|
18
18
|
## Non-negotiable workflow
|
|
@@ -34,7 +34,7 @@ hide in an opaque JSON carrier.
|
|
|
34
34
|
## Setup and format requirement
|
|
35
35
|
|
|
36
36
|
```sh
|
|
37
|
-
npm i -g @neocompose/cli
|
|
37
|
+
npm i -g @neocompose/cli@0.3.0
|
|
38
38
|
neo login [--api <url>] [--profile editor|release] [--save-project <id>]
|
|
39
39
|
neo init --project <id> [--version <id>] [--dir neo]
|
|
40
40
|
neo doctor
|
|
@@ -44,8 +44,9 @@ Repository development uses `node cli/bin/neo.mjs`. Agents should always pass
|
|
|
44
44
|
explicit flags/IDs. Human terminals may show pickers and confirms; non-TTY/CI
|
|
45
45
|
use fails with an actionable missing-flag diagnostic rather than blocking.
|
|
46
46
|
|
|
47
|
-
`neo.json` must contain `formatVersion:
|
|
48
|
-
unsupported.
|
|
47
|
+
`neo.json` must contain `formatVersion: 3`. Format 2 and every other marker are
|
|
48
|
+
unsupported. There is no upgrader or compatibility reader. Preserve any source
|
|
49
|
+
you need, then refresh a format-3 working copy from the authoritative server:
|
|
49
50
|
|
|
50
51
|
```sh
|
|
51
52
|
neo init --project <id> [--version <id>] [--dir neo]
|
|
@@ -75,14 +76,14 @@ in `neo.json` in this mode.
|
|
|
75
76
|
neo/
|
|
76
77
|
neo.json
|
|
77
78
|
NeoCompose.Schema.csproj # netstandard2.1, C# 11, IDE-only
|
|
78
|
-
|
|
79
|
+
Classes/ # schema classes
|
|
79
80
|
Interfaces/ # interface declarations
|
|
80
81
|
Enums/
|
|
81
82
|
Root.cs # [NeoRegistry] roots and loose members
|
|
82
83
|
Templates/ # typed texture/audio settings
|
|
83
84
|
Localization.cs # typed localization settings
|
|
84
85
|
LocalizationStatuses/*.cs # typed localization workflow statuses
|
|
85
|
-
Scripts/<
|
|
86
|
+
Scripts/<Class>/<Member>.neo # computed properties and NeoScript methods
|
|
86
87
|
Migrations/*.neo
|
|
87
88
|
.neo/
|
|
88
89
|
state.json # bases/CAS hashes; never hand-edit
|
|
@@ -107,7 +108,7 @@ Native C# carries native meaning:
|
|
|
107
108
|
ordering attribute is present.
|
|
108
109
|
- Method parameters and return type are the function signature.
|
|
109
110
|
`Task`/`Task<T>` means deferred execution.
|
|
110
|
-
- A C# `static` property or method is
|
|
111
|
+
- A C# `static` property or method is class-owned. Stored static properties use
|
|
111
112
|
one replaceable binding and are excluded from instance construction;
|
|
112
113
|
receiver kind cannot be changed in place.
|
|
113
114
|
- Concrete `[NeoScript]`/`[NeoFunction]` methods are C# 11 partial
|
|
@@ -126,19 +127,19 @@ public enum ItemType
|
|
|
126
127
|
Food,
|
|
127
128
|
}
|
|
128
129
|
|
|
129
|
-
[
|
|
130
|
+
[NeoSchemaClass("class-inventory-item", AllowedStorage = NeoAllowedStorage.Immutable)]
|
|
130
131
|
[NeoSchemaOrder(nameof(Name), nameof(Type), nameof(Tags), nameof(UsePrimary))]
|
|
131
132
|
public abstract partial class InventoryItem<
|
|
132
133
|
[NeoId("generic-stack")] TStack>
|
|
133
134
|
where TStack : class
|
|
134
135
|
{
|
|
135
|
-
[NeoMember("
|
|
136
|
+
[NeoMember("member-name"), NeoText(SearchKey = true)]
|
|
136
137
|
public virtual string Name { get; init; } = "";
|
|
137
138
|
|
|
138
|
-
[NeoMember("
|
|
139
|
+
[NeoMember("member-type")]
|
|
139
140
|
public abstract ItemType Type { get; init; }
|
|
140
141
|
|
|
141
|
-
[NeoMember("
|
|
142
|
+
[NeoMember("member-tags"), NeoList(Kind = NeoListKind.Unordered)]
|
|
142
143
|
[NeoEntries(nameof(TagEntries))]
|
|
143
144
|
public virtual IReadOnlyList<string> Tags { get; init; } = new List<string>();
|
|
144
145
|
|
|
@@ -158,7 +159,7 @@ public abstract partial class InventoryItem<
|
|
|
158
159
|
}
|
|
159
160
|
```
|
|
160
161
|
|
|
161
|
-
Stable IDs are visible in `[
|
|
162
|
+
Stable IDs are visible in `[NeoSchemaClass]`, `[NeoInterface]`, `[NeoEnum]`,
|
|
162
163
|
`[NeoEnumOption]`, `[NeoId]`, and `[NeoMember]`. Omit a nullable positional ID
|
|
163
164
|
only when creating a record; a successful push assigns it and canonically
|
|
164
165
|
rewrites the source. Once assigned, preserve it through renames.
|
|
@@ -195,7 +196,7 @@ rules, automatic transitions, and system restrictions. Keep the order in
|
|
|
195
196
|
## NeoScript sidecars
|
|
196
197
|
|
|
197
198
|
Scripted member bodies live at exactly
|
|
198
|
-
`Scripts/<
|
|
199
|
+
`Scripts/<DeclaringClass>/<Member>.neo`.
|
|
199
200
|
|
|
200
201
|
A computed property uses one complete contextual file. The outer signature
|
|
201
202
|
matches the linked C# declaration's semantic result (`Task<T>` functions use
|
|
@@ -233,7 +234,7 @@ diagnostics. A sidecar for an abstract member is also invalid. The stable C#
|
|
|
233
234
|
member ID lets canonical renames move the file safely; include C# and sidecar
|
|
234
235
|
renames in the same reviewed change.
|
|
235
236
|
|
|
236
|
-
Canonical C# places `// NeoScript: Scripts/<
|
|
237
|
+
Canonical C# places `// NeoScript: Scripts/<Class>/<Member>.neo` above the
|
|
237
238
|
linked declaration. Go-to-definition, references, and rename use the Roslyn
|
|
238
239
|
source identity plus stable member ID to navigate between C# and `.neo`.
|
|
239
240
|
|
|
@@ -248,8 +249,8 @@ setters, Functions, and migrations; the resolved target's Immutable, Save,
|
|
|
248
249
|
Session, or runtime ownership—not the body kind—decides whether the write is
|
|
249
250
|
legal. The non-code Condition builder remains a restricted read form.
|
|
250
251
|
|
|
251
|
-
Concrete, closed, writable
|
|
252
|
-
shape as generated C#. Use `new
|
|
252
|
+
Concrete, closed, writable classes expose the same public constructor
|
|
253
|
+
shape as generated C#. Use `new ClassName(required, optional, ...)`; required
|
|
253
254
|
parameters come first, optional parameters follow in generated-code order,
|
|
254
255
|
and `null` skips an optional positional slot. Arguments remain positional;
|
|
255
256
|
editor parameter-name hints are previews, not named-argument syntax.
|
|
@@ -257,17 +258,17 @@ Constructor graphs begin as parentless Session values. They survive only when
|
|
|
257
258
|
attached, returned, or otherwise escaped from the invocation; abandoned
|
|
258
259
|
graphs are reclaimed.
|
|
259
260
|
|
|
260
|
-
Static members use a
|
|
261
|
+
Static members use a class receiver (`GameRules.EncounterCount`), while
|
|
261
262
|
instance members use a value receiver. Stored static members resolve through
|
|
262
|
-
their authored/Save/Session binding layer and are never copied into
|
|
263
|
+
their authored/Save/Session binding layer and are never copied into class
|
|
263
264
|
instances.
|
|
264
265
|
|
|
265
266
|
```sh
|
|
266
267
|
neo script check --all
|
|
267
268
|
neo script check --this Outpost --returns string 'return $"{this.Name}!";'
|
|
268
|
-
neo script check --mode setter --
|
|
269
|
-
neo script check --mode nsfunction --
|
|
270
|
-
neo script compile --mode nsfunction --
|
|
269
|
+
neo script check --mode setter --member ComputedName 'root.Session.Name = value;'
|
|
270
|
+
neo script check --mode nsfunction --member Outpost.RefreshUnlock 'return this.Level > 0;'
|
|
271
|
+
neo script compile --mode nsfunction --member Outpost.RefreshUnlock 'return this.Level > 0;'
|
|
271
272
|
neo script eval --returns string 'return root.Assets.Outposts[0].FullDisplayText;'
|
|
272
273
|
neo script eval --function Outpost.RefreshUnlock --this-value <id> --args '[3]'
|
|
273
274
|
neo script apply --mode action '...'
|
|
@@ -300,12 +301,12 @@ schema source files:
|
|
|
300
301
|
```sh
|
|
301
302
|
neo records query [--kind <recordKind>]
|
|
302
303
|
neo records get <kind> <id>
|
|
303
|
-
neo values list [
|
|
304
|
+
neo values list [memberId]
|
|
304
305
|
neo values get <valueId>
|
|
305
306
|
neo values set <valueId> '<raw-json-value>'
|
|
306
|
-
neo values bind <
|
|
307
|
-
neo values unbind <
|
|
308
|
-
neo values create '<raw-json-value>' [--
|
|
307
|
+
neo values bind <staticMemberId> <valueId>
|
|
308
|
+
neo values unbind <staticMemberId>
|
|
309
|
+
neo values create '<raw-json-value>' [--class <classId>] --bind <staticMemberId>
|
|
309
310
|
neo loc locales
|
|
310
311
|
neo loc list
|
|
311
312
|
neo loc set <textId> <locale> "text"
|
|
@@ -315,8 +316,8 @@ Write verbs accept a JSON-array batch on stdin or `--file`; use one batch when
|
|
|
315
316
|
edits must be atomic. A `values set` payload is the raw value, not
|
|
316
317
|
`{"value": ...}`. `values bind` and `unbind` edit only a stored static
|
|
317
318
|
member's authored binding; `create --bind` can atomically create and bind a
|
|
318
|
-
complete
|
|
319
|
-
use `values add-entry` on the live container value;
|
|
319
|
+
complete class/collection graph supplied as one batch. For collection rows
|
|
320
|
+
use `values add-entry` on the live container value; a member's default
|
|
320
321
|
container ID may not be an instance's container.
|
|
321
322
|
|
|
322
323
|
### Dialogue authoring
|
|
@@ -343,7 +344,7 @@ neo branch switch <nameOrId>
|
|
|
343
344
|
neo merge <branch> [--dry-run] [--migrate]
|
|
344
345
|
neo release cut [--bump major|minor|patch] [--dry-run]
|
|
345
346
|
|
|
346
|
-
neo migrate new <name> --target <
|
|
347
|
+
neo migrate new <name> --target <Class>
|
|
347
348
|
neo migrate list
|
|
348
349
|
neo migrate check
|
|
349
350
|
neo migrate run [--dry-run] [--skip-invalid]
|
|
@@ -365,7 +366,7 @@ to an environment adapter.
|
|
|
365
366
|
|
|
366
367
|
Monaco's existing highlighting, comments/interpolation, bracket behavior,
|
|
367
368
|
protected scaffolds, context-aware completion/hover, and accurate diagnostics
|
|
368
|
-
are a release-blocking compatibility floor.
|
|
369
|
+
are a release-blocking compatibility floor. The shared service includes recovery completion,
|
|
369
370
|
signature help, C# and script definitions, references, rename, document
|
|
370
371
|
symbols, semantic tokens, quick fixes, formatting, richer diagnostics,
|
|
371
372
|
contextual ranking, and incremental analysis. Project updates must refresh
|
|
@@ -380,9 +381,11 @@ marketplace publication is separate.
|
|
|
380
381
|
|
|
381
382
|
- The Node CLI talks directly to Convex through typed `api.*` calls and uses
|
|
382
383
|
the same session-gated CAS commit path as the web app.
|
|
383
|
-
- `
|
|
384
|
-
|
|
385
|
-
|
|
384
|
+
- `SchemaManifestV3` is the only C# source/document boundary. It uses `classes`,
|
|
385
|
+
`members`, `"class"`, `"member"`, `classId`, `memberId`, and `MemberKind`.
|
|
386
|
+
The contract registry classifies authored, derived, and volatile fields;
|
|
387
|
+
derived server fields come from the pulled base and absent/null equivalents
|
|
388
|
+
normalize.
|
|
386
389
|
- The npm package bundles the Roslyn app, dependencies, SDK, analyzer, and
|
|
387
390
|
generator under `dist/tooling`; it does not bundle a runtime.
|
|
388
391
|
- The schema compiler does static analysis only. Never execute an authored
|