@almadar/core 11.3.0 → 11.5.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.
Files changed (91) hide show
  1. package/dist/behavior-package.js +1 -3
  2. package/dist/{builders-DXPLnmJy.d.ts → builders-JiXD6W1T.d.ts} +2266 -98
  3. package/dist/builders.d.ts +5 -5
  4. package/dist/builders.js +8 -10
  5. package/dist/{bus-CRxTnebm.d.ts → bus-__zVNcsp.d.ts} +133 -438
  6. package/dist/{chunk-DNS4GKQV.js → chunk-27Y5AXHB.js} +71 -45
  7. package/dist/chunk-2WLRKYD5.js +3823 -0
  8. package/dist/{chunk-B4MNHGBP.js → chunk-5IRZ6ROW.js} +0 -2
  9. package/dist/{chunk-7NDAXM2Z.js → chunk-6XYHVJ4J.js} +1 -3
  10. package/dist/{chunk-RGACZEYC.js → chunk-DDBAQMWA.js} +0 -2
  11. package/dist/{chunk-7GHJU5WI.js → chunk-GNLND5O2.js} +0 -2
  12. package/dist/{chunk-M4S2B5VJ.js → chunk-IU3WGC6Q.js} +0 -2
  13. package/dist/{chunk-LPJ7GKRM.js → chunk-J64IR3DR.js} +17 -9
  14. package/dist/{chunk-PYYHDYTD.js → chunk-J64YVVB4.js} +1 -3
  15. package/dist/{chunk-7B4JRMRL.js → chunk-JN3MMQTB.js} +15 -7
  16. package/dist/{chunk-VIHQKKTZ.js → chunk-LQZXCL47.js} +66 -32
  17. package/dist/{chunk-6H3UIZR2.js → chunk-OQ3Y5SL3.js} +4 -6
  18. package/dist/{chunk-3DZOFI53.js → chunk-Q4OJQNYY.js} +5 -4
  19. package/dist/{chunk-347APWFM.js → chunk-R3Y7ABF4.js} +2 -4
  20. package/dist/{chunk-N3CK4AYW.js → chunk-VC3HXUWQ.js} +7929 -404
  21. package/dist/{chunk-2NKK2X53.js → chunk-VQWE3FCB.js} +1 -3
  22. package/dist/{chunk-VG7BRFUD.js → chunk-W3UJRSYC.js} +0 -2
  23. package/dist/{chunk-XBWV3DXX.js → chunk-XYHBAUWE.js} +242 -10
  24. package/dist/{effect-C2VKm6kk.d.ts → effect-gddySYLX.d.ts} +215 -18
  25. package/dist/{effect-result-BFNANDJ-.d.ts → effect-result-BvBwmspK.d.ts} +131 -43
  26. package/dist/{expression-DirYKz-f.d.ts → expression-DxY6ct3t.d.ts} +1 -1
  27. package/dist/factory/index.d.ts +3 -3
  28. package/dist/factory/index.js +8 -10
  29. package/dist/factory-runtime/index.d.ts +3 -3
  30. package/dist/factory-runtime/index.js +15 -17
  31. package/dist/fixtures.d.ts +8 -7
  32. package/dist/fixtures.js +6 -8
  33. package/dist/i18n/index.js +2 -4
  34. package/dist/{index-DuHpwitt.d.ts → index-h6KrpmjR.d.ts} +23 -10
  35. package/dist/index.d.ts +15 -17
  36. package/dist/index.js +23 -25
  37. package/dist/kernel-wire.d.ts +3 -3
  38. package/dist/kernel-wire.js +3 -5
  39. package/dist/language/constructs.json +18 -3
  40. package/dist/language/program-types.json +28 -1
  41. package/dist/language/validation-codes.json +231 -1
  42. package/dist/language/vocabulary.json +63 -1
  43. package/dist/language-data.js +3 -5
  44. package/dist/lolo-document/index.js +0 -2
  45. package/dist/patterns/component-mapping.json +11 -1
  46. package/dist/patterns/definitions.d.ts +2 -2
  47. package/dist/patterns/definitions.js +1 -3
  48. package/dist/patterns/event-contracts.json +1 -1
  49. package/dist/patterns/index.d.ts +47 -3
  50. package/dist/patterns/index.js +3 -5
  51. package/dist/patterns/patterns-registry.json +7929 -402
  52. package/dist/patterns/registry.json +7929 -402
  53. package/dist/themes/index.js +2 -4
  54. package/dist/{trait-Cv3HTGFL.d.ts → trait-Oun4JgeZ.d.ts} +52 -22
  55. package/dist/types/index.d.ts +8 -8
  56. package/dist/types/index.js +12 -14
  57. package/dist/{types-wWEqi7vj.d.ts → types-B-r7Z7Lf.d.ts} +3 -3
  58. package/package.json +6 -6
  59. package/dist/behavior-package.js.map +0 -1
  60. package/dist/builders.js.map +0 -1
  61. package/dist/chunk-2NKK2X53.js.map +0 -1
  62. package/dist/chunk-347APWFM.js.map +0 -1
  63. package/dist/chunk-3DZOFI53.js.map +0 -1
  64. package/dist/chunk-6H3UIZR2.js.map +0 -1
  65. package/dist/chunk-7B4JRMRL.js.map +0 -1
  66. package/dist/chunk-7GHJU5WI.js.map +0 -1
  67. package/dist/chunk-7NDAXM2Z.js.map +0 -1
  68. package/dist/chunk-B4MNHGBP.js.map +0 -1
  69. package/dist/chunk-DNS4GKQV.js.map +0 -1
  70. package/dist/chunk-LPJ7GKRM.js.map +0 -1
  71. package/dist/chunk-M4S2B5VJ.js.map +0 -1
  72. package/dist/chunk-N3CK4AYW.js.map +0 -1
  73. package/dist/chunk-PYYHDYTD.js.map +0 -1
  74. package/dist/chunk-RGACZEYC.js.map +0 -1
  75. package/dist/chunk-VG7BRFUD.js.map +0 -1
  76. package/dist/chunk-VIHQKKTZ.js.map +0 -1
  77. package/dist/chunk-XBWV3DXX.js.map +0 -1
  78. package/dist/chunk-ZDIHVDTW.js +0 -3810
  79. package/dist/chunk-ZDIHVDTW.js.map +0 -1
  80. package/dist/factory/index.js.map +0 -1
  81. package/dist/factory-runtime/index.js.map +0 -1
  82. package/dist/fixtures.js.map +0 -1
  83. package/dist/i18n/index.js.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/kernel-wire.js.map +0 -1
  86. package/dist/language-data.js.map +0 -1
  87. package/dist/lolo-document/index.js.map +0 -1
  88. package/dist/patterns/definitions.js.map +0 -1
  89. package/dist/patterns/index.js.map +0 -1
  90. package/dist/themes/index.js.map +0 -1
  91. package/dist/types/index.js.map +0 -1
@@ -844,9 +844,22 @@
844
844
  "error": {
845
845
  "type": "string"
846
846
  },
847
+ "code": {
848
+ "type": "enum",
849
+ "values": [
850
+ "not-found",
851
+ "no-row-key",
852
+ "duplicate-id",
853
+ "denied",
854
+ "derived-failed"
855
+ ]
856
+ },
847
857
  "routed": {
848
858
  "type": "boolean",
849
859
  "required": true
860
+ },
861
+ "nested": {
862
+ "type": "SExpr"
850
863
  }
851
864
  }
852
865
  },
@@ -1078,7 +1091,8 @@
1078
1091
  "effect-failed",
1079
1092
  "locale-not-declared",
1080
1093
  "client-circuit-state-refused",
1081
- "repaint-failed"
1094
+ "repaint-failed",
1095
+ "cascade-capped"
1082
1096
  ],
1083
1097
  "required": true
1084
1098
  },
@@ -1186,9 +1200,22 @@
1186
1200
  "error": {
1187
1201
  "type": "string"
1188
1202
  },
1203
+ "code": {
1204
+ "type": "enum",
1205
+ "values": [
1206
+ "not-found",
1207
+ "no-row-key",
1208
+ "duplicate-id",
1209
+ "denied",
1210
+ "derived-failed"
1211
+ ]
1212
+ },
1189
1213
  "routed": {
1190
1214
  "type": "boolean",
1191
1215
  "required": true
1216
+ },
1217
+ "nested": {
1218
+ "type": "SExpr"
1192
1219
  }
1193
1220
  }
1194
1221
  },
@@ -144,6 +144,11 @@
144
144
  "category": "effect",
145
145
  "description": "one dispatch's delegated effects reach browser-stored rows and server work"
146
146
  },
147
+ {
148
+ "code": "ORB_LANGUAGE_DATA_FAULT",
149
+ "category": "effect",
150
+ "description": "the installed language data cannot answer a lookup the validated program needs"
151
+ },
147
152
  {
148
153
  "code": "ORB_EFF_SLOT_CONFLICT",
149
154
  "category": "effect",
@@ -279,6 +284,11 @@
279
284
  "category": "binding",
280
285
  "description": "**The payload invariant.** An event's declared payload type IS its access path: declaring `Survey` means the payload is the row (read `?name`); declaring `{ row : Survey }` means read `?row.name`. This fires when an event declares a field that the effect firing it does not actually emit — so every read of that field is `undefined` at runtime, even though `orb validate` and `orb verify` otherwise pass. Checked as width subtyping (`declared ⊆ produced`): declaring FEWER fields than are emitted is legal, declaring one that is never emitted is not. Replaces the narrower `EmitSuccessPayloadWrapped` (persist-only) and `EmitSuccessPayloadReturnMismatch` (empty-payload-only) checks. Error severity."
281
286
  },
287
+ {
288
+ "code": "ORB_LISTEN_PAYLOAD_TYPE_MISMATCH",
289
+ "category": "binding",
290
+ "description": "An `emit` declares a payload field whose type does not fit the type the listening trait declares for the same field of the event its `listens` route triggers: the emitted value would be refused or misread on delivery. Compared by structure under the kernel's one type relation (aliases resolved, a missing optional member and a non-null value into a nullable slot are fine), never by the spelling of the type names. Error severity."
291
+ },
282
292
  {
283
293
  "code": "ORB_EFFECT_IN_LAMBDA",
284
294
  "category": "binding",
@@ -304,6 +314,116 @@
304
314
  "category": "generic",
305
315
  "description": "Generic duplicate entity/item"
306
316
  },
317
+ {
318
+ "code": "ORB_BINDING_ROOT_SHADOWED",
319
+ "category": "binding",
320
+ "description": "A `let` binding or `fn` parameter is named after a binding root (`entity`, `payload`, `config`, `user`, and so on), so `@name` in its scope reads the local instead of the root."
321
+ },
322
+ {
323
+ "code": "ORB_RUI_COLLECTION_FIELDS_MISSING",
324
+ "category": "render_ui",
325
+ "description": "A render-ui pattern whose registry props take both `entity` and `fields`/`columns` is bound to entity rows but declares neither, so a host would have to derive the shown fields from the first row."
326
+ },
327
+ {
328
+ "code": "ORB_BEHAVIOR_AMBIGUOUS",
329
+ "category": "behavior",
330
+ "description": "A behavior name resolves in more than one installed package"
331
+ },
332
+ {
333
+ "code": "ORB_BEHAVIOR_NAME_DUPLICATE",
334
+ "category": "behavior",
335
+ "description": "A package declares the same behavior name twice"
336
+ },
337
+ {
338
+ "code": "ORB_BEHAVIOR_NOT_FOUND",
339
+ "category": "behavior",
340
+ "description": "An imported behavior is found in no installed package"
341
+ },
342
+ {
343
+ "code": "ORB_BEHAVIOR_PACKAGE_INVALID",
344
+ "category": "behavior",
345
+ "description": "An installed behavior package cannot be read or has an invalid layout"
346
+ },
347
+ {
348
+ "code": "ORB_BEHAVIOR_PACKAGE_NOT_INSTALLED",
349
+ "category": "behavior",
350
+ "description": "A behavior package a program imports from is not installed"
351
+ },
352
+ {
353
+ "code": "ORB_BEHAVIOR_PREFIX_CONFLICT",
354
+ "category": "behavior",
355
+ "description": "Two installed packages claim the same behavior prefix"
356
+ },
357
+ {
358
+ "code": "ORB_LAZY_EAGER_REF",
359
+ "category": "uses",
360
+ "description": "An eager orbital references a lazily imported alias beyond a whole page-bearing orbital"
361
+ },
362
+ {
363
+ "code": "ORB_LAZY_NOT_SPLIT",
364
+ "category": "uses",
365
+ "description": "An orbital that references a lazy import reached inlining before the lazy split"
366
+ },
367
+ {
368
+ "code": "ORB_LAZY_NO_PAGES",
369
+ "category": "uses",
370
+ "description": "An orbital imported lazily declares no pages, so nothing can load it"
371
+ },
372
+ {
373
+ "code": "ORB_O_LISTEN_SOURCE_UNKNOWN",
374
+ "category": "orbital_ref",
375
+ "description": "An orbital import listens route names a source trait that is neither imported nor authored in the import body"
376
+ },
377
+ {
378
+ "code": "ORB_O_LISTEN_TARGET_UNKNOWN",
379
+ "category": "orbital_ref",
380
+ "description": "An orbital import listens route targets a trait that is not in the imported set"
381
+ },
382
+ {
383
+ "code": "ORB_O_PAGE_ACCESS_WEAKENED",
384
+ "category": "orbital_ref",
385
+ "description": "A page reference sets public access on an upstream page that requires authentication"
386
+ },
387
+ {
388
+ "code": "ORB_O_PAGE_PROTOCOL_MISMATCH",
389
+ "category": "orbital_ref",
390
+ "description": "A page reference is written with a protocol other than the referenced page's"
391
+ },
392
+ {
393
+ "code": "ORB_O_SIBLING_ENTITY_AMBIGUOUS",
394
+ "category": "orbital_ref",
395
+ "description": "A sibling entity is declared by two imports with different fields"
396
+ },
397
+ {
398
+ "code": "ORB_T_AMBIGUOUS_TYPE_NAME",
399
+ "category": "trait",
400
+ "description": "A type name is declared by two sources with different shapes"
401
+ },
402
+ {
403
+ "code": "ORB_T_CONFLICTING_TYPE_ALIAS",
404
+ "category": "trait",
405
+ "description": "A struct alias is declared both locally and by an imported trait with different shapes"
406
+ },
407
+ {
408
+ "code": "ORB_T_EMIT_MERGE_CONFLICT",
409
+ "category": "trait",
410
+ "description": "An emit from an inline-expanded trait collides with an emit of different payload"
411
+ },
412
+ {
413
+ "code": "ORB_T_LAMBDA_STATEFUL_TRAIT",
414
+ "category": "trait",
415
+ "description": "A trait used as a lambda keeps its own state machine"
416
+ },
417
+ {
418
+ "code": "ORB_T_LISTEN_KEY_DROPPED",
419
+ "category": "trait",
420
+ "description": "A call-site listens override restates a keyed route without its per clause"
421
+ },
422
+ {
423
+ "code": "ORB_T_TYPE_IMPORT_REFUSED",
424
+ "category": "trait",
425
+ "description": "A program uses a type declared by a behavior instead of declaring or sharing it"
426
+ },
307
427
  {
308
428
  "code": "CIRCUIT_ACTION_COMPONENT_MISMATCH",
309
429
  "category": "circuit",
@@ -407,7 +527,7 @@
407
527
  {
408
528
  "code": "ORB_BINDING_FROM_ENTITY_OUTSIDE_ENSURES",
409
529
  "category": "binding",
410
- "description": "@fromEntity is the row before a transition and may only be used inside an @ensures"
530
+ "description": "The @fromEntity binding is the row before a transition and may only be used inside an @ensures"
411
531
  },
412
532
  {
413
533
  "code": "ORB_BINDING_INVALID_FORMAT",
@@ -524,6 +644,11 @@
524
644
  "category": "circuit",
525
645
  "description": "A transition declares async result events but its target state has no arm handling them, so the requester cannot hear its own result"
526
646
  },
647
+ {
648
+ "code": "ORB_CIRCUIT_ASYNC_RESULT_DEAF_WAITING",
649
+ "category": "circuit",
650
+ "description": "A state that only an async result can leave is reachable while a call-service is in flight and has no arm for that call's outcome, so the outcome is dropped there"
651
+ },
527
652
  {
528
653
  "code": "ORB_CIRCUIT_DEAD_BODILESS_ACTION",
529
654
  "category": "circuit",
@@ -539,6 +664,11 @@
539
664
  "category": "circuit",
540
665
  "description": "A state handles a failure event but its arm neither renders nor emits a declared event, so the failure reaches no one"
541
666
  },
667
+ {
668
+ "code": "ORB_CIRCUIT_INIT_ARM_NEVER_FIRES",
669
+ "category": "circuit",
670
+ "description": "Every INIT arm of a trait's initial state is guarded by a condition that is false for the composition's config and no other arm of that state can fire, so the trait never starts"
671
+ },
542
672
  {
543
673
  "code": "ORB_CIRCUIT_INIT_UNCOVERED_STATE",
544
674
  "category": "circuit",
@@ -574,6 +704,11 @@
574
704
  "category": "circuit",
575
705
  "description": "A page's content owner repaints its region on a user-triggered event with a body that offers no way on"
576
706
  },
707
+ {
708
+ "code": "ORB_CLIENT_ENTITY_SERVER_ONLY",
709
+ "category": "orbital",
710
+ "description": "A client trait is linked to the entity of an orbital whose every page is a protocol endpoint, which the client program leaves out"
711
+ },
577
712
  {
578
713
  "code": "ORB_COMPOSED_STATE_UNREACHABLE",
579
714
  "category": "circuit",
@@ -709,6 +844,11 @@
709
844
  "category": "effect",
710
845
  "description": "An effect is written in a retired object form instead of the array form"
711
846
  },
847
+ {
848
+ "code": "ORB_EFF_SERVER_EFFECT_NO_FAILURE_ROUTE",
849
+ "category": "effect",
850
+ "description": "A fetch, persist or call-service effect on a server entity declares no `emit: { failure }` route, so its error reaches no one"
851
+ },
712
852
  {
713
853
  "code": "ORB_EFF_SET_INVALID_BINDING",
714
854
  "category": "effect",
@@ -759,11 +899,21 @@
759
899
  "category": "entity",
760
900
  "description": "An entity declares owner columns but has no access policy scoping rows to the owner"
761
901
  },
902
+ {
903
+ "code": "ORB_ENTITY_READ_UNDECLARED",
904
+ "category": "entity",
905
+ "description": "A persistent entity declares neither an @read policy nor an @read none waiver, so who reads its rows is unstated"
906
+ },
762
907
  {
763
908
  "code": "ORB_ENTITY_SPLIT_MUTATION",
764
909
  "category": "entity_mutation",
765
910
  "description": "A runtime entity is mutated by several traits on isolated per-trait copies while another trait reads a field it never writes"
766
911
  },
912
+ {
913
+ "code": "ORB_ENTITY_WRITE_UNDECLARED",
914
+ "category": "entity",
915
+ "description": "A persistent entity declares no @create, or declares some write directives but not all of @create, @update and @delete, so an undeclared write is allow-all"
916
+ },
767
917
  {
768
918
  "code": "ORB_E_DUPLICATE_FIELD",
769
919
  "category": "entity",
@@ -879,6 +1029,11 @@
879
1029
  "category": "effect",
880
1030
  "description": "A fetch with total none skips the count, so the success event's totalCount is never set and may not be read"
881
1031
  },
1032
+ {
1033
+ "code": "ORB_FETCH_UNBOUNDED",
1034
+ "category": "query",
1035
+ "description": "A fetch of a persistent entity has no limit, id or nearest, so it reads every row"
1036
+ },
882
1037
  {
883
1038
  "code": "ORB_FETCH_UNINDEXED",
884
1039
  "category": "query",
@@ -984,6 +1139,21 @@
984
1139
  "category": "inbound",
985
1140
  "description": "An inbound hook event answers with an event the trait does not declare in emits"
986
1141
  },
1142
+ {
1143
+ "code": "ORB_INBOUND_CLI_DASH_WORD",
1144
+ "category": "inbound",
1145
+ "description": "A cli- inbound hook has an empty command word, so a word would start with a dash"
1146
+ },
1147
+ {
1148
+ "code": "ORB_INBOUND_CLI_RESERVED",
1149
+ "category": "inbound",
1150
+ "description": "A cli- inbound hook takes a command word the orb bootloader reserves"
1151
+ },
1152
+ {
1153
+ "code": "ORB_INBOUND_CLI_SHADOWED",
1154
+ "category": "inbound",
1155
+ "description": "A cli- inbound hook is a prefix of a longer cli- hook, so the longer hook takes the arguments that begin with its next word"
1156
+ },
987
1157
  {
988
1158
  "code": "ORB_INBOUND_DUPLICATE",
989
1159
  "category": "inbound",
@@ -1019,6 +1189,11 @@
1019
1189
  "category": "lint",
1020
1190
  "description": "json/parse re-parses what json/stringify just serialized; a stringify→parse round trip launders a value's type past the checker (owner hard rule, CLAUDE.md). Narrow with `as`."
1021
1191
  },
1192
+ {
1193
+ "code": "ORB_JSON_STRINGIFY_KEY",
1194
+ "category": "lint",
1195
+ "description": "json/stringify is an operand of =, !=, array/unique, array/indexOf or an object/set key; compare or key by value/key instead of serialized text"
1196
+ },
1022
1197
  {
1023
1198
  "code": "ORB_LINT_FINDING_CODE_UNDECLARED",
1024
1199
  "category": "lint",
@@ -1069,6 +1244,11 @@
1069
1244
  "category": "listen",
1070
1245
  "description": "A listens route is redundant because the embedded trait already receives that event"
1071
1246
  },
1247
+ {
1248
+ "code": "ORB_LISTEN_ROUTE_PROJECTION_MISMATCH",
1249
+ "category": "trait_event",
1250
+ "description": "A listens route copies a payload field projected from one entity field into a payload field projected from a different field of the same entity"
1251
+ },
1072
1252
  {
1073
1253
  "code": "ORB_LISTEN_ROUTE_STARVES_REQUIRED_FIELD",
1074
1254
  "category": "trait_event",
@@ -1329,6 +1509,11 @@
1329
1509
  "category": "persist",
1330
1510
  "description": "A persist effect names its row id with an expression instead of a binding path or literal id, so no row key resolves"
1331
1511
  },
1512
+ {
1513
+ "code": "ORB_PERSIST_UPDATE_WITHOUT_CREATE",
1514
+ "category": "cross",
1515
+ "description": "A persistent entity the program updates but never creates, upserts or batch-creates, and that declares no instances: the update can never find a row. An update made by a trait authored in this program that binds the entity as its `@rebindable` placeholder is not judged, since the program that composes the trait owns the rows; nor is an update by a trait authored in an orbital that declares `expects entity` for that entity (a composed copy of the trait is still judged), which states that another part of the program supplies the rows"
1516
+ },
1332
1517
  {
1333
1518
  "code": "ORB_PERSIST_WHERE_NOT_A_PREDICATE",
1334
1519
  "category": "persist",
@@ -1369,6 +1554,11 @@
1369
1554
  "category": "page",
1370
1555
  "description": "A page declares an empty traits array"
1371
1556
  },
1557
+ {
1558
+ "code": "ORB_P_ENTRY_UNKNOWN_ROUTE",
1559
+ "category": "page",
1560
+ "description": "An entry route of the app names a path that is no page of the app"
1561
+ },
1372
1562
  {
1373
1563
  "code": "ORB_P_HOST_RESERVED_ROUTE",
1374
1564
  "category": "page",
@@ -1414,6 +1604,11 @@
1414
1604
  "category": "page",
1415
1605
  "description": "A page has no traits array for trait-driven UI"
1416
1606
  },
1607
+ {
1608
+ "code": "ORB_P_ROUTE_PARAM_MISSING_FOR_INIT",
1609
+ "category": "page",
1610
+ "description": "A route page whose path lacks a :param for a field a mounted trait declares required on its INIT event, so navigating to it is refused"
1611
+ },
1417
1612
  {
1418
1613
  "code": "ORB_P_SIGN_IN_UNKNOWN_ROUTE",
1419
1614
  "category": "page",
@@ -1454,6 +1649,11 @@
1454
1649
  "category": "render_ui",
1455
1650
  "description": "A non-drawable child is composed under a canvas draw-host, which paints only neutral drawable descriptors"
1456
1651
  },
1652
+ {
1653
+ "code": "ORB_RUI_CONTROLLED_WITHOUT_CHANGE",
1654
+ "category": "render_ui",
1655
+ "description": "A control whose value is bound to a non-literal and that wires none of the events that report its change: the field cannot be edited"
1656
+ },
1457
1657
  {
1458
1658
  "code": "ORB_RUI_ELEMENT_SHAPE_MISMATCH",
1459
1659
  "category": "render_ui",
@@ -1554,6 +1754,16 @@
1554
1754
  "category": "slot",
1555
1755
  "description": "No trait on a page renders anything into the main slot"
1556
1756
  },
1757
+ {
1758
+ "code": "ORB_SLOT_MAIN_ONLY_CONTAINERS",
1759
+ "category": "slot",
1760
+ "description": "Every trait render into the main slot of a page paints only empty layout-only containers, so nothing is shown"
1761
+ },
1762
+ {
1763
+ "code": "ORB_STATE_TRAPPED",
1764
+ "category": "composed",
1765
+ "description": "A trait can reach a state that no event the program sends can take it out of"
1766
+ },
1557
1767
  {
1558
1768
  "code": "ORB_STORE_DRIVER_CONTRACT",
1559
1769
  "category": "store",
@@ -1674,6 +1884,11 @@
1674
1884
  "category": "schema",
1675
1885
  "description": "A read of a field of the signed-in user names a field the declared identity entity does not have"
1676
1886
  },
1887
+ {
1888
+ "code": "ORB_S_USER_ID_EMPTY_COMPARISON",
1889
+ "category": "schema",
1890
+ "description": "A comparison of @user.id with the empty string, which is never true of a viewer: the anonymous viewer's id is \"anonymous\", so the comparison is constant"
1891
+ },
1677
1892
  {
1678
1893
  "code": "ORB_TAB_EFFECT_ON_SERVER",
1679
1894
  "category": "tab",
@@ -1869,6 +2084,11 @@
1869
2084
  "category": "trait",
1870
2085
  "description": "A config field typed secret does not default to a string credential reference"
1871
2086
  },
2087
+ {
2088
+ "code": "ORB_T_SERVER_TRAIT_CLIENT_EFFECT",
2089
+ "category": "trait",
2090
+ "description": "A trait that runs every step on the server performs an effect only a client can do and the kernel does not forward to one"
2091
+ },
1872
2092
  {
1873
2093
  "code": "ORB_T_STATE_UNREACHABLE",
1874
2094
  "category": "trait",
@@ -1924,11 +2144,21 @@
1924
2144
  "category": "lint",
1925
2145
  "description": "A parse inside a lambda re-parses the same value for every element and should be bound once outside"
1926
2146
  },
2147
+ {
2148
+ "code": "ORB_X_BARE_LISTEN_UNROUTED",
2149
+ "category": "cross",
2150
+ "description": "A trait declares a bare listens contract for an event another orbital emits to the embedder, and no route joins them"
2151
+ },
1927
2152
  {
1928
2153
  "code": "ORB_X_CIRCULAR_DEPENDENCY",
1929
2154
  "category": "cross",
1930
2155
  "description": "Traits form a circular event dependency"
1931
2156
  },
2157
+ {
2158
+ "code": "ORB_X_COLLECTION_ENUM_MISMATCH",
2159
+ "category": "cross",
2160
+ "description": "Two persistent entities on one collection declare the same field as an enum with different value sets, so one entity's rows fail the other's type"
2161
+ },
1932
2162
  {
1933
2163
  "code": "ORB_X_CROSS_EMITTER_DECLARED_PAYLOAD_MISMATCH",
1934
2164
  "category": "cross",
@@ -23,6 +23,7 @@
23
23
  "from",
24
24
  "to",
25
25
  "every",
26
+ "in",
26
27
  "capabilities",
27
28
  "match",
28
29
  "external",
@@ -76,6 +77,7 @@
76
77
  "icon",
77
78
  "siteName",
78
79
  "signIn",
80
+ "entries",
79
81
  "authenticated",
80
82
  "index",
81
83
  "noindex",
@@ -222,6 +224,7 @@
222
224
  "file",
223
225
  "bytes",
224
226
  "CallKey",
227
+ "MessageKey",
225
228
  "field",
226
229
  "email",
227
230
  "url",
@@ -276,6 +279,7 @@
276
279
  "additionalProperties": "additionalProperties",
277
280
  "address": "address",
278
281
  "after": "after",
282
+ "afterEntryMs": "afterEntryMs",
279
283
  "alias": "alias",
280
284
  "animations": "animations",
281
285
  "answers": "answers",
@@ -308,6 +312,7 @@
308
312
  "content": "content",
309
313
  "create": "create",
310
314
  "create_policy": "create_policy",
315
+ "create_server": "create_server",
311
316
  "createdAt": "createdAt",
312
317
  "credential": "credential",
313
318
  "curName": "curName",
@@ -337,6 +342,7 @@
337
342
  "display": "display",
338
343
  "displayName": "displayName",
339
344
  "domainContext": "domainContext",
345
+ "droppedListens": "droppedListens",
340
346
  "effectRow": "effectRow",
341
347
  "effects": "effects",
342
348
  "egress": "egress",
@@ -418,6 +424,7 @@
418
424
  "linkedEntityId": "linkedEntityId",
419
425
  "links": "links",
420
426
  "listPattern": "listPattern",
427
+ "listen": "listen",
421
428
  "listened": "listened",
422
429
  "listens": "listens",
423
430
  "local": "local",
@@ -435,6 +442,7 @@
435
442
  "motion": "motion",
436
443
  "mounts": "mounts",
437
444
  "name": "name",
445
+ "nearest": "nearest",
438
446
  "nestedForwardedFrom": "nestedForwardedFrom",
439
447
  "net": "net",
440
448
  "nullable": "nullable",
@@ -487,6 +495,7 @@
487
495
  "radii": "radii",
488
496
  "read": "read",
489
497
  "read_policy": "read_policy",
498
+ "read_server": "read_server",
490
499
  "reconnect": "reconnect",
491
500
  "record": "record",
492
501
  "ref": "ref",
@@ -516,6 +525,7 @@
516
525
  "sections": "sections",
517
526
  "seedMock": "seedMock",
518
527
  "semanticRole": "semanticRole",
528
+ "serverListens": "serverListens",
519
529
  "serverPath": "serverPath",
520
530
  "services": "services",
521
531
  "shadows": "shadows",
@@ -585,6 +595,7 @@
585
595
  "types": "types",
586
596
  "typography": "typography",
587
597
  "ui": "ui",
598
+ "union": "union",
588
599
  "unique": "unique",
589
600
  "update": "update",
590
601
  "update_policy": "update_policy",
@@ -602,5 +613,56 @@
602
613
  "vocabulary": "vocabulary",
603
614
  "whileVisible": "whileVisible",
604
615
  "wired": "wired"
605
- }
616
+ },
617
+ "fieldTypes": [
618
+ "string",
619
+ "number",
620
+ "int",
621
+ "i8",
622
+ "i16",
623
+ "i32",
624
+ "i64",
625
+ "u8",
626
+ "u16",
627
+ "u32",
628
+ "u64",
629
+ "f32",
630
+ "f64",
631
+ "boolean",
632
+ "date",
633
+ "datetime",
634
+ "timestamp",
635
+ "instant",
636
+ "email",
637
+ "url",
638
+ "phone",
639
+ "uuid",
640
+ "image",
641
+ "money",
642
+ "file",
643
+ "bytes",
644
+ "CallKey",
645
+ "MessageKey",
646
+ "array",
647
+ "object",
648
+ "enum",
649
+ "relation",
650
+ "trait",
651
+ "orbital",
652
+ "behavior",
653
+ "slot",
654
+ "pattern",
655
+ "node",
656
+ "event",
657
+ "union",
658
+ "tuple"
659
+ ],
660
+ "reservedCliWords": [
661
+ "run",
662
+ "help",
663
+ "--help",
664
+ "-h",
665
+ "--version",
666
+ "-V"
667
+ ]
606
668
  }
@@ -1,6 +1,6 @@
1
- import { installedPackageDirs, userStoreDir } from './chunk-RGACZEYC.js';
2
- import { parseVocabularyPack } from './chunk-DNS4GKQV.js';
3
- import './chunk-B4MNHGBP.js';
1
+ import { installedPackageDirs, userStoreDir } from './chunk-DDBAQMWA.js';
2
+ import { parseVocabularyPack } from './chunk-27Y5AXHB.js';
3
+ import './chunk-5IRZ6ROW.js';
4
4
  import { readFileSync, existsSync, readdirSync } from 'fs';
5
5
  import { join, dirname, resolve } from 'path';
6
6
 
@@ -100,5 +100,3 @@ function readLanguageBundle(fromDir, userStore = userStoreDir()) {
100
100
  }
101
101
 
102
102
  export { LanguageDataError, readLanguageBundle, readVocabularyPacks };
103
- //# sourceMappingURL=language-data.js.map
104
- //# sourceMappingURL=language-data.js.map
@@ -662,5 +662,3 @@ function addEntityFields(doc, entityName, fields) {
662
662
  }
663
663
 
664
664
  export { addEntityFields, addListens, addTraitRef, addUses, aliasForBehavior, appendPageTrait, applyEdits, arrayElementSpans, findPage, formatLoloValue, lineStart, matchDelimiter, parseLoloDocument, removePageTrait, removeTrait, renameEvent, setConfigArrayRow, setConfigValue, setEmbedAttribute, usesAlias };
665
- //# sourceMappingURL=index.js.map
666
- //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-11-07T03:57:49.631Z",
3
+ "exportedAt": "2026-11-14T09:17:31.667Z",
4
4
  "mappings": {
5
5
  "page-header": {
6
6
  "component": "PageHeader",
@@ -1343,6 +1343,16 @@
1343
1343
  "component": "GuestView",
1344
1344
  "importPath": "@almadar/shell-web/components/core/molecules/GuestView",
1345
1345
  "category": "component"
1346
+ },
1347
+ "annotated-media": {
1348
+ "component": "AnnotatedMedia",
1349
+ "importPath": "@almadar/shell-web/components/core/molecules/AnnotatedMedia",
1350
+ "category": "component"
1351
+ },
1352
+ "draw-emitter": {
1353
+ "component": "DrawEmitter",
1354
+ "importPath": "@almadar/shell-web/components/game/atoms/DrawEmitter",
1355
+ "category": "game"
1346
1356
  }
1347
1357
  }
1348
1358
  }
@@ -1,4 +1,4 @@
1
1
  export { PATTERN_REGISTRY, getPatternDefinition, patternsRegistry, registry } from './index.js';
2
- import '../effect-C2VKm6kk.js';
2
+ import '../effect-gddySYLX.js';
3
3
  import 'zod';
4
- import '../expression-DirYKz-f.js';
4
+ import '../expression-DxY6ct3t.js';
@@ -1,3 +1 @@
1
- export { PATTERN_REGISTRY, getPatternDefinition, patternsRegistry, registry } from '../chunk-N3CK4AYW.js';
2
- //# sourceMappingURL=definitions.js.map
3
- //# sourceMappingURL=definitions.js.map
1
+ export { PATTERN_REGISTRY, getPatternDefinition, patternsRegistry, registry } from '../chunk-VC3HXUWQ.js';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "exportedAt": "2026-11-07T03:57:49.631Z",
3
+ "exportedAt": "2026-11-14T09:17:31.667Z",
4
4
  "contracts": {
5
5
  "form": {
6
6
  "emits": [