@astrale-os/kernel-core 0.9.0-beta.62 → 0.9.0-beta.64

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 (109) hide show
  1. package/dist/auth/authority/admission/admission.d.ts +2 -2
  2. package/dist/auth/authority/admission/admission.js +10 -8
  3. package/dist/auth/authority/admission/index.d.ts +1 -1
  4. package/dist/auth/authority/admission/index.js +1 -1
  5. package/dist/auth/authority/index.d.ts +7 -3
  6. package/dist/auth/authority/index.js +4 -2
  7. package/dist/auth/authority/language/index.d.ts +2 -0
  8. package/dist/auth/authority/language/index.js +1 -0
  9. package/dist/auth/authority/language/predicate.d.ts +10 -5
  10. package/dist/auth/authority/language/predicate.js +1 -1
  11. package/dist/auth/authority/language/program.d.ts +21 -0
  12. package/dist/auth/authority/language/program.js +2 -0
  13. package/dist/auth/authority/normalization/index.d.ts +1 -1
  14. package/dist/auth/authority/normalization/index.js +1 -1
  15. package/dist/auth/authority/normalization/normalize.d.ts +1 -1
  16. package/dist/auth/authority/normalization/normalize.js +4 -5
  17. package/dist/auth/authority/ownership.optimization.js +2 -2
  18. package/dist/auth/authority/prepare-binder-body.d.ts +4 -0
  19. package/dist/auth/authority/prepare-binder-body.js +31 -0
  20. package/dist/auth/authority/program.d.ts +28 -0
  21. package/dist/auth/authority/program.js +191 -0
  22. package/dist/auth/authority/semantics/class-authority.d.ts +8 -0
  23. package/dist/auth/authority/semantics/class-authority.js +26 -0
  24. package/dist/auth/authority/semantics/composition.d.ts +39 -0
  25. package/dist/auth/authority/semantics/composition.js +112 -0
  26. package/dist/auth/authority/semantics/failure.d.ts +21 -0
  27. package/dist/auth/authority/semantics/failure.js +10 -0
  28. package/dist/auth/authority/semantics/index.d.ts +11 -0
  29. package/dist/auth/authority/semantics/index.js +5 -0
  30. package/dist/auth/authority/semantics/interpret.d.ts +35 -0
  31. package/dist/auth/authority/semantics/interpret.js +215 -0
  32. package/dist/auth/authority/semantics/snapshot.d.ts +34 -0
  33. package/dist/auth/authority/semantics/terms.d.ts +20 -0
  34. package/dist/auth/authority/semantics/terms.js +96 -0
  35. package/dist/auth/authority/semantics/vocabulary.d.ts +19 -0
  36. package/dist/auth/authority/semantics/vocabulary.js +1 -0
  37. package/dist/auth/context/context.d.ts +4 -3
  38. package/dist/auth/expression/authoring/builder.d.ts +2 -11
  39. package/dist/auth/expression/authoring/builder.js +1 -45
  40. package/dist/auth/expression/authoring/index.d.ts +1 -1
  41. package/dist/auth/expression/authoring/index.js +1 -1
  42. package/dist/auth/expression/index.d.ts +1 -2
  43. package/dist/auth/expression/index.js +1 -2
  44. package/dist/auth/expression/language/identity-expression.d.ts +2 -22
  45. package/dist/auth/grant/index.d.ts +1 -1
  46. package/dist/auth/grant/index.js +1 -1
  47. package/dist/auth/grant/resolved/admission.d.ts +4 -3
  48. package/dist/auth/grant/resolved/admission.js +23 -13
  49. package/dist/auth/grant/resolved/grant.d.ts +1 -1
  50. package/dist/auth/grant/resolved/index.d.ts +1 -1
  51. package/dist/auth/grant/resolved/index.js +1 -1
  52. package/dist/auth/grant/unresolved/admission.d.ts +4 -1
  53. package/dist/auth/grant/unresolved/admission.js +27 -67
  54. package/dist/auth/grant/unresolved/limits.d.ts +2 -4
  55. package/dist/auth/grant/unresolved/limits.js +1 -5
  56. package/dist/auth/index.d.ts +1 -1
  57. package/dist/graph/graph/graph.d.ts +1 -5
  58. package/dist/graph/graph/graph.js +3 -27
  59. package/dist/graph/graph/index.d.ts +1 -3
  60. package/dist/graph/graph/index.js +1 -2
  61. package/dist/graph/query/index.d.ts +2 -0
  62. package/dist/graph/query/index.js +1 -0
  63. package/dist/graph/query/order/index.d.ts +46 -0
  64. package/dist/graph/query/order/index.js +59 -0
  65. package/dist/graph/query/reference/evaluate.js +24 -50
  66. package/dist/graph/reconcile/planning/canonical.d.ts +6 -0
  67. package/dist/graph/reconcile/planning/canonical.js +28 -0
  68. package/dist/graph/reconcile/planning/model.d.ts +4 -0
  69. package/dist/graph/reconcile/planning/plan.js +2 -1
  70. package/dist/schema/authority/vocabulary.d.ts +3 -0
  71. package/dist/schema/authority/vocabulary.js +25 -0
  72. package/dist/schema/identity/composition.d.ts +5 -0
  73. package/dist/schema/identity/composition.js +5 -0
  74. package/dist/schema/index.d.ts +1 -0
  75. package/dist/schema/index.js +1 -0
  76. package/dist/schema/introspection/language.d.ts +2 -0
  77. package/dist/schema/kernel/schema.d.ts +125 -79
  78. package/dist/schema/kernel/syscalls/contracts/install.d.ts +86 -7
  79. package/dist/schema/kernel/syscalls/contracts/install.js +6 -3
  80. package/dist/schema/kernel/syscalls/contracts/installation.d.ts +30 -0
  81. package/dist/schema/kernel/syscalls/contracts/installation.js +9 -0
  82. package/dist/schema/kernel/syscalls/contracts/introspect.d.ts +5 -2
  83. package/dist/schema/kernel/syscalls/contracts/introspect.js +9 -5
  84. package/dist/schema/kernel/syscalls/contracts/legacy/install.d.ts +22 -0
  85. package/dist/schema/kernel/syscalls/contracts/legacy/install.js +31 -0
  86. package/dist/schema/kernel/syscalls/contracts/uninstall.d.ts +10 -0
  87. package/dist/schema/kernel/syscalls/declarations/index.d.ts +49 -25
  88. package/dist/schema/kernel/syscalls/declarations/install.d.ts +17 -2
  89. package/dist/schema/kernel/syscalls/declarations/introspect.d.ts +2 -0
  90. package/dist/schema/kernel/syscalls/declarations/mutate.d.ts +23 -23
  91. package/dist/schema/kernel/syscalls/declarations/uninstall.d.ts +7 -0
  92. package/dist/schema/kernel/syscalls/descriptors/results/view-resolution.d.ts +7 -0
  93. package/package.json +2 -2
  94. package/dist/auth/authority/prepare-grant-body.d.ts +0 -4
  95. package/dist/auth/authority/prepare-grant-body.js +0 -27
  96. package/dist/auth/expression/normalization/canonicalize.d.ts +0 -7
  97. package/dist/auth/expression/normalization/canonicalize.js +0 -102
  98. package/dist/auth/expression/normalization/index.d.ts +0 -2
  99. package/dist/auth/expression/normalization/index.js +0 -2
  100. package/dist/auth/expression/normalization/raise-denials.d.ts +0 -3
  101. package/dist/auth/expression/normalization/raise-denials.js +0 -59
  102. package/dist/graph/graph/navigation/error.d.ts +0 -12
  103. package/dist/graph/graph/navigation/error.js +0 -20
  104. package/dist/graph/graph/navigation/index.d.ts +0 -2
  105. package/dist/graph/graph/navigation/index.js +0 -1
  106. package/dist/graph/graph/navigation/model.d.ts +0 -15
  107. package/dist/schema/kernel/projection/path.d.ts +0 -2
  108. package/dist/schema/kernel/projection/path.js +0 -113
  109. /package/dist/{graph/graph/navigation/model.js → auth/authority/semantics/snapshot.js} +0 -0
@@ -6,6 +6,7 @@ import { GraphData } from '../../graph/index.js';
6
6
  import { NodeId as admitNodeId } from '../../node/index.js';
7
7
  import { compareNodeIds } from '../../node/index.js';
8
8
  import { encodeQueryAST, QueryASTDecodeError } from '../language/index.js';
9
+ import { compareQueryRank } from '../order/index.js';
9
10
  import { decodeQueryResult } from '../result/index.js';
10
11
  import { QueryReferenceError } from './error.js';
11
12
  /** Independent backend-neutral executable Query V6 row algebra. */
@@ -273,9 +274,13 @@ function decodeWitness(input, path, context) {
273
274
  }
274
275
  function selectNodes(rows, select, size, after, admission, properties) {
275
276
  const selected = new Map();
277
+ const ordered = orderedClasses(select.order, 'node', properties);
276
278
  rows.forEach((row) => {
277
279
  const node = boundNode(row, select.binding, '/select/binding');
278
- const needsRead = select.kind === 'graph' || (select.kind === 'nodes' && select.projection.kind === 'value');
280
+ // A value is read; an ordered reference reads a fact its order applies to before ranking it.
281
+ const needsRead = select.kind === 'graph' ||
282
+ (select.kind === 'nodes' && select.projection.kind === 'value') ||
283
+ ordered.has(node.class);
279
284
  if (needsRead && !admission.readNode(node, '/select/binding'))
280
285
  return;
281
286
  selected.set(node.id, node);
@@ -305,6 +310,7 @@ function selectNodes(rows, select, size, after, admission, properties) {
305
310
  }
306
311
  function selectEdges(rows, select, size, after, context, admission, properties) {
307
312
  const selected = new Map();
313
+ const ordered = orderedClasses(select.order, 'edge', properties);
308
314
  rows.forEach((row) => {
309
315
  const edge = boundEdge(row, select.binding, '/select/binding');
310
316
  const source = requireNode(context, edge.source, '/select/binding');
@@ -319,7 +325,7 @@ function selectEdges(rows, select, size, after, context, admission, properties)
319
325
  admission.readNode(source, '/select/binding') &&
320
326
  admission.readNode(target, '/select/binding')
321
327
  : select.kind === 'edges'
322
- ? (select.projection.edge === 'reference' ||
328
+ ? ((select.projection.edge === 'reference' && !ordered.has(edge.class)) ||
323
329
  admission.readEdge(edge, '/select/binding')) &&
324
330
  (select.projection.source === 'reference' ||
325
331
  admission.readNode(source, '/select/binding')) &&
@@ -362,12 +368,24 @@ function selectEdges(rows, select, size, after, context, admission, properties)
362
368
  const next = last === undefined ? undefined : frontierOf(last, order, 'edge', properties);
363
369
  return Object.freeze({ result, ...(next === undefined ? {} : { next }) });
364
370
  }
371
+ /** The Classes a Property order applies to, whose facts are read before they are ranked. */
372
+ function orderedClasses(order, kind, properties) {
373
+ return order === undefined
374
+ ? new Set()
375
+ : properties.close(order.property, kind, '/select/order/property');
376
+ }
365
377
  function orderingComparator(order, kind, properties) {
366
- return (left, right) => compareReferenceRank(rankOf(left, order, kind, properties), rankOf(right, order, kind, properties), order);
378
+ const ordering = orderingOf(order, kind, properties);
379
+ return (left, right) => compareReferenceRank(rankOf(left, order, kind, properties), rankOf(right, order, kind, properties), order, ordering);
380
+ }
381
+ function orderingOf(order, kind, properties) {
382
+ return order === undefined
383
+ ? undefined
384
+ : properties.ordering(order.property, kind, '/select/order/property');
367
385
  }
368
386
  function compareFrontier(frontier, fact, order, kind, properties) {
369
387
  const admitted = decodeReferenceFrontier(frontier, order, kind, properties);
370
- return compareReferenceRank(admitted, rankOf(fact, order, kind, properties), order);
388
+ return compareReferenceRank(admitted, rankOf(fact, order, kind, properties), order, orderingOf(order, kind, properties));
371
389
  }
372
390
  function frontierOf(fact, order, kind, properties) {
373
391
  const rank = rankOf(fact, order, kind, properties);
@@ -413,36 +431,8 @@ function decodeReferenceFrontier(frontier, order, kind, properties) {
413
431
  }
414
432
  return Object.freeze({ bucket: 'ranked', value: frontier.value, identity });
415
433
  }
416
- function compareReferenceRank(left, right, order) {
417
- if (order === undefined)
418
- return compareIdentity(left.identity, right.identity);
419
- if (left.bucket !== right.bucket) {
420
- return left.bucket === 'unranked'
421
- ? order.unranked === 'first'
422
- ? -1
423
- : 1
424
- : order.unranked === 'first'
425
- ? 1
426
- : -1;
427
- }
428
- if (left.bucket === 'ranked' && right.bucket === 'ranked') {
429
- const kind = typeof left.value === 'boolean'
430
- ? 'boolean'
431
- : typeof left.value === 'number'
432
- ? 'number'
433
- : 'string';
434
- const compared = compareOrderingValue(left.value, right.value, kind);
435
- if (compared !== 0)
436
- return order.direction === 'asc' ? compared : -compared;
437
- }
438
- return compareIdentity(left.identity, right.identity);
439
- }
440
- function compareIdentity(left, right) {
441
- if (typeof left === 'string' && typeof right === 'string')
442
- return compareNodeIds(left, right);
443
- if (typeof left !== 'string' && typeof right !== 'string')
444
- return compareEdgeKeys(left, right);
445
- invalid('/after/identity', 'Frontier identity kind disagrees with selection');
434
+ function compareReferenceRank(left, right, order, ordering) {
435
+ return compareQueryRank(left, right, order === undefined || ordering === undefined ? undefined : { ...order, kind: ordering });
446
436
  }
447
437
  function orderingValue(input, kind) {
448
438
  if (kind === 'boolean')
@@ -451,22 +441,6 @@ function orderingValue(input, kind) {
451
441
  return typeof input === 'number' && Number.isFinite(input);
452
442
  return typeof input === 'string';
453
443
  }
454
- function compareOrderingValue(left, right, kind) {
455
- if (kind === 'boolean')
456
- return Number(left) - Number(right);
457
- if (kind === 'number')
458
- return left - right;
459
- return compareUnicodeScalars(left, right);
460
- }
461
- function compareUnicodeScalars(left, right) {
462
- const a = Array.from(left, (value) => value.codePointAt(0));
463
- const b = Array.from(right, (value) => value.codePointAt(0));
464
- for (let index = 0; index < Math.min(a.length, b.length); index += 1) {
465
- if (a[index] !== b[index])
466
- return a[index] - b[index];
467
- }
468
- return a.length - b.length;
469
- }
470
444
  function projectNode(node, shape) {
471
445
  return shape === 'value'
472
446
  ? Object.freeze({ kind: 'value', value: node })
@@ -2,6 +2,12 @@ import { type ObservationRequirement } from '#graph/reconcile/evidence';
2
2
  import type { Effect, PlanningBlocker, PlanningConflict, Premise, ReconciliationPlan } from './model.js';
3
3
  export declare function canonicalRequirements(values: readonly ObservationRequirement[]): ObservationRequirement[];
4
4
  export declare function canonicalPremises(values: readonly Premise[]): Premise[];
5
+ /**
6
+ * Distinct desired refs can name one target: an explicit NodeId and a binding whose
7
+ * correspondence observes that Node. Effects with one key and equal content collapse; effects with
8
+ * one key and different content contradict the desired state, which no transition can establish.
9
+ */
10
+ export declare function contradictoryEffects(values: readonly Effect[]): PlanningConflict[];
5
11
  export declare function canonicalEffects(values: readonly Effect[]): Effect[];
6
12
  export declare function canonicalConflicts(values: readonly PlanningConflict[]): PlanningConflict[];
7
13
  export declare function canonicalBlockers(values: readonly PlanningBlocker[]): PlanningBlocker[];
@@ -1,3 +1,4 @@
1
+ import * as portable from '@astrale-os/kernel-dsl/value';
1
2
  import { freezeRequirement, requirementKey, } from '#graph/reconcile/evidence';
2
3
  import { encodeEdgeKey } from '../../edge/index.js';
3
4
  export function canonicalRequirements(values) {
@@ -8,6 +9,30 @@ export function canonicalRequirements(values) {
8
9
  export function canonicalPremises(values) {
9
10
  return [...new Map(values.map((value) => [premiseKey(value), value])).values()].sort(comparePremises);
10
11
  }
12
+ /**
13
+ * Distinct desired refs can name one target: an explicit NodeId and a binding whose
14
+ * correspondence observes that Node. Effects with one key and equal content collapse; effects with
15
+ * one key and different content contradict the desired state, which no transition can establish.
16
+ */
17
+ export function contradictoryEffects(values) {
18
+ const groups = new Map();
19
+ for (const value of values) {
20
+ const key = effectKey(value);
21
+ const group = groups.get(key) ?? new Map();
22
+ group.set(portable.json.serialize(value), value);
23
+ groups.set(key, group);
24
+ }
25
+ const conflicts = [];
26
+ for (const group of groups.values()) {
27
+ if (group.size < 2)
28
+ continue;
29
+ conflicts.push({
30
+ kind: 'desired-target-contradictory',
31
+ effects: [...group].sort(([left], [right]) => compare(left, right)).map(([, value]) => value),
32
+ });
33
+ }
34
+ return conflicts;
35
+ }
11
36
  export function canonicalEffects(values) {
12
37
  return [...new Map(values.map((value) => [effectKey(value), value])).values()].sort(compareEffects);
13
38
  }
@@ -66,6 +91,9 @@ function freezeConflict(value) {
66
91
  if (value.kind === 'correspondence-noninjective') {
67
92
  return Object.freeze({ ...value, desired: Object.freeze([...value.desired]) });
68
93
  }
94
+ if (value.kind === 'desired-target-contradictory') {
95
+ return Object.freeze({ ...value, effects: Object.freeze([...value.effects]) });
96
+ }
69
97
  return Object.freeze({ ...value });
70
98
  }
71
99
  function compare(left, right) {
@@ -72,6 +72,10 @@ export type PlanningConflict = ReconcileConflict | CorrespondenceConflict | Obse
72
72
  } | {
73
73
  readonly kind: 'node-identity-absent';
74
74
  readonly node: NodeId;
75
+ } | {
76
+ /** One effect target reached through aliasing refs with different desired content. */
77
+ readonly kind: 'desired-target-contradictory';
78
+ readonly effects: readonly Effect[];
75
79
  };
76
80
  export type PlanningBlocker = {
77
81
  readonly kind: 'selection-unsatisfied';
@@ -1,5 +1,5 @@
1
1
  import { fingerprint } from '../condition/index.js';
2
- import { canonicalBlockers, canonicalConflicts, canonicalEffects, canonicalPremises, canonicalRequirements, createPlan, } from './canonical.js';
2
+ import { canonicalBlockers, canonicalConflicts, canonicalEffects, canonicalPremises, canonicalRequirements, contradictoryEffects, createPlan, } from './canonical.js';
3
3
  import { createPlanningContext } from './context.js';
4
4
  import { planEdge } from './edge.js';
5
5
  import { planNode } from './node.js';
@@ -13,6 +13,7 @@ export function plan(input) {
13
13
  planEdge(edge, context);
14
14
  for (const selection of input.desired.selections)
15
15
  planSelection(selection, context);
16
+ context.conflicts.push(...contradictoryEffects(context.effects));
16
17
  if (context.conflicts.length > 0) {
17
18
  return Object.freeze({
18
19
  kind: 'conflict',
@@ -0,0 +1,3 @@
1
+ import type { authority } from '../../auth/index.js';
2
+ /** The Kernel instance of the authority vocabulary; Core Auth interprets authority through it. */
3
+ export declare const authorityVocabulary: authority.AuthorityVocabulary;
@@ -0,0 +1,25 @@
1
+ import { K } from '../kernel/schema.js';
2
+ /** The Kernel instance of the authority vocabulary; Core Auth interprets authority through it. */
3
+ export const authorityVocabulary = Object.freeze({
4
+ identity: ref(K.classes.Identity.ref),
5
+ composition: Object.freeze({
6
+ extension: ref(K.classes.extends_with.ref),
7
+ constraint: ref(K.classes.constrained_by.ref),
8
+ exclusion: ref(K.classes.excluded_from.ref),
9
+ }),
10
+ capabilities: Object.freeze({
11
+ create: ref(K.classes.can_create.ref),
12
+ read: ref(K.classes.can_read.ref),
13
+ traverse: ref(K.classes.can_traverse.ref),
14
+ update: ref(K.classes.can_update.ref),
15
+ delete: ref(K.classes.can_delete.ref),
16
+ }),
17
+ instanceOf: ref(K.classes.instance_of.ref),
18
+ });
19
+ function ref(value) {
20
+ return Object.freeze({
21
+ origin: value.origin,
22
+ kind: 'class',
23
+ name: value.name,
24
+ });
25
+ }
@@ -1,2 +1,7 @@
1
1
  import { type builder } from '@astrale-os/kernel-dsl/v1';
2
+ /**
3
+ * One Identity-composition Edge Class. Each is `noSelf` and `acyclic` on its own; no constraint spans
4
+ * the three Classes, so stored data may hold a cycle that crosses them. Core authority decides every
5
+ * binder whose closure reaches such a cycle false, and no other (AUTH-AUTHORITY-DENOTATION).
6
+ */
2
7
  export declare function identityComposition(role: 'constraint' | 'excluded' | 'extension', description: string): builder.EdgeClass;
@@ -1,6 +1,11 @@
1
1
  import { edgeClass } from '@astrale-os/kernel-dsl/v1';
2
2
  import { Edge } from '../meta/index.js';
3
3
  import { Identity } from './identity.js';
4
+ /**
5
+ * One Identity-composition Edge Class. Each is `noSelf` and `acyclic` on its own; no constraint spans
6
+ * the three Classes, so stored data may hold a cycle that crosses them. Core authority decides every
7
+ * binder whose closure reaches such a cycle false, and no other (AUTH-AUTHORITY-DENOTATION).
8
+ */
4
9
  export function identityComposition(role, description) {
5
10
  return edgeClass.directed({
6
11
  abstract: false,
@@ -5,3 +5,4 @@ export * as graph from './kernel/projection/index.js';
5
5
  export * as introspection from './introspection/index.js';
6
6
  export * as installation from './installation/index.js';
7
7
  export { OperationCore } from './core/index.js';
8
+ export { authorityVocabulary } from './authority/vocabulary.js';
@@ -4,3 +4,4 @@ export * as graph from './kernel/projection/index.js';
4
4
  export * as introspection from './introspection/index.js';
5
5
  export * as installation from './installation/index.js';
6
6
  export { OperationCore } from './core/index.js';
7
+ export { authorityVocabulary } from './authority/vocabulary.js';
@@ -9,4 +9,6 @@ export type Introspection = {
9
9
  } | {
10
10
  readonly kind: 'dependencies';
11
11
  readonly origin: Key.Origin;
12
+ } | {
13
+ readonly kind: 'installed';
12
14
  };
@@ -8469,29 +8469,6 @@ declare const KernelDefinitions: {
8469
8469
  };
8470
8470
  })[];
8471
8471
  operations: ({
8472
- op: "edge.update";
8473
- edge: {
8474
- source: string;
8475
- target: string;
8476
- class: string;
8477
- };
8478
- slug: unknown;
8479
- props?: {
8480
- set: Record<string, unknown>;
8481
- unset: string[];
8482
- } | undefined;
8483
- } | {
8484
- op: "edge.update";
8485
- edge: {
8486
- source: string;
8487
- target: string;
8488
- class: string;
8489
- };
8490
- props: {
8491
- set: Record<string, unknown>;
8492
- unset: string[];
8493
- };
8494
- } | {
8495
8472
  op: "node.create";
8496
8473
  as: string;
8497
8474
  class: string;
@@ -8519,6 +8496,29 @@ declare const KernelDefinitions: {
8519
8496
  };
8520
8497
  slug?: unknown;
8521
8498
  props: Record<string, unknown>;
8499
+ } | {
8500
+ op: "edge.update";
8501
+ edge: {
8502
+ source: string;
8503
+ target: string;
8504
+ class: string;
8505
+ };
8506
+ slug: unknown;
8507
+ props?: {
8508
+ set: Record<string, unknown>;
8509
+ unset: string[];
8510
+ } | undefined;
8511
+ } | {
8512
+ op: "edge.update";
8513
+ edge: {
8514
+ source: string;
8515
+ target: string;
8516
+ class: string;
8517
+ };
8518
+ props: {
8519
+ set: Record<string, unknown>;
8520
+ unset: string[];
8521
+ };
8522
8522
  } | {
8523
8523
  op: "edge.delete";
8524
8524
  edge: {
@@ -8563,6 +8563,14 @@ declare const KernelDefinitions: {
8563
8563
  install: builder.Function<builder.CallableProjection<{
8564
8564
  operation: string;
8565
8565
  domains: ({
8566
+ publication: {
8567
+ url: string;
8568
+ token?: string | undefined;
8569
+ etag?: string | undefined;
8570
+ };
8571
+ revision?: string | undefined;
8572
+ currentRevision?: string | null | undefined;
8573
+ } | {
8566
8574
  artifact: {
8567
8575
  digest: string;
8568
8576
  mediaType: string;
@@ -8570,11 +8578,18 @@ declare const KernelDefinitions: {
8570
8578
  };
8571
8579
  currentRevision?: string | null | undefined;
8572
8580
  } | {
8573
- publication: {
8581
+ release: {
8574
8582
  url: string;
8575
8583
  token?: string | undefined;
8576
- etag?: string | undefined;
8584
+ digest?: string | undefined;
8577
8585
  };
8586
+ consent?: {
8587
+ issuer: {
8588
+ from: string;
8589
+ to: string;
8590
+ };
8591
+ previous?: "drain" | "revoke" | undefined;
8592
+ } | undefined;
8578
8593
  revision?: string | undefined;
8579
8594
  currentRevision?: string | null | undefined;
8580
8595
  })[];
@@ -8584,6 +8599,8 @@ declare const KernelDefinitions: {
8584
8599
  introspect: builder.Function<builder.CallableProjection<{
8585
8600
  kind: "bundle" | "dependencies" | "inspect";
8586
8601
  origin: string;
8602
+ } | {
8603
+ kind: "installed";
8587
8604
  }, {
8588
8605
  readonly mode: 'binary';
8589
8606
  }, "authenticated", false, false, undefined>>;
@@ -8612,6 +8629,13 @@ declare const KernelDefinitions: {
8612
8629
  revision: string;
8613
8630
  generation: string;
8614
8631
  } | null;
8632
+ consent?: {
8633
+ issuer: {
8634
+ from: string;
8635
+ to: string;
8636
+ };
8637
+ previous: "drain" | "revoke";
8638
+ } | undefined;
8615
8639
  };
8616
8640
  phase: "converge" | "cutover";
8617
8641
  state: "committed";
@@ -8964,6 +8988,14 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
8964
8988
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedFunction<{
8965
8989
  operation: string;
8966
8990
  domains: ({
8991
+ publication: {
8992
+ url: string;
8993
+ token?: string | undefined;
8994
+ etag?: string | undefined;
8995
+ };
8996
+ revision?: string | undefined;
8997
+ currentRevision?: string | null | undefined;
8998
+ } | {
8967
8999
  artifact: {
8968
9000
  digest: string;
8969
9001
  mediaType: string;
@@ -8971,11 +9003,18 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
8971
9003
  };
8972
9004
  currentRevision?: string | null | undefined;
8973
9005
  } | {
8974
- publication: {
9006
+ release: {
8975
9007
  url: string;
8976
9008
  token?: string | undefined;
8977
- etag?: string | undefined;
9009
+ digest?: string | undefined;
8978
9010
  };
9011
+ consent?: {
9012
+ issuer: {
9013
+ from: string;
9014
+ to: string;
9015
+ };
9016
+ previous?: "drain" | "revoke" | undefined;
9017
+ } | undefined;
8979
9018
  revision?: string | undefined;
8980
9019
  currentRevision?: string | null | undefined;
8981
9020
  })[];
@@ -9143,29 +9182,6 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
9143
9182
  };
9144
9183
  })[];
9145
9184
  operations: ({
9146
- op: "edge.update";
9147
- edge: {
9148
- source: string;
9149
- target: string;
9150
- class: string;
9151
- };
9152
- slug: unknown;
9153
- props?: {
9154
- set: Record<string, unknown>;
9155
- unset: string[];
9156
- } | undefined;
9157
- } | {
9158
- op: "edge.update";
9159
- edge: {
9160
- source: string;
9161
- target: string;
9162
- class: string;
9163
- };
9164
- props: {
9165
- set: Record<string, unknown>;
9166
- unset: string[];
9167
- };
9168
- } | {
9169
9185
  op: "node.create";
9170
9186
  as: string;
9171
9187
  class: string;
@@ -9193,6 +9209,29 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
9193
9209
  };
9194
9210
  slug?: unknown;
9195
9211
  props: Record<string, unknown>;
9212
+ } | {
9213
+ op: "edge.update";
9214
+ edge: {
9215
+ source: string;
9216
+ target: string;
9217
+ class: string;
9218
+ };
9219
+ slug: unknown;
9220
+ props?: {
9221
+ set: Record<string, unknown>;
9222
+ unset: string[];
9223
+ } | undefined;
9224
+ } | {
9225
+ op: "edge.update";
9226
+ edge: {
9227
+ source: string;
9228
+ target: string;
9229
+ class: string;
9230
+ };
9231
+ props: {
9232
+ set: Record<string, unknown>;
9233
+ unset: string[];
9234
+ };
9196
9235
  } | {
9197
9236
  op: "edge.delete";
9198
9237
  edge: {
@@ -9508,6 +9547,13 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
9508
9547
  revision: string;
9509
9548
  generation: string;
9510
9549
  } | null;
9550
+ consent?: {
9551
+ issuer: {
9552
+ from: string;
9553
+ to: string;
9554
+ };
9555
+ previous: "drain" | "revoke";
9556
+ } | undefined;
9511
9557
  };
9512
9558
  phase: "converge" | "cutover";
9513
9559
  state: "committed";
@@ -9563,30 +9609,15 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
9563
9609
  readonly key: "kernel.astrale.ai:function.journal";
9564
9610
  readonly execution: undefined;
9565
9611
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedMethod<{
9566
- iss: string;
9567
- sub: string;
9612
+ audience?: string | undefined;
9613
+ ttlSeconds: number;
9614
+ grant?: unknown;
9615
+ identity: string;
9568
9616
  }, {
9569
9617
  readonly mode: 'value';
9570
- readonly value: {
9571
- id: string;
9572
- iss: string;
9573
- sub: string;
9574
- frozen: boolean;
9575
- requiredClaims: ({
9576
- claim: string;
9577
- op: "contains";
9578
- value: unknown;
9579
- } | {
9580
- claim: string;
9581
- op: "eq";
9582
- value: unknown;
9583
- } | {
9584
- claim: string;
9585
- op: "exists";
9586
- })[];
9587
- } | null;
9588
- }, true, false, "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.whois"> & {
9589
- readonly name: "whois";
9618
+ readonly value: string;
9619
+ }, true, false, "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.impersonate"> & {
9620
+ readonly name: "impersonate";
9590
9621
  readonly executable: true;
9591
9622
  readonly execution: undefined;
9592
9623
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedMethod<{
@@ -9633,15 +9664,30 @@ export declare const KernelRootFunctions: readonly ((import("@astrale-os/kernel-
9633
9664
  readonly executable: true;
9634
9665
  readonly execution: undefined;
9635
9666
  }) | (import("@astrale-os/kernel-dsl/v1").ResolvedMethod<{
9636
- audience?: string | undefined;
9637
- ttlSeconds: number;
9638
- grant?: unknown;
9639
- identity: string;
9667
+ iss: string;
9668
+ sub: string;
9640
9669
  }, {
9641
9670
  readonly mode: 'value';
9642
- readonly value: string;
9643
- }, true, false, "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.impersonate"> & {
9644
- readonly name: "impersonate";
9671
+ readonly value: {
9672
+ id: string;
9673
+ iss: string;
9674
+ sub: string;
9675
+ frozen: boolean;
9676
+ requiredClaims: ({
9677
+ claim: string;
9678
+ op: "contains";
9679
+ value: unknown;
9680
+ } | {
9681
+ claim: string;
9682
+ op: "eq";
9683
+ value: unknown;
9684
+ } | {
9685
+ claim: string;
9686
+ op: "exists";
9687
+ })[];
9688
+ } | null;
9689
+ }, true, false, "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.whois"> & {
9690
+ readonly name: "whois";
9645
9691
  readonly executable: true;
9646
9692
  readonly execution: undefined;
9647
9693
  }))[];