@almadar/core 10.39.0 → 10.40.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/dist/index.js CHANGED
@@ -479,6 +479,11 @@ var OrbitalEntitySchema = z.object({
479
479
  name: z.string().min(1, "Entity name is required"),
480
480
  persistence: EntityPersistenceSchema.default("persistent"),
481
481
  shared: z.boolean().optional(),
482
+ // Must stay in step with the Rust serde field (`EntityDefinition.identity`,
483
+ // orbital-core/src/schema/types.rs). `z.object()` STRIPS unknown keys rather
484
+ // than rejecting them, so a Rust-only field works on the compiled path and
485
+ // silently vanishes on the interpreter path.
486
+ identity: z.boolean().optional(),
482
487
  collection: z.string().optional(),
483
488
  fields: z.array(EntityFieldSchema).min(1, "At least one field is required"),
484
489
  instances: z.array(z.record(z.unknown())).optional(),
@@ -2107,7 +2112,7 @@ function getInteractionModelForDomain(domain) {
2107
2112
  // src/patterns/patterns-registry.json
2108
2113
  var patterns_registry_default = {
2109
2114
  version: "1.0.0",
2110
- exportedAt: "2026-07-27T04:55:27.017Z",
2115
+ exportedAt: "2026-07-28T10:40:00.004Z",
2111
2116
  patterns: {
2112
2117
  "entity-table": {
2113
2118
  type: "entity-table",
@@ -11928,6 +11933,21 @@ var patterns_registry_default = {
11928
11933
  ],
11929
11934
  description: "Inline style"
11930
11935
  },
11936
+ format: {
11937
+ types: [
11938
+ "string"
11939
+ ],
11940
+ description: 'Value formatting applied to string/number/Date content \u2014 `none` (the default) renders content as-is. Covers the raw-ISO-date class: a bound datetime renders human-readable via `format="date"|"time"|"datetime"`.',
11941
+ enumValues: [
11942
+ "none",
11943
+ "date",
11944
+ "time",
11945
+ "datetime",
11946
+ "number",
11947
+ "currency",
11948
+ "percent"
11949
+ ]
11950
+ },
11931
11951
  content: {
11932
11952
  types: [
11933
11953
  "node"
@@ -16725,6 +16745,27 @@ var patterns_registry_default = {
16725
16745
  "number"
16726
16746
  ]
16727
16747
  },
16748
+ mark: {
16749
+ types: [
16750
+ "object"
16751
+ ],
16752
+ properties: {
16753
+ kind: {
16754
+ types: [
16755
+ "unknown"
16756
+ ]
16757
+ },
16758
+ suggestionId: {
16759
+ types: [
16760
+ "string"
16761
+ ]
16762
+ }
16763
+ },
16764
+ required: [
16765
+ "kind",
16766
+ "suggestionId"
16767
+ ]
16768
+ },
16728
16769
  x: {
16729
16770
  types: [
16730
16771
  "number"
@@ -16783,6 +16824,48 @@ var patterns_registry_default = {
16783
16824
  ]
16784
16825
  }
16785
16826
  },
16827
+ proposedEdges: {
16828
+ types: [
16829
+ "array"
16830
+ ],
16831
+ description: "Uncommitted proposal links \u2014 rendered dashed/faint in a separate pass, never folded into the layout springs.",
16832
+ items: {
16833
+ types: [
16834
+ "object"
16835
+ ],
16836
+ properties: {
16837
+ source: {
16838
+ types: [
16839
+ "string"
16840
+ ]
16841
+ },
16842
+ target: {
16843
+ types: [
16844
+ "string"
16845
+ ]
16846
+ },
16847
+ label: {
16848
+ types: [
16849
+ "string"
16850
+ ]
16851
+ },
16852
+ weight: {
16853
+ types: [
16854
+ "number"
16855
+ ]
16856
+ },
16857
+ color: {
16858
+ types: [
16859
+ "string"
16860
+ ]
16861
+ }
16862
+ },
16863
+ required: [
16864
+ "source",
16865
+ "target"
16866
+ ]
16867
+ }
16868
+ },
16786
16869
  similarity: {
16787
16870
  types: [
16788
16871
  "array"
@@ -16930,6 +17013,111 @@ var patterns_registry_default = {
16930
17013
  "number"
16931
17014
  ]
16932
17015
  },
17016
+ mark: {
17017
+ types: [
17018
+ "object"
17019
+ ],
17020
+ properties: {
17021
+ kind: {
17022
+ types: [
17023
+ "unknown"
17024
+ ]
17025
+ },
17026
+ suggestionId: {
17027
+ types: [
17028
+ "string"
17029
+ ]
17030
+ }
17031
+ },
17032
+ required: [
17033
+ "kind",
17034
+ "suggestionId"
17035
+ ]
17036
+ },
17037
+ x: {
17038
+ types: [
17039
+ "number"
17040
+ ]
17041
+ },
17042
+ y: {
17043
+ types: [
17044
+ "number"
17045
+ ]
17046
+ }
17047
+ },
17048
+ required: [
17049
+ "id"
17050
+ ]
17051
+ }
17052
+ }
17053
+ ]
17054
+ },
17055
+ onMarkClick: {
17056
+ types: [
17057
+ "function"
17058
+ ],
17059
+ description: "On marked-node click (suggestion/proposal target). Takes priority over onNodeClick.",
17060
+ kind: "callback",
17061
+ callbackArgs: [
17062
+ {
17063
+ name: "node",
17064
+ type: "object",
17065
+ schema: {
17066
+ types: [
17067
+ "object"
17068
+ ],
17069
+ properties: {
17070
+ id: {
17071
+ types: [
17072
+ "string"
17073
+ ]
17074
+ },
17075
+ label: {
17076
+ types: [
17077
+ "string"
17078
+ ]
17079
+ },
17080
+ group: {
17081
+ types: [
17082
+ "string"
17083
+ ]
17084
+ },
17085
+ color: {
17086
+ types: [
17087
+ "string"
17088
+ ]
17089
+ },
17090
+ size: {
17091
+ types: [
17092
+ "number"
17093
+ ]
17094
+ },
17095
+ badge: {
17096
+ types: [
17097
+ "number"
17098
+ ]
17099
+ },
17100
+ mark: {
17101
+ types: [
17102
+ "object"
17103
+ ],
17104
+ properties: {
17105
+ kind: {
17106
+ types: [
17107
+ "unknown"
17108
+ ]
17109
+ },
17110
+ suggestionId: {
17111
+ types: [
17112
+ "string"
17113
+ ]
17114
+ }
17115
+ },
17116
+ required: [
17117
+ "kind",
17118
+ "suggestionId"
17119
+ ]
17120
+ },
16933
17121
  x: {
16934
17122
  types: [
16935
17123
  "number"
@@ -16993,6 +17181,27 @@ var patterns_registry_default = {
16993
17181
  "number"
16994
17182
  ]
16995
17183
  },
17184
+ mark: {
17185
+ types: [
17186
+ "object"
17187
+ ],
17188
+ properties: {
17189
+ kind: {
17190
+ types: [
17191
+ "unknown"
17192
+ ]
17193
+ },
17194
+ suggestionId: {
17195
+ types: [
17196
+ "string"
17197
+ ]
17198
+ }
17199
+ },
17200
+ required: [
17201
+ "kind",
17202
+ "suggestionId"
17203
+ ]
17204
+ },
16996
17205
  x: {
16997
17206
  types: [
16998
17207
  "number"
@@ -17056,6 +17265,27 @@ var patterns_registry_default = {
17056
17265
  "number"
17057
17266
  ]
17058
17267
  },
17268
+ mark: {
17269
+ types: [
17270
+ "object"
17271
+ ],
17272
+ properties: {
17273
+ kind: {
17274
+ types: [
17275
+ "unknown"
17276
+ ]
17277
+ },
17278
+ suggestionId: {
17279
+ types: [
17280
+ "string"
17281
+ ]
17282
+ }
17283
+ },
17284
+ required: [
17285
+ "kind",
17286
+ "suggestionId"
17287
+ ]
17288
+ },
17059
17289
  x: {
17060
17290
  types: [
17061
17291
  "number"
@@ -19811,12 +20041,24 @@ var patterns_registry_default = {
19811
20041
  ],
19812
20042
  description: 'Field name identifying the sender (used with variant: "message")'
19813
20043
  },
20044
+ senderLabelField: {
20045
+ types: [
20046
+ "string"
20047
+ ],
20048
+ description: 'Field holding the sender\'s human-readable name (used with variant: "message"). Defaults to `senderField`. Set this when `senderField` holds an id \u2014 an id-keyed thread otherwise labels bubbles `staff-1` instead of `Sam Staff`.'
20049
+ },
19814
20050
  currentUser: {
19815
20051
  types: [
19816
20052
  "string"
19817
20053
  ],
19818
20054
  description: 'Current user identifier; messages matching this value align right (used with variant: "message")'
19819
20055
  },
20056
+ emptyMessage: {
20057
+ types: [
20058
+ "string"
20059
+ ],
20060
+ description: 'Message shown when there are no rows. Falls back to the generic "no items" translation. `TableView` already exposes this; an agenda or an inbox wants to say what "empty" means in its own words.'
20061
+ },
19820
20062
  className: {
19821
20063
  types: [
19822
20064
  "string"
@@ -43342,74 +43584,180 @@ var integrators_registry_default = {
43342
43584
  name: "cloneRepo",
43343
43585
  description: "Clone a repository",
43344
43586
  params: [
43345
- { name: "repo", type: "string", required: true, description: "Repository URL or owner/repo" },
43346
- { name: "branch", type: "string", required: false, description: "Branch to clone" }
43587
+ {
43588
+ name: "repo",
43589
+ type: "string",
43590
+ required: true,
43591
+ description: "Repository URL or owner/repo"
43592
+ },
43593
+ {
43594
+ name: "branch",
43595
+ type: "string",
43596
+ required: false,
43597
+ description: "Branch to clone"
43598
+ }
43347
43599
  ],
43348
- responseShape: { path: "string", branch: "string" }
43600
+ responseShape: {
43601
+ path: "string",
43602
+ branch: "string"
43603
+ }
43349
43604
  },
43350
43605
  {
43351
43606
  name: "createBranch",
43352
43607
  description: "Create a new branch",
43353
43608
  params: [
43354
- { name: "repo", type: "string", required: true, description: "Local repo path" },
43355
- { name: "branch", type: "string", required: true, description: "Branch name" }
43609
+ {
43610
+ name: "repo",
43611
+ type: "string",
43612
+ required: true,
43613
+ description: "Local repo path"
43614
+ },
43615
+ {
43616
+ name: "branch",
43617
+ type: "string",
43618
+ required: true,
43619
+ description: "Branch name"
43620
+ }
43356
43621
  ],
43357
- responseShape: { branch: "string" }
43622
+ responseShape: {
43623
+ branch: "string"
43624
+ }
43358
43625
  },
43359
43626
  {
43360
43627
  name: "commit",
43361
43628
  description: "Commit changes",
43362
43629
  params: [
43363
- { name: "repo", type: "string", required: true, description: "Local repo path" },
43364
- { name: "message", type: "string", required: true, description: "Commit message" },
43365
- { name: "files", type: "array", required: false, description: "Files to stage" }
43630
+ {
43631
+ name: "repo",
43632
+ type: "string",
43633
+ required: true,
43634
+ description: "Local repo path"
43635
+ },
43636
+ {
43637
+ name: "message",
43638
+ type: "string",
43639
+ required: true,
43640
+ description: "Commit message"
43641
+ },
43642
+ {
43643
+ name: "files",
43644
+ type: "array",
43645
+ required: false,
43646
+ description: "Files to stage"
43647
+ }
43366
43648
  ],
43367
- responseShape: { hash: "string", message: "string" }
43649
+ responseShape: {
43650
+ hash: "string",
43651
+ message: "string"
43652
+ }
43368
43653
  },
43369
43654
  {
43370
43655
  name: "push",
43371
43656
  description: "Push commits to remote",
43372
43657
  params: [
43373
- { name: "repo", type: "string", required: true, description: "Local repo path" },
43374
- { name: "branch", type: "string", required: false, description: "Branch to push" }
43658
+ {
43659
+ name: "repo",
43660
+ type: "string",
43661
+ required: true,
43662
+ description: "Local repo path"
43663
+ },
43664
+ {
43665
+ name: "branch",
43666
+ type: "string",
43667
+ required: false,
43668
+ description: "Branch to push"
43669
+ }
43375
43670
  ],
43376
- responseShape: { success: "boolean" }
43671
+ responseShape: {
43672
+ success: "boolean"
43673
+ }
43377
43674
  },
43378
43675
  {
43379
43676
  name: "createPR",
43380
43677
  description: "Create a pull request",
43381
43678
  params: [
43382
- { name: "title", type: "string", required: true, description: "PR title" },
43383
- { name: "body", type: "string", required: false, description: "PR description" },
43384
- { name: "head", type: "string", required: true, description: "Head branch" },
43385
- { name: "base", type: "string", required: false, description: "Base branch (default: main)" }
43679
+ {
43680
+ name: "title",
43681
+ type: "string",
43682
+ required: true,
43683
+ description: "PR title"
43684
+ },
43685
+ {
43686
+ name: "body",
43687
+ type: "string",
43688
+ required: false,
43689
+ description: "PR description"
43690
+ },
43691
+ {
43692
+ name: "head",
43693
+ type: "string",
43694
+ required: true,
43695
+ description: "Head branch"
43696
+ },
43697
+ {
43698
+ name: "base",
43699
+ type: "string",
43700
+ required: false,
43701
+ description: "Base branch (default: main)"
43702
+ }
43386
43703
  ],
43387
- responseShape: { number: "number", url: "string" }
43704
+ responseShape: {
43705
+ number: "number",
43706
+ url: "string"
43707
+ }
43388
43708
  },
43389
43709
  {
43390
43710
  name: "getPRComments",
43391
43711
  description: "Fetch pull request comments",
43392
43712
  params: [
43393
- { name: "prNumber", type: "number", required: true, description: "PR number" }
43713
+ {
43714
+ name: "prNumber",
43715
+ type: "number",
43716
+ required: true,
43717
+ description: "PR number"
43718
+ }
43394
43719
  ],
43395
- responseShape: { comments: "array" }
43720
+ responseShape: {
43721
+ comments: "array"
43722
+ }
43396
43723
  },
43397
43724
  {
43398
43725
  name: "listIssues",
43399
43726
  description: "List issues with optional filters",
43400
43727
  params: [
43401
- { name: "state", type: "string", required: false, description: "Issue state: open, closed, all" },
43402
- { name: "labels", type: "string", required: false, description: "Comma-separated label names" }
43728
+ {
43729
+ name: "state",
43730
+ type: "string",
43731
+ required: false,
43732
+ description: "Issue state: open, closed, all"
43733
+ },
43734
+ {
43735
+ name: "labels",
43736
+ type: "string",
43737
+ required: false,
43738
+ description: "Comma-separated label names"
43739
+ }
43403
43740
  ],
43404
- responseShape: { issues: "array" }
43741
+ responseShape: {
43742
+ issues: "array"
43743
+ }
43405
43744
  },
43406
43745
  {
43407
43746
  name: "getIssue",
43408
43747
  description: "Get a single issue",
43409
43748
  params: [
43410
- { name: "issueNumber", type: "number", required: true, description: "Issue number" }
43749
+ {
43750
+ name: "issueNumber",
43751
+ type: "number",
43752
+ required: true,
43753
+ description: "Issue number"
43754
+ }
43411
43755
  ],
43412
- responseShape: { title: "string", body: "string", state: "string" }
43756
+ responseShape: {
43757
+ title: "string",
43758
+ body: "string",
43759
+ state: "string"
43760
+ }
43413
43761
  }
43414
43762
  ]
43415
43763
  },
@@ -43422,7 +43770,12 @@ var integrators_registry_default = {
43422
43770
  name: "validate",
43423
43771
  description: "Validate an orbital schema",
43424
43772
  params: [
43425
- { name: "schema", type: "string", required: true, description: "Schema content to validate" }
43773
+ {
43774
+ name: "schema",
43775
+ type: "string",
43776
+ required: true,
43777
+ description: "Schema content to validate"
43778
+ }
43426
43779
  ],
43427
43780
  responseShape: {
43428
43781
  valid: "boolean",
@@ -43442,9 +43795,24 @@ var integrators_registry_default = {
43442
43795
  name: "query",
43443
43796
  description: "Run a single read-only SELECT against a connection referenced by env var name",
43444
43797
  params: [
43445
- { name: "connectionRef", type: "string", required: true, description: "Name of the environment variable holding the connection string (never the secret itself)" },
43446
- { name: "sql", type: "string", required: true, description: "Single SELECT statement (read-only enforced)" },
43447
- { name: "params", type: "array", required: false, description: "Bind parameters for the query" }
43798
+ {
43799
+ name: "connectionRef",
43800
+ type: "string",
43801
+ required: true,
43802
+ description: "Name of the environment variable holding the connection string (never the secret itself)"
43803
+ },
43804
+ {
43805
+ name: "sql",
43806
+ type: "string",
43807
+ required: true,
43808
+ description: "Single SELECT statement (read-only enforced)"
43809
+ },
43810
+ {
43811
+ name: "params",
43812
+ type: "array",
43813
+ required: false,
43814
+ description: "Bind parameters for the query"
43815
+ }
43448
43816
  ],
43449
43817
  responseShape: {
43450
43818
  rows: "array",
@@ -43452,15 +43820,133 @@ var integrators_registry_default = {
43452
43820
  }
43453
43821
  }
43454
43822
  ]
43823
+ },
43824
+ wikimedia: {
43825
+ name: "wikimedia",
43826
+ description: "Wikipedia API \u2014 redirect-resolved page lookup (description, portrait, lead extract)",
43827
+ category: "reference",
43828
+ actions: [
43829
+ {
43830
+ name: "getPage",
43831
+ description: "Look up a title on Wikipedia",
43832
+ params: [
43833
+ {
43834
+ name: "title",
43835
+ type: "string",
43836
+ required: true,
43837
+ description: "Page title (human-readable name)"
43838
+ }
43839
+ ],
43840
+ responseShape: {
43841
+ title: "string",
43842
+ description: "string",
43843
+ portraitUrl: "string",
43844
+ extract: "string"
43845
+ }
43846
+ }
43847
+ ]
43848
+ },
43849
+ iconify: {
43850
+ name: "iconify",
43851
+ description: "Iconify API \u2014 brand-logo / icon resolution, search, and body fetch",
43852
+ category: "reference",
43853
+ actions: [
43854
+ {
43855
+ name: "svgExists",
43856
+ description: "Check whether an SVG path exists",
43857
+ params: [
43858
+ {
43859
+ name: "path",
43860
+ type: "string",
43861
+ required: true,
43862
+ description: "Path under api.iconify.design (e.g. devicon/typescript.svg)"
43863
+ }
43864
+ ],
43865
+ responseShape: {
43866
+ exists: "boolean"
43867
+ }
43868
+ },
43869
+ {
43870
+ name: "search",
43871
+ description: "Relevance search for icons",
43872
+ params: [
43873
+ {
43874
+ name: "query",
43875
+ type: "string",
43876
+ required: true,
43877
+ description: "Search term"
43878
+ },
43879
+ {
43880
+ name: "limit",
43881
+ type: "number",
43882
+ required: false,
43883
+ description: "Max results"
43884
+ }
43885
+ ],
43886
+ responseShape: {
43887
+ icons: "string[]"
43888
+ }
43889
+ },
43890
+ {
43891
+ name: "getIconBody",
43892
+ description: "Fetch an icon SVG body for color-tone classification",
43893
+ params: [
43894
+ {
43895
+ name: "iconId",
43896
+ type: "string",
43897
+ required: true,
43898
+ description: "Icon id (prefix:name)"
43899
+ }
43900
+ ],
43901
+ responseShape: {
43902
+ body: "string"
43903
+ }
43904
+ }
43905
+ ]
43906
+ },
43907
+ arxiv: {
43908
+ name: "arxiv",
43909
+ description: "arXiv API \u2014 frontier academic preprint search (emerging-axis research backend)",
43910
+ category: "reference",
43911
+ actions: [
43912
+ {
43913
+ name: "search",
43914
+ description: "Search arXiv preprints by relevance",
43915
+ params: [
43916
+ {
43917
+ name: "query",
43918
+ type: "string",
43919
+ required: true,
43920
+ description: "Search query"
43921
+ },
43922
+ {
43923
+ name: "maxResults",
43924
+ type: "number",
43925
+ required: false,
43926
+ description: "Max results (default 8)"
43927
+ }
43928
+ ],
43929
+ responseShape: {
43930
+ results: "ArxivResult[]"
43931
+ }
43932
+ }
43933
+ ]
43455
43934
  }
43456
43935
  },
43457
- categories: ["media", "payment", "messaging", "ai", "devtools", "infrastructure"]
43936
+ categories: [
43937
+ "media",
43938
+ "payment",
43939
+ "messaging",
43940
+ "ai",
43941
+ "devtools",
43942
+ "infrastructure"
43943
+ ]
43458
43944
  };
43459
43945
 
43460
43946
  // src/patterns/component-mapping.json
43461
43947
  var component_mapping_default = {
43462
43948
  version: "1.0.0",
43463
- exportedAt: "2026-07-27T04:55:27.017Z",
43949
+ exportedAt: "2026-07-28T10:40:00.004Z",
43464
43950
  mappings: {
43465
43951
  "page-header": {
43466
43952
  component: "PageHeader",
@@ -44840,7 +45326,7 @@ var component_mapping_default = {
44840
45326
  // src/patterns/event-contracts.json
44841
45327
  var event_contracts_default = {
44842
45328
  version: "1.0.0",
44843
- exportedAt: "2026-07-27T04:55:27.017Z",
45329
+ exportedAt: "2026-07-28T10:40:00.004Z",
44844
45330
  contracts: {
44845
45331
  form: {
44846
45332
  emits: [