@fungi.computer/nacre 0.0.0-stage → 0.0.1
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 +21 -0
- package/README.md +98 -2
- package/dist/app-directory.d.ts +600 -0
- package/dist/app-directory.js +323 -0
- package/dist/browser-actions.d.ts +7 -0
- package/dist/browser-actions.js +56 -0
- package/dist/command-host.d.ts +140 -0
- package/dist/command-host.js +532 -0
- package/dist/commands.d.ts +25 -0
- package/dist/commands.js +78 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +9 -0
- package/dist/keys.d.ts +47 -0
- package/dist/keys.js +136 -0
- package/dist/shell-module.d.ts +98 -0
- package/dist/shell-module.js +90 -0
- package/dist/window-manager.d.ts +159 -0
- package/dist/window-manager.js +796 -0
- package/dist/workbench-contract.d.ts +70 -0
- package/dist/workbench-contract.js +1 -0
- package/dist/workbench-directory.d.ts +343 -0
- package/dist/workbench-directory.js +65 -0
- package/dist/workbench-host-types.d.ts +114 -0
- package/dist/workbench-host-types.js +1 -0
- package/dist/workbench-host.d.ts +34 -0
- package/dist/workbench-host.js +356 -0
- package/dist/workbench-model.d.ts +223 -0
- package/dist/workbench-model.js +93 -0
- package/dist/workbench.d.ts +4 -0
- package/dist/workbench.js +2 -0
- package/docs/api/README.md +21 -0
- package/docs/api/app-directory.md +587 -0
- package/docs/api/command-host.md +225 -0
- package/docs/api/commands.md +199 -0
- package/docs/api/index.md +1860 -0
- package/docs/api/keys.md +183 -0
- package/docs/api/shell-module.md +233 -0
- package/docs/api/window-manager.md +269 -0
- package/docs/api/workbench-directory.md +141 -0
- package/docs/api/workbench.md +201 -0
- package/package.json +98 -3
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
<!-- Generated by Botanical API docs (TypeDoc + typedoc-plugin-markdown). Do not edit. -->
|
|
2
|
+
|
|
3
|
+
[**@fungi.computer/nacre**](README.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
[@fungi.computer/nacre](README.md) / command-host
|
|
8
|
+
|
|
9
|
+
# command-host
|
|
10
|
+
|
|
11
|
+
## Type Aliases
|
|
12
|
+
|
|
13
|
+
### AppCommandOptional
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type AppCommandOptional<T> = T | undefined;
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
An optional field a declaration may carry as explicitly undefined.
|
|
20
|
+
|
|
21
|
+
#### Type Parameters
|
|
22
|
+
|
|
23
|
+
| Type Parameter |
|
|
24
|
+
| -------------- |
|
|
25
|
+
| `T` |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### AppCommandDeclaration
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
type AppCommandDeclaration = Readonly<{
|
|
33
|
+
id: string;
|
|
34
|
+
title: string;
|
|
35
|
+
category: string;
|
|
36
|
+
description?: AppCommandOptional<string>;
|
|
37
|
+
projections?: AppCommandOptional<
|
|
38
|
+
Readonly<{
|
|
39
|
+
bindings?: AppCommandOptional<
|
|
40
|
+
Readonly<{
|
|
41
|
+
order?: AppCommandOptional<number>;
|
|
42
|
+
values: readonly string[];
|
|
43
|
+
}>
|
|
44
|
+
>;
|
|
45
|
+
agent?: AppCommandOptional<
|
|
46
|
+
Readonly<{
|
|
47
|
+
order?: AppCommandOptional<number>;
|
|
48
|
+
keybind?: AppCommandOptional<string>;
|
|
49
|
+
}>
|
|
50
|
+
>;
|
|
51
|
+
help?: AppCommandOptional<
|
|
52
|
+
Readonly<{
|
|
53
|
+
order?: AppCommandOptional<number>;
|
|
54
|
+
}>
|
|
55
|
+
>;
|
|
56
|
+
menu?: AppCommandOptional<
|
|
57
|
+
Readonly<{
|
|
58
|
+
order?: AppCommandOptional<number>;
|
|
59
|
+
}>
|
|
60
|
+
>;
|
|
61
|
+
palette?: AppCommandOptional<
|
|
62
|
+
Readonly<{
|
|
63
|
+
order?: AppCommandOptional<number>;
|
|
64
|
+
}>
|
|
65
|
+
>;
|
|
66
|
+
slash?: AppCommandOptional<
|
|
67
|
+
Readonly<{
|
|
68
|
+
order?: AppCommandOptional<number>;
|
|
69
|
+
aliases: readonly string[];
|
|
70
|
+
}>
|
|
71
|
+
>;
|
|
72
|
+
}>
|
|
73
|
+
>;
|
|
74
|
+
}>;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The digest-covered command rows a mounted App's Release declares, as the host
|
|
78
|
+
receives them. Oyster compares and projects them; the Release declaration
|
|
79
|
+
grammar stays with its owner, which hands rows of this shape.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### AppSurfaceCommandMount
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
type AppSurfaceCommandMount = Readonly<{
|
|
87
|
+
agentCommands: Pick<WhistleRuntime, "snapshot" | "execute">;
|
|
88
|
+
handlers: Pick<AppHostHandlers, "registerCommands" | "invokeReservedChord">;
|
|
89
|
+
dispose: () => void;
|
|
90
|
+
}>;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The command side of one mounted App's host handlers.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### PaneCommands
|
|
98
|
+
|
|
99
|
+
```ts
|
|
100
|
+
type PaneCommands = Readonly<{
|
|
101
|
+
commandId: (id) => string;
|
|
102
|
+
contribute: (commands) => WhistleContributionLease;
|
|
103
|
+
execute: WhistleRuntime["execute"];
|
|
104
|
+
snapshot: WhistleRuntime["snapshot"];
|
|
105
|
+
subscribe: WhistleRuntime["subscribe"];
|
|
106
|
+
present: WhistleRuntime["present"];
|
|
107
|
+
}>;
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Commands owned by one pane, projected to globals plus its focus scope.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### PaneCommandMount
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
type PaneCommandMount = PaneCommands &
|
|
118
|
+
Readonly<{
|
|
119
|
+
dispose: () => void;
|
|
120
|
+
}>;
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Closing a pane withdraws all its leases, presenters and subscriptions.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### AppSurfaceCommandHost
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
type AppSurfaceCommandHost = Readonly<{
|
|
131
|
+
mountPane: (paneId) => PaneCommandMount;
|
|
132
|
+
mount: (mountId, declarations) => AppSurfaceCommandMount;
|
|
133
|
+
focus: (mountId) => void;
|
|
134
|
+
registerShellCommands: (commands) => () => void;
|
|
135
|
+
registerDirectoryCommands: (commands, run) => () => void;
|
|
136
|
+
menu: () => readonly WhistleMenuProjection[];
|
|
137
|
+
active: () => WhistleSnapshot;
|
|
138
|
+
execute: (commandId, input) => Promise<WhistleExecutionOutcome>;
|
|
139
|
+
snapshot: () => WhistleSnapshot;
|
|
140
|
+
subscribe: (listener) => () => void;
|
|
141
|
+
dispose: () => void;
|
|
142
|
+
}>;
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
The shell-owned Whistle graph and its focused menu projection.
|
|
146
|
+
|
|
147
|
+
## Variables
|
|
148
|
+
|
|
149
|
+
### appDirectorySourceId
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
const appDirectorySourceId: "app-directory" = "app-directory";
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Whistle source of Release-advertised rows for Apps not yet mounted.
|
|
156
|
+
|
|
157
|
+
## Functions
|
|
158
|
+
|
|
159
|
+
### commandPaletteReservedChordForPlatform()
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
function commandPaletteReservedChordForPlatform(mac): AppHostReservedChord;
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Select the shell command-palette chord for a Mac or non-Mac keyboard.
|
|
166
|
+
|
|
167
|
+
#### Parameters
|
|
168
|
+
|
|
169
|
+
| Parameter | Type |
|
|
170
|
+
| --------- | --------- |
|
|
171
|
+
| `mac` | `boolean` |
|
|
172
|
+
|
|
173
|
+
#### Returns
|
|
174
|
+
|
|
175
|
+
`AppHostReservedChord`
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
### commandPaletteReservedChordForUserAgent()
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
function commandPaletteReservedChordForUserAgent(
|
|
183
|
+
userAgent,
|
|
184
|
+
): AppHostReservedChord;
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Select the shell command-palette chord from the embedding browser user agent.
|
|
188
|
+
|
|
189
|
+
#### Parameters
|
|
190
|
+
|
|
191
|
+
| Parameter | Type |
|
|
192
|
+
| ----------- | -------- |
|
|
193
|
+
| `userAgent` | `string` |
|
|
194
|
+
|
|
195
|
+
#### Returns
|
|
196
|
+
|
|
197
|
+
`AppHostReservedChord`
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
### createAppSurfaceCommandHost()
|
|
202
|
+
|
|
203
|
+
```ts
|
|
204
|
+
function createAppSurfaceCommandHost(whistle?): AppSurfaceCommandHost;
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Own one shell's Whistle runtime for mounted Apps and local panes. The embedding
|
|
208
|
+
host supplies verified Release declarations and decides which App or pane has
|
|
209
|
+
focus.
|
|
210
|
+
|
|
211
|
+
Agar invokes `registerCommands` once for the aggregate command set of a mount.
|
|
212
|
+
The adapter keeps that aggregate as one Whistle generation, so an Agar update
|
|
213
|
+
replaces the generation atomically and disposal releases only that App. Command
|
|
214
|
+
handlers remain the App's callback; the shell only adds the Whistle identity and
|
|
215
|
+
routes focused menu execution to it.
|
|
216
|
+
|
|
217
|
+
#### Parameters
|
|
218
|
+
|
|
219
|
+
| Parameter | Type |
|
|
220
|
+
| --------- | ---------------- |
|
|
221
|
+
| `whistle` | `WhistleRuntime` |
|
|
222
|
+
|
|
223
|
+
#### Returns
|
|
224
|
+
|
|
225
|
+
[`AppSurfaceCommandHost`](#appsurfacecommandhost)
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
<!-- Generated by Botanical API docs (TypeDoc + typedoc-plugin-markdown). Do not edit. -->
|
|
2
|
+
|
|
3
|
+
[**@fungi.computer/nacre**](README.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
[@fungi.computer/nacre](README.md) / commands
|
|
8
|
+
|
|
9
|
+
# commands
|
|
10
|
+
|
|
11
|
+
## Type Aliases
|
|
12
|
+
|
|
13
|
+
### ShellActions
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
type ShellActions = Readonly<{
|
|
17
|
+
openApp: () => void;
|
|
18
|
+
showKeys: () => void;
|
|
19
|
+
showCommandLine: () => void;
|
|
20
|
+
focusStep: (step) => void;
|
|
21
|
+
swapStep: (step) => void;
|
|
22
|
+
toggleZoom: () => void;
|
|
23
|
+
back?: () => void;
|
|
24
|
+
}>;
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The behavior supplied by either a browser or terminal workspace shell.
|
|
28
|
+
|
|
29
|
+
## Variables
|
|
30
|
+
|
|
31
|
+
### backBinding
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
const backBinding: "<leader>[" = "<leader>[";
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The Back binding, also shown by the shell in window chrome.
|
|
38
|
+
|
|
39
|
+
## Functions
|
|
40
|
+
|
|
41
|
+
### shellCommands()
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
function shellCommands(actions): readonly Readonly<{
|
|
45
|
+
id: string;
|
|
46
|
+
title: string;
|
|
47
|
+
category: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
projections?: {
|
|
50
|
+
bindings?: {
|
|
51
|
+
order?: number;
|
|
52
|
+
values: readonly string[];
|
|
53
|
+
};
|
|
54
|
+
agent?: {
|
|
55
|
+
keybind?: string;
|
|
56
|
+
order?: number;
|
|
57
|
+
};
|
|
58
|
+
help?: {
|
|
59
|
+
order?: number;
|
|
60
|
+
};
|
|
61
|
+
menu?: {
|
|
62
|
+
order?: number;
|
|
63
|
+
};
|
|
64
|
+
palette?: {
|
|
65
|
+
order?: number;
|
|
66
|
+
};
|
|
67
|
+
slash?: {
|
|
68
|
+
aliases: readonly string[];
|
|
69
|
+
consumesDraft?: boolean;
|
|
70
|
+
order?: number;
|
|
71
|
+
arguments?: {
|
|
72
|
+
hint: string;
|
|
73
|
+
words?: readonly ...[];
|
|
74
|
+
text?: {
|
|
75
|
+
field: ...;
|
|
76
|
+
arguments: ...;
|
|
77
|
+
requestIdField?: ...;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
action?: {
|
|
83
|
+
inputSchema?: {
|
|
84
|
+
[key: string]:
|
|
85
|
+
| string
|
|
86
|
+
| number
|
|
87
|
+
| boolean
|
|
88
|
+
| readonly string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | ... 4 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | ...[]
|
|
89
|
+
| {
|
|
90
|
+
[key: string]: string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | ... 4 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | ...;
|
|
91
|
+
}
|
|
92
|
+
| null;
|
|
93
|
+
};
|
|
94
|
+
outputSchema?: {
|
|
95
|
+
[key: string]:
|
|
96
|
+
| string
|
|
97
|
+
| number
|
|
98
|
+
| boolean
|
|
99
|
+
| readonly string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | ... 4 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | ...[]
|
|
100
|
+
| {
|
|
101
|
+
[key: string]: string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | ... 4 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | ...;
|
|
102
|
+
}
|
|
103
|
+
| null;
|
|
104
|
+
};
|
|
105
|
+
presentation?: | {
|
|
106
|
+
type: "action";
|
|
107
|
+
}
|
|
108
|
+
| {
|
|
109
|
+
type: "custom";
|
|
110
|
+
data: {
|
|
111
|
+
[key: string]:
|
|
112
|
+
| string
|
|
113
|
+
| number
|
|
114
|
+
| boolean
|
|
115
|
+
| readonly string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | ... 4 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | ...[]
|
|
116
|
+
| {
|
|
117
|
+
[key: string]: string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | number | boolean | readonly (string | ... 4 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | ...;
|
|
118
|
+
}
|
|
119
|
+
| null;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
| {
|
|
123
|
+
type: "choice";
|
|
124
|
+
options: readonly object[];
|
|
125
|
+
}
|
|
126
|
+
| {
|
|
127
|
+
type: "form";
|
|
128
|
+
submitLabel?: string;
|
|
129
|
+
}
|
|
130
|
+
| {
|
|
131
|
+
type: "confirmation";
|
|
132
|
+
message: string;
|
|
133
|
+
confirmLabel?: string;
|
|
134
|
+
cancelLabel?: string;
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
availability?: () => WhistleAvailability;
|
|
138
|
+
handler: (input) => unknown;
|
|
139
|
+
}>[];
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Shared workspace declarations. Window moves have direct Alt chords and leader
|
|
143
|
+
keys; global actions live behind the shell-owned leader.
|
|
144
|
+
|
|
145
|
+
#### Parameters
|
|
146
|
+
|
|
147
|
+
| Parameter | Type |
|
|
148
|
+
| --------- | ------------------------------- |
|
|
149
|
+
| `actions` | [`ShellActions`](#shellactions) |
|
|
150
|
+
|
|
151
|
+
#### Returns
|
|
152
|
+
|
|
153
|
+
readonly `Readonly`\<\{ `id`: `string`; `title`: `string`; `category`: `string`;
|
|
154
|
+
`description?`: `string`; `projections?`: \{ `bindings?`: \{ `order?`: `number`;
|
|
155
|
+
`values`: readonly `string`[]; \}; `agent?`: \{ `keybind?`: `string`; `order?`:
|
|
156
|
+
`number`; \}; `help?`: \{ `order?`: `number`; \}; `menu?`: \{ `order?`:
|
|
157
|
+
`number`; \}; `palette?`: \{ `order?`: `number`; \}; `slash?`: \{ `aliases`:
|
|
158
|
+
readonly `string`[]; `consumesDraft?`: `boolean`; `order?`: `number`;
|
|
159
|
+
`arguments?`: \{ `hint`: `string`; `words?`: readonly ...[]; `text?`: \{
|
|
160
|
+
`field`: ...; `arguments`: ...; `requestIdField?`: ...; \}; \}; \}; \};
|
|
161
|
+
`action?`: \{ `inputSchema?`: \{ \[`key`: `string`\]: \| `string` \| `number` \|
|
|
162
|
+
`boolean` \| readonly string \| number \| boolean \| readonly (string \| number
|
|
163
|
+
\| boolean \| readonly (string \| number \| boolean \| readonly (string \|
|
|
164
|
+
number \| boolean \| readonly (string \| number \| boolean \| readonly (string
|
|
165
|
+
\| number \| boolean \| readonly (string \| ... 4 more ... \| null)\[\] \| \{
|
|
166
|
+
...; \} \| null)\[\] \| \{ ...; \} \| null)\[\] \| \{ ...; \} \| ...[] \| \{
|
|
167
|
+
\[`key`: `string`\]: string \| number \| boolean \| readonly (string \| number
|
|
168
|
+
\| boolean \| readonly (string \| number \| boolean \| readonly (string \|
|
|
169
|
+
number \| boolean \| readonly (string \| number \| boolean \| readonly (string
|
|
170
|
+
\| number \| boolean \| readonly (string \| ... 4 more ... \| null)\[\] \| \{
|
|
171
|
+
...; \} \| null)\[\] \| \{ ...; \} \| null)\[\] \| \{ ...; \} \| ...; \} \|
|
|
172
|
+
`null`; \}; `outputSchema?`: \{ \[`key`: `string`\]: \| `string` \| `number` \|
|
|
173
|
+
`boolean` \| readonly string \| number \| boolean \| readonly (string \| number
|
|
174
|
+
\| boolean \| readonly (string \| number \| boolean \| readonly (string \|
|
|
175
|
+
number \| boolean \| readonly (string \| number \| boolean \| readonly (string
|
|
176
|
+
\| number \| boolean \| readonly (string \| ... 4 more ... \| null)\[\] \| \{
|
|
177
|
+
...; \} \| null)\[\] \| \{ ...; \} \| null)\[\] \| \{ ...; \} \| ...[] \| \{
|
|
178
|
+
\[`key`: `string`\]: string \| number \| boolean \| readonly (string \| number
|
|
179
|
+
\| boolean \| readonly (string \| number \| boolean \| readonly (string \|
|
|
180
|
+
number \| boolean \| readonly (string \| number \| boolean \| readonly (string
|
|
181
|
+
\| number \| boolean \| readonly (string \| ... 4 more ... \| null)\[\] \| \{
|
|
182
|
+
...; \} \| null)\[\] \| \{ ...; \} \| null)\[\] \| \{ ...; \} \| ...; \} \|
|
|
183
|
+
`null`; \}; `presentation?`: \| \{ `type`: `"action"`; \} \| \{ `type`:
|
|
184
|
+
`"custom"`; `data`: \{ \[`key`: `string`\]: \| `string` \| `number` \| `boolean`
|
|
185
|
+
\| readonly string \| number \| boolean \| readonly (string \| number \| boolean
|
|
186
|
+
\| readonly (string \| number \| boolean \| readonly (string \| number \|
|
|
187
|
+
boolean \| readonly (string \| number \| boolean \| readonly (string \| number
|
|
188
|
+
\| boolean \| readonly (string \| ... 4 more ... \| null)\[\] \| \{ ...; \} \|
|
|
189
|
+
null)\[\] \| \{ ...; \} \| null)\[\] \| \{ ...; \} \| ...[] \| \{ \[`key`:
|
|
190
|
+
`string`\]: string \| number \| boolean \| readonly (string \| number \| boolean
|
|
191
|
+
\| readonly (string \| number \| boolean \| readonly (string \| number \|
|
|
192
|
+
boolean \| readonly (string \| number \| boolean \| readonly (string \| number
|
|
193
|
+
\| boolean \| readonly (string \| ... 4 more ... \| null)\[\] \| \{ ...; \} \|
|
|
194
|
+
null)\[\] \| \{ ...; \} \| null)\[\] \| \{ ...; \} \| ...; \} \| `null`; \}; \}
|
|
195
|
+
\| \{ `type`: `"choice"`; `options`: readonly `object`[]; \} \| \{ `type`:
|
|
196
|
+
`"form"`; `submitLabel?`: `string`; \} \| \{ `type`: `"confirmation"`;
|
|
197
|
+
`message`: `string`; `confirmLabel?`: `string`; `cancelLabel?`: `string`; \};
|
|
198
|
+
\}; `availability?`: () => `WhistleAvailability`; `handler`: (`input`) =>
|
|
199
|
+
`unknown`; \}\>[]
|