@neocompose/cli 0.2.1 → 0.2.3
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/README.md +41 -2
- package/dist/neo.mjs +6863 -804
- 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.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 +3 -3
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +39 -9
package/README.md
CHANGED
|
@@ -94,6 +94,9 @@ public abstract partial class InventoryItem<
|
|
|
94
94
|
override's base member ID is resolved from the Roslyn symbol graph.
|
|
95
95
|
- Property type and nullability determine Neo kind and requiredness.
|
|
96
96
|
- A property initializer is its default; declaration order is schema order.
|
|
97
|
+
- A `static` property or method is type-owned. Stored static properties use a
|
|
98
|
+
replaceable binding and are not copied into instances; instance and static
|
|
99
|
+
receiver kinds cannot be changed in place.
|
|
97
100
|
- Method signatures define function arguments and returns. `Task`/`Task<T>`
|
|
98
101
|
means deferred execution. The bundled source generator gives concrete
|
|
99
102
|
partial declarations inert compile-time implementations; authored schema
|
|
@@ -106,6 +109,18 @@ public abstract partial class InventoryItem<
|
|
|
106
109
|
settings use strongly typed object initializers. Their complete option sets
|
|
107
110
|
participate in normal C# IntelliSense.
|
|
108
111
|
|
|
112
|
+
For example, a concrete non-generic type can declare a type-owned stored
|
|
113
|
+
member:
|
|
114
|
+
|
|
115
|
+
```csharp
|
|
116
|
+
[NeoType("type-game-rules")]
|
|
117
|
+
public partial class GameRules
|
|
118
|
+
{
|
|
119
|
+
[NeoMember("attribute-encounter-count")]
|
|
120
|
+
public static int EncounterCount { get; set; }
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
109
124
|
Only statically analyzable expressions are accepted: literals, enum values,
|
|
110
125
|
`nameof`, `typeof`, arrays/collections, object initializers, and approved
|
|
111
126
|
`Neo.*` reference constructors. The compiler never loads or executes the
|
|
@@ -165,6 +180,24 @@ bool UsePrimary(InventoryItem this, Root root) {
|
|
|
165
180
|
}
|
|
166
181
|
```
|
|
167
182
|
|
|
183
|
+
All executable body kinds use the same mutation-capable resolver and executor.
|
|
184
|
+
Getters and code-authored conditions may write to Save, Session, runtime, or
|
|
185
|
+
setter-backed targets; Immutable targets remain read-only. Body kind still
|
|
186
|
+
controls return/deferred-call rules, not storage writability.
|
|
187
|
+
|
|
188
|
+
Locals may use either an explicit type or `var`; inferred locals retain the
|
|
189
|
+
same exact type and language features. Concrete, closed, writable Custom types
|
|
190
|
+
support `new Type(...)` in the same required-then-optional parameter order as
|
|
191
|
+
generated C#. Optional parameters have inferred `null` defaults and are
|
|
192
|
+
positional, so pass `null` to skip an earlier optional slot. Constructor-call
|
|
193
|
+
signature help and parameter-name inlay hints come from that shared signature;
|
|
194
|
+
the names are previews, not authored named-argument syntax.
|
|
195
|
+
Fresh constructor graphs use Session ownership and are reclaimed at invocation
|
|
196
|
+
completion unless attached, returned, passed onward, or otherwise escaped.
|
|
197
|
+
|
|
198
|
+
Static access uses the declaring type (`GameRules.EncounterCount`); stored
|
|
199
|
+
static members resolve through their authored, Save, or Session binding layer.
|
|
200
|
+
|
|
168
201
|
The browser-safe `neoscript-language` package is authoritative for the CLI,
|
|
169
202
|
server compiler, web Monaco editor, and VS Code LSP. Monaco's existing syntax
|
|
170
203
|
highlighting, comments/interpolation, scaffolds and protected regions,
|
|
@@ -187,8 +220,14 @@ uses the same results; marketplace publication is a separate release step.
|
|
|
187
220
|
| `push [--dry-run] [--accept-bump]` | Preview or commit one atomic compare-and-swap transaction |
|
|
188
221
|
| `dev [--push]` | Watch the Convex sync signal and local files; pushing remains opt-in |
|
|
189
222
|
| `resolve --mine\|--theirs` | Conflict-marker convenience; editing the final source is authoritative |
|
|
190
|
-
| `script check\|compile\|eval\|apply` | Use the shared NeoScript compiler/evaluator
|
|
191
|
-
| `records` / `values` / `loc` / `dialogue` | Read and batch-edit content
|
|
223
|
+
| `script check\|compile\|eval\|apply` | Use the shared NeoScript compiler/evaluator and report values, writes, and surviving Session rows |
|
|
224
|
+
| `records` / `values` / `loc` / `dialogue` | Read and batch-edit content, including stored static bindings, without schema-source value files |
|
|
225
|
+
|
|
226
|
+
`neo script eval --json` reports `value`, ordered `writes`, and
|
|
227
|
+
`createdSessionValues`. The last field contains only constructor rows that
|
|
228
|
+
escaped invocation cleanup. Use `neo values bind`, `neo values unbind`, or an
|
|
229
|
+
atomic `neo values create ... --bind <staticAttributeId>` operation to manage
|
|
230
|
+
an authored stored-static binding.
|
|
192
231
|
|
|
193
232
|
The central invariant is unchanged: a pull followed immediately by status or
|
|
194
233
|
push must produce no changes. The manifest contract classifies every field as
|