@almadar/core 10.108.0 → 10.109.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 (36) hide show
  1. package/dist/builders.d.ts +5 -5
  2. package/dist/builders.js.map +1 -1
  3. package/dist/{bus-BsY6WXg3.d.ts → bus-De_T27aq.d.ts} +2 -2
  4. package/dist/{effect-CG7murna.d.ts → effect-Cv7k1MTO.d.ts} +95 -8
  5. package/dist/{entityAccess-Gh1CZezI.d.ts → entityAccess-CH8vC2OG.d.ts} +3 -3
  6. package/dist/{expression-CfeHdS-f.d.ts → expression-C6Gs_c5b.d.ts} +7 -1
  7. package/dist/factory/index.d.ts +5 -5
  8. package/dist/factory/index.js +1349 -237
  9. package/dist/factory/index.js.map +1 -1
  10. package/dist/factory-runtime/index.d.ts +5 -5
  11. package/dist/factory-runtime/index.js.map +1 -1
  12. package/dist/fixtures.d.ts +3 -3
  13. package/dist/fixtures.js.map +1 -1
  14. package/dist/{index-C7WUNaRL.d.ts → index-BzFToa4c.d.ts} +7 -7
  15. package/dist/index.d.ts +15 -15
  16. package/dist/index.js +1448 -241
  17. package/dist/index.js.map +1 -1
  18. package/dist/mock/index.d.ts +6 -6
  19. package/dist/mock/index.js.map +1 -1
  20. package/dist/patterns/component-mapping.json +11 -1
  21. package/dist/patterns/event-contracts.json +1 -1
  22. package/dist/patterns/index.d.ts +2859 -740
  23. package/dist/patterns/index.js +1364 -240
  24. package/dist/patterns/index.js.map +1 -1
  25. package/dist/patterns/patterns-registry.json +1350 -238
  26. package/dist/patterns/registry.json +1350 -238
  27. package/dist/{schema-BaDkyxMw.d.ts → schema-Chi9QIcZ.d.ts} +1022 -1022
  28. package/dist/state-machine/index.d.ts +1 -1
  29. package/dist/themes/index.d.ts +1 -1
  30. package/dist/{trait-DSIFbDzj.d.ts → trait-A_OGE8xT.d.ts} +182 -182
  31. package/dist/types/index.d.ts +8 -8
  32. package/dist/types/index.js +86 -1
  33. package/dist/types/index.js.map +1 -1
  34. package/dist/{types-DKlN7sIB.d.ts → types-DQoBssKq.d.ts} +2 -2
  35. package/package.json +1 -1
  36. package/dist/{domain-DnEv7amB.d.ts → domain-DYverojF.d.ts} +28 -28
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  // src/patterns/patterns-registry.json
4
4
  var patterns_registry_default = {
5
5
  version: "1.0.0",
6
- exportedAt: "2026-09-27T13:02:32.256Z",
6
+ exportedAt: "2026-09-28T12:49:04.761Z",
7
7
  patterns: {
8
8
  "entity-table": {
9
9
  type: "entity-table",
@@ -17270,6 +17270,166 @@ var patterns_registry_default = {
17270
17270
  ],
17271
17271
  renderCallback: true,
17272
17272
  tier: "presentation"
17273
+ },
17274
+ assist: {
17275
+ types: [
17276
+ "function"
17277
+ ],
17278
+ description: "Editable only: model-assisted editing. Asked after a pause (and on Ctrl-Space) for a completion at the caret, shown as ghost text; on \u2318/Ctrl-. for fixes, listed under the editor. Tab accepts the next, \u2318/Ctrl-Enter accepts all, Escape dismisses.",
17279
+ callbackArgs: [
17280
+ {
17281
+ name: "request",
17282
+ type: "object",
17283
+ schema: {
17284
+ types: [
17285
+ "object"
17286
+ ],
17287
+ properties: {
17288
+ code: {
17289
+ types: [
17290
+ "string"
17291
+ ]
17292
+ },
17293
+ offset: {
17294
+ types: [
17295
+ "number"
17296
+ ]
17297
+ },
17298
+ kind: {
17299
+ types: [
17300
+ "string"
17301
+ ],
17302
+ enumValues: [
17303
+ "complete",
17304
+ "fix"
17305
+ ]
17306
+ },
17307
+ trigger: {
17308
+ types: [
17309
+ "string"
17310
+ ],
17311
+ enumValues: [
17312
+ "idle",
17313
+ "explicit"
17314
+ ]
17315
+ }
17316
+ },
17317
+ required: [
17318
+ "code",
17319
+ "offset",
17320
+ "kind",
17321
+ "trigger"
17322
+ ]
17323
+ }
17324
+ }
17325
+ ],
17326
+ renderCallback: true,
17327
+ tier: "presentation"
17328
+ },
17329
+ problems: {
17330
+ types: [
17331
+ "number"
17332
+ ],
17333
+ description: "Editable only: how many problems the host knows the code has (some, like a parse error, have no line to mark). With `assist`, the editor offers to fix them.",
17334
+ tier: "presentation"
17335
+ },
17336
+ diagnostics: {
17337
+ types: [
17338
+ "array"
17339
+ ],
17340
+ description: "Editable only: problems located in the code (1-based line/column in characters, `endColumn` just past the last one), each underlined exactly \u2014 red wavy for an error, amber for a warning, dotted where the position is approximate. The message of the one under the caret shows below the editor.",
17341
+ items: {
17342
+ types: [
17343
+ "object"
17344
+ ],
17345
+ properties: {
17346
+ line: {
17347
+ types: [
17348
+ "number"
17349
+ ]
17350
+ },
17351
+ column: {
17352
+ types: [
17353
+ "number"
17354
+ ]
17355
+ },
17356
+ endLine: {
17357
+ types: [
17358
+ "number"
17359
+ ]
17360
+ },
17361
+ endColumn: {
17362
+ types: [
17363
+ "number"
17364
+ ]
17365
+ },
17366
+ severity: {
17367
+ types: [
17368
+ "string"
17369
+ ],
17370
+ enumValues: [
17371
+ "error",
17372
+ "warning"
17373
+ ]
17374
+ },
17375
+ message: {
17376
+ types: [
17377
+ "string"
17378
+ ]
17379
+ },
17380
+ approximate: {
17381
+ types: [
17382
+ "boolean"
17383
+ ]
17384
+ }
17385
+ },
17386
+ required: [
17387
+ "line",
17388
+ "severity",
17389
+ "message"
17390
+ ]
17391
+ },
17392
+ tier: "presentation"
17393
+ },
17394
+ definitionAt: {
17395
+ types: [
17396
+ "function"
17397
+ ],
17398
+ description: "Editable only: go to definition. Whether the identifier (a dotted path is one) leads somewhere; with Cmd/Ctrl held the one under the pointer is underlined when it does. Comments and strings never qualify.",
17399
+ callbackArgs: [
17400
+ {
17401
+ name: "identifier",
17402
+ type: "string"
17403
+ }
17404
+ ],
17405
+ renderCallback: true
17406
+ },
17407
+ onGoToDefinition: {
17408
+ types: [
17409
+ "function"
17410
+ ],
17411
+ description: "Editable only: Cmd/Ctrl+click, or Cmd/Ctrl+Enter at the caret, on an identifier `definitionAt` accepts.",
17412
+ kind: "callback",
17413
+ callbackArgs: [
17414
+ {
17415
+ name: "identifier",
17416
+ type: "string"
17417
+ }
17418
+ ]
17419
+ },
17420
+ diagnosticsCode: {
17421
+ types: [
17422
+ "string"
17423
+ ],
17424
+ description: "The code `diagnostics` were computed on. When the editor's text has moved on, each range is carried over the edit; a range the edit touches is dropped until the code is checked again. Absent: they describe the current text.",
17425
+ tier: "presentation"
17426
+ },
17427
+ lineNumbers: {
17428
+ types: [
17429
+ "boolean"
17430
+ ],
17431
+ description: "Editable only: number the lines in a gutter (lines with errors in red). Default on.",
17432
+ tier: "presentation"
17273
17433
  }
17274
17434
  }
17275
17435
  },
@@ -17601,18 +17761,284 @@ var patterns_registry_default = {
17601
17761
  ],
17602
17762
  typicalSize: "large",
17603
17763
  propsSchema: {
17764
+ activeState: {
17765
+ types: [
17766
+ "string"
17767
+ ],
17768
+ description: "State execution is currently in."
17769
+ },
17770
+ activeTransition: {
17771
+ types: [
17772
+ "number"
17773
+ ],
17774
+ description: "`index` of the transition that just fired."
17775
+ },
17776
+ visitedStates: {
17777
+ types: [
17778
+ "array"
17779
+ ],
17780
+ description: "States already passed through, in order.",
17781
+ items: {
17782
+ types: [
17783
+ "string"
17784
+ ]
17785
+ }
17786
+ },
17787
+ stateClickEvent: {
17788
+ types: [
17789
+ "string"
17790
+ ],
17791
+ description: "Emits UI:{stateClickEvent} with { stateId } when a state is clicked.",
17792
+ kind: "event-ref",
17793
+ emitPayloadSchema: [
17794
+ {
17795
+ name: "stateId",
17796
+ type: "string",
17797
+ required: true
17798
+ }
17799
+ ]
17800
+ },
17801
+ transitionClickEvent: {
17802
+ types: [
17803
+ "string"
17804
+ ],
17805
+ description: "Emits UI:{transitionClickEvent} with { index, event, from, to } when a transition label is clicked.",
17806
+ kind: "event-ref",
17807
+ emitPayloadSchema: [
17808
+ {
17809
+ name: "index",
17810
+ type: "number",
17811
+ required: true
17812
+ },
17813
+ {
17814
+ name: "event",
17815
+ type: "string",
17816
+ required: true
17817
+ },
17818
+ {
17819
+ name: "from",
17820
+ type: "string",
17821
+ required: true
17822
+ },
17823
+ {
17824
+ name: "to",
17825
+ type: "string",
17826
+ required: true
17827
+ }
17828
+ ]
17829
+ },
17830
+ selectedState: {
17831
+ types: [
17832
+ "string"
17833
+ ],
17834
+ description: "State picked in an editor (first click)."
17835
+ },
17836
+ pendingSourceState: {
17837
+ types: [
17838
+ "string"
17839
+ ],
17840
+ description: "Source of a transition being drawn \u2014 the next state click picks its target."
17841
+ },
17842
+ nodeShape: {
17843
+ types: [
17844
+ "string"
17845
+ ],
17846
+ description: "Node silhouette. @default 'pill'",
17847
+ enumValues: [
17848
+ "pill",
17849
+ "gear"
17850
+ ]
17851
+ },
17852
+ entityFields: {
17853
+ types: [
17854
+ "array"
17855
+ ],
17856
+ description: "Entity field names listed in the header.",
17857
+ items: {
17858
+ types: [
17859
+ "string"
17860
+ ]
17861
+ }
17862
+ },
17863
+ direction: {
17864
+ types: [
17865
+ "string"
17866
+ ],
17867
+ description: "Flow direction. @default 'ltr'",
17868
+ enumValues: [
17869
+ "ltr",
17870
+ "rtl"
17871
+ ]
17872
+ },
17873
+ showHeader: {
17874
+ types: [
17875
+ "boolean"
17876
+ ],
17877
+ description: "Show the trait header (name, entity, listens/emits). @default true"
17878
+ },
17604
17879
  className: {
17605
17880
  types: [
17606
17881
  "string"
17607
17882
  ],
17608
- description: "Additional CSS classes",
17609
- default: ""
17883
+ description: "className prop"
17884
+ },
17885
+ trait: {
17886
+ types: [
17887
+ "object"
17888
+ ],
17889
+ description: "The trait to draw (see `parseTraitLevel` / `traitLevelFromTrait`).",
17890
+ properties: {
17891
+ name: {
17892
+ types: [
17893
+ "string"
17894
+ ]
17895
+ },
17896
+ linkedEntity: {
17897
+ types: [
17898
+ "string"
17899
+ ]
17900
+ },
17901
+ states: {
17902
+ types: [
17903
+ "array"
17904
+ ],
17905
+ items: {
17906
+ types: [
17907
+ "object"
17908
+ ],
17909
+ properties: {
17910
+ name: {
17911
+ types: [
17912
+ "string"
17913
+ ]
17914
+ },
17915
+ isInitial: {
17916
+ types: [
17917
+ "boolean"
17918
+ ]
17919
+ },
17920
+ isTerminal: {
17921
+ types: [
17922
+ "boolean"
17923
+ ]
17924
+ }
17925
+ },
17926
+ required: [
17927
+ "name"
17928
+ ]
17929
+ }
17930
+ },
17931
+ transitions: {
17932
+ types: [
17933
+ "array"
17934
+ ],
17935
+ items: {
17936
+ types: [
17937
+ "object"
17938
+ ],
17939
+ properties: {
17940
+ from: {
17941
+ types: [
17942
+ "string"
17943
+ ]
17944
+ },
17945
+ to: {
17946
+ types: [
17947
+ "string"
17948
+ ]
17949
+ },
17950
+ event: {
17951
+ types: [
17952
+ "string"
17953
+ ]
17954
+ },
17955
+ guard: {
17956
+ types: [
17957
+ "sexpr"
17958
+ ]
17959
+ },
17960
+ effects: {
17961
+ types: [
17962
+ "array"
17963
+ ],
17964
+ items: {
17965
+ types: [
17966
+ "object"
17967
+ ],
17968
+ properties: {
17969
+ type: {
17970
+ types: [
17971
+ "string"
17972
+ ]
17973
+ },
17974
+ args: {
17975
+ types: [
17976
+ "array"
17977
+ ],
17978
+ items: {
17979
+ types: [
17980
+ "sexpr"
17981
+ ]
17982
+ }
17983
+ }
17984
+ },
17985
+ required: [
17986
+ "type",
17987
+ "args"
17988
+ ]
17989
+ }
17990
+ },
17991
+ index: {
17992
+ types: [
17993
+ "number"
17994
+ ]
17995
+ }
17996
+ },
17997
+ required: [
17998
+ "from",
17999
+ "to",
18000
+ "event",
18001
+ "effects",
18002
+ "index"
18003
+ ]
18004
+ }
18005
+ },
18006
+ emittedEvents: {
18007
+ types: [
18008
+ "array"
18009
+ ],
18010
+ items: {
18011
+ types: [
18012
+ "string"
18013
+ ]
18014
+ }
18015
+ },
18016
+ listenedEvents: {
18017
+ types: [
18018
+ "array"
18019
+ ],
18020
+ items: {
18021
+ types: [
18022
+ "string"
18023
+ ]
18024
+ }
18025
+ }
18026
+ },
18027
+ propertyRequired: [
18028
+ "name",
18029
+ "linkedEntity",
18030
+ "states",
18031
+ "transitions",
18032
+ "emittedEvents",
18033
+ "listenedEvents"
18034
+ ]
17610
18035
  },
17611
18036
  isLoading: {
17612
18037
  types: [
17613
18038
  "boolean"
17614
18039
  ],
17615
- description: "Loading state indicator"
18040
+ description: "Loading state indicator",
18041
+ default: false
17616
18042
  },
17617
18043
  error: {
17618
18044
  types: [
@@ -17643,224 +18069,8 @@ var patterns_registry_default = {
17643
18069
  },
17644
18070
  propertyRequired: [
17645
18071
  "message"
17646
- ]
17647
- },
17648
- layoutData: {
17649
- types: [
17650
- "object"
17651
- ],
17652
- description: "Pre-computed visualizer layout. Optional: when absent the view renders nothing (an author wires real layout via config; the generic factory can't synthesize a `DomLayoutData`).",
17653
- nonAuthorable: true
17654
- },
17655
- renderStateNode: {
17656
- types: [
17657
- "function"
17658
- ],
17659
- description: "Custom state node renderer \u2014 when provided, replaces the default circle nodes",
17660
- callbackArgs: [
17661
- {
17662
- name: "state",
17663
- type: "object",
17664
- schema: {
17665
- types: [
17666
- "object"
17667
- ],
17668
- properties: {
17669
- id: {
17670
- types: [
17671
- "string"
17672
- ]
17673
- },
17674
- name: {
17675
- types: [
17676
- "string"
17677
- ]
17678
- },
17679
- x: {
17680
- types: [
17681
- "number"
17682
- ]
17683
- },
17684
- y: {
17685
- types: [
17686
- "number"
17687
- ]
17688
- },
17689
- radius: {
17690
- types: [
17691
- "number"
17692
- ]
17693
- },
17694
- isInitial: {
17695
- types: [
17696
- "boolean"
17697
- ]
17698
- },
17699
- isFinal: {
17700
- types: [
17701
- "boolean"
17702
- ]
17703
- },
17704
- description: {
17705
- types: [
17706
- "string"
17707
- ]
17708
- }
17709
- },
17710
- required: [
17711
- "id",
17712
- "name",
17713
- "x",
17714
- "y",
17715
- "radius",
17716
- "isInitial",
17717
- "isFinal"
17718
- ]
17719
- }
17720
- },
17721
- {
17722
- name: "config",
17723
- type: "object",
17724
- schema: {
17725
- types: [
17726
- "object"
17727
- ],
17728
- properties: {
17729
- nodeRadius: {
17730
- types: [
17731
- "number"
17732
- ]
17733
- },
17734
- nodeSpacing: {
17735
- types: [
17736
- "number"
17737
- ]
17738
- },
17739
- initialIndicatorOffset: {
17740
- types: [
17741
- "number"
17742
- ]
17743
- },
17744
- arrowSize: {
17745
- types: [
17746
- "number"
17747
- ]
17748
- },
17749
- colors: {
17750
- types: [
17751
- "object"
17752
- ],
17753
- properties: {
17754
- background: {
17755
- types: [
17756
- "string"
17757
- ]
17758
- },
17759
- node: {
17760
- types: [
17761
- "string"
17762
- ]
17763
- },
17764
- nodeBorder: {
17765
- types: [
17766
- "string"
17767
- ]
17768
- },
17769
- nodeText: {
17770
- types: [
17771
- "string"
17772
- ]
17773
- },
17774
- initialNode: {
17775
- types: [
17776
- "string"
17777
- ]
17778
- },
17779
- finalNode: {
17780
- types: [
17781
- "string"
17782
- ]
17783
- },
17784
- arrow: {
17785
- types: [
17786
- "string"
17787
- ]
17788
- },
17789
- arrowText: {
17790
- types: [
17791
- "string"
17792
- ]
17793
- },
17794
- effectText: {
17795
- types: [
17796
- "string"
17797
- ]
17798
- },
17799
- guardText: {
17800
- types: [
17801
- "string"
17802
- ]
17803
- },
17804
- initial: {
17805
- types: [
17806
- "string"
17807
- ]
17808
- }
17809
- },
17810
- required: [
17811
- "background",
17812
- "node",
17813
- "nodeBorder",
17814
- "nodeText",
17815
- "initialNode",
17816
- "finalNode",
17817
- "arrow",
17818
- "arrowText",
17819
- "effectText",
17820
- "guardText",
17821
- "initial"
17822
- ]
17823
- },
17824
- fonts: {
17825
- types: [
17826
- "object"
17827
- ],
17828
- properties: {
17829
- node: {
17830
- types: [
17831
- "string"
17832
- ]
17833
- },
17834
- event: {
17835
- types: [
17836
- "string"
17837
- ]
17838
- },
17839
- effect: {
17840
- types: [
17841
- "string"
17842
- ]
17843
- }
17844
- },
17845
- required: [
17846
- "node",
17847
- "event",
17848
- "effect"
17849
- ]
17850
- }
17851
- },
17852
- required: [
17853
- "nodeRadius",
17854
- "nodeSpacing",
17855
- "initialIndicatorOffset",
17856
- "arrowSize",
17857
- "colors",
17858
- "fonts"
17859
- ]
17860
- }
17861
- }
17862
18072
  ],
17863
- renderCallback: true
18073
+ default: null
17864
18074
  }
17865
18075
  }
17866
18076
  },
@@ -22842,6 +23052,11 @@ var patterns_registry_default = {
22842
23052
  "string"
22843
23053
  ]
22844
23054
  },
23055
+ expandable: {
23056
+ types: [
23057
+ "boolean"
23058
+ ]
23059
+ },
22845
23060
  size: {
22846
23061
  types: [
22847
23062
  "number"
@@ -22933,6 +23148,30 @@ var patterns_registry_default = {
22933
23148
  }
22934
23149
  ]
22935
23150
  },
23151
+ onNodeExpand: {
23152
+ types: [
23153
+ "function"
23154
+ ],
23155
+ description: "Called the first time a node marked `expandable` is expanded, with its path, so its children can be loaded.",
23156
+ kind: "callback",
23157
+ callbackArgs: [
23158
+ {
23159
+ name: "path",
23160
+ type: "string"
23161
+ }
23162
+ ]
23163
+ },
23164
+ expandedPaths: {
23165
+ types: [
23166
+ "array"
23167
+ ],
23168
+ description: "Paths to show expanded (e.g. to reveal a node): each is expanded when it appears here, loading its children if needed.",
23169
+ items: {
23170
+ types: [
23171
+ "string"
23172
+ ]
23173
+ }
23174
+ },
22936
23175
  onNodeSelect: {
22937
23176
  types: [
22938
23177
  "function"
@@ -27418,7 +27657,7 @@ var patterns_registry_default = {
27418
27657
  types: [
27419
27658
  "object"
27420
27659
  ],
27421
- description: "data prop",
27660
+ description: "The orbital to summarize.",
27422
27661
  required: true,
27423
27662
  properties: {
27424
27663
  orbitalName: {
@@ -27433,7 +27672,7 @@ var patterns_registry_default = {
27433
27672
  },
27434
27673
  persistence: {
27435
27674
  types: [
27436
- "string"
27675
+ "object"
27437
27676
  ]
27438
27677
  },
27439
27678
  fields: {
@@ -27605,9 +27844,7 @@ var patterns_registry_default = {
27605
27844
  }
27606
27845
  },
27607
27846
  required: [
27608
- "name",
27609
- "isInitial",
27610
- "isTerminal"
27847
+ "name"
27611
27848
  ]
27612
27849
  }
27613
27850
  },
@@ -27681,7 +27918,6 @@ var patterns_registry_default = {
27681
27918
  "from",
27682
27919
  "to",
27683
27920
  "event",
27684
- "guard",
27685
27921
  "effects",
27686
27922
  "index"
27687
27923
  ]
@@ -27766,7 +28002,188 @@ var patterns_registry_default = {
27766
28002
  "pages",
27767
28003
  "traitDetails",
27768
28004
  "externalLinks"
27769
- ]
28005
+ ],
28006
+ example: {
28007
+ orbitalName: "OrderOrbital",
28008
+ entityName: "Order",
28009
+ persistence: "persistent",
28010
+ fields: [
28011
+ {
28012
+ name: "customer",
28013
+ type: "string",
28014
+ required: true,
28015
+ hasDefault: false
28016
+ },
28017
+ {
28018
+ name: "qty",
28019
+ type: "number",
28020
+ required: true,
28021
+ hasDefault: true
28022
+ },
28023
+ {
28024
+ name: "status",
28025
+ type: "string",
28026
+ required: false,
28027
+ hasDefault: true
28028
+ }
28029
+ ],
28030
+ traits: [
28031
+ {
28032
+ name: "OrderFlow",
28033
+ stateCount: 5,
28034
+ eventCount: 7,
28035
+ transitionCount: 7,
28036
+ emits: [
28037
+ "ORDER_SAVED"
28038
+ ],
28039
+ listens: [
28040
+ "PAYMENT_OK"
28041
+ ]
28042
+ }
28043
+ ],
28044
+ pages: [
28045
+ {
28046
+ name: "Orders",
28047
+ route: "/orders"
28048
+ }
28049
+ ],
28050
+ traitDetails: {
28051
+ OrderFlow: {
28052
+ name: "OrderFlow",
28053
+ linkedEntity: "Order",
28054
+ states: [
28055
+ {
28056
+ name: "browsing",
28057
+ isInitial: true,
28058
+ isTerminal: false
28059
+ },
28060
+ {
28061
+ name: "editing",
28062
+ isInitial: false,
28063
+ isTerminal: false
28064
+ },
28065
+ {
28066
+ name: "saving",
28067
+ isInitial: false,
28068
+ isTerminal: false
28069
+ },
28070
+ {
28071
+ name: "confirmed",
28072
+ isInitial: false,
28073
+ isTerminal: true
28074
+ },
28075
+ {
28076
+ name: "failed",
28077
+ isInitial: false,
28078
+ isTerminal: false
28079
+ }
28080
+ ],
28081
+ transitions: [
28082
+ {
28083
+ from: "browsing",
28084
+ to: "editing",
28085
+ event: "EDIT",
28086
+ effects: [
28087
+ {
28088
+ type: "render-ui",
28089
+ args: []
28090
+ }
28091
+ ],
28092
+ index: 0
28093
+ },
28094
+ {
28095
+ from: "editing",
28096
+ to: "saving",
28097
+ event: "SAVE",
28098
+ effects: [
28099
+ {
28100
+ type: "persist",
28101
+ args: []
28102
+ },
28103
+ {
28104
+ type: "notify",
28105
+ args: []
28106
+ }
28107
+ ],
28108
+ index: 1
28109
+ },
28110
+ {
28111
+ from: "saving",
28112
+ to: "confirmed",
28113
+ event: "SAVED",
28114
+ effects: [
28115
+ {
28116
+ type: "emit",
28117
+ args: []
28118
+ },
28119
+ {
28120
+ type: "render-ui",
28121
+ args: []
28122
+ }
28123
+ ],
28124
+ index: 2
28125
+ },
28126
+ {
28127
+ from: "saving",
28128
+ to: "failed",
28129
+ event: "SAVE_FAILED",
28130
+ effects: [
28131
+ {
28132
+ type: "notify",
28133
+ args: []
28134
+ }
28135
+ ],
28136
+ index: 3
28137
+ },
28138
+ {
28139
+ from: "failed",
28140
+ to: "editing",
28141
+ event: "RETRY",
28142
+ effects: [],
28143
+ index: 4
28144
+ },
28145
+ {
28146
+ from: "editing",
28147
+ to: "browsing",
28148
+ event: "CANCEL",
28149
+ effects: [
28150
+ {
28151
+ type: "render-ui",
28152
+ args: []
28153
+ }
28154
+ ],
28155
+ index: 5
28156
+ },
28157
+ {
28158
+ from: "confirmed",
28159
+ to: "browsing",
28160
+ event: "DONE",
28161
+ effects: [
28162
+ {
28163
+ type: "navigate",
28164
+ args: []
28165
+ }
28166
+ ],
28167
+ index: 6
28168
+ }
28169
+ ],
28170
+ emittedEvents: [
28171
+ "ORDER_SAVED"
28172
+ ],
28173
+ listenedEvents: [
28174
+ "PAYMENT_OK"
28175
+ ]
28176
+ }
28177
+ },
28178
+ externalLinks: [
28179
+ {
28180
+ targetOrbital: "PaymentOrbital",
28181
+ eventName: "PAYMENT_OK",
28182
+ direction: "in",
28183
+ traitName: "OrderFlow"
28184
+ }
28185
+ ]
28186
+ }
27770
28187
  }
27771
28188
  }
27772
28189
  },
@@ -27776,8 +28193,8 @@ var patterns_registry_default = {
27776
28193
  sourceFile: "components/avl/molecules/ModuleCard.tsx",
27777
28194
  tier: "molecules",
27778
28195
  family: "avl",
27779
- description: "ModuleCard \u2014 a card summarizing one course module or lesson with progress and entry point.",
27780
- capabilities: "course module card, lesson card, curriculum unit card, learning-path step card",
28196
+ description: "ModuleCard \u2014 a compact summary card for one orbital module: its entity and fields, a mini state machine per trait, and its pages.",
28197
+ capabilities: "orbital module summary card, entity and trait overview card, app architecture node card",
27781
28198
  suggestedFor: [
27782
28199
  "module",
27783
28200
  "card",
@@ -27789,7 +28206,7 @@ var patterns_registry_default = {
27789
28206
  types: [
27790
28207
  "object"
27791
28208
  ],
27792
- description: "data prop",
28209
+ description: "The orbital to summarize.",
27793
28210
  required: true,
27794
28211
  properties: {
27795
28212
  orbitalName: {
@@ -27804,7 +28221,7 @@ var patterns_registry_default = {
27804
28221
  },
27805
28222
  persistence: {
27806
28223
  types: [
27807
- "string"
28224
+ "object"
27808
28225
  ]
27809
28226
  },
27810
28227
  fields: {
@@ -27976,9 +28393,7 @@ var patterns_registry_default = {
27976
28393
  }
27977
28394
  },
27978
28395
  required: [
27979
- "name",
27980
- "isInitial",
27981
- "isTerminal"
28396
+ "name"
27982
28397
  ]
27983
28398
  }
27984
28399
  },
@@ -28052,7 +28467,6 @@ var patterns_registry_default = {
28052
28467
  "from",
28053
28468
  "to",
28054
28469
  "event",
28055
- "guard",
28056
28470
  "effects",
28057
28471
  "index"
28058
28472
  ]
@@ -28137,7 +28551,188 @@ var patterns_registry_default = {
28137
28551
  "pages",
28138
28552
  "traitDetails",
28139
28553
  "externalLinks"
28140
- ]
28554
+ ],
28555
+ example: {
28556
+ orbitalName: "OrderOrbital",
28557
+ entityName: "Order",
28558
+ persistence: "persistent",
28559
+ fields: [
28560
+ {
28561
+ name: "customer",
28562
+ type: "string",
28563
+ required: true,
28564
+ hasDefault: false
28565
+ },
28566
+ {
28567
+ name: "qty",
28568
+ type: "number",
28569
+ required: true,
28570
+ hasDefault: true
28571
+ },
28572
+ {
28573
+ name: "status",
28574
+ type: "string",
28575
+ required: false,
28576
+ hasDefault: true
28577
+ }
28578
+ ],
28579
+ traits: [
28580
+ {
28581
+ name: "OrderFlow",
28582
+ stateCount: 5,
28583
+ eventCount: 7,
28584
+ transitionCount: 7,
28585
+ emits: [
28586
+ "ORDER_SAVED"
28587
+ ],
28588
+ listens: [
28589
+ "PAYMENT_OK"
28590
+ ]
28591
+ }
28592
+ ],
28593
+ pages: [
28594
+ {
28595
+ name: "Orders",
28596
+ route: "/orders"
28597
+ }
28598
+ ],
28599
+ traitDetails: {
28600
+ OrderFlow: {
28601
+ name: "OrderFlow",
28602
+ linkedEntity: "Order",
28603
+ states: [
28604
+ {
28605
+ name: "browsing",
28606
+ isInitial: true,
28607
+ isTerminal: false
28608
+ },
28609
+ {
28610
+ name: "editing",
28611
+ isInitial: false,
28612
+ isTerminal: false
28613
+ },
28614
+ {
28615
+ name: "saving",
28616
+ isInitial: false,
28617
+ isTerminal: false
28618
+ },
28619
+ {
28620
+ name: "confirmed",
28621
+ isInitial: false,
28622
+ isTerminal: true
28623
+ },
28624
+ {
28625
+ name: "failed",
28626
+ isInitial: false,
28627
+ isTerminal: false
28628
+ }
28629
+ ],
28630
+ transitions: [
28631
+ {
28632
+ from: "browsing",
28633
+ to: "editing",
28634
+ event: "EDIT",
28635
+ effects: [
28636
+ {
28637
+ type: "render-ui",
28638
+ args: []
28639
+ }
28640
+ ],
28641
+ index: 0
28642
+ },
28643
+ {
28644
+ from: "editing",
28645
+ to: "saving",
28646
+ event: "SAVE",
28647
+ effects: [
28648
+ {
28649
+ type: "persist",
28650
+ args: []
28651
+ },
28652
+ {
28653
+ type: "notify",
28654
+ args: []
28655
+ }
28656
+ ],
28657
+ index: 1
28658
+ },
28659
+ {
28660
+ from: "saving",
28661
+ to: "confirmed",
28662
+ event: "SAVED",
28663
+ effects: [
28664
+ {
28665
+ type: "emit",
28666
+ args: []
28667
+ },
28668
+ {
28669
+ type: "render-ui",
28670
+ args: []
28671
+ }
28672
+ ],
28673
+ index: 2
28674
+ },
28675
+ {
28676
+ from: "saving",
28677
+ to: "failed",
28678
+ event: "SAVE_FAILED",
28679
+ effects: [
28680
+ {
28681
+ type: "notify",
28682
+ args: []
28683
+ }
28684
+ ],
28685
+ index: 3
28686
+ },
28687
+ {
28688
+ from: "failed",
28689
+ to: "editing",
28690
+ event: "RETRY",
28691
+ effects: [],
28692
+ index: 4
28693
+ },
28694
+ {
28695
+ from: "editing",
28696
+ to: "browsing",
28697
+ event: "CANCEL",
28698
+ effects: [
28699
+ {
28700
+ type: "render-ui",
28701
+ args: []
28702
+ }
28703
+ ],
28704
+ index: 5
28705
+ },
28706
+ {
28707
+ from: "confirmed",
28708
+ to: "browsing",
28709
+ event: "DONE",
28710
+ effects: [
28711
+ {
28712
+ type: "navigate",
28713
+ args: []
28714
+ }
28715
+ ],
28716
+ index: 6
28717
+ }
28718
+ ],
28719
+ emittedEvents: [
28720
+ "ORDER_SAVED"
28721
+ ],
28722
+ listenedEvents: [
28723
+ "PAYMENT_OK"
28724
+ ]
28725
+ }
28726
+ },
28727
+ externalLinks: [
28728
+ {
28729
+ targetOrbital: "PaymentOrbital",
28730
+ eventName: "PAYMENT_OK",
28731
+ direction: "in",
28732
+ traitName: "OrderFlow"
28733
+ }
28734
+ ]
28735
+ }
28141
28736
  }
28142
28737
  }
28143
28738
  },
@@ -50155,7 +50750,6 @@ var patterns_registry_default = {
50155
50750
  },
50156
50751
  required: [
50157
50752
  "name",
50158
- "parent",
50159
50753
  "pivot",
50160
50754
  "tip"
50161
50755
  ]
@@ -51143,6 +51737,524 @@ var patterns_registry_default = {
51143
51737
  description: "className prop"
51144
51738
  }
51145
51739
  }
51740
+ },
51741
+ "avl-state-machine": {
51742
+ type: "avl-state-machine",
51743
+ category: "display",
51744
+ sourceFile: "components/avl/molecules/AvlStateMachine.tsx",
51745
+ tier: "molecules",
51746
+ family: "avl",
51747
+ description: "AvlStateMachine component",
51748
+ suggestedFor: [
51749
+ "avl",
51750
+ "state",
51751
+ "machine",
51752
+ "avl state machine"
51753
+ ],
51754
+ typicalSize: "medium",
51755
+ propsSchema: {
51756
+ trait: {
51757
+ types: [
51758
+ "object"
51759
+ ],
51760
+ description: "The trait to draw (see `parseTraitLevel`).",
51761
+ required: true,
51762
+ properties: {
51763
+ name: {
51764
+ types: [
51765
+ "string"
51766
+ ]
51767
+ },
51768
+ linkedEntity: {
51769
+ types: [
51770
+ "string"
51771
+ ]
51772
+ },
51773
+ states: {
51774
+ types: [
51775
+ "array"
51776
+ ],
51777
+ items: {
51778
+ types: [
51779
+ "object"
51780
+ ],
51781
+ properties: {
51782
+ name: {
51783
+ types: [
51784
+ "string"
51785
+ ]
51786
+ },
51787
+ isInitial: {
51788
+ types: [
51789
+ "boolean"
51790
+ ]
51791
+ },
51792
+ isTerminal: {
51793
+ types: [
51794
+ "boolean"
51795
+ ]
51796
+ }
51797
+ },
51798
+ required: [
51799
+ "name"
51800
+ ]
51801
+ }
51802
+ },
51803
+ transitions: {
51804
+ types: [
51805
+ "array"
51806
+ ],
51807
+ items: {
51808
+ types: [
51809
+ "object"
51810
+ ],
51811
+ properties: {
51812
+ from: {
51813
+ types: [
51814
+ "string"
51815
+ ]
51816
+ },
51817
+ to: {
51818
+ types: [
51819
+ "string"
51820
+ ]
51821
+ },
51822
+ event: {
51823
+ types: [
51824
+ "string"
51825
+ ]
51826
+ },
51827
+ guard: {
51828
+ types: [
51829
+ "sexpr"
51830
+ ]
51831
+ },
51832
+ effects: {
51833
+ types: [
51834
+ "array"
51835
+ ],
51836
+ items: {
51837
+ types: [
51838
+ "object"
51839
+ ],
51840
+ properties: {
51841
+ type: {
51842
+ types: [
51843
+ "string"
51844
+ ]
51845
+ },
51846
+ args: {
51847
+ types: [
51848
+ "array"
51849
+ ],
51850
+ items: {
51851
+ types: [
51852
+ "sexpr"
51853
+ ]
51854
+ }
51855
+ }
51856
+ },
51857
+ required: [
51858
+ "type",
51859
+ "args"
51860
+ ]
51861
+ }
51862
+ },
51863
+ index: {
51864
+ types: [
51865
+ "number"
51866
+ ]
51867
+ }
51868
+ },
51869
+ required: [
51870
+ "from",
51871
+ "to",
51872
+ "event",
51873
+ "effects",
51874
+ "index"
51875
+ ]
51876
+ }
51877
+ },
51878
+ emittedEvents: {
51879
+ types: [
51880
+ "array"
51881
+ ],
51882
+ items: {
51883
+ types: [
51884
+ "string"
51885
+ ]
51886
+ }
51887
+ },
51888
+ listenedEvents: {
51889
+ types: [
51890
+ "array"
51891
+ ],
51892
+ items: {
51893
+ types: [
51894
+ "string"
51895
+ ]
51896
+ }
51897
+ }
51898
+ },
51899
+ propertyRequired: [
51900
+ "name",
51901
+ "linkedEntity",
51902
+ "states",
51903
+ "transitions",
51904
+ "emittedEvents",
51905
+ "listenedEvents"
51906
+ ],
51907
+ example: {
51908
+ name: "OrderFlow",
51909
+ linkedEntity: "Order",
51910
+ states: [
51911
+ {
51912
+ name: "browsing",
51913
+ isInitial: true,
51914
+ isTerminal: false
51915
+ },
51916
+ {
51917
+ name: "editing",
51918
+ isInitial: false,
51919
+ isTerminal: false
51920
+ },
51921
+ {
51922
+ name: "saving",
51923
+ isInitial: false,
51924
+ isTerminal: false
51925
+ },
51926
+ {
51927
+ name: "confirmed",
51928
+ isInitial: false,
51929
+ isTerminal: true
51930
+ },
51931
+ {
51932
+ name: "failed",
51933
+ isInitial: false,
51934
+ isTerminal: false
51935
+ }
51936
+ ],
51937
+ transitions: [
51938
+ {
51939
+ from: "browsing",
51940
+ to: "editing",
51941
+ event: "EDIT",
51942
+ effects: [
51943
+ {
51944
+ type: "render-ui",
51945
+ args: []
51946
+ }
51947
+ ],
51948
+ index: 0
51949
+ },
51950
+ {
51951
+ from: "editing",
51952
+ to: "saving",
51953
+ event: "SAVE",
51954
+ effects: [
51955
+ {
51956
+ type: "persist",
51957
+ args: []
51958
+ },
51959
+ {
51960
+ type: "notify",
51961
+ args: []
51962
+ }
51963
+ ],
51964
+ index: 1
51965
+ },
51966
+ {
51967
+ from: "saving",
51968
+ to: "confirmed",
51969
+ event: "SAVED",
51970
+ effects: [
51971
+ {
51972
+ type: "emit",
51973
+ args: []
51974
+ },
51975
+ {
51976
+ type: "render-ui",
51977
+ args: []
51978
+ }
51979
+ ],
51980
+ index: 2
51981
+ },
51982
+ {
51983
+ from: "saving",
51984
+ to: "failed",
51985
+ event: "SAVE_FAILED",
51986
+ effects: [
51987
+ {
51988
+ type: "notify",
51989
+ args: []
51990
+ }
51991
+ ],
51992
+ index: 3
51993
+ },
51994
+ {
51995
+ from: "failed",
51996
+ to: "editing",
51997
+ event: "RETRY",
51998
+ effects: [],
51999
+ index: 4
52000
+ },
52001
+ {
52002
+ from: "editing",
52003
+ to: "browsing",
52004
+ event: "CANCEL",
52005
+ effects: [
52006
+ {
52007
+ type: "render-ui",
52008
+ args: []
52009
+ }
52010
+ ],
52011
+ index: 5
52012
+ },
52013
+ {
52014
+ from: "confirmed",
52015
+ to: "browsing",
52016
+ event: "DONE",
52017
+ effects: [
52018
+ {
52019
+ type: "navigate",
52020
+ args: []
52021
+ }
52022
+ ],
52023
+ index: 6
52024
+ }
52025
+ ],
52026
+ emittedEvents: [
52027
+ "ORDER_SAVED"
52028
+ ],
52029
+ listenedEvents: [
52030
+ "PAYMENT_OK"
52031
+ ]
52032
+ }
52033
+ },
52034
+ activeState: {
52035
+ types: [
52036
+ "string"
52037
+ ],
52038
+ description: "State execution is currently in."
52039
+ },
52040
+ activeTransition: {
52041
+ types: [
52042
+ "number"
52043
+ ],
52044
+ description: "`index` of the transition that just fired."
52045
+ },
52046
+ visitedStates: {
52047
+ types: [
52048
+ "array"
52049
+ ],
52050
+ description: "States already passed through, in order.",
52051
+ items: {
52052
+ types: [
52053
+ "string"
52054
+ ]
52055
+ }
52056
+ },
52057
+ stateClickEvent: {
52058
+ types: [
52059
+ "string"
52060
+ ],
52061
+ description: "Emits UI:{stateClickEvent} with { stateId } when a state is clicked.",
52062
+ kind: "event-ref",
52063
+ emitPayloadSchema: [
52064
+ {
52065
+ name: "stateId",
52066
+ type: "string",
52067
+ required: true
52068
+ }
52069
+ ]
52070
+ },
52071
+ transitionClickEvent: {
52072
+ types: [
52073
+ "string"
52074
+ ],
52075
+ description: "Emits UI:{transitionClickEvent} with { index, event, from, to } when a transition label is clicked.",
52076
+ kind: "event-ref",
52077
+ emitPayloadSchema: [
52078
+ {
52079
+ name: "index",
52080
+ type: "number",
52081
+ required: true
52082
+ },
52083
+ {
52084
+ name: "event",
52085
+ type: "string",
52086
+ required: true
52087
+ },
52088
+ {
52089
+ name: "from",
52090
+ type: "string",
52091
+ required: true
52092
+ },
52093
+ {
52094
+ name: "to",
52095
+ type: "string",
52096
+ required: true
52097
+ }
52098
+ ]
52099
+ },
52100
+ selectedState: {
52101
+ types: [
52102
+ "string"
52103
+ ],
52104
+ description: "State picked in an editor (first click)."
52105
+ },
52106
+ pendingSourceState: {
52107
+ types: [
52108
+ "string"
52109
+ ],
52110
+ description: "Source of a transition being drawn \u2014 the next state click picks its target."
52111
+ },
52112
+ nodeShape: {
52113
+ types: [
52114
+ "string"
52115
+ ],
52116
+ description: "Node silhouette. @default 'pill'",
52117
+ enumValues: [
52118
+ "pill",
52119
+ "gear"
52120
+ ],
52121
+ default: "pill"
52122
+ },
52123
+ entityFields: {
52124
+ types: [
52125
+ "array"
52126
+ ],
52127
+ description: "Entity field names listed in the header.",
52128
+ items: {
52129
+ types: [
52130
+ "string"
52131
+ ]
52132
+ }
52133
+ },
52134
+ direction: {
52135
+ types: [
52136
+ "string"
52137
+ ],
52138
+ description: "Flow direction. @default 'ltr'",
52139
+ enumValues: [
52140
+ "ltr",
52141
+ "rtl"
52142
+ ],
52143
+ default: "ltr"
52144
+ },
52145
+ showHeader: {
52146
+ types: [
52147
+ "boolean"
52148
+ ],
52149
+ description: "Show the trait header (name, entity, listens/emits). @default true",
52150
+ default: true
52151
+ },
52152
+ className: {
52153
+ types: [
52154
+ "string"
52155
+ ],
52156
+ description: "className prop"
52157
+ }
52158
+ }
52159
+ },
52160
+ "avl-glyph": {
52161
+ type: "avl-glyph",
52162
+ category: "component",
52163
+ sourceFile: "components/avl/molecules/AvlGlyph.tsx",
52164
+ tier: "molecules",
52165
+ family: "avl",
52166
+ description: "AvlGlyph component",
52167
+ suggestedFor: [
52168
+ "avl",
52169
+ "glyph",
52170
+ "avl glyph"
52171
+ ],
52172
+ typicalSize: "medium",
52173
+ propsSchema: {
52174
+ kind: {
52175
+ types: [
52176
+ "string"
52177
+ ],
52178
+ description: "Which notation symbol to draw.",
52179
+ required: true,
52180
+ enumValues: [
52181
+ "application",
52182
+ "orbital",
52183
+ "entity",
52184
+ "trait",
52185
+ "page",
52186
+ "state",
52187
+ "transition",
52188
+ "event",
52189
+ "guard",
52190
+ "effect",
52191
+ "field",
52192
+ "fieldType",
52193
+ "binding",
52194
+ "bindingRef",
52195
+ "persistence",
52196
+ "operator",
52197
+ "sexpr",
52198
+ "literal"
52199
+ ],
52200
+ example: "state"
52201
+ },
52202
+ label: {
52203
+ types: [
52204
+ "string"
52205
+ ],
52206
+ description: "Caption, and the drawn text for operator / literal / bindingRef symbols."
52207
+ },
52208
+ effectType: {
52209
+ types: [
52210
+ "string"
52211
+ ],
52212
+ description: "Effect symbol variant. @default 'set'"
52213
+ },
52214
+ fieldType: {
52215
+ types: [
52216
+ "object"
52217
+ ],
52218
+ description: "Field-type symbol variant. @default 'string'"
52219
+ },
52220
+ persistence: {
52221
+ types: [
52222
+ "object"
52223
+ ],
52224
+ description: "Persistence symbol variant (also the entity's ring). @default 'persistent'"
52225
+ },
52226
+ namespace: {
52227
+ types: [
52228
+ "object"
52229
+ ],
52230
+ description: "Operator category tint. @default 'arithmetic'"
52231
+ },
52232
+ size: {
52233
+ types: [
52234
+ "string"
52235
+ ],
52236
+ description: "Symbol height. @default 'md'",
52237
+ enumValues: [
52238
+ "sm",
52239
+ "md",
52240
+ "lg"
52241
+ ],
52242
+ default: "md"
52243
+ },
52244
+ showCaption: {
52245
+ types: [
52246
+ "boolean"
52247
+ ],
52248
+ description: "Show the caption under the symbol. @default true",
52249
+ default: true
52250
+ },
52251
+ className: {
52252
+ types: [
52253
+ "string"
52254
+ ],
52255
+ description: "className prop"
52256
+ }
52257
+ }
51146
52258
  }
51147
52259
  },
51148
52260
  categories: [
@@ -55182,7 +56294,7 @@ var integrators_registry_default = {
55182
56294
  // src/patterns/component-mapping.json
55183
56295
  var component_mapping_default = {
55184
56296
  version: "1.0.0",
55185
- exportedAt: "2026-09-27T13:02:32.256Z",
56297
+ exportedAt: "2026-09-28T12:49:04.761Z",
55186
56298
  mappings: {
55187
56299
  "page-header": {
55188
56300
  component: "PageHeader",
@@ -56475,6 +57587,16 @@ var component_mapping_default = {
56475
57587
  component: "CommitRow",
56476
57588
  importPath: "@/components/core/molecules/CommitRow",
56477
57589
  category: "component"
57590
+ },
57591
+ "avl-state-machine": {
57592
+ component: "AvlStateMachine",
57593
+ importPath: "@/components/avl/molecules/AvlStateMachine",
57594
+ category: "display"
57595
+ },
57596
+ "avl-glyph": {
57597
+ component: "AvlGlyph",
57598
+ importPath: "@/components/avl/molecules/AvlGlyph",
57599
+ category: "component"
56478
57600
  }
56479
57601
  }
56480
57602
  };
@@ -56482,7 +57604,7 @@ var component_mapping_default = {
56482
57604
  // src/patterns/event-contracts.json
56483
57605
  var event_contracts_default = {
56484
57606
  version: "1.0.0",
56485
- exportedAt: "2026-09-27T13:02:32.256Z",
57607
+ exportedAt: "2026-09-28T12:49:04.761Z",
56486
57608
  contracts: {
56487
57609
  form: {
56488
57610
  emits: [
@@ -57595,6 +58717,8 @@ var PATTERN_TYPES = [
57595
58717
  "atlas-panel",
57596
58718
  "auth-layout",
57597
58719
  "avatar",
58720
+ "avl-glyph",
58721
+ "avl-state-machine",
57598
58722
  "badge",
57599
58723
  "behavior-view",
57600
58724
  "biology-canvas",