nacre
Import
Section titled “Import”import * as api from "@fungi.computer/nacre";Exports
Section titled “Exports”| Kind | Export | Description |
|---|---|---|
| class | WorkbenchHost | Child-window, command and callback lifetime for the trusted shell the host composes into its own document. Each child mounts inside the window slot the shell hands it, so the browser moves, clips and stacks it with that window; the host never positions a child itself. |
| type alias | TeamWorkbenchChildEvents | Team dashboards additionally relay the selected Agent Session to the Hub. |
| type alias | TeamWorkbenchHostHandle | Team/Computer/App-directory reads and child-App hosting for the trusted shell. The host composes the shell into its own top-level document, so the shell runs with the host’s escalated permissions; each child App still runs in its own sandboxed frame with its own separately resolved approvals. |
| type alias | WorkbenchResolvedChild | A launch checked against the embedding host’s own installation authority. |
| type alias | WorkbenchChildSurface | The host’s real mounted App; selection and lease replacement stay with it. |
| type alias | WorkbenchChildMountOptions | Inputs shared child-window mechanics supply to the host’s admitted mount. |
| type alias | WorkbenchPreparedChild | Host-owned admission and lifetime of one prepared child. |
| type alias | WorkbenchHostServices | Host services retain their own Team, account, Gill and consent authority. |
| type alias | WorkbenchHostControls | Controls offered by the real embedding host, never grants lent by the App. |
| type alias | WorkbenchWarningEvent | Retained host warning identifiers; adapters own their diagnostic sink. |
| type alias | WorkbenchWarningFields | Fields of a retained child/settings notification failure. |
| type alias | WorkbenchHostOptions | One workbench’s child mechanics over host-owned admission and services. |
| type alias | WorkbenchChildLaunch | A request to resolve and mount one child App, by its own identity. |
| type alias | WorkbenchCommandInvocation | One invocation of a mounted child’s own Release-declared command. |
| type alias | WorkbenchChildEvents | Events a mounted child raises toward its dashboard. A child’s permission requests never reach the dashboard: the host asks the person itself. The host validates a child’s commands against that child’s own Release declaration before forwarding them, so the dashboard can present them but never widen them. |
| type alias | WorkbenchChildHandle | One mounted child App; every method proxies to its real host-owned mount. |
| type alias | WorkbenchPlatformDestination | A platform destination the host offers the dashboard, such as opening a host settings page. The host owns the labels and the navigation; the dashboard only presents them and asks the host to follow one. |
| type alias | WorkbenchGillRequest | Decoded Gill request for a surface in the host directory. |
| type alias | DesktopGillSelection | The identity of a Gill selected in a host-rendered settings view. |
| type alias | DesktopGillAddition | A decoded request to add a Gill placement. |
| type alias | WorkbenchDesktopSettings | A dashboard supplies its own arranger, not an endpoint for ordinary Apps. |
| type alias | WorkbenchDesktopRegistration | A registration lease; close it when the dashboard unmounts. |
| type alias | WorkbenchGillWatch | A host-owned change subscription; close it when no longer visible. |
| type alias | TeamComputer | A decoded Team Computer inventory record. |
| constant | workbenchGillRequestSchema | A declared Gill request addressed to one host-selected App surface. |
| constant | desktopGillSelectionSchema | The member chooses a declared Gill and size in host-rendered Settings. |
| constant | desktopGillSizesSchema | The dashboard layout sizes currently assigned to one Gill. |
| constant | desktopGillAdditionSchema | A selected Gill and the layout size requested for a new placement. |
| constant | desktopSettingsHandlerSchema | Shape of the arranger callbacks the shell supplies to its host. |
| constant | appOpenRequestSchema | Runtime check for an App-open handoff arriving across an untrusted boundary. |
| constant | teamComputerSchema | One Team Computer in a host’s inventory: the wire of computers(). |
| constant | teamComputerDirectorySchema | One page of a host’s Team Computer inventory. |
| function | createBrowserActionHandler() | Browser effects stay in the trusted host, bound to one mounted App frame. |
WorkbenchHostclass
Section titled “WorkbenchHost”Child-window, command and callback lifetime for the trusted shell the host composes into its own document. Each child mounts inside the window slot the shell hands it, so the browser moves, clips and stacks it with that window; the host never positions a child itself.
Implements
Section titled “Implements”Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new WorkbenchHost(options): WorkbenchHost;Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
options |
WorkbenchHostOptions |
Returns
Section titled “Returns”Methods
Section titled “Methods”team()
Section titled “team()”team(): Promise<WhistleJsonValue>;The authenticated Team hosting this dashboard; the caller parses it.
Returns
Section titled “Returns”Promise<WhistleJsonValue>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.team;computers()
Section titled “computers()”computers(input): Promise<WhistleJsonValue>;A page of the Team’s Computer inventory; the caller parses it.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
Readonly<{ limit: number; offset: number; }> |
Returns
Section titled “Returns”Promise<WhistleJsonValue>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.computers;directory()
Section titled “directory()”directory(): Promise<WhistleJsonValue>;The Team’s effective App directory and role choices; the caller parses it.
Returns
Section titled “Returns”Promise<WhistleJsonValue>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.directory;requestGill()
Section titled “requestGill()”requestGill(input): Promise< | { viewId: string; title: string; state: "empty"; rows: readonly []; next?: string;} | { viewId: string; title: string; state: "error"; rows: readonly []; reason?: "exec_isolation_required" | "params_required"; error: string; recovery?: | { kind: "configure"; param: string; } | { kind: "open"; };} | { viewId: string; title: string; state: "full"; rows: readonly object[]; next?: string;} | { options: readonly object[]; next?: string;}>;Invoke a declared Gill of an admitted App in this Team. No caller-provided resource data.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
input |
{ viewId: string; params?: { [key: string]: string; }; after?: string; options?: string; surfaceId: string; } |
- |
input.viewId |
string |
- |
input.params? |
{ [key: string]: string; } |
- |
input.after? |
string |
- |
input.options? |
string |
- |
input.surfaceId |
string |
The App surface the Gill request is addressed to. |
Returns
Section titled “Returns”Promise< | { viewId: string; title: string; state: "empty";
rows: readonly []; next?: string; } | { viewId: string; title:
string; state: "error"; rows: readonly []; reason?:
"exec_isolation_required" | "params_required"; error: string;
recovery?: | { kind: "configure"; param: string; } | { kind:
"open"; }; } | { viewId: string; title: string; state: "full";
rows: readonly object[]; next?: string; } | { options: readonly
object[]; next?: string; }>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.requestGill;watchGillChanges()
Section titled “watchGillChanges()”watchGillChanges(...input): Promise<WorkbenchGillWatch>;Observe resource changes; only the host owns the authenticated stream. Close while covered.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
…input |
[object, () => Promise<void>] |
Returns
Section titled “Returns”Promise<WorkbenchGillWatch>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.watchGillChanges;platformDestinations()
Section titled “platformDestinations()”platformDestinations(): Promise<readonly Readonly<{ id: string; label: string;}>[]>;The platform destinations the host currently offers.
Returns
Section titled “Returns”Promise<readonly Readonly<{ id: string; label: string; }>[]>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.platformDestinations;openPlatformDestination()
Section titled “openPlatformDestination()”openPlatformDestination(id): Promise<void>;Ask the host to navigate to one offered platform destination.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
id |
string |
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.openPlatformDestination;settingsSections()
Section titled “settingsSections()”settingsSections(): Promise<readonly string[] | null>;Describe the actual controls without offering unsupported Settings.
Returns
Section titled “Returns”Promise<readonly string[] | null>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.settingsSections;takeAppOpenRequest()
Section titled “takeAppOpenRequest()”takeAppOpenRequest(): Promise< | { role: string; intent: | { kind: "compose"; text: string; } | { kind: "navigate"; params: readonly object[]; };} | { appId: string; intent: | { kind: "compose"; text: string; } | { kind: "navigate"; params: readonly object[]; };}| null>;Take, once, the App-open handoff the visitor’s Hub address carried (for example
?open=inbox&intent=compose). The host consumes it from its own address; the
dashboard opens it like any other apps.open request.
Returns
Section titled “Returns”Promise< | { role: string; intent: | { kind: "compose"; text:
string; } | { kind: "navigate"; params: readonly object[]; }; }
| { appId: string; intent: | { kind: "compose"; text: string;
} | { kind: "navigate"; params: readonly object[]; }; } | null>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.takeAppOpenRequest;registerDesktopSettings()
Section titled “registerDesktopSettings()”registerDesktopSettings(handler): Promise<WorkbenchDesktopRegistration>;Bind the admitted dashboard’s arranger to the host’s member-consent UI. Only the host invokes it; ordinary Apps can only open their own Settings.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
handler |
unknown |
Returns
Section titled “Returns”Promise<WorkbenchDesktopRegistration>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.registerDesktopSettings;openSettings()
Section titled “openSettings()”openSettings(location): Promise<void>;Open the host’s own Team settings at a dashboard-defined location (the host parses it). Administration there runs with the signed-in person’s own authority in host-rendered UI, never through the dashboard. Resolves when Settings close, so the dashboard restores its own focus.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
location |
WhistleJsonValue |
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.openSettings;memberAvatar()
Section titled “memberAvatar()”memberAvatar(): Promise<WhistleJsonValue>;The signed-in person’s own avatar preference; the caller parses it.
Returns
Section titled “Returns”Promise<WhistleJsonValue>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.memberAvatar;watchSettingsChanges()
Section titled “watchSettingsChanges()”watchSettingsChanges(onChanged): Promise<void>;Hear when host-rendered settings or App access consent changed the Team’s Apps or the person’s settings, so the dashboard refreshes.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
onChanged |
() => Promise<void> |
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.watchSettingsChanges;[dispose]()
Section titled “[dispose]()”dispose: void;The shell unmounted: stop notifying its callbacks.
Returns
Section titled “Returns”void
mount()
Section titled “mount()”mount( container, input, events): Promise<WorkbenchChildHandle>;Resolve, authorize and mount one child App inside container, the shell’s own
slot in that App’s window. The host never moves the child: the shell keeps
container attached and moves its window instead.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
container |
HTMLElement |
input |
WorkbenchChildLaunch |
events |
TeamWorkbenchChildEvents |
Returns
Section titled “Returns”Promise<WorkbenchChildHandle>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.mount;reportAgentSessionSelection()
Section titled “reportAgentSessionSelection()”reportAgentSessionSelection(windowId, selection): Promise<void>;Bind one mounted child’s explicit Agent Session selection to the host.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
windowId |
string |
selection |
| Readonly<{ agentId: string; sessionId: string; }> | null |
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”TeamWorkbenchHostHandle.reportAgentSessionSelection;TeamWorkbenchChildEventstype alias
Section titled “TeamWorkbenchChildEvents”type TeamWorkbenchChildEvents = WorkbenchChildEvents & Readonly<{ onAgentSessionSelection: (selection) => Promise<void>; }>;Team dashboards additionally relay the selected Agent Session to the Hub.
TeamWorkbenchHostHandletype alias
Section titled “TeamWorkbenchHostHandle”type TeamWorkbenchHostHandle = object;Team/Computer/App-directory reads and child-App hosting for the trusted shell. The host composes the shell into its own top-level document, so the shell runs with the host’s escalated permissions; each child App still runs in its own sandboxed frame with its own separately resolved approvals.
Methods
Section titled “Methods”team()
Section titled “team()”team(): Promise<WhistleJsonValue>;The authenticated Team hosting this dashboard; the caller parses it.
Returns
Section titled “Returns”Promise<WhistleJsonValue>
computers()
Section titled “computers()”computers(input): Promise<WhistleJsonValue>;A page of the Team’s Computer inventory; the caller parses it.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
Readonly<{ limit: number; offset: number; }> |
Returns
Section titled “Returns”Promise<WhistleJsonValue>
directory()
Section titled “directory()”directory(): Promise<WhistleJsonValue>;The Team’s effective App directory and role choices; the caller parses it.
Returns
Section titled “Returns”Promise<WhistleJsonValue>
requestGill()
Section titled “requestGill()”requestGill(input): Promise< | { viewId: Schema.String; title: Schema.String; state: Schema.Literal<"empty">; rows: Schema.Tuple<readonly []>; next?: Schema.optional<Schema.String>;} | { viewId: Schema.String; title: Schema.String; state: Schema.Literal<"error">; rows: Schema.Tuple<readonly []>; reason?: Schema.optional<Schema.Literals<readonly ["exec_isolation_required", "params_required"]>>; error: Schema.String; recovery?: Schema.optional<Schema.Union<readonly [Schema.Struct<{ kind: Schema.Literal<...>; param: Schema.String; }>, Schema.Struct<{ kind: Schema.Literal<...>; }>]>>;} | { viewId: Schema.String; title: Schema.String; state: Schema.Literal<"full">; rows: Schema.$Array<Schema.Struct<{ id: Schema.String; title: Schema.String; detail: Schema.optional<Schema.String>; tone: Schema.optional<Schema.Literals<readonly [..., ..., ..., ..., ...]>>; status: Schema.optional<Schema.Struct<{ label: Schema.String; tone: Schema.Literals<...>; }>>; open: Schema.optional<Schema.Struct<{ params: Schema.$Array<...>; }>>; }>>; next?: Schema.optional<Schema.String>;} | { options: Schema.$Array<Schema.Struct<{ value: Schema.String; label: Schema.String; detail: Schema.optional<Schema.String>; }>>; next?: Schema.optional<Schema.String>;}>;Invoke a declared Gill of an admitted App in this Team. No caller-provided resource data.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
input |
{ viewId: Schema.String; params?: Schema.optional<Schema.$Record<Schema.String, Schema.String>>; after?: Schema.optional<Schema.String>; options?: Schema.optional<Schema.String>; surfaceId: string; } |
- |
input.viewId |
Schema.String |
- |
input.params? |
Schema.optional<Schema.$Record<Schema.String, Schema.String>> |
- |
input.after? |
Schema.optional<Schema.String> |
- |
input.options? |
Schema.optional<Schema.String> |
- |
input.surfaceId |
string |
The App surface the Gill request is addressed to. |
Returns
Section titled “Returns”Promise< | { viewId: Schema.String; title: Schema.String; state:
Schema.Literal<"empty">; rows: Schema.Tuple<readonly []>; next?:
Schema.optional<Schema.String>; } | { viewId: Schema.String;
title: Schema.String; state: Schema.Literal<"error">; rows:
Schema.Tuple<readonly []>; reason?:
Schema.optional<Schema.Literals<readonly ["exec_isolation_required",
"params_required"]>>; error: Schema.String; recovery?:
Schema.optional<Schema.Union<readonly [Schema.Struct<{ kind:
Schema.Literal<…>; param: Schema.String; }>, Schema.Struct<{
kind: Schema.Literal<…>; }>]>>; } | { viewId: Schema.String;
title: Schema.String; state: Schema.Literal<"full">; rows:
Schema.$Array<Schema.Struct<{ id: Schema.String; title:
Schema.String; detail: Schema.optional<Schema.String>; tone:
Schema.optional<Schema.Literals<readonly […, …, …, …, …]>>;
status: Schema.optional<Schema.Struct<{ label: Schema.String;
tone: Schema.Literals<…>; }>>; open:
Schema.optional<Schema.Struct<{ params: Schema.$Array<…>; }>>;
}>>; next?: Schema.optional<Schema.String>; } | { options:
Schema.$Array<Schema.Struct<{ value: Schema.String; label:
Schema.String; detail: Schema.optional<Schema.String>; }>>;
next?: Schema.optional<Schema.String>; }>
watchGillChanges()
Section titled “watchGillChanges()”watchGillChanges(input, onChanged): Promise<WorkbenchGillWatch>;Observe resource changes; only the host owns the authenticated stream. Close while covered.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
input |
{ viewId: Schema.String; params?: Schema.optional<Schema.$Record<Schema.String, Schema.String>>; after?: Schema.optional<Schema.String>; options?: Schema.optional<Schema.String>; surfaceId: string; } |
- |
input.viewId |
Schema.String |
- |
input.params? |
Schema.optional<Schema.$Record<Schema.String, Schema.String>> |
- |
input.after? |
Schema.optional<Schema.String> |
- |
input.options? |
Schema.optional<Schema.String> |
- |
input.surfaceId |
string |
The App surface the Gill request is addressed to. |
onChanged |
() => Promise<void> |
- |
Returns
Section titled “Returns”Promise<WorkbenchGillWatch>
mount()
Section titled “mount()”mount( container, input, events): Promise<WorkbenchChildHandle>;Resolve, authorize and mount one child App inside container, the shell’s own
slot in that App’s window. The host never moves the child: the shell keeps
container attached and moves its window instead.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
container |
HTMLElement |
input |
WorkbenchChildLaunch |
events |
TeamWorkbenchChildEvents |
Returns
Section titled “Returns”Promise<WorkbenchChildHandle>
reportAgentSessionSelection()
Section titled “reportAgentSessionSelection()”reportAgentSessionSelection(windowId, selection): Promise<void>;Bind one mounted child’s explicit Agent Session selection to the host.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
windowId |
string |
selection |
| Readonly<{ agentId: string; sessionId: string; }> | null |
Returns
Section titled “Returns”Promise<void>
platformDestinations()
Section titled “platformDestinations()”platformDestinations(): Promise<readonly Readonly<{ id: string; label: string;}>[]>;The platform destinations the host currently offers.
Returns
Section titled “Returns”Promise<readonly Readonly<{ id: string; label: string; }>[]>
settingsSections()
Section titled “settingsSections()”settingsSections(): Promise<readonly string[] | null>;Offered Settings categories, or null for unrestricted host controls.
Returns
Section titled “Returns”Promise<readonly string[] | null>
openPlatformDestination()
Section titled “openPlatformDestination()”openPlatformDestination(id): Promise<void>;Ask the host to navigate to one offered platform destination.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
id |
string |
Returns
Section titled “Returns”Promise<void>
takeAppOpenRequest()
Section titled “takeAppOpenRequest()”takeAppOpenRequest(): Promise< | { role: Schema.String; intent: Schema.Union<readonly [Schema.Struct<{ kind: Schema.Literal<"compose">; text: Schema.String; }>, Schema.Struct<{ kind: Schema.Literal<"navigate">; params: Schema.$Array<Schema.Struct<...>>; }>]>;} | { appId: Schema.String; intent: Schema.Union<readonly [Schema.Struct<{ kind: Schema.Literal<"compose">; text: Schema.String; }>, Schema.Struct<{ kind: Schema.Literal<"navigate">; params: Schema.$Array<Schema.Struct<...>>; }>]>;}| null>;Take, once, the App-open handoff the visitor’s Hub address carried (for example
?open=inbox&intent=compose). The host consumes it from its own address; the
dashboard opens it like any other apps.open request.
Returns
Section titled “Returns”Promise< | { role: Schema.String; intent: Schema.Union<readonly
[Schema.Struct<{ kind: Schema.Literal<"compose">; text:
Schema.String; }>, Schema.Struct<{ kind:
Schema.Literal<"navigate">; params:
Schema.$Array<Schema.Struct<…>>; }>]>; } | { appId:
Schema.String; intent: Schema.Union<readonly [Schema.Struct<{
kind: Schema.Literal<"compose">; text: Schema.String; }>,
Schema.Struct<{ kind: Schema.Literal<"navigate">; params:
Schema.$Array<Schema.Struct<…>>; }>]>; } | null>
openSettings()
Section titled “openSettings()”openSettings(location): Promise<void>;Open the host’s own Team settings at a dashboard-defined location (the host parses it). Administration there runs with the signed-in person’s own authority in host-rendered UI, never through the dashboard. Resolves when Settings close, so the dashboard restores its own focus.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
location |
WhistleJsonValue |
Returns
Section titled “Returns”Promise<void>
registerDesktopSettings()
Section titled “registerDesktopSettings()”registerDesktopSettings(handler): Promise<WorkbenchDesktopRegistration>;Bind the admitted dashboard’s arranger to the host’s member-consent UI. Only the host invokes it; ordinary Apps can only open their own Settings.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
handler |
WorkbenchDesktopSettings |
Returns
Section titled “Returns”Promise<WorkbenchDesktopRegistration>
watchSettingsChanges()
Section titled “watchSettingsChanges()”watchSettingsChanges(onChanged): Promise<void>;Hear when host-rendered settings or App access consent changed the Team’s Apps or the person’s settings, so the dashboard refreshes.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
onChanged |
() => Promise<void> |
Returns
Section titled “Returns”Promise<void>
memberAvatar()
Section titled “memberAvatar()”memberAvatar(): Promise<WhistleJsonValue>;The signed-in person’s own avatar preference; the caller parses it.
Returns
Section titled “Returns”Promise<WhistleJsonValue>
WorkbenchResolvedChildtype alias
Section titled “WorkbenchResolvedChild”type WorkbenchResolvedChild = Readonly<{ launch: Omit<WorkbenchChildLaunch, "title">; title?: string;}>;A launch checked against the embedding host’s own installation authority.
WorkbenchChildSurfacetype alias
Section titled “WorkbenchChildSurface”type WorkbenchChildSurface = Pick< WorkbenchChildHandle, | "setVisibility" | "requestClose" | "requestBack" | "activateStatus" | "activateNavigation"> & object;The host’s real mounted App; selection and lease replacement stay with it.
Type Declaration
Section titled “Type Declaration”| Name | Type | Description |
|---|---|---|
dispose() |
() => void |
Release the mounted child or host-owned observations. |
reconfigure() |
(launch) => Promise<void> |
Replace the host-admitted selection while retaining the child document. |
WorkbenchChildMountOptionstype alias
Section titled “WorkbenchChildMountOptions”type WorkbenchChildMountOptions = Readonly<{ container: HTMLElement; hostWindow: Window; title?: string; events: TeamWorkbenchChildEvents; commands: AppSurfaceCommandMount; onDesktopSettings: (surfaceId) => Promise<void>; onPermissionRequest: (input, context) => Promise<AppPermissionOutcome>;}>;Inputs shared child-window mechanics supply to the host’s admitted mount.
WorkbenchPreparedChildtype alias
Section titled “WorkbenchPreparedChild”type WorkbenchPreparedChild = Readonly<{ commands: readonly AppCommandDeclaration[]; mount: Promise<WorkbenchChildSurface>; dispose: Promise<void>;}>;Host-owned admission and lifetime of one prepared child.
WorkbenchHostServicestype alias
Section titled “WorkbenchHostServices”type WorkbenchHostServices = Pick< TeamWorkbenchHostHandle, | "team" | "computers" | "directory" | "requestGill" | "watchGillChanges" | "memberAvatar"> & Readonly<{ suggestDesktopSettings: Promise<void>; dispose: void; }>;Host services retain their own Team, account, Gill and consent authority.
WorkbenchHostControlstype alias
Section titled “WorkbenchHostControls”type WorkbenchHostControls = Readonly<{ sections?: readonly string[]; parseSettings: WhistleJsonValue; openSettings: void; subscribeSettingsClosed: () => void; subscribeChanges: () => void; attachDesktopSettings: () => void; requestAppAccess: Promise<AppPermissionOutcome>;}>;Controls offered by the real embedding host, never grants lent by the App.
WorkbenchWarningEventtype alias
Section titled “WorkbenchWarningEvent”type WorkbenchWarningEvent = | "team_workbench_commands_failed" | "team_workbench_settings_notification_failed" | "team_workbench_focus_notification_failed";Retained host warning identifiers; adapters own their diagnostic sink.
WorkbenchWarningFieldstype alias
Section titled “WorkbenchWarningFields”type WorkbenchWarningFields = | Readonly<{ cause: unknown; }> | Readonly<{ stage: "update" | "dispose"; cause: unknown; }>;Fields of a retained child/settings notification failure.
WorkbenchHostOptionstype alias
Section titled “WorkbenchHostOptions”type WorkbenchHostOptions = Readonly<{ hostWindow: Window; resolveLaunch: WorkbenchResolvedChild; prepareChild: Promise< Readonly<{ commands: readonly AppCommandDeclaration[]; mount: Promise<WorkbenchChildSurface>; dispose: Promise<void>; }> >; services: WorkbenchHostServices; reportAgentSessionSelection: void; platform: Readonly<{ controls: WorkbenchHostControls; destinations: Promise< readonly Readonly<{ id: string; label: string; }>[] >; open: void; takeAppOpenRequest: TeamWorkbenchHostHandle["takeAppOpenRequest"]; }>; log: void;}>;One workbench’s child mechanics over host-owned admission and services.
WorkbenchChildLaunchtype alias
Section titled “WorkbenchChildLaunch”type WorkbenchChildLaunch = Readonly<{ windowId: string; appId: string; releaseId: string; surfaceId: string; href: string; title?: string; openRequest: AppOpenRequest | null;}>;A request to resolve and mount one child App, by its own identity.
WorkbenchCommandInvocationtype alias
Section titled “WorkbenchCommandInvocation”type WorkbenchCommandInvocation = Readonly<{ arguments?: WhistleJsonValue; origin: WhistleExecutionOrigin;}>;One invocation of a mounted child’s own Release-declared command.
WorkbenchChildEventstype alias
Section titled “WorkbenchChildEvents”type WorkbenchChildEvents = Readonly<{ onComputerChoice?: () => Promise<void>; onNavigation?: (input) => Promise<void>; onAppOpen?: (input) => Promise<void>; onAppRole?: (role) => Promise<AppRoleChoice>; onSelectionChanged?: () => Promise<boolean>; onCommands?: (commands) => Promise<void>; onReservedChord?: (input) => Promise<void>; onFocus?: (focused) => Promise<void>; onNavigationState?: (state) => Promise<void>; onStatusItems?: (items) => Promise<void>;}>;Events a mounted child raises toward its dashboard. A child’s permission requests never reach the dashboard: the host asks the person itself. The host validates a child’s commands against that child’s own Release declaration before forwarding them, so the dashboard can present them but never widen them.
WorkbenchChildHandletype alias
Section titled “WorkbenchChildHandle”type WorkbenchChildHandle = object;One mounted child App; every method proxies to its real host-owned mount.
Methods
Section titled “Methods”setVisibility()
Section titled “setVisibility()”setVisibility(visibility): Promise<void>;Show or hide the mounted child without changing its identity.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
visibility |
"hidden" | "visible" |
Returns
Section titled “Returns”Promise<void>
reconfigure()
Section titled “reconfigure()”reconfigure(launch): Promise<void>;Update the launch descriptor of the existing mount.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
launch |
WorkbenchChildLaunch |
Returns
Section titled “Returns”Promise<void>
requestClose()
Section titled “requestClose()”requestClose(): Promise<boolean>;Ask whether the child permits a user-initiated close.
Returns
Section titled “Returns”Promise<boolean>
requestBack()
Section titled “requestBack()”requestBack(): Promise<boolean>;Ask the child to go back one step in its own history; true when it did.
Returns
Section titled “Returns”Promise<boolean>
activateStatus()
Section titled “activateStatus()”activateStatus(action): Promise<boolean>;Deliver the person’s use of a child’s status item; true when it acted.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
action |
AppStatusAction |
Returns
Section titled “Returns”Promise<boolean>
activateNavigation()
Section titled “activateNavigation()”activateNavigation(activation): Promise<boolean>;Deliver the person’s use of a child’s crumb or header command; true when it
acted.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
activation |
AppNavigationActivation |
Returns
Section titled “Returns”Promise<boolean>
invokeCommand()
Section titled “invokeCommand()”invokeCommand(commandId, input): Promise<WhistleJsonValue | undefined>;Run one of the child’s currently presented commands.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
commandId |
string |
input |
WorkbenchCommandInvocation |
Returns
Section titled “Returns”Promise<WhistleJsonValue | undefined>
dispose()
Section titled “dispose()”dispose(): Promise<void>;Release the child mount and its resources.
Returns
Section titled “Returns”Promise<void>
WorkbenchPlatformDestinationtype alias
Section titled “WorkbenchPlatformDestination”type WorkbenchPlatformDestination = Readonly<{ id: string; label: string;}>;A platform destination the host offers the dashboard, such as opening a host settings page. The host owns the labels and the navigation; the dashboard only presents them and asks the host to follow one.
WorkbenchGillRequesttype alias
Section titled “WorkbenchGillRequest”type WorkbenchGillRequest = typeof workbenchGillRequestSchema.Type;Decoded Gill request for a surface in the host directory.
DesktopGillSelectiontype alias
Section titled “DesktopGillSelection”type DesktopGillSelection = z.output<typeof desktopGillSelectionSchema>;The identity of a Gill selected in a host-rendered settings view.
DesktopGillAdditiontype alias
Section titled “DesktopGillAddition”type DesktopGillAddition = z.output<typeof desktopGillAdditionSchema>;A decoded request to add a Gill placement.
WorkbenchDesktopSettingstype alias
Section titled “WorkbenchDesktopSettings”type WorkbenchDesktopSettings = object;A dashboard supplies its own arranger, not an endpoint for ordinary Apps.
Properties
Section titled “Properties”readGill
Section titled “readGill”readGill: (input) => Promise<z.output<typeof desktopGillSizesSchema>>;Read the sizes currently assigned to this Gill in the dashboard layout.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
DesktopGillSelection |
Returns
Section titled “Returns”Promise<z.output<typeof
desktopGillSizesSchema>>
addGill
Section titled “addGill”addGill: (input) => Promise<void>;Add a Gill at the requested size to the dashboard layout.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
DesktopGillAddition |
Returns
Section titled “Returns”Promise<void>
removeGill
Section titled “removeGill”removeGill: (input) => Promise<void>;Remove this Gill from the dashboard layout.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
DesktopGillSelection |
Returns
Section titled “Returns”Promise<void>
WorkbenchDesktopRegistrationtype alias
Section titled “WorkbenchDesktopRegistration”type WorkbenchDesktopRegistration = object;A registration lease; close it when the dashboard unmounts.
Methods
Section titled “Methods”close()
Section titled “close()”close(): Promise<void>;Release this host registration.
Returns
Section titled “Returns”Promise<void>
WorkbenchGillWatchtype alias
Section titled “WorkbenchGillWatch”type WorkbenchGillWatch = object;A host-owned change subscription; close it when no longer visible.
Methods
Section titled “Methods”close()
Section titled “close()”close(): Promise<void>;Release this host registration.
Returns
Section titled “Returns”Promise<void>
TeamComputertype alias
Section titled “TeamComputer”type TeamComputer = z.output<typeof teamComputerSchema>;A decoded Team Computer inventory record.
workbenchGillRequestSchemaconstant
Section titled “workbenchGillRequestSchema”const workbenchGillRequestSchema: Struct<{ viewId: String; params: optional<$Record<String, String>>; after: optional<String>; options: optional<String>; surfaceId: String;}>;A declared Gill request addressed to one host-selected App surface.
desktopGillSelectionSchemaconstant
Section titled “desktopGillSelectionSchema”const desktopGillSelectionSchema: ZodObject< { surfaceId: ZodString; gillId: ZodString; }, $strict>;The member chooses a declared Gill and size in host-rendered Settings.
desktopGillSizesSchemaconstant
Section titled “desktopGillSizesSchema”const desktopGillSizesSchema: ZodArray< ZodEnum<{ S: "S"; M: "M"; L: "L"; }>>;The dashboard layout sizes currently assigned to one Gill.
desktopGillAdditionSchemaconstant
Section titled “desktopGillAdditionSchema”const desktopGillAdditionSchema: ZodObject< { surfaceId: ZodString; gillId: ZodString; size: ZodEnum<{ S: "S"; M: "M"; L: "L"; }>; }, $strict>;A selected Gill and the layout size requested for a new placement.
desktopSettingsHandlerSchemaconstant
Section titled “desktopSettingsHandlerSchema”const desktopSettingsHandlerSchema: ZodPipe< ZodUnknown, ZodTransform<object & object, unknown>>;Shape of the arranger callbacks the shell supplies to its host.
appOpenRequestSchemaconstant
Section titled “appOpenRequestSchema”const appOpenRequestSchema: Union< readonly [ Struct<{ kind: Literal<"compose">; requestId: String; text: String; }>, Struct<{ kind: Literal<"navigate">; requestId: String; params: $Array< Struct<{ key: String; value: String; }> >; }>, ]>;Runtime check for an App-open handoff arriving across an untrusted boundary.
teamComputerSchemaconstant
Section titled “teamComputerSchema”const teamComputerSchema: ZodObject< { computerId: ZodString; name: ZodString; createdAt: ZodNumber; updatedAt: ZodNumber; }, $strict>;One Team Computer in a host’s inventory: the wire of computers().
teamComputerDirectorySchemaconstant
Section titled “teamComputerDirectorySchema”const teamComputerDirectorySchema: ZodObject< { computers: ZodArray< ZodObject< { computerId: ZodString; name: ZodString; createdAt: ZodNumber; updatedAt: ZodNumber; }, $strict > >; nextOffset: ZodNullable<ZodNumber>; }, $strict>;One page of a host’s Team Computer inventory.
createBrowserActionHandler()function
Section titled “createBrowserActionHandler()”function createBrowserActionHandler( options,): (request) => Promise<AppBrowserActionOutcome>;Browser effects stay in the trusted host, bound to one mounted App frame.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
options |
{ frame: HTMLIFrameElement; hostWindow: Window; signal: AbortSignal; } |
options.frame |
HTMLIFrameElement |
options.hostWindow |
Window |
options.signal |
AbortSignal |
Returns
Section titled “Returns”(request) => Promise<AppBrowserActionOutcome>
References
Section titled “References”AppCommandOptional
Section titled “AppCommandOptional”Re-exports AppCommandOptional
AppCommandDeclaration
Section titled “AppCommandDeclaration”Re-exports AppCommandDeclaration
commandPaletteReservedChordForPlatform
Section titled “commandPaletteReservedChordForPlatform”Re-exports commandPaletteReservedChordForPlatform
commandPaletteReservedChordForUserAgent
Section titled “commandPaletteReservedChordForUserAgent”Re-exports commandPaletteReservedChordForUserAgent
appDirectorySourceId
Section titled “appDirectorySourceId”Re-exports appDirectorySourceId
AppSurfaceCommandMount
Section titled “AppSurfaceCommandMount”Re-exports AppSurfaceCommandMount
PaneCommands
Section titled “PaneCommands”Re-exports PaneCommands
PaneCommandMount
Section titled “PaneCommandMount”Re-exports PaneCommandMount
AppSurfaceCommandHost
Section titled “AppSurfaceCommandHost”Re-exports AppSurfaceCommandHost
createAppSurfaceCommandHost
Section titled “createAppSurfaceCommandHost”Re-exports createAppSurfaceCommandHost
backBinding
Section titled “backBinding”Re-exports backBinding
ShellActions
Section titled “ShellActions”Re-exports ShellActions
shellCommands
Section titled “shellCommands”Re-exports shellCommands
addressKey
Section titled “addressKey”Re-exports addressKey
appAddressSchema
Section titled “appAddressSchema”Re-exports appAddressSchema
appAuthorityEnforcementSchema
Section titled “appAuthorityEnforcementSchema”Re-exports appAuthorityEnforcementSchema
appCatalogBrokerResultSchema
Section titled “appCatalogBrokerResultSchema”Re-exports appCatalogBrokerResultSchema
appCatalogEntrySchema
Section titled “appCatalogEntrySchema”Re-exports appCatalogEntrySchema
appCatalogResponseSchema
Section titled “appCatalogResponseSchema”Re-exports appCatalogResponseSchema
appDirectoryEntrySchema
Section titled “appDirectoryEntrySchema”Re-exports appDirectoryEntrySchema
appRoleSelectionSchema
Section titled “appRoleSelectionSchema”Re-exports appRoleSelectionSchema
AppAddress
Section titled “AppAddress”Re-exports AppAddress
AppAuthorityEnforcement
Section titled “AppAuthorityEnforcement”Re-exports AppAuthorityEnforcement
AppCatalog
Section titled “AppCatalog”Re-exports AppCatalog
AppDirectoryEntry
Section titled “AppDirectoryEntry”Re-exports AppDirectoryEntry
AppDirectoryGill
Section titled “AppDirectoryGill”Re-exports AppDirectoryGill
ShellChord
Section titled “ShellChord”Re-exports ShellChord
KeyEventFacts
Section titled “KeyEventFacts”Re-exports KeyEventFacts
parseChord
Section titled “parseChord”Re-exports parseChord
chordMatches
Section titled “chordMatches”Re-exports chordMatches
LeaderKey
Section titled “LeaderKey”Re-exports LeaderKey
leaderKeys
Section titled “leaderKeys”Re-exports leaderKeys
leaderKeyMatches
Section titled “leaderKeyMatches”Re-exports leaderKeyMatches
ShellKeyHost
Section titled “ShellKeyHost”Re-exports ShellKeyHost
installShellKeys
Section titled “installShellKeys”Re-exports installShellKeys
WindowLaunch
Section titled “WindowLaunch”Re-exports WindowLaunch
WindowStatus
Section titled “WindowStatus”Re-exports WindowStatus
WindowHost
Section titled “WindowHost”Re-exports WindowHost
WindowEvents
Section titled “WindowEvents”Re-exports WindowEvents
WindowProjection
Section titled “WindowProjection”Re-exports WindowProjection
WindowsProjection
Section titled “WindowsProjection”Re-exports WindowsProjection
hasVisibleWindows
Section titled “hasVisibleWindows”Re-exports hasVisibleWindows
WindowMount
Section titled “WindowMount”Re-exports WindowMount
WindowManager
Section titled “WindowManager”Re-exports WindowManager
WindowManagerOptions
Section titled “WindowManagerOptions”Re-exports WindowManagerOptions
createWindowManager
Section titled “createWindowManager”Re-exports createWindowManager