@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.
- package/dist/chunk-2WCVOMZ2.js +112 -0
- package/dist/chunk-57SBCUSM.js +62 -0
- package/dist/{chunk-Q2H75UYT.js → chunk-A2JJT4GA.js} +1 -37
- package/dist/chunk-BAS26HBN.js +10 -0
- package/dist/{chunk-REPX5QPI.js → chunk-BOVU4TCQ.js} +11 -3
- package/dist/chunk-BY5G4225.js +6 -0
- package/dist/chunk-DFDNHVDW.js +284 -0
- package/dist/{chunk-NATGCIVM.js → chunk-JVSREWQO.js} +378 -130
- package/dist/{chunk-DYOJGLIX.js → chunk-LKWYCYX5.js} +2 -5
- package/dist/chunk-LYFIQPXX.js +1 -0
- package/dist/{chunk-ODJCZ27I.js → chunk-N7HYNKK6.js} +35 -2
- package/dist/{chunk-4J2QEIUV.js → chunk-NTFQ36UN.js} +4 -30
- package/dist/chunk-NU6LVKGS.js +15 -0
- package/dist/{chunk-VNMG7NKY.js → chunk-OQVSN7DP.js} +21 -26
- package/dist/chunk-P2N6K2IV.js +20 -0
- package/dist/{chunk-QQRDUMB2.js → chunk-QCJWPXLH.js} +11 -11
- package/dist/{chunk-QELZ6TEJ.js → chunk-UD2CXYSJ.js} +39 -3
- package/dist/{chunk-UJHOUZAL.js → chunk-V4EMDPCO.js} +2 -5
- package/dist/chunk-VKQA2DJX.js +409 -0
- package/dist/chunk-VNGXRYFF.js +9 -0
- package/dist/{chunk-HNOAZWFH.js → chunk-WGCWJOT2.js} +2 -0
- package/dist/chunk-XZGVOBY6.js +33 -0
- package/dist/chunk-ZUSM4VW4.js +197 -0
- package/dist/client/EventTransport.d.ts +23 -7
- package/dist/client/EventTransport.js +1 -2
- package/dist/client/awaiting.js +0 -1
- package/dist/client/channel-transport.d.ts +6 -6
- package/dist/client/channel-transport.js +0 -1
- package/dist/client/circuit-store.d.ts +16 -5
- package/dist/client/circuit-store.js +2 -3
- package/dist/client/client-kernel.d.ts +36 -15
- package/dist/client/declared-input-dispatch.d.ts +19 -2
- package/dist/client/declared-input-dispatch.js +1 -2
- package/dist/client/inbound-dispatch.d.ts +21 -2
- package/dist/client/inbound-dispatch.js +1 -2
- package/dist/client/local-fold.d.ts +15 -8
- package/dist/client/local-fold.js +1 -2
- package/dist/client/render-sigils.js +0 -1
- package/dist/client/state-book.d.ts +9 -16
- package/dist/client/state-book.js +1 -2
- package/dist/client/trait-mount-error.js +0 -1
- package/dist/credentials/env-vars.d.ts +5 -1
- package/dist/credentials/env-vars.js +1 -3
- package/dist/credentials/scope.d.ts +8 -7
- package/dist/credentials/scope.js +0 -1
- package/dist/credentials/vault.d.ts +142 -0
- package/dist/credentials/vault.js +1 -0
- package/dist/effects/in-flight-calls.js +0 -1
- package/dist/effects/on-device-model.js +0 -1
- package/dist/events/EventBus.d.ts +1 -4
- package/dist/events/EventBus.js +0 -1
- package/dist/events/emit-stamp.js +0 -1
- package/dist/index.d.ts +25 -42
- package/dist/index.js +27 -45
- package/dist/kernel/decode.d.ts +10 -10
- package/dist/kernel/decode.js +1 -2
- package/dist/kernel/engine.d.ts +133 -31
- package/dist/kernel/engine.js +7 -9
- package/dist/kernel/frame-applier.d.ts +8 -7
- package/dist/kernel/frame-applier.js +1 -2
- package/dist/kernel/host.d.ts +148 -16
- package/dist/kernel/host.js +4 -7
- package/dist/kernel/lane.d.ts +1 -22
- package/dist/kernel/lane.js +1 -2
- package/dist/kernel/os-fetch-port.d.ts +7 -0
- package/dist/kernel/os-fetch-port.js +3 -0
- package/dist/kernel/os-port.d.ts +30 -8
- package/dist/kernel/os-port.js +1 -2
- package/dist/kernel/program-effects.d.ts +11 -28
- package/dist/kernel/program-effects.js +1 -2
- package/dist/kernel/secret-ports.d.ts +139 -0
- package/dist/kernel/secret-ports.js +2 -0
- package/dist/kernel/wire.d.ts +113 -12
- package/dist/loader/fetch-loader.d.ts +26 -0
- package/dist/loader/fetch-loader.js +1 -0
- package/dist/loader/lazy-page.js +0 -1
- package/dist/loader/schema-loader.d.ts +1 -17
- package/dist/persistence/native-memory.js +0 -1
- package/dist/runtime/entities/declaredCollections.d.ts +6 -0
- package/dist/runtime/entities/declaredCollections.js +1 -0
- package/dist/runtime/evaluation/local-store-transport.d.ts +16 -23
- package/dist/runtime/evaluation/local-store-transport.js +9 -13
- package/dist/runtime/evaluation/residence-transport.d.ts +3 -3
- package/dist/runtime/evaluation/residence-transport.js +1 -2
- package/dist/runtime/evaluation/routed-persistence.js +0 -1
- package/dist/runtime/events/identity/routing.d.ts +2 -53
- package/dist/runtime/events/identity/routing.js +1 -2
- package/dist/runtime/types.d.ts +5 -205
- package/dist/runtime/types.js +1 -2
- package/dist/service/default-call-service.js +0 -1
- package/dist/service/service-provider.js +0 -1
- package/package.json +8 -5
- package/dist/chunk-2JU7Y4KU.js +0 -21
- package/dist/chunk-46RWK2B5.js +0 -28
- package/dist/chunk-4ZICQ5PM.js +0 -192
- package/dist/chunk-53IPZXDP.js +0 -76
- package/dist/chunk-5D63EMO5.js +0 -16
- package/dist/chunk-CPSQXEJ6.js +0 -55
- package/dist/chunk-CQP5XAX6.js +0 -173
- package/dist/chunk-CROS2GEX.js +0 -49
- package/dist/chunk-D4XJTBLB.js +0 -217
- package/dist/chunk-D5USD2EX.js +0 -232
- package/dist/chunk-EV56K4GB.js +0 -63
- package/dist/chunk-FQ6IZMIU.js +0 -10
- package/dist/chunk-HMK6YMQS.js +0 -135
- package/dist/chunk-IHQLE5M7.js +0 -62
- package/dist/chunk-JFWFDUTR.js +0 -35
- package/dist/chunk-MHYSHSRG.js +0 -54
- package/dist/chunk-MLKGABMK.js +0 -7
- package/dist/chunk-NAECVIAR.js +0 -322
- package/dist/chunk-Q7JK4KY7.js +0 -9
- package/dist/chunk-RBUMDYFS.js +0 -681
- package/dist/chunk-SAS5KKCR.js +0 -43
- package/dist/chunk-SWPDU752.js +0 -28
- package/dist/chunk-T775TUCD.js +0 -18
- package/dist/chunk-VMOBW7RK.js +0 -21
- package/dist/chunk-WNPNNYXY.js +0 -22
- package/dist/chunk-XB5GYODW.js +0 -28
- package/dist/chunk-YL2SO5TP.js +0 -334
- package/dist/chunk-YO4LWS3I.js +0 -606
- package/dist/chunk-ZAQSS47X.js +0 -157
- package/dist/chunk-ZCQUUJIF.js +0 -129
- package/dist/client/ServerBridge.d.ts +0 -126
- package/dist/client/ServerBridge.js +0 -3
- package/dist/credentials/seed.d.ts +0 -21
- package/dist/credentials/seed.js +0 -2
- package/dist/credentials/store.d.ts +0 -110
- package/dist/credentials/store.js +0 -2
- package/dist/index-hT1xCdTq.d.ts +0 -46
- package/dist/kernel/beacon.d.ts +0 -32
- package/dist/kernel/beacon.js +0 -2
- package/dist/kernel/http.d.ts +0 -302
- package/dist/kernel/http.js +0 -6
- package/dist/kernel/oauth-effects.d.ts +0 -25
- package/dist/kernel/oauth-effects.js +0 -7
- package/dist/kernel/oauth-port.d.ts +0 -31
- package/dist/kernel/oauth-port.js +0 -2
- package/dist/loader/http-loader.d.ts +0 -111
- package/dist/loader/http-loader.js +0 -2
- package/dist/runtime/effects/composition/compose-behaviors.d.ts +0 -58
- package/dist/runtime/effects/composition/compose-behaviors.js +0 -4
- package/dist/runtime/effects/composition/event-wiring.d.ts +0 -38
- package/dist/runtime/effects/composition/event-wiring.js +0 -2
- package/dist/runtime/effects/composition/index.d.ts +0 -5
- package/dist/runtime/effects/composition/index.js +0 -6
- package/dist/runtime/effects/composition/layout-strategy.d.ts +0 -35
- package/dist/runtime/effects/composition/layout-strategy.js +0 -2
- package/dist/runtime/effects/composition/pipe.d.ts +0 -25
- package/dist/runtime/effects/composition/pipe.js +0 -2
- package/dist/runtime/entities/mockStoreSeed.d.ts +0 -56
- package/dist/runtime/entities/mockStoreSeed.js +0 -3
- package/dist/runtime/entities/seedBrowserStore.d.ts +0 -28
- package/dist/runtime/entities/seedBrowserStore.js +0 -2
- package/dist/runtime/entities/std-mock-seed.d.ts +0 -87
- package/dist/runtime/entities/std-mock-seed.js +0 -2
- package/dist/runtime/time/TickScheduler.d.ts +0 -77
- package/dist/runtime/time/TickScheduler.js +0 -3
- package/dist/runtime/time/cron.d.ts +0 -25
- package/dist/runtime/time/cron.js +0 -2
- package/dist/runtime/time/duration.d.ts +0 -20
- package/dist/runtime/time/duration.js +0 -2
- package/dist/runtime/traits/OrbitalTraitParsing.d.ts +0 -34
- package/dist/runtime/traits/OrbitalTraitParsing.js +0 -2
- package/dist/runtime/traits/listen-targets.d.ts +0 -16
- package/dist/runtime/traits/listen-targets.js +0 -3
- package/dist/runtime/traits/trait-index.d.ts +0 -35
- package/dist/runtime/traits/trait-index.js +0 -3
package/dist/kernel/os-port.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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 };
|
package/dist/kernel/os-port.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export { anchoredGrants, expandAnchor, kernelOsCompletions, kernelOsGrants } from '../chunk-
|
|
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
|
|
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
|
-
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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 {
|
|
48
|
+
export type { ProgramEffectName, ProgramEffectOutcome, ProgramValidationReport, StepRequest };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export { PROGRAM_EFFECTS, isProgramEffect } from '../chunk-
|
|
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';
|
package/dist/kernel/wire.d.ts
CHANGED
|
@@ -1,36 +1,132 @@
|
|
|
1
1
|
import { KernelEvaluatorExports } from '@almadar/core';
|
|
2
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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';
|
package/dist/loader/lazy-page.js
CHANGED
|
@@ -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,
|
|
144
|
+
export type { BaseLoaderOptions, ImportChainLike, LoadResult, LoadedOrbital, LoadedSchema, SchemaLoader };
|
|
@@ -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';
|