@almadar/shell-runtime 0.1.0 → 1.1.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 (167) hide show
  1. package/dist/chunk-2WCVOMZ2.js +112 -0
  2. package/dist/chunk-57SBCUSM.js +62 -0
  3. package/dist/{chunk-Q2H75UYT.js → chunk-A2JJT4GA.js} +1 -37
  4. package/dist/chunk-BAS26HBN.js +10 -0
  5. package/dist/{chunk-REPX5QPI.js → chunk-BOVU4TCQ.js} +11 -3
  6. package/dist/chunk-BY5G4225.js +6 -0
  7. package/dist/chunk-DFDNHVDW.js +284 -0
  8. package/dist/{chunk-NATGCIVM.js → chunk-JVSREWQO.js} +378 -130
  9. package/dist/{chunk-DYOJGLIX.js → chunk-LKWYCYX5.js} +2 -5
  10. package/dist/chunk-LYFIQPXX.js +1 -0
  11. package/dist/{chunk-ODJCZ27I.js → chunk-N7HYNKK6.js} +35 -2
  12. package/dist/{chunk-4J2QEIUV.js → chunk-NTFQ36UN.js} +4 -30
  13. package/dist/chunk-NU6LVKGS.js +15 -0
  14. package/dist/{chunk-VNMG7NKY.js → chunk-OQVSN7DP.js} +21 -26
  15. package/dist/chunk-P2N6K2IV.js +20 -0
  16. package/dist/{chunk-QQRDUMB2.js → chunk-QCJWPXLH.js} +11 -11
  17. package/dist/{chunk-QELZ6TEJ.js → chunk-UD2CXYSJ.js} +39 -3
  18. package/dist/{chunk-UJHOUZAL.js → chunk-V4EMDPCO.js} +2 -5
  19. package/dist/chunk-VKQA2DJX.js +409 -0
  20. package/dist/chunk-VNGXRYFF.js +9 -0
  21. package/dist/{chunk-HNOAZWFH.js → chunk-WGCWJOT2.js} +2 -0
  22. package/dist/chunk-XZGVOBY6.js +33 -0
  23. package/dist/chunk-ZUSM4VW4.js +197 -0
  24. package/dist/client/EventTransport.d.ts +23 -7
  25. package/dist/client/EventTransport.js +1 -2
  26. package/dist/client/awaiting.js +0 -1
  27. package/dist/client/channel-transport.d.ts +6 -6
  28. package/dist/client/channel-transport.js +0 -1
  29. package/dist/client/circuit-store.d.ts +16 -5
  30. package/dist/client/circuit-store.js +2 -3
  31. package/dist/client/client-kernel.d.ts +36 -15
  32. package/dist/client/declared-input-dispatch.d.ts +19 -2
  33. package/dist/client/declared-input-dispatch.js +1 -2
  34. package/dist/client/inbound-dispatch.d.ts +21 -2
  35. package/dist/client/inbound-dispatch.js +1 -2
  36. package/dist/client/local-fold.d.ts +15 -8
  37. package/dist/client/local-fold.js +1 -2
  38. package/dist/client/render-sigils.js +0 -1
  39. package/dist/client/state-book.d.ts +9 -16
  40. package/dist/client/state-book.js +1 -2
  41. package/dist/client/trait-mount-error.js +0 -1
  42. package/dist/credentials/env-vars.d.ts +5 -1
  43. package/dist/credentials/env-vars.js +1 -3
  44. package/dist/credentials/scope.d.ts +8 -7
  45. package/dist/credentials/scope.js +0 -1
  46. package/dist/credentials/vault.d.ts +142 -0
  47. package/dist/credentials/vault.js +1 -0
  48. package/dist/effects/in-flight-calls.js +0 -1
  49. package/dist/effects/on-device-model.js +0 -1
  50. package/dist/events/EventBus.d.ts +1 -4
  51. package/dist/events/EventBus.js +0 -1
  52. package/dist/events/emit-stamp.js +0 -1
  53. package/dist/index.d.ts +25 -42
  54. package/dist/index.js +27 -45
  55. package/dist/kernel/decode.d.ts +10 -10
  56. package/dist/kernel/decode.js +1 -2
  57. package/dist/kernel/engine.d.ts +133 -31
  58. package/dist/kernel/engine.js +7 -9
  59. package/dist/kernel/frame-applier.d.ts +8 -7
  60. package/dist/kernel/frame-applier.js +1 -2
  61. package/dist/kernel/host.d.ts +148 -16
  62. package/dist/kernel/host.js +4 -7
  63. package/dist/kernel/lane.d.ts +1 -22
  64. package/dist/kernel/lane.js +1 -2
  65. package/dist/kernel/os-fetch-port.d.ts +7 -0
  66. package/dist/kernel/os-fetch-port.js +3 -0
  67. package/dist/kernel/os-port.d.ts +30 -8
  68. package/dist/kernel/os-port.js +1 -2
  69. package/dist/kernel/program-effects.d.ts +11 -28
  70. package/dist/kernel/program-effects.js +1 -2
  71. package/dist/kernel/secret-ports.d.ts +139 -0
  72. package/dist/kernel/secret-ports.js +2 -0
  73. package/dist/kernel/wire.d.ts +113 -12
  74. package/dist/loader/fetch-loader.d.ts +26 -0
  75. package/dist/loader/fetch-loader.js +1 -0
  76. package/dist/loader/lazy-page.js +0 -1
  77. package/dist/loader/schema-loader.d.ts +1 -17
  78. package/dist/persistence/native-memory.js +0 -1
  79. package/dist/runtime/entities/declaredCollections.d.ts +6 -0
  80. package/dist/runtime/entities/declaredCollections.js +1 -0
  81. package/dist/runtime/evaluation/local-store-transport.d.ts +16 -23
  82. package/dist/runtime/evaluation/local-store-transport.js +9 -13
  83. package/dist/runtime/evaluation/residence-transport.d.ts +3 -3
  84. package/dist/runtime/evaluation/residence-transport.js +1 -2
  85. package/dist/runtime/evaluation/routed-persistence.js +0 -1
  86. package/dist/runtime/events/identity/routing.d.ts +2 -53
  87. package/dist/runtime/events/identity/routing.js +1 -2
  88. package/dist/runtime/types.d.ts +5 -205
  89. package/dist/runtime/types.js +1 -2
  90. package/dist/service/default-call-service.js +0 -1
  91. package/dist/service/service-provider.js +0 -1
  92. package/package.json +8 -5
  93. package/dist/chunk-2JU7Y4KU.js +0 -21
  94. package/dist/chunk-46RWK2B5.js +0 -28
  95. package/dist/chunk-4ZICQ5PM.js +0 -192
  96. package/dist/chunk-53IPZXDP.js +0 -76
  97. package/dist/chunk-5D63EMO5.js +0 -16
  98. package/dist/chunk-CPSQXEJ6.js +0 -55
  99. package/dist/chunk-CQP5XAX6.js +0 -173
  100. package/dist/chunk-CROS2GEX.js +0 -49
  101. package/dist/chunk-D4XJTBLB.js +0 -217
  102. package/dist/chunk-D5USD2EX.js +0 -232
  103. package/dist/chunk-EV56K4GB.js +0 -63
  104. package/dist/chunk-FQ6IZMIU.js +0 -10
  105. package/dist/chunk-HMK6YMQS.js +0 -135
  106. package/dist/chunk-IHQLE5M7.js +0 -62
  107. package/dist/chunk-JFWFDUTR.js +0 -35
  108. package/dist/chunk-MHYSHSRG.js +0 -54
  109. package/dist/chunk-MLKGABMK.js +0 -7
  110. package/dist/chunk-NAECVIAR.js +0 -322
  111. package/dist/chunk-Q7JK4KY7.js +0 -9
  112. package/dist/chunk-RBUMDYFS.js +0 -681
  113. package/dist/chunk-SAS5KKCR.js +0 -43
  114. package/dist/chunk-SWPDU752.js +0 -28
  115. package/dist/chunk-T775TUCD.js +0 -18
  116. package/dist/chunk-VMOBW7RK.js +0 -21
  117. package/dist/chunk-WNPNNYXY.js +0 -22
  118. package/dist/chunk-XB5GYODW.js +0 -28
  119. package/dist/chunk-YL2SO5TP.js +0 -334
  120. package/dist/chunk-YO4LWS3I.js +0 -606
  121. package/dist/chunk-ZAQSS47X.js +0 -157
  122. package/dist/chunk-ZCQUUJIF.js +0 -129
  123. package/dist/client/ServerBridge.d.ts +0 -126
  124. package/dist/client/ServerBridge.js +0 -3
  125. package/dist/credentials/seed.d.ts +0 -21
  126. package/dist/credentials/seed.js +0 -2
  127. package/dist/credentials/store.d.ts +0 -110
  128. package/dist/credentials/store.js +0 -2
  129. package/dist/index-hT1xCdTq.d.ts +0 -46
  130. package/dist/kernel/beacon.d.ts +0 -32
  131. package/dist/kernel/beacon.js +0 -2
  132. package/dist/kernel/http.d.ts +0 -302
  133. package/dist/kernel/http.js +0 -6
  134. package/dist/kernel/oauth-effects.d.ts +0 -25
  135. package/dist/kernel/oauth-effects.js +0 -7
  136. package/dist/kernel/oauth-port.d.ts +0 -31
  137. package/dist/kernel/oauth-port.js +0 -2
  138. package/dist/loader/http-loader.d.ts +0 -111
  139. package/dist/loader/http-loader.js +0 -2
  140. package/dist/runtime/effects/composition/compose-behaviors.d.ts +0 -58
  141. package/dist/runtime/effects/composition/compose-behaviors.js +0 -4
  142. package/dist/runtime/effects/composition/event-wiring.d.ts +0 -38
  143. package/dist/runtime/effects/composition/event-wiring.js +0 -2
  144. package/dist/runtime/effects/composition/index.d.ts +0 -5
  145. package/dist/runtime/effects/composition/index.js +0 -6
  146. package/dist/runtime/effects/composition/layout-strategy.d.ts +0 -35
  147. package/dist/runtime/effects/composition/layout-strategy.js +0 -2
  148. package/dist/runtime/effects/composition/pipe.d.ts +0 -25
  149. package/dist/runtime/effects/composition/pipe.js +0 -2
  150. package/dist/runtime/entities/mockStoreSeed.d.ts +0 -56
  151. package/dist/runtime/entities/mockStoreSeed.js +0 -3
  152. package/dist/runtime/entities/seedBrowserStore.d.ts +0 -28
  153. package/dist/runtime/entities/seedBrowserStore.js +0 -2
  154. package/dist/runtime/entities/std-mock-seed.d.ts +0 -87
  155. package/dist/runtime/entities/std-mock-seed.js +0 -2
  156. package/dist/runtime/time/TickScheduler.d.ts +0 -77
  157. package/dist/runtime/time/TickScheduler.js +0 -3
  158. package/dist/runtime/time/cron.d.ts +0 -25
  159. package/dist/runtime/time/cron.js +0 -2
  160. package/dist/runtime/time/duration.d.ts +0 -20
  161. package/dist/runtime/time/duration.js +0 -2
  162. package/dist/runtime/traits/OrbitalTraitParsing.d.ts +0 -34
  163. package/dist/runtime/traits/OrbitalTraitParsing.js +0 -2
  164. package/dist/runtime/traits/listen-targets.d.ts +0 -16
  165. package/dist/runtime/traits/listen-targets.js +0 -3
  166. package/dist/runtime/traits/trait-index.d.ts +0 -35
  167. package/dist/runtime/traits/trait-index.js +0 -3
@@ -39,8 +39,8 @@ type OsRequirement = {
39
39
  };
40
40
  /** The grant decisions the wasm kernel owns (`OsGrants::allows`, the one-grant glob matcher, `is_public_address`). */
41
41
  interface OsGrantPort {
42
- /** `OsGrants::allows` over the grants every registered program declares. */
43
- allows(need: OsRequirement): boolean;
42
+ /** `OsGrants::allows` over the grants of `orbital` (its own plus the app level); with no orbital, the app level alone. */
43
+ allows(need: OsRequirement, orbital?: string): boolean;
44
44
  /** Whether the absolute `glob` (`**`, `*`, `?`) matches `path`, as a one-grant `fs_allows` for read. */
45
45
  globMatches(glob: string, path: string): boolean;
46
46
  /** `is_public_address`: the rule an outbound host name must pass. */
@@ -57,19 +57,20 @@ interface OsAnchorProblem {
57
57
  }
58
58
  /** What a host answers an `os` ask with; `close` drops every handle it holds, as the native `OsHandles::close_all`. */
59
59
  interface OsHostPort {
60
- answer(op: OsOp, args: JsonValue[]): Promise<Settled<JsonValue, OsError>>;
60
+ /** `orbital` is the orbital whose trait made the ask: its grants (plus the app's) answer it. */
61
+ answer(op: OsOp, args: JsonValue[], orbital?: string): Promise<Settled<JsonValue, OsError>>;
61
62
  /**
62
63
  * `Completions::run_later`: a keyed ask of a completion-deferring op. A failed check (or a key already pending) is the
63
64
  * in-place `error`; `ok` means the work runs in the background and its outcome reaches `deliver` once, unless
64
65
  * the key is cancelled first. A host with no `defer` answers every ask in place.
65
66
  */
66
- defer?(op: OsOp, args: JsonValue[], key: string, deliver: (outcome: Settled<JsonValue, OsError>) => void): Settled<null, OsError>;
67
+ defer?(op: OsOp, args: JsonValue[], key: string, deliver: (outcome: Settled<JsonValue, OsError>) => void, orbital?: string): Settled<null, OsError>;
67
68
  /**
68
69
  * A keyed stream (`OsOp::is_stream`, EXEC-QUEUE-12): the host binds and answers once in place, then hands each message
69
70
  * to `message` until it ends; `message` answers `false` when no one takes it any more. A failure after the answer
70
71
  * reaches `fail` once. A host with no `stream` answers every stream ask in place, as unsupported.
71
72
  */
72
- stream?(op: OsOp, args: JsonValue[], key: string, message: (value: JsonValue) => boolean, fail: (error: OsError) => void): Promise<Settled<JsonValue, OsError>>;
73
+ stream?(op: OsOp, args: JsonValue[], key: string, message: (value: JsonValue) => boolean, fail: (error: OsError) => void, orbital?: string): Promise<Settled<JsonValue, OsError>>;
73
74
  /** `OsHandles::cancel_completion`: drop the pending completion of `key`, or stop its stream; `false` when none is open. */
74
75
  cancel?(key: string): boolean;
75
76
  close(): void;
@@ -85,6 +86,26 @@ interface OsCompletionPort {
85
86
  streams(op: OsOp): boolean;
86
87
  event(site: CallSiteWire, key: string, outcome: Settled<JsonValue, OsError>): OsCompletionEvent | null;
87
88
  }
89
+ /** The next step of a TLS operation the kernel parked on a deferred raw ask. */
90
+ type OsTlsStep = {
91
+ ask: {
92
+ op: OsOp;
93
+ args: JsonValue[];
94
+ };
95
+ } | {
96
+ done: Settled<JsonValue, OsError>;
97
+ };
98
+ /** The kernel's TLS sockets (EXEC-HTTP-7): the host's raw outcome of a deferred ask goes in, the next raw ask or the program's outcome comes out. */
99
+ interface OsTlsPort {
100
+ /** `null` when `key` parks no TLS operation. */
101
+ complete(key: string, outcome: Settled<JsonValue, OsError>): OsTlsStep | null;
102
+ }
103
+ /** The server handle's TLS export. */
104
+ interface OsTlsKernel {
105
+ tlsComplete(key: string, outcomeJson: string): string;
106
+ }
107
+ /** The TLS port over the kernel `Server` handle: every decision is `RuntimeKernel::tls_complete`. */
108
+ declare function kernelOsTls(server: () => OsTlsKernel): OsTlsPort;
88
109
  /** The kernel exports the completion port is built from. */
89
110
  interface OsCompletionMatchers {
90
111
  osDeferringOps(): string;
@@ -95,7 +116,7 @@ interface OsCompletionMatchers {
95
116
  declare function kernelOsCompletions(kernel: OsCompletionMatchers): OsCompletionPort;
96
117
  /** The kernel pieces a grant port is built from: the `Server` handle holding the program's grants and the module-level matchers. */
97
118
  interface OsGrantKernel {
98
- osAllows(requirementJson: string): boolean;
119
+ osAllows(requirementJson: string, orbital?: string): boolean;
99
120
  setOsAnchors(anchorsJson: string): string;
100
121
  osResolveArgs(op: string, argsJson: string): string;
101
122
  }
@@ -113,6 +134,7 @@ interface OsAnchors {
113
134
  readonly home?: string;
114
135
  readonly start?: string;
115
136
  readonly exeDir?: string;
137
+ readonly exe?: string;
116
138
  readonly env?: Readonly<Record<string, string>>;
117
139
  }
118
140
  /** What a written path names under the host's anchors (`OsAnchors::expand`). */
@@ -129,5 +151,5 @@ declare function expandAnchor(anchors: OsAnchors, text: string): AnchoredPath;
129
151
  /** The grant port a host checks absolute paths through: an fs need also matches the program's `~/` and `./` grants (`OsGrants::fs_allows_at`). */
130
152
  declare function anchoredGrants(grants: OsGrantPort, anchors: OsAnchors): OsGrantPort;
131
153
 
132
- export { anchoredGrants, expandAnchor, kernelOsCompletions, kernelOsGrants };
133
- export type { AnchoredPath, OsAnchorProblem, OsAnchors, OsCompletionEvent, OsCompletionMatchers, OsCompletionPort, OsDesktopKind, OsFsMode, OsGrantKernel, OsGrantMatchers, OsGrantPort, OsHostPort, OsNetKind, OsRequirement, OsStdioKind, OsSysKind };
154
+ export { anchoredGrants, expandAnchor, kernelOsCompletions, kernelOsGrants, kernelOsTls };
155
+ export type { AnchoredPath, OsAnchorProblem, OsAnchors, OsCompletionEvent, OsCompletionMatchers, OsCompletionPort, OsDesktopKind, OsFsMode, OsGrantKernel, OsGrantMatchers, OsGrantPort, OsHostPort, OsNetKind, OsRequirement, OsStdioKind, OsSysKind, OsTlsKernel, OsTlsPort, OsTlsStep };
@@ -1,2 +1 @@
1
- export { anchoredGrants, expandAnchor, kernelOsCompletions, kernelOsGrants } from '../chunk-REPX5QPI.js';
2
- import '../chunk-MLKGABMK.js';
1
+ export { anchoredGrants, expandAnchor, kernelOsCompletions, kernelOsGrants, kernelOsTls } from '../chunk-BOVU4TCQ.js';
@@ -1,7 +1,9 @@
1
- import { ProgramInspection, CatalogEntry, TraitDescription, BehaviorDescription, OrbitalSchema, EvaluatedProgram, ProgramValidationIssue, DependencyGraph, EventPayload, CircuitStepResult } from '@almadar/core';
1
+ import { ProgramInspection, CatalogEntry, TraitDescription, BehaviorDescription, OrbitalSchema, EvaluatedProgram, ProgramValidationIssue, DependencyGraph, EventPayload } from '@almadar/core';
2
+ import { ProveReport, OsGrantsReport, PlayedStep } from '@almadar/core/kernel-wire';
3
+ export { PlayedStep } from '@almadar/core/kernel-wire';
2
4
 
3
5
  /** The effects the language trio routes to this host. */
4
- declare const PROGRAM_EFFECTS: readonly ["behavior/catalog", "behavior/describe", "behavior/source", "behavior/resolve", "behavior/dependencies", "program/read", "program/print", "program/eval", "program/validate", "program/compose", "program/step"];
6
+ declare const PROGRAM_EFFECTS: readonly ["behavior/catalog", "behavior/describe", "behavior/source", "behavior/resolve", "behavior/dependencies", "program/read", "program/print", "program/eval", "program/validate", "program/prove", "program/os-grants", "program/compose", "program/step"];
5
7
  type ProgramEffectName = (typeof PROGRAM_EFFECTS)[number];
6
8
  /** Narrow an effect head to one this host runs. */
7
9
  declare function isProgramEffect(name: string): name is ProgramEffectName;
@@ -26,35 +28,16 @@ interface StepRequest {
26
28
  now?: number;
27
29
  /** A live call's cutoff: an open call still running after this many ms is cancelled. */
28
30
  settleMs?: number;
29
- /** The user the request dispatches as (`@user`); null or absent is nobody. */
30
- viewer?: EventPayload | null;
31
- }
32
- /** One trait the step's dispatch cascade moved, in dispatch order. */
33
- interface CascadeOutcome {
34
- orbital: string;
35
- trait: string;
36
- /** The event this trait handled (a listener's own triggered event). */
37
- event: string;
38
- from: string;
39
- to: string;
40
- /** The arm that fired; null when none did. */
41
- arm: number | null;
42
- fired: boolean;
43
- /** The effects of the arm this trait fired, as the top-level `effects` report them. */
44
- effects: CircuitStepResult['effects'];
45
- emitted: CircuitStepResult['emitted'];
46
- }
47
- /** A played request: the request as asked, and the circuit it ran, with every trait its cascade moved. */
48
- type PlayedStep = StepRequest & {
49
- result: CircuitStepResult & {
50
- outcomes: CascadeOutcome[];
51
- entityAfter: EventPayload | null;
31
+ /** Test-only: the verified identity the replay kernel binds for this step (`@user`); absent is the anonymous viewer. */
32
+ identity?: {
33
+ subject: string;
34
+ claims: EventPayload;
52
35
  };
53
- };
36
+ }
54
37
  /** The outcome of one program effect: the value for `{ result }`, or the failure (`errors` for eval's validator issues). */
55
38
  type ProgramEffectOutcome = {
56
39
  readonly ok: true;
57
- readonly result: ProgramInspection | CatalogEntry[] | TraitDescription | BehaviorDescription | OrbitalSchema | string | EvaluatedProgram | ProgramValidationReport | DependencyGraph | PlayedStep[];
40
+ readonly result: ProgramInspection | CatalogEntry[] | TraitDescription | BehaviorDescription | OrbitalSchema | string | EvaluatedProgram | ProgramValidationReport | ProveReport | OsGrantsReport | DependencyGraph | PlayedStep[];
58
41
  } | {
59
42
  readonly ok: false;
60
43
  readonly error: string;
@@ -62,4 +45,4 @@ type ProgramEffectOutcome = {
62
45
  };
63
46
 
64
47
  export { PROGRAM_EFFECTS, isProgramEffect };
65
- export type { CascadeOutcome, PlayedStep, ProgramEffectName, ProgramEffectOutcome, ProgramValidationReport, StepRequest };
48
+ export type { ProgramEffectName, ProgramEffectOutcome, ProgramValidationReport, StepRequest };
@@ -1,2 +1 @@
1
- export { PROGRAM_EFFECTS, isProgramEffect } from '../chunk-HNOAZWFH.js';
2
- import '../chunk-MLKGABMK.js';
1
+ export { PROGRAM_EFFECTS, isProgramEffect } from '../chunk-WGCWJOT2.js';
@@ -0,0 +1,139 @@
1
+ import { RuntimeValue, CredentialPayload } from '@almadar/core';
2
+ import { TokenEndpointPost, CredentialVault } from '../credentials/vault.js';
3
+ import { CredentialGrantWire, CredentialStanding, ConnectFailure } from '@almadar/core/kernel-wire';
4
+
5
+ /**
6
+ * The host ports of the kernel's secret, random and credential asks: the secret store, the CSPRNG and the credential
7
+ * administration port. The `http` effect is retired (HTTP/1.1 is `.lolo` over `os/*`), so nothing here moves HTTP bytes.
8
+ */
9
+
10
+ /**
11
+ * The host's secret store: a credential NAME in, its value out; `set` keeps a minted value for `ttlMs`.
12
+ * `principal` is the signed-in user's id for a user-scoped credential (the kernel sets it from the dispatch's `@user`,
13
+ * never the program); absent, the credential is app-wide.
14
+ */
15
+ interface SecretStore {
16
+ get(name: string, principal?: string): Promise<string | undefined>;
17
+ /** `ttlMs` of 0 forgets the value. */
18
+ set(name: string, value: string, ttlMs: number, principal?: string): Promise<void>;
19
+ /** Replace the stored credential with `value`, durably (a rotated refresh token). A host without one cannot rotate. */
20
+ rotate?(name: string, value: string, principal?: string): Promise<void>;
21
+ /** Drop the credential, the minted value and the stored one. */
22
+ forget(name: string, principal?: string): Promise<void>;
23
+ /** Keep `value` as the credential until it is forgotten, creating it when absent: unlike `rotate` it needs no existing entry. `label` is a non-secret account name stored beside it, never the value. */
24
+ persist?(name: string, value: string, principal?: string, label?: string): Promise<void>;
25
+ /** The non-secret account label stored beside the credential; absent when its row carries none. */
26
+ label?(name: string, principal?: string): Promise<string | undefined>;
27
+ /** Whether `persist` keeps a value on this host. */
28
+ durable?(): Promise<boolean>;
29
+ }
30
+ /** The credential-store key of one user's credential. */
31
+ declare function userCredentialKey(principal: string, name: string): string;
32
+ /** CSPRNG output: `bytes` random bytes. */
33
+ type RandomSource = (bytes: number) => Uint8Array;
34
+ /**
35
+ * The host's raw credential store and mode flag, answered to the kernel's `credentialStore*` and `credentialMode*`
36
+ * asks. It decides nothing: the role gate, the declared-name check, the masking and the mode check are the kernel's.
37
+ */
38
+ interface CredentialAdminPort {
39
+ /** Whether the store can encrypt and the service and name of every stored row; `null` when the host holds no store. */
40
+ list(): Promise<{
41
+ enabled: boolean;
42
+ entries: Array<{
43
+ service: string;
44
+ name: string;
45
+ }>;
46
+ } | null>;
47
+ /** The stored value of credential `name`, from the store only. */
48
+ read(name: string): Promise<string | null>;
49
+ write(service: string, name: string, value: string): Promise<void>;
50
+ /** Whether a stored row existed. */
51
+ remove(name: string): Promise<boolean>;
52
+ rotate(): Promise<{
53
+ rotated: number;
54
+ alreadyCurrent: number;
55
+ unreadable: number;
56
+ }>;
57
+ /** The mode flag; `null` when the host keeps none. */
58
+ mode(): Promise<string | null>;
59
+ /** Switch the flag; the host may refuse. The mode in force afterwards. */
60
+ setMode(mode: string): Promise<string>;
61
+ }
62
+ /** The tails of the named variables this host's own environment holds: `last4` only from eight characters up, never a value. */
63
+ type EnvTailsPort = (names: readonly string[]) => Array<{
64
+ name: string;
65
+ last4?: string;
66
+ }>;
67
+ /** The environment tails of `env`: a name it holds non-empty, with the last four characters of a value of eight or more. */
68
+ declare function envTailsOf(env: Readonly<Record<string, string | undefined>>): EnvTailsPort;
69
+ /** The host's answer to a `credentialConnect` ask: the kernel's store builds the exchange and settles it, the host only sends it. */
70
+ type CredentialConnectPort = (grant: CredentialGrantWire) => Promise<{
71
+ ok: CredentialStanding;
72
+ } | {
73
+ error: ConnectFailure;
74
+ }>;
75
+ interface SecretPorts {
76
+ /** The host CSPRNG `random-bytes` and the driver's `Random` ask draw from. */
77
+ random: RandomSource;
78
+ secrets: SecretStore;
79
+ /** The credential store and mode flag the credential administration effects ask; absent, those asks fail unavailable. */
80
+ credentials?: CredentialAdminPort;
81
+ /** The host's own environment, for `credential-list`; absent, the host answers `unsupported` (a browser reads none). */
82
+ env?: EnvTailsPort;
83
+ /** Carries a `credentialConnect`; absent, the ask answers `unavailable`. */
84
+ connect?: CredentialConnectPort;
85
+ }
86
+ interface SecretPortsOptions {
87
+ random?: RandomSource;
88
+ secrets?: SecretStore;
89
+ /** Defaults to the installed credential store and mode flag. */
90
+ credentials?: CredentialAdminPort;
91
+ /** Defaults to the process environment. */
92
+ env?: EnvTailsPort;
93
+ /** The host's POST to a token endpoint; with it the credential store connects and refreshes OAuth credentials, without it neither is attempted. */
94
+ tokenPost?: TokenEndpointPost;
95
+ }
96
+ /** Where the secrets' durable credentials live: the store a host installed, and how a name resolves through it. */
97
+ interface SecretStoreHost {
98
+ store(): Promise<CredentialVault | null>;
99
+ resolve(name: string, principal: string | undefined): Promise<string | undefined>;
100
+ }
101
+ /**
102
+ * The secrets of a host: minted values with an expiry (a memory tier that never reaches the rows), then the credential vault
103
+ * the host holds (by default the one the host installed). Everything durable is the kernel's: `rotate`, `persist`, `label`,
104
+ * and `forget`.
105
+ */
106
+ declare function createSecretStore(now?: () => number, host?: SecretStoreHost, tokenPost?: TokenEndpointPost): SecretStore;
107
+ /** `credentialConnect` over the installed credential store and the host's token POST. */
108
+ declare function createCredentialConnectPort(post: TokenEndpointPost): CredentialConnectPort;
109
+ /** The credential store and mode flag the host installed, as the kernel's raw asks. */
110
+ declare function createCredentialAdminPort(): CredentialAdminPort;
111
+ /** Bytes from the platform CSPRNG. */
112
+ declare const systemRandom: RandomSource;
113
+ /** The most bytes one `random-bytes` may ask for (the kernel's `RANDOM_BYTES_MAX`). */
114
+ declare const RANDOM_BYTES_MAX = 1024;
115
+ /** Standard padded base64 (the wire form of a `Random` answer). */
116
+ declare function base64Standard(bytes: Uint8Array): string;
117
+ /** URL-safe base64 without padding (the `random-bytes` value; the kernel's `codec::base64url_encode`). */
118
+ declare function base64Url(bytes: Uint8Array): string;
119
+ /**
120
+ * `random-bytes`: the success payload for `bytes` drawn from the host CSPRNG; a bad count or key is the effect's
121
+ * failure. A keyed call echoes its `key` beside the `value`.
122
+ */
123
+ declare function randomBytesPayload(ports: Pick<SecretPorts, 'random'>, bytes: RuntimeValue | undefined, key?: RuntimeValue): {
124
+ value: string;
125
+ key?: string;
126
+ };
127
+ /** `credential-status`: a bare name selects the viewer; an explicit slot selects its declared scope. */
128
+ declare function credentialStatusPayload(ports: Pick<SecretPorts, 'secrets'>, credential: RuntimeValue | undefined, principal: string | undefined): Promise<CredentialPayload>;
129
+ /** `credential-forget`: drops the signed-in viewer's credential; `{ connected: false }`. */
130
+ declare function credentialForgetPayload(ports: Pick<SecretPorts, 'secrets'>, credential: RuntimeValue | undefined, principal: string | undefined): Promise<{
131
+ connected: false;
132
+ label: string;
133
+ }>;
134
+ declare function createSecretPorts(options?: SecretPortsOptions): SecretPorts;
135
+ /** Ports of a browser: it holds no credential, so a secret ask fails and the CSPRNG is the page's. */
136
+ declare function createBrowserSecretPorts(): SecretPorts;
137
+
138
+ export { RANDOM_BYTES_MAX, base64Standard, base64Url, createBrowserSecretPorts, createCredentialAdminPort, createCredentialConnectPort, createSecretPorts, createSecretStore, credentialForgetPayload, credentialStatusPayload, envTailsOf, randomBytesPayload, systemRandom, userCredentialKey };
139
+ export type { CredentialAdminPort, CredentialConnectPort, EnvTailsPort, RandomSource, SecretPorts, SecretPortsOptions, SecretStore, SecretStoreHost };
@@ -0,0 +1,2 @@
1
+ export { RANDOM_BYTES_MAX, base64Standard, base64Url, createBrowserSecretPorts, createCredentialAdminPort, createCredentialConnectPort, createSecretPorts, createSecretStore, credentialForgetPayload, credentialStatusPayload, envTailsOf, randomBytesPayload, systemRandom, userCredentialKey } from '../chunk-ZUSM4VW4.js';
2
+ import '../chunk-HLOUDLPI.js';
@@ -1,36 +1,132 @@
1
1
  import { KernelEvaluatorExports } from '@almadar/core';
2
- export { CallRoutesWire, CallSiteWire, CallerWire, HttpBody, HttpFailureWire, HttpRequestWire, HttpResponseWire, IoAnswerWire, IoReplyWire, IoRequestWire, PendingRequestWire, ResolveProgressWire, ServerProgressWire, Settled, SubstrateFailureWire } from '@almadar/core/kernel-wire';
2
+ import { EventRequest, FrameWire } from '@almadar/core/kernel-wire';
3
+ export { CallRoutesWire, CallSiteWire, CallerWire, IoAnswerWire, IoReplyWire, IoRequestWire, NextWire, PendingRequestWire, ResolveProgressWire, ServerProgressWire, Settled, SubstrateFailureWire } from '@almadar/core/kernel-wire';
3
4
 
5
+ /** Fired ticks keyed by the orbital that declares them: the one a `runTick` request is addressed to. */
6
+ type FiredByOrbital = FrameWire['fired'];
7
+
8
+ /** The wasm `GpuHost` (orbital-wasm): the browser's GPU answerer, installed into a kernel `Server` with `installGpu`. */
9
+ interface KernelGpuHost {
10
+ closeAll(): void;
11
+ }
12
+ /**
13
+ * The wasm `Canvas3D` (orbital-wasm): orbital-canvas drawing a `canvas mode:"3d"` render node into a page canvas, on
14
+ * the device the page's `GpuHost` shares. JSON crosses as text; `pointerUp` answers the click it made.
15
+ */
16
+ interface KernelCanvas3D {
17
+ /** `themeJson`: the page's resolved canvas theme, or `null`; orbital-canvas reads its scene axis, ground and tones. */
18
+ setScene(nodeJson: string, themeJson: string): void;
19
+ resize(cssWidth: number, cssHeight: number, pixelRatio: number): void;
20
+ setReducedMotion(reduced: boolean): void;
21
+ render(): void;
22
+ /** Advances the canvas clock to `nowMs` (`performance.now()`) with the page clock `epochMs` (`performance.timeOrigin + now`), eases a following camera and the orbit damping; true when the frame changed. */
23
+ frame(nowMs: number, epochMs: number): boolean;
24
+ /** False on the WebGL2 fallback, where GPU drawables are refused. */
25
+ webgpu(): boolean;
26
+ pointerDown(id: number, x: number, y: number, button: number, touch: boolean): void;
27
+ pointerMove(id: number, x: number, y: number): boolean;
28
+ pointerLeave(): void;
29
+ /** `{"unit":{"id","x","z"}}`, `{"tile":{"x","z"}}`, `{"select":{"id"}}`, `{"move":{"id","x","y"}}`, `{"shape":{"id","index"}}` (a learning canvas's click payload) or `null`. */
30
+ pointerUp(id: number, x: number, y: number, unitEvents: boolean, tileEvents: boolean): string;
31
+ wheel(deltaY: number): boolean;
32
+ /** The camera as the user moved it, as JSON, or `null` before a scene. */
33
+ camera(): string;
34
+ /** `[x, y, z]` as JSON; true when the camera moved. */
35
+ setCameraPosition(positionJson: string): boolean;
36
+ lookAt(targetJson: string): boolean;
37
+ resetCamera(): boolean;
38
+ free(): void;
39
+ }
40
+ /**
41
+ * The wasm `SceneCanvas` (orbital-wasm): orbital-canvas mapping and drawing a canvas-style render node (learning
42
+ * instruments, diagrams, a 2D game `canvas`) into a page canvas, with its own layout, clock and input.
43
+ */
44
+ interface KernelSceneCanvas {
45
+ setScene(nodeJson: string): void;
46
+ resize(cssWidth: number, cssHeight: number, pixelRatio: number): void;
47
+ setMotion(enabled: boolean): void;
48
+ /** Advances the scene clock to `nowMs`; true while the page should keep drawing. */
49
+ frame(nowMs: number): boolean;
50
+ render(): void;
51
+ /** `touch-down`, `touch-move`, `touch-up` or `touch-cancel`, in CSS pixels. */
52
+ input(kind: string, x: number, y: number, button: number): void;
53
+ /** Whether the scene took the zoom (a pannable scene); the page scrolls when it did not. */
54
+ zoom(factor: number, x: number, y: number): boolean;
55
+ doubleTap(x: number, y: number): void;
56
+ /** `[{ "event", "payload" }]` queued by input. */
57
+ takeEvents(): string;
58
+ webgpu(): boolean;
59
+ free(): void;
60
+ }
61
+ /** Makes a `SceneCanvas` on a page canvas (`(canvas) => SceneCanvas.create(canvas)` from `@almadar/kernel/client`). */
62
+ type KernelSceneCanvasFactory = (canvas: HTMLCanvasElement) => Promise<KernelSceneCanvas>;
63
+ /** Makes a `Canvas3D` on a page canvas (`(canvas) => Canvas3D.create(canvas)` from `@almadar/kernel/client`). */
64
+ type KernelCanvas3DFactory = (canvas: HTMLCanvasElement) => Promise<KernelCanvas3D>;
4
65
  /** The `Server` class of `@almadar/kernel` (wasm-bindgen), as the runtime uses it. */
5
66
  interface KernelServerHandle {
67
+ /** Install the GPU answerer: the server then holds every `gpu/` ask, and the host answers it by ticket. */
68
+ installGpu(gpu: KernelGpuHost): void;
69
+ /** Answer the held `gpu` ask `ticket`: the `IoAnswerWire` JSON to reply with. A deferred completion reaches `completed` as `HeldGpuCompletion` JSON, or `null`. */
70
+ answerGpu(ticket: number, completed: (completionJson: string) => void): Promise<string>;
71
+ /** Drop a held completion payload no request will start. */
72
+ dropHeldPayload(ticket: number): boolean;
6
73
  start(orbital: string, requestJson: string): string;
7
74
  resume(flight: number, repliesJson: string): string;
75
+ /** The oldest request the kernel queued, started now the lane is free: a `NextWire` as JSON, or `null`. */
76
+ next(): string;
77
+ /** Whether `flight` is a dispatch parked holding the lane. */
78
+ holdsLane(flight: number): boolean;
79
+ /** A live stream of `client`'s session opened (EXEC-DIST-9); answers the id that closes it. */
80
+ openSessionStream(client: string): number;
81
+ /** The live stream `id` dropped; the kernel frees its session once all have dropped and it is quiet. */
82
+ closeSessionStream(id: number): boolean;
8
83
  dispatchStream(): string;
9
- liveItemDelivered(itemJson: string, viewerJson: string, clientId?: string): boolean;
10
- /** A row-set reference resolved for a viewer through the host-answered store; a `ResolveProgressWire` as JSON. */
11
- resolveRows(refJson: string, viewerJson: string): string;
84
+ /** Whether a live item reaches `clientId`'s session: addressed to it and admitted by `@read` for the identity that session bound. */
85
+ liveItemDelivered(itemJson: string, clientId?: string): boolean;
86
+ /** A row-set reference resolved through the host-answered store for the identity `clientId`'s session bound (the anonymous viewer with none); a `ResolveProgressWire` as JSON. */
87
+ resolveRows(refJson: string, clientId?: string): string;
12
88
  resumeResolve(flight: number, repliesJson: string): string;
13
89
  abandon(flight: number): boolean;
14
90
  /** `OsGrants::allows` over the grants the registered program declares; `requirementJson` is an `OsRequirement`. */
15
- osAllows(requirementJson: string): boolean;
91
+ osAllows(requirementJson: string, orbital?: string): boolean;
92
+ /** Whether `url`'s origin is one the program declares in `egress`. */
93
+ egressAllows(url: string): boolean;
16
94
  /** Place the program's anchored grants and arguments under the host's anchors; answers `[{ path, message }]` for what grants nothing. */
17
95
  setOsAnchors(anchorsJson: string): string;
96
+ /** Feed a deferred raw `os` outcome (`Settled`) into the TLS operation parked under `key`: `null`, `{ ask }` or `{ done }`. */
97
+ tlsComplete(key: string, outcomeJson: string): string;
18
98
  /** An `os/` call's arguments with its anchored parts resolved; a `Settled<args, OsError>` as JSON. */
19
99
  osResolveArgs(op: string, argsJson: string): string;
20
100
  inFlight(): number;
21
101
  getState(traitName: string, entityId?: string): string;
22
- setDefaultUser(userJson: string): void;
23
102
  /** The kernel's mounts for a host start on `side` (`client|server|process|start`): `MountSeed[]` as JSON. */
24
103
  bootMounts(side: string): string;
25
104
  /** The kernel's mounts for a client opening `routePath`: `MountSeed[]` as JSON. */
26
105
  routeMounts(routePath: string): string;
106
+ /** One question about the registered program (a `ContractQuery`: the declared inputs, inbound hooks, entity owner, scoped rows): its answer as JSON. */
107
+ contractQuery(queryJson: string): string;
27
108
  mount(traitsJson: string): void;
28
109
  remount(traitsJson: string): void;
29
- setTickMount(traitsJson: string): void;
30
- /** Mock-seed the `[runtime]` entities the kernel holds itself, owner columns stamped with `viewerId` (a preview host). */
31
- seedRuntimeMock(viewerId?: string): void;
110
+ /** Whether the kernel holds the circuit state: a client's copy of it is then taken only on a delegated leg, and any other request carrying one is refused. */
111
+ setStateful(stateful: boolean): void;
112
+ /** `client` mounted the traits (`string[]` JSON) of `orbital`: their mount-scoped ticks fire while any client holds them. */
113
+ mountClient(client: string, orbital: string, traitsJson: string): void;
114
+ unmountClient(client: string, orbital: string, traitsJson: string): void;
115
+ /** `client` is gone: everything it mounted is released. */
116
+ releaseClient(client: string): void;
117
+ /** Queue the tick-stamped request (an `EventRequest` as JSON) of `orbital` for the coalesced peer relay: the window length in ms as JSON when it opened one, else `null`. */
118
+ relayTick(orbital: string, requestJson: string): string;
119
+ setTickRelayInterval(intervalMs: number): void;
120
+ /** Every queued relay item (`LiveBroadcastItem[]` as JSON); the window closes. */
121
+ flushTickRelay(): string;
122
+ /** Whether the program declares any tick. */
123
+ declaresTicks(): boolean;
124
+ /** One pass of the kernel's tick clock at monotonic `nowMs`: the `(trait, tick)` pairs due that this server runs, keyed by orbital, as `FiredByOrbital` JSON. */
125
+ tickPass(nowMs: number): string;
126
+ tickPause(): void;
127
+ tickResume(): void;
128
+ tickPaused(): boolean;
32
129
  setCapabilities(entityType: string, queryJson: string, writeJson: string): void;
33
- setMessages(localesJson: string, catalogsJson: string): void;
34
130
  /** The program (as JSON) whose declared credentials this server's credential effects manage beside its own. */
35
131
  setManagedProgram(programJson: string): void;
36
132
  lastError(): string;
@@ -41,7 +137,8 @@ interface KernelServerHandle {
41
137
  }
42
138
  /** The `Server` constructor of a kernel module. */
43
139
  interface KernelServerClass {
44
- new (resolvedSchemaJson: string): KernelServerHandle;
140
+ /** `lazyDir`: the folder the program's `uses lazy` files sit beside; the kernel loads each on the first dispatch that reaches it (EXEC-LOAD-2). */
141
+ new (resolvedSchemaJson: string, lazyDir?: string): KernelServerHandle;
45
142
  }
46
143
  /** An initialised `@almadar/kernel` module: what `OrbitalServerRuntime({ engine: 'kernel' })` is handed. */
47
144
  interface KernelModule extends KernelEvaluatorExports {
@@ -50,6 +147,8 @@ interface KernelModule extends KernelEvaluatorExports {
50
147
  osGlobMatches(glob: string, path: string): boolean;
51
148
  /** `is_public_address`: the rule an outbound host name must pass. */
52
149
  isPublicAddress(ip: string): boolean;
150
+ /** One `ContractQuery` (as JSON) answered for a host with no registered program: the kernel's own answer on an empty kernel, as JSON. */
151
+ contractQueryWithoutProgram(queryJson: string): string;
53
152
  /** The `os/` operations whose keyed call may defer its completion (`OsOp::defers_completion`), as a JSON array of names. */
54
153
  osDeferringOps(): string;
55
154
  /** The `os/` operations whose keyed call is a stream (`OsOp::is_stream`), as a JSON array of names. */
@@ -59,8 +158,10 @@ interface KernelModule extends KernelEvaluatorExports {
59
158
  substrateCompletionEvent(siteJson: string, key: string, op: string, argsJson: string, outcomeJson: string): string;
60
159
  /** Whether the Chrome match pattern matches the URL: the one rule a browser-tab host filters tabs with. */
61
160
  tabUrlMatches(pattern: string, url: string): boolean;
161
+ /** The typed event request a `program/dispatch` call names (`EventRequest::from_dispatch`); a record that is no event request throws the reason. */
162
+ parseEventRequest(payloadJson: string, optionsJson: string): EventRequest;
62
163
  /** Installs the language data (`@almadar/core/language-data` `LanguageBundle` as JSON) for a host with no `node_modules`; the first install wins. */
63
164
  installLanguage(bundleJson: string): void;
64
165
  }
65
166
 
66
- export type { KernelModule, KernelServerClass, KernelServerHandle };
167
+ export type { FiredByOrbital, KernelCanvas3D, KernelCanvas3DFactory, KernelGpuHost, KernelModule, KernelSceneCanvas, KernelSceneCanvasFactory, KernelServerClass, KernelServerHandle };
@@ -0,0 +1,26 @@
1
+ import { SchemaLoader, LoadResult, LoadedSchema, LoadedOrbital } from './schema-loader.js';
2
+ import '@almadar/core';
3
+
4
+ /**
5
+ * A `SchemaLoader` over HTTP: a browser client fetches the `.orb` of a lazy page (`uses lazy`) from beside the program
6
+ * it booted, at the page's `orbRef` resolved against the importer's URL (EXEC-LOAD-2: a browser client opens lazy pages
7
+ * through its own loader).
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+
12
+ declare class FetchSchemaLoader implements SchemaLoader {
13
+ private readonly base;
14
+ private readonly cache;
15
+ /** `base`: the URL relative imports resolve against when no importer is named (the page's own URL by default). */
16
+ constructor(base: string);
17
+ resolvePath(importPath: string, fromPath?: string): LoadResult<string>;
18
+ load(importPath: string, fromPath?: string): Promise<LoadResult<LoadedSchema>>;
19
+ loadOrbital(importPath: string, orbitalName?: string, fromPath?: string): Promise<LoadResult<LoadedOrbital>>;
20
+ clearCache(): void;
21
+ getCacheStats(): {
22
+ size: number;
23
+ };
24
+ }
25
+
26
+ export { FetchSchemaLoader };
@@ -0,0 +1 @@
1
+ export { FetchSchemaLoader } from '../chunk-57SBCUSM.js';
@@ -1,2 +1 @@
1
1
  export { loadLazyPage } from '../chunk-XXWNMJI6.js';
2
- import '../chunk-MLKGABMK.js';
@@ -6,7 +6,6 @@ import { OrbitalSchema, Orbital, DeclaredTraitConfig } from '@almadar/core';
6
6
  * Abstract interface for loading OrbitalSchema files from various sources.
7
7
  * Implementations exist for:
8
8
  * - FileSystemLoader (Node.js) - uses fs module
9
- * - HttpLoader (Browser) - uses fetch API
10
9
  * - UnifiedLoader (Auto-detect) - routes to appropriate loader
11
10
  *
12
11
  * @packageDocumentation
@@ -68,17 +67,6 @@ interface BaseLoaderOptions {
68
67
  /** Scoped package roots (e.g., { "@game-lib": "/path/to/lib" }) */
69
68
  scopedPaths?: Record<string, string>;
70
69
  }
71
- /**
72
- * Options for HTTP loading.
73
- */
74
- interface HttpLoaderOptions extends BaseLoaderOptions {
75
- /** Default fetch options */
76
- fetchOptions?: RequestInit;
77
- /** Request timeout in milliseconds */
78
- timeout?: number;
79
- /** Whether to use credentials (cookies, auth headers) */
80
- credentials?: RequestCredentials;
81
- }
82
70
  /**
83
71
  * Abstract interface for schema loaders.
84
72
  *
@@ -92,10 +80,6 @@ interface HttpLoaderOptions extends BaseLoaderOptions {
92
80
  * const loader: SchemaLoader = new FileSystemLoader({ basePath: "/schemas" });
93
81
  * const result = await loader.load("./my-schema.orb");
94
82
  *
95
- * // Using HttpLoader (Browser)
96
- * const loader: SchemaLoader = new HttpLoader({ basePath: "/api/schemas" });
97
- * const result = await loader.load("./my-schema.orb");
98
- *
99
83
  * // Using UnifiedLoader (auto-detect)
100
84
  * const loader: SchemaLoader = createUnifiedLoader({ basePath: "/schemas" });
101
85
  * const result = await loader.load("./my-schema.orb");
@@ -157,4 +141,4 @@ interface ImportChainLike {
157
141
  clone(): ImportChainLike;
158
142
  }
159
143
 
160
- export type { BaseLoaderOptions, HttpLoaderOptions, ImportChainLike, LoadResult, LoadedOrbital, LoadedSchema, SchemaLoader };
144
+ export type { BaseLoaderOptions, ImportChainLike, LoadResult, LoadedOrbital, LoadedSchema, SchemaLoader };
@@ -1,2 +1 @@
1
1
  export { NativeMemoryPersistenceAdapter, NativeMemoryWriteError } from '../chunk-7SDV3QWR.js';
2
- import '../chunk-MLKGABMK.js';
@@ -0,0 +1,6 @@
1
+ import { PersistenceAdapter, Entity } from '@almadar/core';
2
+
3
+ /** Tells the store each server-persisted entity's declared `[persistent: tbl]` collection (EXEC-STORE-1). */
4
+ declare function bindDeclaredCollections(store: PersistenceAdapter, entities: readonly Entity[]): void;
5
+
6
+ export { bindDeclaredCollections };
@@ -0,0 +1 @@
1
+ export { bindDeclaredCollections } from '../../chunk-BAS26HBN.js';