@fungi.computer/nacre 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -2
  3. package/dist/app-directory.d.ts +600 -0
  4. package/dist/app-directory.js +323 -0
  5. package/dist/browser-actions.d.ts +7 -0
  6. package/dist/browser-actions.js +56 -0
  7. package/dist/command-host.d.ts +140 -0
  8. package/dist/command-host.js +532 -0
  9. package/dist/commands.d.ts +25 -0
  10. package/dist/commands.js +78 -0
  11. package/dist/index.d.ts +8 -0
  12. package/dist/index.js +9 -0
  13. package/dist/keys.d.ts +47 -0
  14. package/dist/keys.js +136 -0
  15. package/dist/shell-module.d.ts +98 -0
  16. package/dist/shell-module.js +90 -0
  17. package/dist/window-manager.d.ts +159 -0
  18. package/dist/window-manager.js +796 -0
  19. package/dist/workbench-contract.d.ts +70 -0
  20. package/dist/workbench-contract.js +1 -0
  21. package/dist/workbench-directory.d.ts +343 -0
  22. package/dist/workbench-directory.js +65 -0
  23. package/dist/workbench-host-types.d.ts +114 -0
  24. package/dist/workbench-host-types.js +1 -0
  25. package/dist/workbench-host.d.ts +34 -0
  26. package/dist/workbench-host.js +356 -0
  27. package/dist/workbench-model.d.ts +223 -0
  28. package/dist/workbench-model.js +93 -0
  29. package/dist/workbench.d.ts +4 -0
  30. package/dist/workbench.js +2 -0
  31. package/docs/api/README.md +21 -0
  32. package/docs/api/app-directory.md +587 -0
  33. package/docs/api/command-host.md +225 -0
  34. package/docs/api/commands.md +199 -0
  35. package/docs/api/index.md +1860 -0
  36. package/docs/api/keys.md +183 -0
  37. package/docs/api/shell-module.md +233 -0
  38. package/docs/api/window-manager.md +269 -0
  39. package/docs/api/workbench-directory.md +141 -0
  40. package/docs/api/workbench.md +201 -0
  41. 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`; \}\>[]