@astrale-os/kernel-core 0.9.0-beta.23 → 0.9.0-beta.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@
6
6
 
7
7
  * remove endpoint, route, serving issuer, Publication ETag, and View placement properties from the
8
8
  Function and UI schema; graph projection now contains declaration meaning only
9
+ ## [0.9.0-beta.24](https://github.com/astrale-os/kernel/compare/kernel-core-v0.9.0-beta.23...kernel-core-v0.9.0-beta.24) (2026-08-29)
10
+
11
+
12
+ ### Performance Improvements
13
+
14
+ * **runtime:** optimize Query execution without regressions ([#507](https://github.com/astrale-os/kernel/issues/507)) ([6101c8f](https://github.com/astrale-os/kernel/commit/6101c8f9d5deae99a821b3b373b50ee953510600))
15
+
9
16
  ## [0.9.0-beta.23](https://github.com/astrale-os/kernel/compare/kernel-core-v0.9.0-beta.22...kernel-core-v0.9.0-beta.23) (2026-08-29)
10
17
 
11
18
 
@@ -29,6 +29,7 @@ export interface QueryReferenceContext {
29
29
  closeClass(classRef: ClassRef): QueryReferenceClassClosure | undefined;
30
30
  closeProperty(property: PropertyKeyValue): QueryReferenceProperty | undefined;
31
31
  orientation(edge: ClassKey): EdgeOrientation | undefined;
32
+ admitEdge(edge: Edge, source: Node, target: Node): boolean;
32
33
  traverseNode(node: Node): boolean;
33
34
  traverseEdge(edge: Edge): boolean;
34
35
  readNode(node: Node): boolean;
@@ -611,6 +611,15 @@ class Admission {
611
611
  const cached = this.#edges.get(key);
612
612
  if (cached !== undefined)
613
613
  return cached;
614
+ const source = requireNode(this.context, edge.source, path);
615
+ const target = requireNode(this.context, edge.target, path);
616
+ const admitted = call(path, 'Logical Edge fact admission failed', () => this.context.admitEdge(edge, source, target));
617
+ if (typeof admitted !== 'boolean')
618
+ invalid(path, 'Logical Edge fact admission must return boolean');
619
+ if (!admitted) {
620
+ this.#edges.set(key, false);
621
+ return false;
622
+ }
614
623
  const explicit = call(path, 'Edge traversal admission failed', () => this.context.traverseEdge(edge));
615
624
  if (typeof explicit !== 'boolean')
616
625
  invalid(path, 'Edge traversal admission must return boolean');
@@ -648,6 +657,7 @@ function acceptContext(input) {
648
657
  'closeClass',
649
658
  'closeProperty',
650
659
  'orientation',
660
+ 'admitEdge',
651
661
  'traverseNode',
652
662
  'traverseEdge',
653
663
  'readNode',
@@ -671,6 +681,7 @@ function acceptContext(input) {
671
681
  closeClass: input.closeClass.bind(input),
672
682
  closeProperty: input.closeProperty.bind(input),
673
683
  orientation: input.orientation.bind(input),
684
+ admitEdge: input.admitEdge.bind(input),
674
685
  traverseNode: input.traverseNode.bind(input),
675
686
  traverseEdge: input.traverseEdge.bind(input),
676
687
  readNode: input.readNode.bind(input),
@@ -5622,41 +5622,6 @@ export declare const AuthorityRelations: Readonly<{
5622
5622
  }>;
5623
5623
  /** Exact authorized Kernel Functions for which pristine Root receives direct can_use authority. */
5624
5624
  export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
5625
- operation: string;
5626
- domains: ({
5627
- artifact: {
5628
- digest: string;
5629
- mediaType: string;
5630
- size: number;
5631
- };
5632
- currentRevision?: string | null | undefined;
5633
- } | {
5634
- publication: {
5635
- url: string;
5636
- token?: string | undefined;
5637
- etag?: string | undefined;
5638
- };
5639
- revision?: string | undefined;
5640
- currentRevision?: string | null | undefined;
5641
- })[];
5642
- }, {
5643
- readonly mode: 'binary';
5644
- }, "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
5645
- readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"install"> & {
5646
- readonly origin: "kernel.astrale.ai";
5647
- };
5648
- readonly key: "kernel.astrale.ai:function.install";
5649
- }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
5650
- kind: "bundle" | "inspect";
5651
- origin: string;
5652
- }, {
5653
- readonly mode: 'binary';
5654
- }, "authenticated", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
5655
- readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"introspect"> & {
5656
- readonly origin: "kernel.astrale.ai";
5657
- };
5658
- readonly key: "kernel.astrale.ai:function.introspect";
5659
- }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
5660
5625
  invocation?: {
5661
5626
  source: string;
5662
5627
  id: string;
@@ -5690,236 +5655,233 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
5690
5655
  readonly key: "kernel.astrale.ai:function.journal";
5691
5656
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
5692
5657
  ast: {
5693
- format: "astrale.graph.mutation";
5694
- version: "v3";
5695
- preconditions: ({
5658
+ format: "astrale.graph.query";
5659
+ version: "v6";
5660
+ source: {
5696
5661
  kind: "node";
5697
- node: string;
5698
- class: string;
5699
- props?: {
5700
- equals: Record<string, unknown>;
5701
- absent?: string[] | undefined;
5662
+ terms: ({
5663
+ kind: "path";
5664
+ path: string;
5702
5665
  } | {
5703
- absent: string[];
5704
- } | undefined;
5666
+ kind: "class";
5667
+ class: {
5668
+ origin: string;
5669
+ kind: "class";
5670
+ name: string;
5671
+ };
5672
+ })[];
5673
+ binding: string;
5705
5674
  } | {
5706
5675
  kind: "edge";
5707
- edge: {
5676
+ terms: {
5677
+ kind: "class";
5678
+ class: {
5679
+ origin: string;
5680
+ kind: "class";
5681
+ name: string;
5682
+ };
5683
+ }[];
5684
+ bindings: {
5708
5685
  source: string;
5686
+ edge: string;
5709
5687
  target: string;
5710
- class: string;
5711
5688
  };
5712
- slug?: unknown;
5713
- props?: {
5714
- equals: Record<string, unknown>;
5715
- absent?: string[] | undefined;
5716
- } | {
5717
- absent: string[];
5718
- } | undefined;
5719
- } | {
5720
- kind: "query";
5721
- query: {
5722
- format: "astrale.graph.query";
5723
- version: "v6";
5724
- source: {
5725
- kind: "node";
5726
- terms: ({
5727
- kind: "path";
5728
- path: string;
5729
- } | {
5730
- kind: "class";
5731
- class: {
5732
- origin: string;
5733
- kind: "class";
5734
- name: string;
5735
- };
5736
- })[];
5737
- binding: string;
5738
- } | {
5739
- kind: "edge";
5740
- terms: {
5741
- kind: "class";
5742
- class: {
5743
- origin: string;
5744
- kind: "class";
5745
- name: string;
5746
- };
5747
- }[];
5748
- bindings: {
5749
- source: string;
5750
- edge: string;
5751
- target: string;
5752
- };
5689
+ };
5690
+ steps: ({
5691
+ op: "filter";
5692
+ binding: string;
5693
+ predicate: {
5694
+ kind: "class.satisfies";
5695
+ class: {
5696
+ origin: string;
5697
+ kind: "class";
5698
+ name: string;
5753
5699
  };
5754
- steps: ({
5755
- op: "filter";
5756
- binding: string;
5757
- predicate: {
5758
- kind: "class.satisfies";
5759
- class: {
5760
- origin: string;
5761
- kind: "class";
5762
- name: string;
5763
- };
5764
- } | {
5765
- kind: "class.equal";
5766
- class: {
5767
- origin: string;
5768
- kind: "class";
5769
- name: string;
5770
- };
5771
- } | {
5772
- kind: "property.equal";
5773
- property: string;
5774
- value: unknown;
5775
- } | {
5776
- kind: "property.present";
5777
- property: string;
5778
- } | {
5779
- kind: "identity.equal";
5780
- identity: string | {
5781
- source: string;
5782
- target: string;
5783
- class: string;
5784
- };
5785
- };
5786
- } | {
5787
- op: "expand";
5788
- from: string;
5789
- via: {
5790
- origin: string;
5791
- kind: "class";
5792
- name: string;
5793
- }[];
5794
- direction: "incident" | "incoming" | "outgoing";
5795
- bindings: {
5796
- edge: string;
5797
- node: string;
5798
- };
5799
- })[];
5800
- select: {
5801
- kind: "graph";
5802
- binding: string;
5803
- order?: {
5804
- property: string;
5805
- direction: "asc" | "desc";
5806
- unranked: "first" | "last";
5807
- } | undefined;
5808
- } | {
5809
- kind: "nodes";
5810
- binding: string;
5811
- projection: {
5812
- kind: "reference" | "value";
5813
- };
5814
- order?: {
5815
- property: string;
5816
- direction: "asc" | "desc";
5817
- unranked: "first" | "last";
5818
- } | undefined;
5819
- } | {
5820
- kind: "edges";
5821
- binding: string;
5822
- projection: {
5823
- edge: "reference" | "value";
5824
- source: "reference" | "value";
5825
- target: "reference" | "value";
5826
- };
5827
- order?: {
5828
- property: string;
5829
- direction: "asc" | "desc";
5830
- unranked: "first" | "last";
5831
- } | undefined;
5700
+ } | {
5701
+ kind: "class.equal";
5702
+ class: {
5703
+ origin: string;
5704
+ kind: "class";
5705
+ name: string;
5832
5706
  };
5833
- };
5834
- equals: {
5835
- kind: "node";
5836
- ids: string[];
5837
5707
  } | {
5838
- kind: "edge";
5839
- keys: {
5708
+ kind: "property.equal";
5709
+ property: string;
5710
+ value: unknown;
5711
+ } | {
5712
+ kind: "property.present";
5713
+ property: string;
5714
+ } | {
5715
+ kind: "identity.equal";
5716
+ identity: string | {
5840
5717
  source: string;
5841
5718
  target: string;
5842
5719
  class: string;
5843
- }[];
5720
+ };
5844
5721
  };
5845
- })[];
5846
- operations: ({
5847
- op: "node.create";
5848
- as: string;
5849
- class: string;
5850
- props: Record<string, unknown>;
5851
5722
  } | {
5852
- op: "node.update";
5853
- node: string;
5854
- class: string;
5855
- props: {
5856
- set: Record<string, unknown>;
5857
- unset: string[];
5723
+ op: "expand";
5724
+ from: string;
5725
+ via: {
5726
+ origin: string;
5727
+ kind: "class";
5728
+ name: string;
5729
+ }[];
5730
+ direction: "incident" | "incoming" | "outgoing";
5731
+ bindings: {
5732
+ edge: string;
5733
+ node: string;
5858
5734
  };
5735
+ })[];
5736
+ select: {
5737
+ kind: "graph";
5738
+ binding: string;
5739
+ order?: {
5740
+ property: string;
5741
+ direction: "asc" | "desc";
5742
+ unranked: "first" | "last";
5743
+ } | undefined;
5859
5744
  } | {
5860
- op: "node.delete";
5861
- node: string;
5862
- class: string;
5863
- } | {
5864
- op: "edge.create";
5865
- class: string;
5866
- source: string | {
5867
- created: string;
5868
- };
5869
- target: string | {
5870
- created: string;
5871
- };
5872
- slug?: unknown;
5873
- props: Record<string, unknown>;
5874
- } | {
5875
- op: "edge.update";
5876
- edge: {
5877
- source: string;
5878
- target: string;
5879
- class: string;
5745
+ kind: "nodes";
5746
+ binding: string;
5747
+ projection: {
5748
+ kind: "reference" | "value";
5880
5749
  };
5881
- slug: unknown;
5882
- props?: {
5883
- set: Record<string, unknown>;
5884
- unset: string[];
5750
+ order?: {
5751
+ property: string;
5752
+ direction: "asc" | "desc";
5753
+ unranked: "first" | "last";
5885
5754
  } | undefined;
5886
5755
  } | {
5887
- op: "edge.update";
5888
- edge: {
5889
- source: string;
5890
- target: string;
5891
- class: string;
5892
- };
5893
- props: {
5894
- set: Record<string, unknown>;
5895
- unset: string[];
5896
- };
5897
- } | {
5898
- op: "edge.delete";
5899
- edge: {
5900
- source: string;
5901
- target: string;
5902
- class: string;
5756
+ kind: "edges";
5757
+ binding: string;
5758
+ projection: {
5759
+ edge: "reference" | "value";
5760
+ source: "reference" | "value";
5761
+ target: "reference" | "value";
5903
5762
  };
5904
- })[];
5763
+ order?: {
5764
+ property: string;
5765
+ direction: "asc" | "desc";
5766
+ unranked: "first" | "last";
5767
+ } | undefined;
5768
+ };
5905
5769
  };
5906
5770
  expected?: {
5907
5771
  origin: string;
5908
5772
  revision: string;
5909
5773
  }[] | undefined;
5774
+ page: {
5775
+ size: number;
5776
+ after?: string | undefined;
5777
+ };
5910
5778
  }, {
5911
5779
  readonly mode: 'value';
5912
5780
  readonly value: {
5913
- createdNodes: Record<string, string>;
5781
+ result: {
5782
+ kind: "graph";
5783
+ graph: {
5784
+ nodes: {
5785
+ id: string;
5786
+ class: string;
5787
+ props: Record<string, unknown>;
5788
+ }[];
5789
+ edges: {
5790
+ source: string;
5791
+ target: string;
5792
+ class: string;
5793
+ slug?: import("../../graph/edge/index.js").EdgeSlug | undefined;
5794
+ props: Record<string, unknown>;
5795
+ }[];
5796
+ };
5797
+ selection: {
5798
+ kind: "node";
5799
+ ids: string[];
5800
+ } | {
5801
+ kind: "edge";
5802
+ keys: {
5803
+ source: string;
5804
+ target: string;
5805
+ class: string;
5806
+ }[];
5807
+ };
5808
+ } | {
5809
+ kind: "nodes";
5810
+ nodes: ({
5811
+ kind: "reference";
5812
+ value: {
5813
+ id: string;
5814
+ class: string;
5815
+ };
5816
+ } | {
5817
+ kind: "value";
5818
+ value: {
5819
+ id: string;
5820
+ class: string;
5821
+ props: Record<string, unknown>;
5822
+ };
5823
+ })[];
5824
+ } | {
5825
+ kind: "edges";
5826
+ edges: {
5827
+ edge: {
5828
+ kind: "reference";
5829
+ value: {
5830
+ source: string;
5831
+ target: string;
5832
+ class: string;
5833
+ };
5834
+ } | {
5835
+ kind: "value";
5836
+ value: {
5837
+ source: string;
5838
+ target: string;
5839
+ class: string;
5840
+ slug?: import("../../graph/edge/index.js").EdgeSlug | undefined;
5841
+ props: Record<string, unknown>;
5842
+ };
5843
+ };
5844
+ source: {
5845
+ kind: "reference";
5846
+ value: {
5847
+ id: string;
5848
+ class: string;
5849
+ };
5850
+ } | {
5851
+ kind: "value";
5852
+ value: {
5853
+ id: string;
5854
+ class: string;
5855
+ props: Record<string, unknown>;
5856
+ };
5857
+ };
5858
+ target: {
5859
+ kind: "reference";
5860
+ value: {
5861
+ id: string;
5862
+ class: string;
5863
+ };
5864
+ } | {
5865
+ kind: "value";
5866
+ value: {
5867
+ id: string;
5868
+ class: string;
5869
+ props: Record<string, unknown>;
5870
+ };
5871
+ };
5872
+ }[];
5873
+ };
5874
+ page: {
5875
+ next?: string | undefined;
5876
+ };
5914
5877
  };
5915
5878
  }, "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
5916
- readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"mutate"> & {
5879
+ readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"query"> & {
5917
5880
  readonly origin: "kernel.astrale.ai";
5918
5881
  };
5919
- readonly key: "kernel.astrale.ai:function.mutate";
5882
+ readonly key: "kernel.astrale.ai:function.query";
5920
5883
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
5921
- idempotencyKey: string;
5922
- mutation?: {
5884
+ ast: {
5923
5885
  format: "astrale.graph.mutation";
5924
5886
  version: "v3";
5925
5887
  preconditions: ({
@@ -6132,206 +6094,166 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
6132
6094
  class: string;
6133
6095
  };
6134
6096
  })[];
6135
- } | undefined;
6136
- identities: ({
6137
- identity: {
6138
- created: string;
6139
- };
6140
- authentication?: {
6141
- iss: string;
6142
- sub: string;
6143
- } | {
6144
- credentials: {
6145
- publicKey: unknown;
6146
- proof: string;
6147
- };
6148
- } | undefined;
6149
- requiredClaims?: ({
6150
- claim: string;
6151
- op: "contains";
6152
- value: unknown;
6153
- } | {
6154
- claim: string;
6155
- op: "eq";
6156
- value: unknown;
6157
- } | {
6158
- claim: string;
6159
- op: "exists";
6160
- })[] | undefined;
6161
- } | {
6162
- identity: {
6163
- id: string;
6164
- class: string;
6165
- };
6166
- authentication: {
6167
- iss: string;
6168
- sub: string;
6169
- } | {
6170
- credentials: {
6171
- publicKey: unknown;
6172
- proof: string;
6173
- };
6174
- };
6175
- })[];
6097
+ };
6098
+ expected?: {
6099
+ origin: string;
6100
+ revision: string;
6101
+ }[] | undefined;
6176
6102
  }, {
6177
6103
  readonly mode: 'value';
6178
6104
  readonly value: {
6179
6105
  createdNodes: Record<string, string>;
6180
- identities: ({
6181
- id: string;
6182
- } | {
6183
- id: string;
6184
- iss: string;
6185
- sub: string;
6186
- })[];
6187
6106
  };
6188
6107
  }, "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
6189
- readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"provision"> & {
6108
+ readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"mutate"> & {
6190
6109
  readonly origin: "kernel.astrale.ai";
6191
6110
  };
6192
- readonly key: "kernel.astrale.ai:function.provision";
6111
+ readonly key: "kernel.astrale.ai:function.mutate";
6193
6112
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
6194
- ast: {
6195
- format: "astrale.graph.query";
6196
- version: "v6";
6197
- source: {
6113
+ idempotencyKey: string;
6114
+ mutation?: {
6115
+ format: "astrale.graph.mutation";
6116
+ version: "v3";
6117
+ preconditions: ({
6198
6118
  kind: "node";
6199
- terms: ({
6200
- kind: "path";
6201
- path: string;
6119
+ node: string;
6120
+ class: string;
6121
+ props?: {
6122
+ equals: Record<string, unknown>;
6123
+ absent?: string[] | undefined;
6202
6124
  } | {
6203
- kind: "class";
6204
- class: {
6205
- origin: string;
6206
- kind: "class";
6207
- name: string;
6208
- };
6209
- })[];
6210
- binding: string;
6125
+ absent: string[];
6126
+ } | undefined;
6211
6127
  } | {
6212
6128
  kind: "edge";
6213
- terms: {
6214
- kind: "class";
6215
- class: {
6216
- origin: string;
6217
- kind: "class";
6218
- name: string;
6219
- };
6220
- }[];
6221
- bindings: {
6129
+ edge: {
6222
6130
  source: string;
6223
- edge: string;
6224
6131
  target: string;
6132
+ class: string;
6225
6133
  };
6226
- };
6227
- steps: ({
6228
- op: "filter";
6229
- binding: string;
6230
- predicate: {
6231
- kind: "class.satisfies";
6232
- class: {
6233
- origin: string;
6234
- kind: "class";
6235
- name: string;
6236
- };
6237
- } | {
6238
- kind: "class.equal";
6239
- class: {
6240
- origin: string;
6241
- kind: "class";
6242
- name: string;
6243
- };
6244
- } | {
6245
- kind: "property.equal";
6246
- property: string;
6247
- value: unknown;
6248
- } | {
6249
- kind: "property.present";
6250
- property: string;
6134
+ slug?: unknown;
6135
+ props?: {
6136
+ equals: Record<string, unknown>;
6137
+ absent?: string[] | undefined;
6251
6138
  } | {
6252
- kind: "identity.equal";
6253
- identity: string | {
6254
- source: string;
6255
- target: string;
6256
- class: string;
6257
- };
6258
- };
6259
- } | {
6260
- op: "expand";
6261
- from: string;
6262
- via: {
6263
- origin: string;
6264
- kind: "class";
6265
- name: string;
6266
- }[];
6267
- direction: "incident" | "incoming" | "outgoing";
6268
- bindings: {
6269
- edge: string;
6270
- node: string;
6271
- };
6272
- })[];
6273
- select: {
6274
- kind: "graph";
6275
- binding: string;
6276
- order?: {
6277
- property: string;
6278
- direction: "asc" | "desc";
6279
- unranked: "first" | "last";
6280
- } | undefined;
6281
- } | {
6282
- kind: "nodes";
6283
- binding: string;
6284
- projection: {
6285
- kind: "reference" | "value";
6286
- };
6287
- order?: {
6288
- property: string;
6289
- direction: "asc" | "desc";
6290
- unranked: "first" | "last";
6139
+ absent: string[];
6291
6140
  } | undefined;
6292
6141
  } | {
6293
- kind: "edges";
6294
- binding: string;
6295
- projection: {
6296
- edge: "reference" | "value";
6297
- source: "reference" | "value";
6298
- target: "reference" | "value";
6299
- };
6300
- order?: {
6301
- property: string;
6302
- direction: "asc" | "desc";
6303
- unranked: "first" | "last";
6304
- } | undefined;
6305
- };
6306
- };
6307
- expected?: {
6308
- origin: string;
6309
- revision: string;
6310
- }[] | undefined;
6311
- page: {
6312
- size: number;
6313
- after?: string | undefined;
6314
- };
6315
- }, {
6316
- readonly mode: 'value';
6317
- readonly value: {
6318
- result: {
6319
- kind: "graph";
6320
- graph: {
6321
- nodes: {
6322
- id: string;
6323
- class: string;
6324
- props: Record<string, unknown>;
6325
- }[];
6326
- edges: {
6327
- source: string;
6328
- target: string;
6329
- class: string;
6330
- slug?: import("../../graph/edge/index.js").EdgeSlug | undefined;
6331
- props: Record<string, unknown>;
6332
- }[];
6142
+ kind: "query";
6143
+ query: {
6144
+ format: "astrale.graph.query";
6145
+ version: "v6";
6146
+ source: {
6147
+ kind: "node";
6148
+ terms: ({
6149
+ kind: "path";
6150
+ path: string;
6151
+ } | {
6152
+ kind: "class";
6153
+ class: {
6154
+ origin: string;
6155
+ kind: "class";
6156
+ name: string;
6157
+ };
6158
+ })[];
6159
+ binding: string;
6160
+ } | {
6161
+ kind: "edge";
6162
+ terms: {
6163
+ kind: "class";
6164
+ class: {
6165
+ origin: string;
6166
+ kind: "class";
6167
+ name: string;
6168
+ };
6169
+ }[];
6170
+ bindings: {
6171
+ source: string;
6172
+ edge: string;
6173
+ target: string;
6174
+ };
6175
+ };
6176
+ steps: ({
6177
+ op: "filter";
6178
+ binding: string;
6179
+ predicate: {
6180
+ kind: "class.satisfies";
6181
+ class: {
6182
+ origin: string;
6183
+ kind: "class";
6184
+ name: string;
6185
+ };
6186
+ } | {
6187
+ kind: "class.equal";
6188
+ class: {
6189
+ origin: string;
6190
+ kind: "class";
6191
+ name: string;
6192
+ };
6193
+ } | {
6194
+ kind: "property.equal";
6195
+ property: string;
6196
+ value: unknown;
6197
+ } | {
6198
+ kind: "property.present";
6199
+ property: string;
6200
+ } | {
6201
+ kind: "identity.equal";
6202
+ identity: string | {
6203
+ source: string;
6204
+ target: string;
6205
+ class: string;
6206
+ };
6207
+ };
6208
+ } | {
6209
+ op: "expand";
6210
+ from: string;
6211
+ via: {
6212
+ origin: string;
6213
+ kind: "class";
6214
+ name: string;
6215
+ }[];
6216
+ direction: "incident" | "incoming" | "outgoing";
6217
+ bindings: {
6218
+ edge: string;
6219
+ node: string;
6220
+ };
6221
+ })[];
6222
+ select: {
6223
+ kind: "graph";
6224
+ binding: string;
6225
+ order?: {
6226
+ property: string;
6227
+ direction: "asc" | "desc";
6228
+ unranked: "first" | "last";
6229
+ } | undefined;
6230
+ } | {
6231
+ kind: "nodes";
6232
+ binding: string;
6233
+ projection: {
6234
+ kind: "reference" | "value";
6235
+ };
6236
+ order?: {
6237
+ property: string;
6238
+ direction: "asc" | "desc";
6239
+ unranked: "first" | "last";
6240
+ } | undefined;
6241
+ } | {
6242
+ kind: "edges";
6243
+ binding: string;
6244
+ projection: {
6245
+ edge: "reference" | "value";
6246
+ source: "reference" | "value";
6247
+ target: "reference" | "value";
6248
+ };
6249
+ order?: {
6250
+ property: string;
6251
+ direction: "asc" | "desc";
6252
+ unranked: "first" | "last";
6253
+ } | undefined;
6254
+ };
6333
6255
  };
6334
- selection: {
6256
+ equals: {
6335
6257
  kind: "node";
6336
6258
  ids: string[];
6337
6259
  } | {
@@ -6342,81 +6264,159 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
6342
6264
  class: string;
6343
6265
  }[];
6344
6266
  };
6267
+ })[];
6268
+ operations: ({
6269
+ op: "node.create";
6270
+ as: string;
6271
+ class: string;
6272
+ props: Record<string, unknown>;
6345
6273
  } | {
6346
- kind: "nodes";
6347
- nodes: ({
6348
- kind: "reference";
6349
- value: {
6350
- id: string;
6351
- class: string;
6352
- };
6353
- } | {
6354
- kind: "value";
6355
- value: {
6356
- id: string;
6357
- class: string;
6358
- props: Record<string, unknown>;
6359
- };
6360
- })[];
6274
+ op: "node.update";
6275
+ node: string;
6276
+ class: string;
6277
+ props: {
6278
+ set: Record<string, unknown>;
6279
+ unset: string[];
6280
+ };
6361
6281
  } | {
6362
- kind: "edges";
6363
- edges: {
6364
- edge: {
6365
- kind: "reference";
6366
- value: {
6367
- source: string;
6368
- target: string;
6369
- class: string;
6370
- };
6371
- } | {
6372
- kind: "value";
6373
- value: {
6374
- source: string;
6375
- target: string;
6376
- class: string;
6377
- slug?: import("../../graph/edge/index.js").EdgeSlug | undefined;
6378
- props: Record<string, unknown>;
6379
- };
6380
- };
6381
- source: {
6382
- kind: "reference";
6383
- value: {
6384
- id: string;
6385
- class: string;
6386
- };
6387
- } | {
6388
- kind: "value";
6389
- value: {
6390
- id: string;
6391
- class: string;
6392
- props: Record<string, unknown>;
6393
- };
6394
- };
6395
- target: {
6396
- kind: "reference";
6397
- value: {
6398
- id: string;
6399
- class: string;
6400
- };
6401
- } | {
6402
- kind: "value";
6403
- value: {
6404
- id: string;
6405
- class: string;
6406
- props: Record<string, unknown>;
6407
- };
6408
- };
6409
- }[];
6282
+ op: "node.delete";
6283
+ node: string;
6284
+ class: string;
6285
+ } | {
6286
+ op: "edge.create";
6287
+ class: string;
6288
+ source: string | {
6289
+ created: string;
6290
+ };
6291
+ target: string | {
6292
+ created: string;
6293
+ };
6294
+ slug?: unknown;
6295
+ props: Record<string, unknown>;
6296
+ } | {
6297
+ op: "edge.update";
6298
+ edge: {
6299
+ source: string;
6300
+ target: string;
6301
+ class: string;
6302
+ };
6303
+ slug: unknown;
6304
+ props?: {
6305
+ set: Record<string, unknown>;
6306
+ unset: string[];
6307
+ } | undefined;
6308
+ } | {
6309
+ op: "edge.update";
6310
+ edge: {
6311
+ source: string;
6312
+ target: string;
6313
+ class: string;
6314
+ };
6315
+ props: {
6316
+ set: Record<string, unknown>;
6317
+ unset: string[];
6318
+ };
6319
+ } | {
6320
+ op: "edge.delete";
6321
+ edge: {
6322
+ source: string;
6323
+ target: string;
6324
+ class: string;
6325
+ };
6326
+ })[];
6327
+ } | undefined;
6328
+ identities: ({
6329
+ identity: {
6330
+ created: string;
6410
6331
  };
6411
- page: {
6412
- next?: string | undefined;
6332
+ authentication?: {
6333
+ iss: string;
6334
+ sub: string;
6335
+ } | {
6336
+ credentials: {
6337
+ publicKey: unknown;
6338
+ proof: string;
6339
+ };
6340
+ } | undefined;
6341
+ requiredClaims?: ({
6342
+ claim: string;
6343
+ op: "contains";
6344
+ value: unknown;
6345
+ } | {
6346
+ claim: string;
6347
+ op: "eq";
6348
+ value: unknown;
6349
+ } | {
6350
+ claim: string;
6351
+ op: "exists";
6352
+ })[] | undefined;
6353
+ } | {
6354
+ identity: {
6355
+ id: string;
6356
+ class: string;
6357
+ };
6358
+ authentication: {
6359
+ iss: string;
6360
+ sub: string;
6361
+ } | {
6362
+ credentials: {
6363
+ publicKey: unknown;
6364
+ proof: string;
6365
+ };
6413
6366
  };
6367
+ })[];
6368
+ }, {
6369
+ readonly mode: 'value';
6370
+ readonly value: {
6371
+ createdNodes: Record<string, string>;
6372
+ identities: ({
6373
+ id: string;
6374
+ } | {
6375
+ id: string;
6376
+ iss: string;
6377
+ sub: string;
6378
+ })[];
6414
6379
  };
6415
6380
  }, "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
6416
- readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"query"> & {
6381
+ readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"provision"> & {
6417
6382
  readonly origin: "kernel.astrale.ai";
6418
6383
  };
6419
- readonly key: "kernel.astrale.ai:function.query";
6384
+ readonly key: "kernel.astrale.ai:function.provision";
6385
+ }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
6386
+ operation: string;
6387
+ domains: ({
6388
+ artifact: {
6389
+ digest: string;
6390
+ mediaType: string;
6391
+ size: number;
6392
+ };
6393
+ currentRevision?: string | null | undefined;
6394
+ } | {
6395
+ publication: {
6396
+ url: string;
6397
+ token?: string | undefined;
6398
+ etag?: string | undefined;
6399
+ };
6400
+ revision?: string | undefined;
6401
+ currentRevision?: string | null | undefined;
6402
+ })[];
6403
+ }, {
6404
+ readonly mode: 'binary';
6405
+ }, "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
6406
+ readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"install"> & {
6407
+ readonly origin: "kernel.astrale.ai";
6408
+ };
6409
+ readonly key: "kernel.astrale.ai:function.install";
6410
+ }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
6411
+ kind: "bundle" | "inspect";
6412
+ origin: string;
6413
+ }, {
6414
+ readonly mode: 'binary';
6415
+ }, "authenticated", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>> & {
6416
+ readonly ref: import("@astrale-os/kernel-dsl/v1").FunctionRef<"introspect"> & {
6417
+ readonly origin: "kernel.astrale.ai";
6418
+ };
6419
+ readonly key: "kernel.astrale.ai:function.introspect";
6420
6420
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
6421
6421
  operation: string;
6422
6422
  origin: string;
@@ -6459,15 +6459,6 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
6459
6459
  readonly origin: "kernel.astrale.ai";
6460
6460
  };
6461
6461
  readonly key: "kernel.astrale.ai:function.uninstall";
6462
- }) | (import("@astrale-os/kernel-dsl/v1").ResolvedMethod<{
6463
- audience?: string | undefined;
6464
- ttlSeconds: number;
6465
- grant?: unknown;
6466
- }, {
6467
- readonly mode: 'value';
6468
- readonly value: string;
6469
- }, true, "default", "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.mint"> & {
6470
- readonly name: "mint";
6471
6462
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedMethod<{
6472
6463
  iss: string;
6473
6464
  sub: string;
@@ -6527,6 +6518,15 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
6527
6518
  };
6528
6519
  }, true, "sealed", "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>, "kernel.astrale.ai:class.View.method.resolve"> & {
6529
6520
  readonly name: "resolve";
6521
+ }) | (import("@astrale-os/kernel-dsl/v1").ResolvedMethod<{
6522
+ audience?: string | undefined;
6523
+ ttlSeconds: number;
6524
+ grant?: unknown;
6525
+ }, {
6526
+ readonly mode: 'value';
6527
+ readonly value: string;
6528
+ }, true, "default", "authorized", import("@astrale-os/kernel-dsl/v1").PolicyCheckExpression<import("@astrale-os/kernel-dsl/v1").PolicyRef, import("@astrale-os/kernel-dsl/v1/language").PolicyCheckObject>, "kernel.astrale.ai:class.Identity.method.mint"> & {
6529
+ readonly name: "mint";
6530
6530
  }))[];
6531
6531
  export { AuthorityOperationOrder, AuthorityOperations, operationOf } from '../authority/index.js';
6532
6532
  export type { AuthorityOperation, AuthorityRelation } from '../authority/index.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-os/kernel-core",
3
- "version": "0.9.0-beta.23",
3
+ "version": "0.9.0-beta.24",
4
4
  "description": "Astrale Kernel Core - Types, Invariants, and Pure Logic",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {