@astrale-os/shell 0.1.1 → 0.2.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/LICENSE +202 -0
- package/dist/application/apps.d.ts +18 -0
- package/dist/application/apps.d.ts.map +1 -0
- package/dist/application/apps.js +35 -0
- package/dist/application/namespaces.d.ts +21 -0
- package/dist/application/namespaces.d.ts.map +1 -0
- package/dist/application/namespaces.js +12 -0
- package/dist/application/session/open.d.ts +19 -0
- package/dist/application/session/open.d.ts.map +1 -0
- package/dist/application/session/open.js +46 -0
- package/dist/application/session/session.d.ts +41 -0
- package/dist/application/session/session.d.ts.map +1 -0
- package/dist/application/session/session.js +9 -0
- package/dist/application/session/token.d.ts +24 -0
- package/dist/application/session/token.d.ts.map +1 -0
- package/dist/application/session/token.js +51 -0
- package/dist/application/spaces.d.ts +17 -0
- package/dist/application/spaces.d.ts.map +1 -0
- package/dist/application/spaces.js +30 -0
- package/dist/application/user.d.ts +20 -0
- package/dist/application/user.d.ts.map +1 -0
- package/dist/application/user.js +26 -0
- package/dist/application/view.d.ts +20 -0
- package/dist/application/view.d.ts.map +1 -0
- package/dist/application/view.js +18 -0
- package/dist/{application/channels/children-channel.d.ts → channel/children.d.ts} +4 -4
- package/dist/channel/children.d.ts.map +1 -0
- package/dist/channel/listeners.d.ts +8 -0
- package/dist/channel/listeners.d.ts.map +1 -0
- package/dist/{adapters/message-port.transport.d.ts → channel/message-port.d.ts} +2 -2
- package/dist/channel/message-port.d.ts.map +1 -0
- package/dist/{application/channels → channel}/observer.d.ts +2 -1
- package/dist/channel/observer.d.ts.map +1 -0
- package/dist/{application/channels/parent-channel.d.ts → channel/parent.d.ts} +4 -4
- package/dist/channel/parent.d.ts.map +1 -0
- package/dist/{application/channels/parent-channel.js → channel/parent.js} +1 -1
- package/dist/channel/transport.d.ts +8 -0
- package/dist/channel/transport.d.ts.map +1 -0
- package/dist/index.d.ts +56 -41
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -20
- package/dist/{domain/intent → intent}/middleware/capabilities.d.ts +2 -2
- package/dist/intent/middleware/capabilities.d.ts.map +1 -0
- package/dist/intent/middleware/logging.d.ts.map +1 -0
- package/dist/{domain/intent → intent}/middleware/rate-limit.d.ts +1 -1
- package/dist/intent/middleware/rate-limit.d.ts.map +1 -0
- package/dist/{application/intent/pipeline-runner.d.ts → intent/pipeline.d.ts} +3 -3
- package/dist/intent/pipeline.d.ts.map +1 -0
- package/dist/intent/policy.d.ts +40 -0
- package/dist/intent/policy.d.ts.map +1 -0
- package/dist/intent/policy.js +15 -0
- package/dist/{application/intent → intent}/request.d.ts +5 -14
- package/dist/intent/request.d.ts.map +1 -0
- package/dist/{application/intent → intent}/request.js +6 -20
- package/dist/intent/router.d.ts +31 -0
- package/dist/intent/router.d.ts.map +1 -0
- package/dist/{application/intent → intent}/router.js +1 -15
- package/dist/kernel/client.d.ts +33 -0
- package/dist/kernel/client.d.ts.map +1 -0
- package/dist/kernel/credential.d.ts +35 -0
- package/dist/kernel/credential.d.ts.map +1 -0
- package/dist/kernel/credential.js +43 -0
- package/dist/kernel/delegated.d.ts +17 -0
- package/dist/kernel/delegated.d.ts.map +1 -0
- package/dist/kernel/delegated.js +29 -0
- package/dist/{application/windowing/token-refresh.d.ts → kernel/delegation/refresh.d.ts} +2 -2
- package/dist/kernel/delegation/refresh.d.ts.map +1 -0
- package/dist/{application/windowing/token-refresh.js → kernel/delegation/refresh.js} +1 -1
- package/dist/{domain/identity/delegation.d.ts → kernel/delegation/token.d.ts} +1 -1
- package/dist/kernel/delegation/token.d.ts.map +1 -0
- package/dist/{adapters/kernel-client.adapter.d.ts → kernel/session.d.ts} +15 -12
- package/dist/kernel/session.d.ts.map +1 -0
- package/dist/{adapters/kernel-client.adapter.js → kernel/session.js} +10 -15
- package/dist/message/ctrl.d.ts +34 -0
- package/dist/message/ctrl.d.ts.map +1 -0
- package/dist/message/error.d.ts +9 -0
- package/dist/message/error.d.ts.map +1 -0
- package/dist/{application/windowing/protocol.d.ts → message/init.d.ts} +1 -1
- package/dist/message/init.d.ts.map +1 -0
- package/dist/{domain/message/registries.d.ts → message/intent.d.ts} +45 -37
- package/dist/message/intent.d.ts.map +1 -0
- package/dist/message/message.d.ts +10 -0
- package/dist/message/message.d.ts.map +1 -0
- package/dist/shell/access.d.ts +10 -0
- package/dist/shell/access.d.ts.map +1 -0
- package/dist/shell/access.js +19 -0
- package/dist/shell/build.d.ts +28 -0
- package/dist/shell/build.d.ts.map +1 -0
- package/dist/shell/build.js +58 -0
- package/dist/shell/config.d.ts +29 -0
- package/dist/shell/config.d.ts.map +1 -0
- package/dist/shell/create.d.ts +4 -0
- package/dist/shell/create.d.ts.map +1 -0
- package/dist/shell/create.js +5 -0
- package/dist/{application/windowing/child-init.d.ts → shell/sandboxed/boot.d.ts} +5 -5
- package/dist/shell/sandboxed/boot.d.ts.map +1 -0
- package/dist/{application/windowing/child-init.js → shell/sandboxed/boot.js} +5 -6
- package/dist/shell/sandboxed/guarded.d.ts +13 -0
- package/dist/shell/sandboxed/guarded.d.ts.map +1 -0
- package/dist/shell/sandboxed/guarded.js +28 -0
- package/dist/shell/sandboxed/pending.d.ts +14 -0
- package/dist/shell/sandboxed/pending.d.ts.map +1 -0
- package/dist/shell/sandboxed/pending.js +30 -0
- package/dist/shell/sandboxed/sandboxed.d.ts +4 -0
- package/dist/shell/sandboxed/sandboxed.d.ts.map +1 -0
- package/dist/shell/sandboxed/sandboxed.js +100 -0
- package/dist/shell/shell.d.ts +36 -0
- package/dist/shell/shell.d.ts.map +1 -0
- package/dist/shell/standalone.d.ts +4 -0
- package/dist/shell/standalone.d.ts.map +1 -0
- package/dist/shell/standalone.js +85 -0
- package/dist/{domain/window/config.d.ts → window/capabilities.d.ts} +3 -3
- package/dist/window/capabilities.d.ts.map +1 -0
- package/dist/{ports/shell-adapter.d.ts → window/embed/adapter.d.ts} +3 -2
- package/dist/window/embed/adapter.d.ts.map +1 -0
- package/dist/{adapters/iframe.shell-adapter.d.ts → window/embed/iframe.d.ts} +2 -2
- package/dist/window/embed/iframe.d.ts.map +1 -0
- package/dist/{application/windowing/lifecycle-controller.d.ts → window/lifecycle/states.d.ts} +4 -3
- package/dist/window/lifecycle/states.d.ts.map +1 -0
- package/dist/{application/windowing/lifecycle-controller.js → window/lifecycle/states.js} +1 -1
- package/dist/{domain/window/lifecycle.d.ts → window/lifecycle/transition.d.ts} +3 -3
- package/dist/window/lifecycle/transition.d.ts.map +1 -0
- package/dist/{domain/window/lifecycle.js → window/lifecycle/transition.js} +1 -1
- package/dist/window/mount/close.d.ts +27 -0
- package/dist/window/mount/close.d.ts.map +1 -0
- package/dist/window/mount/close.js +74 -0
- package/dist/window/mount/credential.d.ts +41 -0
- package/dist/window/mount/credential.d.ts.map +1 -0
- package/dist/window/mount/credential.js +74 -0
- package/dist/window/mount/handshake.d.ts.map +1 -0
- package/dist/{application/windowing → window/mount}/handshake.js +1 -1
- package/dist/{application/windowing/mount-controller.d.ts → window/mount/mount.d.ts} +7 -7
- package/dist/window/mount/mount.d.ts.map +1 -0
- package/dist/window/mount/mount.js +143 -0
- package/dist/window/mount/params.d.ts +73 -0
- package/dist/window/mount/params.d.ts.map +1 -0
- package/dist/window/mount/params.js +1 -0
- package/dist/window/mount/plain.d.ts +20 -0
- package/dist/window/mount/plain.d.ts.map +1 -0
- package/dist/window/mount/plain.js +46 -0
- package/dist/{domain/window → window}/window.d.ts +1 -1
- package/dist/window/window.d.ts.map +1 -0
- package/dist/window/window.js +1 -0
- package/package.json +11 -6
- package/src/application/apps.ts +60 -0
- package/src/application/namespaces.ts +38 -0
- package/src/application/session/open.ts +73 -0
- package/src/application/session/session.ts +46 -0
- package/src/application/session/token.ts +87 -0
- package/src/application/spaces.ts +52 -0
- package/src/application/user.ts +54 -0
- package/src/application/view.ts +42 -0
- package/src/{application/channels/children-channel.ts → channel/children.ts} +3 -3
- package/src/{application/channels/types.ts → channel/listeners.ts} +2 -7
- package/src/{adapters/message-port.transport.ts → channel/message-port.ts} +2 -2
- package/src/{application/channels → channel}/observer.ts +2 -1
- package/src/{application/channels/parent-channel.ts → channel/parent.ts} +4 -4
- package/src/{ports → channel}/transport.ts +2 -1
- package/src/index.ts +80 -88
- package/src/{domain/intent → intent}/middleware/capabilities.ts +2 -3
- package/src/{domain/intent → intent}/middleware/logging.ts +1 -1
- package/src/{domain/intent → intent}/middleware/rate-limit.ts +1 -1
- package/src/{application/intent/pipeline-runner.ts → intent/pipeline.ts} +3 -2
- package/src/intent/policy.ts +46 -0
- package/src/{application/intent → intent}/request.ts +14 -34
- package/src/{application/intent → intent}/router.ts +12 -49
- package/src/kernel/client.ts +33 -0
- package/src/kernel/credential.ts +78 -0
- package/src/kernel/delegated.ts +49 -0
- package/src/{application/windowing/token-refresh.ts → kernel/delegation/refresh.ts} +2 -2
- package/src/{adapters/kernel-client.adapter.ts → kernel/session.ts} +26 -33
- package/src/message/ctrl.ts +25 -0
- package/src/{domain/message/errors.ts → message/error.ts} +8 -0
- package/src/message/intent.ts +98 -0
- package/src/message/message.ts +11 -0
- package/src/shell/access.ts +26 -0
- package/src/shell/build.ts +95 -0
- package/src/shell/config.ts +32 -0
- package/src/shell/create.ts +9 -0
- package/src/{application/windowing/child-init.ts → shell/sandboxed/boot.ts} +10 -11
- package/src/shell/sandboxed/guarded.ts +32 -0
- package/src/shell/sandboxed/pending.ts +52 -0
- package/src/shell/sandboxed/sandboxed.ts +131 -0
- package/src/shell/shell.ts +37 -0
- package/src/shell/standalone.ts +97 -0
- package/src/{domain/window/config.ts → window/capabilities.ts} +2 -2
- package/src/{ports/shell-adapter.ts → window/embed/adapter.ts} +2 -1
- package/src/{adapters/iframe.shell-adapter.ts → window/embed/iframe.ts} +2 -2
- package/src/{application/windowing/lifecycle-controller.ts → window/lifecycle/states.ts} +3 -2
- package/src/{domain/window/lifecycle.ts → window/lifecycle/transition.ts} +2 -2
- package/src/window/mount/close.ts +111 -0
- package/src/window/mount/credential.ts +101 -0
- package/src/{application/windowing → window/mount}/handshake.ts +3 -2
- package/src/window/mount/mount.ts +185 -0
- package/src/window/mount/params.ts +64 -0
- package/src/window/mount/plain.ts +68 -0
- package/src/{domain/window → window}/window.ts +1 -1
- package/dist/adapters/iframe.shell-adapter.d.ts.map +0 -1
- package/dist/adapters/kernel-client.adapter.d.ts.map +0 -1
- package/dist/adapters/message-port.transport.d.ts.map +0 -1
- package/dist/application/channels/children-channel.d.ts.map +0 -1
- package/dist/application/channels/observer.d.ts.map +0 -1
- package/dist/application/channels/parent-channel.d.ts.map +0 -1
- package/dist/application/channels/types.d.ts +0 -12
- package/dist/application/channels/types.d.ts.map +0 -1
- package/dist/application/intent/pipeline-runner.d.ts.map +0 -1
- package/dist/application/intent/request.d.ts.map +0 -1
- package/dist/application/intent/router.d.ts +0 -56
- package/dist/application/intent/router.d.ts.map +0 -1
- package/dist/application/kernel-facade.d.ts +0 -33
- package/dist/application/kernel-facade.d.ts.map +0 -1
- package/dist/application/kernel-facade.js +0 -77
- package/dist/application/shell.d.ts +0 -100
- package/dist/application/shell.d.ts.map +0 -1
- package/dist/application/shell.js +0 -256
- package/dist/application/windowing/child-init.d.ts.map +0 -1
- package/dist/application/windowing/handshake.d.ts.map +0 -1
- package/dist/application/windowing/lifecycle-controller.d.ts.map +0 -1
- package/dist/application/windowing/mount-controller.d.ts.map +0 -1
- package/dist/application/windowing/mount-controller.js +0 -277
- package/dist/application/windowing/protocol.d.ts.map +0 -1
- package/dist/application/windowing/token-refresh.d.ts.map +0 -1
- package/dist/domain/identity/delegation.d.ts.map +0 -1
- package/dist/domain/identity/path.d.ts +0 -11
- package/dist/domain/identity/path.d.ts.map +0 -1
- package/dist/domain/identity/path.js +0 -13
- package/dist/domain/identity/resolve-self.d.ts +0 -21
- package/dist/domain/identity/resolve-self.d.ts.map +0 -1
- package/dist/domain/identity/resolve-self.js +0 -36
- package/dist/domain/intent/middleware/capabilities.d.ts.map +0 -1
- package/dist/domain/intent/middleware/logging.d.ts.map +0 -1
- package/dist/domain/intent/middleware/rate-limit.d.ts.map +0 -1
- package/dist/domain/intent/pipeline.d.ts +0 -3
- package/dist/domain/intent/pipeline.d.ts.map +0 -1
- package/dist/domain/intent/router.d.ts +0 -6
- package/dist/domain/intent/router.d.ts.map +0 -1
- package/dist/domain/message/errors.d.ts +0 -2
- package/dist/domain/message/errors.d.ts.map +0 -1
- package/dist/domain/message/registries.d.ts.map +0 -1
- package/dist/domain/message/types.d.ts +0 -30
- package/dist/domain/message/types.d.ts.map +0 -1
- package/dist/domain/window/config.d.ts.map +0 -1
- package/dist/domain/window/lifecycle.d.ts.map +0 -1
- package/dist/domain/window/window.d.ts.map +0 -1
- package/dist/ports/kernel-client.d.ts +0 -33
- package/dist/ports/kernel-client.d.ts.map +0 -1
- package/dist/ports/shell-adapter.d.ts.map +0 -1
- package/dist/ports/transport.d.ts +0 -7
- package/dist/ports/transport.d.ts.map +0 -1
- package/src/application/kernel-facade.ts +0 -143
- package/src/application/shell.ts +0 -433
- package/src/application/windowing/mount-controller.ts +0 -335
- package/src/domain/identity/path.ts +0 -14
- package/src/domain/identity/resolve-self.ts +0 -38
- package/src/domain/intent/pipeline.ts +0 -3
- package/src/domain/intent/router.ts +0 -6
- package/src/domain/message/registries.ts +0 -76
- package/src/domain/message/types.ts +0 -32
- package/src/ports/kernel-client.ts +0 -32
- /package/dist/{application/channels/children-channel.js → channel/children.js} +0 -0
- /package/dist/{application/channels/types.js → channel/listeners.js} +0 -0
- /package/dist/{adapters/message-port.transport.js → channel/message-port.js} +0 -0
- /package/dist/{application/channels → channel}/observer.js +0 -0
- /package/dist/{ports → channel}/transport.js +0 -0
- /package/dist/{domain/intent → intent}/middleware/capabilities.js +0 -0
- /package/dist/{domain/intent → intent}/middleware/logging.d.ts +0 -0
- /package/dist/{domain/intent → intent}/middleware/logging.js +0 -0
- /package/dist/{domain/intent → intent}/middleware/rate-limit.js +0 -0
- /package/dist/{application/intent/pipeline-runner.js → intent/pipeline.js} +0 -0
- /package/dist/{domain/intent/pipeline.js → kernel/client.js} +0 -0
- /package/dist/{domain/identity/delegation.js → kernel/delegation/token.js} +0 -0
- /package/dist/{domain/intent/router.js → message/ctrl.js} +0 -0
- /package/dist/{domain/message/errors.js → message/error.js} +0 -0
- /package/dist/{application/windowing/protocol.js → message/init.js} +0 -0
- /package/dist/{domain/message/registries.js → message/intent.js} +0 -0
- /package/dist/{domain/message/types.js → message/message.js} +0 -0
- /package/dist/{domain/window → shell}/config.js +0 -0
- /package/dist/{domain/window/window.js → shell/shell.js} +0 -0
- /package/dist/{ports/kernel-client.js → window/capabilities.js} +0 -0
- /package/dist/{ports/shell-adapter.js → window/embed/adapter.js} +0 -0
- /package/dist/{adapters/iframe.shell-adapter.js → window/embed/iframe.js} +0 -0
- /package/dist/{application/windowing → window/mount}/handshake.d.ts +0 -0
- /package/src/{domain/identity/delegation.ts → kernel/delegation/token.ts} +0 -0
- /package/src/{application/windowing/protocol.ts → message/init.ts} +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ShellAdapter } from '../embed/adapter'
|
|
2
|
+
import type { LifecycleController } from '../lifecycle/states'
|
|
3
|
+
import type { Window } from '../window'
|
|
4
|
+
import type { Closer, MountEntry } from './close'
|
|
5
|
+
import type { MountedWindow, MountParams } from './params'
|
|
6
|
+
|
|
7
|
+
import { NOOP_REFRESHER } from './credential'
|
|
8
|
+
|
|
9
|
+
export type PlainMountDeps = {
|
|
10
|
+
adapter: ShellAdapter
|
|
11
|
+
windows: Map<string, Window>
|
|
12
|
+
lifecycle: LifecycleController
|
|
13
|
+
entries: Map<string, MountEntry>
|
|
14
|
+
close: Closer
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Plain-iframe mount path — for hosted views that don't speak the shell
|
|
19
|
+
* protocol. No handshake, no transport, no delegation token, no refresher;
|
|
20
|
+
* the iframe just renders. `close()` skips the ack request (no channel) and
|
|
21
|
+
* falls straight to dispose.
|
|
22
|
+
*/
|
|
23
|
+
export async function mountPlain(
|
|
24
|
+
deps: PlainMountDeps,
|
|
25
|
+
windowId: string,
|
|
26
|
+
params: MountParams,
|
|
27
|
+
): Promise<MountedWindow> {
|
|
28
|
+
const { adapter, windows, lifecycle, entries, close } = deps
|
|
29
|
+
|
|
30
|
+
const { handle, dispose: disposeHandle } = adapter.mount({
|
|
31
|
+
functionId: params.functionId,
|
|
32
|
+
isolation: 'sandboxed',
|
|
33
|
+
capabilities: params.capabilities,
|
|
34
|
+
sandbox: params.sandbox,
|
|
35
|
+
})
|
|
36
|
+
if (!(handle.element instanceof HTMLIFrameElement)) {
|
|
37
|
+
disposeHandle()
|
|
38
|
+
throw new Error('Shell adapter did not produce an HTMLIFrameElement')
|
|
39
|
+
}
|
|
40
|
+
params.host.appendChild(handle.element)
|
|
41
|
+
handle.element.src = params.url
|
|
42
|
+
|
|
43
|
+
windows.set(windowId, {
|
|
44
|
+
windowId,
|
|
45
|
+
functionId: params.functionId,
|
|
46
|
+
targetNodeId: params.targetNodeId,
|
|
47
|
+
isolation: 'sandboxed',
|
|
48
|
+
state: 'active',
|
|
49
|
+
delegationToken: null,
|
|
50
|
+
capabilities: params.capabilities,
|
|
51
|
+
})
|
|
52
|
+
lifecycle.register(windowId, 'active')
|
|
53
|
+
entries.set(windowId, {
|
|
54
|
+
handle,
|
|
55
|
+
dispose: disposeHandle,
|
|
56
|
+
refresher: NOOP_REFRESHER,
|
|
57
|
+
plain: true,
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
windowId,
|
|
62
|
+
get window() {
|
|
63
|
+
return windows.get(windowId)!
|
|
64
|
+
},
|
|
65
|
+
handle: { element: handle.element },
|
|
66
|
+
close: (opts) => close(windowId, opts),
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iframe.shell-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/iframe.shell-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,wBAAwB,CAAA;AAExE,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAUD,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,wBAA6B,GAAG,YAAY,CAsC5F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-client.adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/kernel-client.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EAEpB,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAA;AASlC;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CACF,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,eAAe,EAC3B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,OAAO,CAAC,CAAA;IACnB,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;IACrC,UAAU,IAAI,IAAI,CAAA;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,eAAe,CAAA;IACrC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB,CAAA;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,6BAA6B,GAClC,mBAAmB,CAgErB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-port.transport.d.ts","sourceRoot":"","sources":["../../src/adapters/message-port.transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,GAAG,SAAS,CAyCxF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"children-channel.d.ts","sourceRoot":"","sources":["../../../src/application/channels/children-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IACnD,EAAE,CAAC,CAAC,SAAS,WAAW,EACtB,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GACzD,MAAM,IAAI,CAAA;IACb,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;IAC9B,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CACzD;AAED,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IACpD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,eAAe,CAAA;IACzB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAA;CACrE,CAAA;AAID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,yBAAyB,CAmF9F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/application/channels/observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAA;AAErD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAA;AAE1F,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAChE,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,IAAI,CAAA;CAChD;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAqBvD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parent-channel.d.ts","sourceRoot":"","sources":["../../../src/application/channels/parent-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIrE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;CACtF;AAED,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,uBAAuB,CAqBxF"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ShellMessage } from '../../domain/message/types';
|
|
2
|
-
export type MessageHandler<M extends ShellMessage = ShellMessage> = (message: M) => void;
|
|
3
|
-
export type MessageType = ShellMessage['type'];
|
|
4
|
-
export type MessageOf<T extends MessageType> = Extract<ShellMessage, {
|
|
5
|
-
type: T;
|
|
6
|
-
}>;
|
|
7
|
-
export interface MessageListeners {
|
|
8
|
-
on<T extends MessageType>(type: T, handler: MessageHandler<MessageOf<T>>): () => void;
|
|
9
|
-
dispatch(message: ShellMessage): void;
|
|
10
|
-
}
|
|
11
|
-
export declare function createMessageListeners(): MessageListeners;
|
|
12
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/application/channels/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAA;AAExF,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AAE9C,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAA;AAEjF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;IACrF,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;CACtC;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2BzD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-runner.d.ts","sourceRoot":"","sources":["../../../src/application/intent/pipeline-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACvC,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAuBrD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/application/intent/request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAErC;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,cAAc,EAC1D,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GACpC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAgBxC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,cAAc,EAC1D,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GACpC,IAAI,CAYN;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,GAC/C,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAStD"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { IntentRegistry } from '../../domain/message/registries';
|
|
2
|
-
import type { IntentMessage } from '../../domain/message/types';
|
|
3
|
-
import type { Window } from '../../domain/window/window';
|
|
4
|
-
import type { ChildrenChannelController } from '../channels/children-channel';
|
|
5
|
-
import type { ParentChannel } from '../channels/parent-channel';
|
|
6
|
-
import type { IntentPipeline } from './pipeline-runner';
|
|
7
|
-
/**
|
|
8
|
-
* Decision produced by a routing policy: where an inbound intent should go.
|
|
9
|
-
*
|
|
10
|
-
* - `local`: the shell (entry point or sandboxed parent) handles it itself.
|
|
11
|
-
* - `parent`: forward upstream (only valid for sandboxed children).
|
|
12
|
-
* - `child`: forward to a specific child window.
|
|
13
|
-
* - `drop`: discard silently (e.g., handled fully by a middleware).
|
|
14
|
-
*/
|
|
15
|
-
export type IntentDecision<K extends keyof IntentRegistry = keyof IntentRegistry> = {
|
|
16
|
-
kind: 'local';
|
|
17
|
-
message: IntentMessage<K>;
|
|
18
|
-
} | {
|
|
19
|
-
kind: 'parent';
|
|
20
|
-
message: IntentMessage<K>;
|
|
21
|
-
} | {
|
|
22
|
-
kind: 'child';
|
|
23
|
-
windowId: string;
|
|
24
|
-
message: IntentMessage<K>;
|
|
25
|
-
} | {
|
|
26
|
-
kind: 'drop';
|
|
27
|
-
};
|
|
28
|
-
export type IntentOrigin = 'parent' | 'child' | 'self';
|
|
29
|
-
export type IntentPolicy = (message: IntentMessage, ctx: IntentContext) => IntentDecision | Promise<IntentDecision>;
|
|
30
|
-
export interface IntentContext {
|
|
31
|
-
readonly selfWindowId: string;
|
|
32
|
-
readonly origin: IntentOrigin;
|
|
33
|
-
readonly windows: ReadonlyMap<string, Window>;
|
|
34
|
-
readonly hasParent: boolean;
|
|
35
|
-
}
|
|
36
|
-
export type LocalIntentHandler<K extends keyof IntentRegistry = keyof IntentRegistry> = (message: IntentMessage<K>) => void | Promise<void>;
|
|
37
|
-
export interface IntentRouterController {
|
|
38
|
-
/**
|
|
39
|
-
* Route an inbound intent. `senderWindowId`, when provided, is the trusted
|
|
40
|
-
* windowId the channel authenticated; it overrides the (forgeable)
|
|
41
|
-
* `envelope.sender.windowId` before the pipeline runs.
|
|
42
|
-
*/
|
|
43
|
-
handleInbound(origin: IntentOrigin, message: IntentMessage, senderWindowId?: string): Promise<void>;
|
|
44
|
-
dispatchLocal(message: IntentMessage): Promise<void>;
|
|
45
|
-
setPolicy(policy: IntentPolicy): void;
|
|
46
|
-
onLocal<K extends keyof IntentRegistry>(name: K, handler: LocalIntentHandler<K>): () => void;
|
|
47
|
-
}
|
|
48
|
-
export type IntentRouterConfig = {
|
|
49
|
-
selfWindowId: string;
|
|
50
|
-
pipeline: IntentPipeline;
|
|
51
|
-
parent: ParentChannel | null;
|
|
52
|
-
children: ChildrenChannelController;
|
|
53
|
-
windows: ReadonlyMap<string, Window>;
|
|
54
|
-
};
|
|
55
|
-
export declare function createIntentRouter(config: IntentRouterConfig): IntentRouterController;
|
|
56
|
-
//# sourceMappingURL=router.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/application/intent/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,cAAc,GAAG,MAAM,cAAc,IAC5E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpB,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEtD,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,aAAa,KACf,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAE7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,cAAc,GAAG,MAAM,cAAc,IAAI,CACtF,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEzB,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,aAAa,CACX,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACrC,OAAO,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;CAC7F;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,yBAAyB,CAAA;IACnC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC,CAAA;AAuBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,sBAAsB,CA4ErF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { KernelClientAdapter } from '../adapters/kernel-client.adapter';
|
|
2
|
-
import type { DelegationToken } from '../domain/identity/delegation';
|
|
3
|
-
import type { KernelClient } from '../ports/kernel-client';
|
|
4
|
-
export type KernelFacadeConfig = {
|
|
5
|
-
adapter: KernelClientAdapter;
|
|
6
|
-
credential?: string;
|
|
7
|
-
getCredential?: () => string;
|
|
8
|
-
/** Kernel URL — exposed to consumers via `KernelClient.url`. */
|
|
9
|
-
url: string;
|
|
10
|
-
/**
|
|
11
|
-
* Explicit identity node to use as the mint subject. When omitted, the mint
|
|
12
|
-
* resolves the AUTHENTICATED caller via `whoami` (so a cookie-fronted GUI mints
|
|
13
|
-
* as the logged-in user, not the kernel root). Set this only to pin a subject.
|
|
14
|
-
*/
|
|
15
|
-
mintIdentity?: string;
|
|
16
|
-
};
|
|
17
|
-
export interface KernelFacadeController extends KernelClient {
|
|
18
|
-
dispose(): void;
|
|
19
|
-
}
|
|
20
|
-
export declare function createKernelFacade(config: KernelFacadeConfig): KernelFacadeController;
|
|
21
|
-
export type DelegationKernelFacadeConfig = {
|
|
22
|
-
adapter: KernelClientAdapter;
|
|
23
|
-
initialToken: DelegationToken;
|
|
24
|
-
url: string;
|
|
25
|
-
onTokenChange?: (token: DelegationToken) => void;
|
|
26
|
-
mintIdentity?: string;
|
|
27
|
-
};
|
|
28
|
-
export interface DelegationKernelFacadeController extends KernelFacadeController {
|
|
29
|
-
token(): DelegationToken;
|
|
30
|
-
setToken(next: DelegationToken): void;
|
|
31
|
-
}
|
|
32
|
-
export declare function createDelegationKernelFacade(config: DelegationKernelFacadeConfig): DelegationKernelFacadeController;
|
|
33
|
-
//# sourceMappingURL=kernel-facade.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-facade.d.ts","sourceRoot":"","sources":["../../src/application/kernel-facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAO1D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,mBAAmB,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,MAAM,CAAA;IAC5B,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAA;IACX;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,sBAAsB,CAerF;AAID,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,mBAAmB,CAAA;IAC5B,YAAY,EAAE,eAAe,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAChD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,gCAAiC,SAAQ,sBAAsB;IAC9E,KAAK,IAAI,eAAe,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAA;CACtC;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,4BAA4B,GACnC,gCAAgC,CA0BlC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { identityMethod } from '../domain/identity/path';
|
|
2
|
-
import { createSelfResolver, WHOAMI_PATH } from '../domain/identity/resolve-self';
|
|
3
|
-
export function createKernelFacade(config) {
|
|
4
|
-
const getCredential = config.getCredential ??
|
|
5
|
-
(() => {
|
|
6
|
-
if (config.credential === undefined) {
|
|
7
|
-
throw new Error('KernelFacade requires credential or getCredential');
|
|
8
|
-
}
|
|
9
|
-
return config.credential;
|
|
10
|
-
});
|
|
11
|
-
return buildCredentialFacade({
|
|
12
|
-
adapter: config.adapter,
|
|
13
|
-
getCredential,
|
|
14
|
-
url: config.url,
|
|
15
|
-
mintIdentity: config.mintIdentity,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
export function createDelegationKernelFacade(config) {
|
|
19
|
-
let token = config.initialToken;
|
|
20
|
-
const base = buildCredentialFacade({
|
|
21
|
-
adapter: config.adapter,
|
|
22
|
-
getCredential: () => token.credential,
|
|
23
|
-
url: config.url,
|
|
24
|
-
mintIdentity: config.mintIdentity,
|
|
25
|
-
});
|
|
26
|
-
return {
|
|
27
|
-
...base,
|
|
28
|
-
token() {
|
|
29
|
-
return token;
|
|
30
|
-
},
|
|
31
|
-
setToken(next) {
|
|
32
|
-
if (next.credential === token.credential && next.expiresAt === token.expiresAt)
|
|
33
|
-
return;
|
|
34
|
-
token = next;
|
|
35
|
-
config.onTokenChange?.(next);
|
|
36
|
-
},
|
|
37
|
-
// The delegation facade owns its adapter exclusively (created per child in
|
|
38
|
-
// `performChildInit`), so disposing it must tear the adapter down — unlike
|
|
39
|
-
// the standalone facade, where the caller owns the adapter's lifetime.
|
|
40
|
-
dispose() {
|
|
41
|
-
config.adapter.disconnect();
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* v1 note: we mint a fresh identity credential (grant-bearing, directly
|
|
47
|
-
* usable). Proper delegation composition (outer envelope via `Cred(...)`)
|
|
48
|
-
* requires SDK v2 — tracked in `.dev/todo/shell-sdk-v2-delegation.md`.
|
|
49
|
-
*/
|
|
50
|
-
function buildCredentialFacade(params) {
|
|
51
|
-
const { adapter, getCredential, mintIdentity, url } = params;
|
|
52
|
-
const resolveSelf = createSelfResolver();
|
|
53
|
-
return {
|
|
54
|
-
url,
|
|
55
|
-
call(path, callParams) {
|
|
56
|
-
return adapter.call(path, callParams, getCredential());
|
|
57
|
-
},
|
|
58
|
-
async mintDelegation() {
|
|
59
|
-
const subject = mintIdentity ?? (await resolveSelf(() => adapter.call(WHOAMI_PATH, {}, getCredential())));
|
|
60
|
-
const result = await adapter.call(identityMethod(subject, 'mintIdentityCredential'), {}, getCredential());
|
|
61
|
-
if (typeof result === 'string')
|
|
62
|
-
return result;
|
|
63
|
-
if (result !== null &&
|
|
64
|
-
typeof result === 'object' &&
|
|
65
|
-
typeof result.credential === 'string') {
|
|
66
|
-
return result.credential;
|
|
67
|
-
}
|
|
68
|
-
throw new Error('mintIdentityCredential returned an unexpected shape');
|
|
69
|
-
},
|
|
70
|
-
authToken() {
|
|
71
|
-
return getCredential();
|
|
72
|
-
},
|
|
73
|
-
dispose() {
|
|
74
|
-
// adapter lifetime is owned by the caller
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import type { FunctionSchema } from '@astrale-os/kernel-client';
|
|
2
|
-
import type { IntentMiddleware } from '../domain/intent/pipeline';
|
|
3
|
-
import type { IntentRegistry } from '../domain/message/registries';
|
|
4
|
-
import type { WindowCapabilities, SandboxProfile } from '../domain/window/config';
|
|
5
|
-
import type { Window } from '../domain/window/window';
|
|
6
|
-
import type { KernelClient } from '../ports/kernel-client';
|
|
7
|
-
import type { ShellAdapter } from '../ports/shell-adapter';
|
|
8
|
-
import type { ChildrenChannel } from './channels/children-channel';
|
|
9
|
-
import type { ObserverHandler } from './channels/observer';
|
|
10
|
-
import type { ParentChannel } from './channels/parent-channel';
|
|
11
|
-
import type { LocalIntentHandler } from './intent/router';
|
|
12
|
-
export type { MessageDirection, ObserverHandler } from './channels/observer';
|
|
13
|
-
export type { ParentChannel } from './channels/parent-channel';
|
|
14
|
-
export type { ChildrenChannel } from './channels/children-channel';
|
|
15
|
-
export type { MessageHandler } from './channels/types';
|
|
16
|
-
export type MountParams = {
|
|
17
|
-
readonly host: HTMLElement;
|
|
18
|
-
readonly url: string;
|
|
19
|
-
readonly functionId: string;
|
|
20
|
-
readonly capabilities: WindowCapabilities;
|
|
21
|
-
readonly targetNodeId?: string;
|
|
22
|
-
/** See `WindowConfig.sandbox` — `null` opts the iframe out of the attribute. */
|
|
23
|
-
readonly sandbox?: SandboxProfile | null;
|
|
24
|
-
readonly handshakeTimeoutMs?: number;
|
|
25
|
-
readonly delegationTtlSeconds?: number;
|
|
26
|
-
/**
|
|
27
|
-
* `'shell'` (default) runs the parent-side handshake, opening a MessagePort
|
|
28
|
-
* transport with delegation tokens and an intent channel. `'none'` mounts a
|
|
29
|
-
* plain iframe with no transport — used for hosted views that don't speak
|
|
30
|
-
* the shell protocol (`BlaxelComputer.deployFunction(kind:'view')`), so they
|
|
31
|
-
* render immediately instead of paying the 5 s handshake timeout. In `'none'`
|
|
32
|
-
* mode `capabilities` / `targetNodeId` / `delegationTtlSeconds` are inert
|
|
33
|
-
* (no channel to deliver them).
|
|
34
|
-
*/
|
|
35
|
-
readonly handshake?: 'shell' | 'none';
|
|
36
|
-
};
|
|
37
|
-
export type CloseResult = {
|
|
38
|
-
kind: 'closed';
|
|
39
|
-
} | {
|
|
40
|
-
kind: 'refused';
|
|
41
|
-
reason?: string;
|
|
42
|
-
} | {
|
|
43
|
-
kind: 'noop';
|
|
44
|
-
};
|
|
45
|
-
export type MountedWindow = {
|
|
46
|
-
readonly windowId: string;
|
|
47
|
-
readonly window: Window;
|
|
48
|
-
readonly handle: {
|
|
49
|
-
element: HTMLIFrameElement | HTMLElement;
|
|
50
|
-
};
|
|
51
|
-
close(opts?: {
|
|
52
|
-
force?: boolean;
|
|
53
|
-
timeoutMs?: number;
|
|
54
|
-
}): Promise<CloseResult>;
|
|
55
|
-
};
|
|
56
|
-
export interface Shell {
|
|
57
|
-
readonly parent: ParentChannel | null;
|
|
58
|
-
readonly children: ChildrenChannel;
|
|
59
|
-
readonly kernel: KernelClient;
|
|
60
|
-
readonly windows: ReadonlyMap<string, Window>;
|
|
61
|
-
readonly targetNodeId?: string;
|
|
62
|
-
use(middleware: IntentMiddleware): Shell;
|
|
63
|
-
onMessage(handler: ObserverHandler): () => void;
|
|
64
|
-
onIntent<K extends keyof IntentRegistry>(name: K, handler: LocalIntentHandler<K>): () => void;
|
|
65
|
-
mount(params: MountParams): Promise<MountedWindow>;
|
|
66
|
-
close(windowId: string, opts?: {
|
|
67
|
-
force?: boolean;
|
|
68
|
-
timeoutMs?: number;
|
|
69
|
-
}): Promise<CloseResult>;
|
|
70
|
-
init(): Promise<Shell>;
|
|
71
|
-
dispose(): Promise<void>;
|
|
72
|
-
}
|
|
73
|
-
export type StandaloneConfig = {
|
|
74
|
-
readonly mode: 'standalone';
|
|
75
|
-
readonly kernelUrl: string;
|
|
76
|
-
readonly credential?: string;
|
|
77
|
-
readonly getCredential?: () => string;
|
|
78
|
-
readonly mintIdentity?: string;
|
|
79
|
-
readonly schema?: FunctionSchema[];
|
|
80
|
-
readonly adapter?: ShellAdapter;
|
|
81
|
-
readonly windowId?: string;
|
|
82
|
-
/**
|
|
83
|
-
* Optional wire-layer `fetch` shim for the kernel transport. A cookie-fronted
|
|
84
|
-
* SPA passes a wrapper adding `credentials:'include'` + refresh-on-401 and an
|
|
85
|
-
* empty `credential`, so a router unseals the cookie into a Bearer (the SPA
|
|
86
|
-
* holds no token). Omit it (the default) for token-based callers — including
|
|
87
|
-
* every sandboxed child view, which authenticates with a delegation token.
|
|
88
|
-
*/
|
|
89
|
-
readonly fetch?: typeof fetch;
|
|
90
|
-
};
|
|
91
|
-
export type SandboxedConfig = {
|
|
92
|
-
readonly mode: 'sandboxed';
|
|
93
|
-
readonly schema?: FunctionSchema[];
|
|
94
|
-
readonly parentWindow?: WindowProxy;
|
|
95
|
-
readonly initTimeoutMs?: number;
|
|
96
|
-
readonly adapter?: ShellAdapter;
|
|
97
|
-
};
|
|
98
|
-
export type ShellConfig = StandaloneConfig | SandboxedConfig;
|
|
99
|
-
export declare function createShell(config: ShellConfig): Shell;
|
|
100
|
-
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/application/shell.ts"],"names":[],"mappings":"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"}
|