@immediately-run/sandbox-protocol 0.10.6 → 0.11.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/README.md CHANGED
@@ -31,7 +31,7 @@ dependency bump.
31
31
  | `@immediately-run/sandbox-protocol` | the format version + the snapshot types. **No constants** — importing the root must not be a way to reach the other side's vocabulary |
32
32
 
33
33
  **Two modules, not a union.** The sides speak overlapping but different subsets — 34
34
- wire names in the frame, 73 in the SDK, 18 shared. 55 are SDK-only because the frame
34
+ wire names in the frame, 76 in the SDK, 18 shared. 58 are SDK-only because the frame
35
35
  merely *relays* them and the host is the other end (the R3-274a cross-repo audit). Each
36
36
  repo's own gate asserts its module covers *exactly* its extracted wire surface, so a
37
37
  union module would fail there, far from its cause.
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@
12
12
  // repo's own gate compares against
13
13
  //
14
14
  // The two sides speak overlapping but DIFFERENT subsets — 34 wire names in the frame,
15
- // 73 in the SDK, 18 shared; 55 are SDK-only because the frame merely relays them and
15
+ // 76 in the SDK, 18 shared; 58 are SDK-only because the frame merely relays them and
16
16
  // the host is the other end. (These four counts are ASSERTED against the descriptors by
17
17
  // `test/protocol.test.ts` — they are shipped in `dist/index.d.ts`, so a reader downloads
18
18
  // them, and they had drifted to 57/39 because nothing checked.) Hence a module per side:
package/dist/sandbox.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // GENERATED by scripts/generate.mjs — DO NOT EDIT.
3
3
  // Source of truth: src/descriptors.protocol.mjs (@immediately-run/sandbox-protocol)
4
- // descriptorsHash: d52e2cd5b6c85b14
4
+ // descriptorsHash: d41a35cab20c69a8
5
5
  //
6
6
  // The sandbox↔SDK wire vocabulary (PLATFORM_LAYERING_SPEC §2 / S1). Import the
7
7
  // constants instead of writing the string: a rename then has ONE edit site and
package/dist/sdk.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Every wire name this side speaks, as a union. */
2
- export type WireName = 'api-catalog' | 'auth-state' | 'chrome-state' | 'compile' | 'debug-enabled' | 'debug-log' | 'debug-query' | 'debug-query-result' | 'diagnostics' | 'dnd-cancel' | 'dropped-item' | 'editor-context' | 'form-factor' | 'fs-change' | 'host-attention' | 'invitations' | 'launch-dismiss' | 'launch-ended' | 'llm-provider' | 'metadata-update' | 'mount-add' | 'mount-remove' | 'protocol-analytics' | 'protocol-contribute' | 'protocol-dnd' | 'protocol-editor' | 'protocol-feed' | 'protocol-fetch' | 'protocol-ipc' | 'protocol-launch' | 'protocol-llm' | 'protocol-localstore' | 'protocol-openlink' | 'protocol-openrepo' | 'protocol-recents' | 'protocol-secrets' | 'protocol-settings' | 'protocol-spaces' | 'protocol-task' | 'protocol-theme' | 'protocol-vcs' | 'region-message' | 'region-visibility' | 'request-api-catalog' | 'request-auth-state' | 'request-chrome-state' | 'request-debug-enabled' | 'request-diagnostics' | 'request-editor-context' | 'request-form-factor' | 'request-handshake' | 'request-host-attention' | 'request-invitations' | 'request-llm-provider' | 'request-mounts' | 'request-region-visibility' | 'request-secrets-metadata' | 'request-session-mounts' | 'request-theme' | 'request-theme-catalog' | 'request-vcs-state' | 'request-workspace' | 'sdk-handshake' | 'secrets-metadata' | 'session-mounts' | 'task-cancel' | 'task-complete' | 'task-input' | 'theme' | 'theme-catalog' | 'urlchange' | 'vcs-state' | 'workspace';
2
+ export type WireName = 'api-catalog' | 'auth-state' | 'chrome-state' | 'compile' | 'debug-enabled' | 'debug-log' | 'debug-query' | 'debug-query-result' | 'diagnostics' | 'dnd-cancel' | 'dropped-item' | 'editor-context' | 'form-factor' | 'fs-change' | 'host-attention' | 'invitations' | 'launch-dismiss' | 'launch-ended' | 'llm-provider' | 'metadata-update' | 'mount-add' | 'mount-remove' | 'protocol-analytics' | 'protocol-contribute' | 'protocol-dnd' | 'protocol-editor' | 'protocol-feed' | 'protocol-fetch' | 'protocol-ipc' | 'protocol-launch' | 'protocol-llm' | 'protocol-localstore' | 'protocol-openlink' | 'protocol-openrepo' | 'protocol-recents' | 'protocol-secrets' | 'protocol-settings' | 'protocol-spaces' | 'protocol-spaces-mode' | 'protocol-task' | 'protocol-theme' | 'protocol-vcs' | 'region-message' | 'region-visibility' | 'request-api-catalog' | 'request-auth-state' | 'request-chrome-state' | 'request-debug-enabled' | 'request-diagnostics' | 'request-editor-context' | 'request-form-factor' | 'request-handshake' | 'request-host-attention' | 'request-invitations' | 'request-llm-provider' | 'request-mounts' | 'request-region-visibility' | 'request-secrets-metadata' | 'request-session-mounts' | 'request-spaces-mode' | 'request-theme' | 'request-theme-catalog' | 'request-vcs-state' | 'request-workspace' | 'sdk-handshake' | 'secrets-metadata' | 'session-mounts' | 'spaces-mode' | 'task-cancel' | 'task-complete' | 'task-input' | 'theme' | 'theme-catalog' | 'urlchange' | 'vcs-state' | 'workspace';
3
3
  /** `api-catalog` — push · host->app. polled with `request-api-catalog`. */
4
4
  export declare const API_CATALOG = "api-catalog";
5
5
  /** Read off this message today: `methods`. */
@@ -85,7 +85,7 @@ export interface LaunchEndedPayload {
85
85
  }
86
86
  /** `llm-provider` — push · host->app. polled with `request-llm-provider`. */
87
87
  export declare const LLM_PROVIDER = "llm-provider";
88
- /** Read off this message today: `provider`. */
88
+ /** Read off this message today: `provider`, `ungranted`. */
89
89
  /** `metadata-update` — message · host->app. */
90
90
  export declare const METADATA_UPDATE = "metadata-update";
91
91
  /** `mount-add` — message · host->app. */
@@ -301,6 +301,8 @@ export interface ProtocolSpacesUnshareParams {
301
301
  spaceId: string;
302
302
  uid: string;
303
303
  }
304
+ /** `protocol-spaces-mode` — request · app->host. */
305
+ export declare const PROTOCOL_SPACES_MODE = "protocol-spaces-mode";
304
306
  /** `protocol-task` — request · app->host. */
305
307
  export declare const PROTOCOL_TASK = "protocol-task";
306
308
  /** Params of `protocol-task` method `invoke`. */
@@ -356,6 +358,8 @@ export declare const REQUEST_REGION_VISIBILITY = "request-region-visibility";
356
358
  export declare const REQUEST_SECRETS_METADATA = "request-secrets-metadata";
357
359
  /** `request-session-mounts` — poll · app->host. */
358
360
  export declare const REQUEST_SESSION_MOUNTS = "request-session-mounts";
361
+ /** `request-spaces-mode` — poll · app->host. */
362
+ export declare const REQUEST_SPACES_MODE = "request-spaces-mode";
359
363
  /** `request-theme` — poll · app->host. */
360
364
  export declare const REQUEST_THEME = "request-theme";
361
365
  /** `request-theme-catalog` — poll · app->host. */
@@ -377,6 +381,9 @@ export declare const SECRETS_METADATA = "secrets-metadata";
377
381
  /** `session-mounts` — push · host->app. polled with `request-session-mounts`. */
378
382
  export declare const SESSION_MOUNTS = "session-mounts";
379
383
  /** Read off this message today: `mounts`. */
384
+ /** `spaces-mode` — push · host->app. polled with `request-spaces-mode`. */
385
+ export declare const SPACES_MODE = "spaces-mode";
386
+ /** Read off this message today: `state`. */
380
387
  /** `task-cancel` — message · app->host. */
381
388
  export declare const TASK_CANCEL = "task-cancel";
382
389
  /** `task-complete` — message · app->host. */
@@ -444,6 +451,7 @@ export declare const WIRE_NAMES: {
444
451
  readonly PROTOCOL_SECRETS: "protocol-secrets";
445
452
  readonly PROTOCOL_SETTINGS: "protocol-settings";
446
453
  readonly PROTOCOL_SPACES: "protocol-spaces";
454
+ readonly PROTOCOL_SPACES_MODE: "protocol-spaces-mode";
447
455
  readonly PROTOCOL_TASK: "protocol-task";
448
456
  readonly PROTOCOL_THEME: "protocol-theme";
449
457
  readonly PROTOCOL_VCS: "protocol-vcs";
@@ -464,6 +472,7 @@ export declare const WIRE_NAMES: {
464
472
  readonly REQUEST_REGION_VISIBILITY: "request-region-visibility";
465
473
  readonly REQUEST_SECRETS_METADATA: "request-secrets-metadata";
466
474
  readonly REQUEST_SESSION_MOUNTS: "request-session-mounts";
475
+ readonly REQUEST_SPACES_MODE: "request-spaces-mode";
467
476
  readonly REQUEST_THEME: "request-theme";
468
477
  readonly REQUEST_THEME_CATALOG: "request-theme-catalog";
469
478
  readonly REQUEST_VCS_STATE: "request-vcs-state";
@@ -471,6 +480,7 @@ export declare const WIRE_NAMES: {
471
480
  readonly SDK_HANDSHAKE: "sdk-handshake";
472
481
  readonly SECRETS_METADATA: "secrets-metadata";
473
482
  readonly SESSION_MOUNTS: "session-mounts";
483
+ readonly SPACES_MODE: "spaces-mode";
474
484
  readonly TASK_CANCEL: "task-cancel";
475
485
  readonly TASK_COMPLETE: "task-complete";
476
486
  readonly TASK_INPUT: "task-input";
package/dist/sdk.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // GENERATED by scripts/generate.mjs — DO NOT EDIT.
3
3
  // Source of truth: src/descriptors.protocol.mjs (@immediately-run/sandbox-protocol)
4
- // descriptorsHash: d52e2cd5b6c85b14
4
+ // descriptorsHash: d41a35cab20c69a8
5
5
  //
6
6
  // The sandbox↔SDK wire vocabulary (PLATFORM_LAYERING_SPEC §2 / S1). Import the
7
7
  // constants instead of writing the string: a rename then has ONE edit site and
@@ -9,8 +9,8 @@
9
9
  // that has a declared shape; a name handled as `any` today gets its read field
10
10
  // list in the doc comment instead (R3-274e is where those grow real types).
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.REQUEST_FORM_FACTOR = exports.REQUEST_EDITOR_CONTEXT = exports.REQUEST_DIAGNOSTICS = exports.REQUEST_DEBUG_ENABLED = exports.REQUEST_CHROME_STATE = exports.REQUEST_AUTH_STATE = exports.REQUEST_API_CATALOG = exports.REGION_VISIBILITY = exports.REGION_MESSAGE = exports.PROTOCOL_VCS = exports.PROTOCOL_THEME = exports.PROTOCOL_TASK = exports.PROTOCOL_SPACES = exports.PROTOCOL_SETTINGS = exports.PROTOCOL_SECRETS = exports.PROTOCOL_RECENTS = exports.PROTOCOL_OPENREPO = exports.PROTOCOL_OPENLINK = exports.PROTOCOL_LOCALSTORE = exports.PROTOCOL_LLM = exports.PROTOCOL_LAUNCH = exports.PROTOCOL_IPC = exports.PROTOCOL_FETCH = exports.PROTOCOL_FEED = exports.PROTOCOL_EDITOR = exports.PROTOCOL_DND = exports.PROTOCOL_CONTRIBUTE = exports.PROTOCOL_ANALYTICS = exports.MOUNT_REMOVE = exports.MOUNT_ADD = exports.METADATA_UPDATE = exports.LLM_PROVIDER = exports.LAUNCH_ENDED = exports.LAUNCH_DISMISS = exports.INVITATIONS = exports.HOST_ATTENTION = exports.FS_CHANGE = exports.FORM_FACTOR = exports.EDITOR_CONTEXT = exports.DROPPED_ITEM = exports.DND_CANCEL = exports.DIAGNOSTICS = exports.DEBUG_QUERY_RESULT = exports.DEBUG_QUERY = exports.DEBUG_LOG = exports.DEBUG_ENABLED = exports.COMPILE = exports.CHROME_STATE = exports.AUTH_STATE = exports.API_CATALOG = void 0;
13
- exports.WIRE_NAMES = exports.WORKSPACE = exports.VCS_STATE = exports.URLCHANGE = exports.THEME_CATALOG = exports.THEME = exports.TASK_INPUT = exports.TASK_COMPLETE = exports.TASK_CANCEL = exports.SESSION_MOUNTS = exports.SECRETS_METADATA = exports.SDK_HANDSHAKE = exports.REQUEST_WORKSPACE = exports.REQUEST_VCS_STATE = exports.REQUEST_THEME_CATALOG = exports.REQUEST_THEME = exports.REQUEST_SESSION_MOUNTS = exports.REQUEST_SECRETS_METADATA = exports.REQUEST_REGION_VISIBILITY = exports.REQUEST_MOUNTS = exports.REQUEST_LLM_PROVIDER = exports.REQUEST_INVITATIONS = exports.REQUEST_HOST_ATTENTION = exports.REQUEST_HANDSHAKE = void 0;
12
+ exports.REQUEST_EDITOR_CONTEXT = exports.REQUEST_DIAGNOSTICS = exports.REQUEST_DEBUG_ENABLED = exports.REQUEST_CHROME_STATE = exports.REQUEST_AUTH_STATE = exports.REQUEST_API_CATALOG = exports.REGION_VISIBILITY = exports.REGION_MESSAGE = exports.PROTOCOL_VCS = exports.PROTOCOL_THEME = exports.PROTOCOL_TASK = exports.PROTOCOL_SPACES_MODE = exports.PROTOCOL_SPACES = exports.PROTOCOL_SETTINGS = exports.PROTOCOL_SECRETS = exports.PROTOCOL_RECENTS = exports.PROTOCOL_OPENREPO = exports.PROTOCOL_OPENLINK = exports.PROTOCOL_LOCALSTORE = exports.PROTOCOL_LLM = exports.PROTOCOL_LAUNCH = exports.PROTOCOL_IPC = exports.PROTOCOL_FETCH = exports.PROTOCOL_FEED = exports.PROTOCOL_EDITOR = exports.PROTOCOL_DND = exports.PROTOCOL_CONTRIBUTE = exports.PROTOCOL_ANALYTICS = exports.MOUNT_REMOVE = exports.MOUNT_ADD = exports.METADATA_UPDATE = exports.LLM_PROVIDER = exports.LAUNCH_ENDED = exports.LAUNCH_DISMISS = exports.INVITATIONS = exports.HOST_ATTENTION = exports.FS_CHANGE = exports.FORM_FACTOR = exports.EDITOR_CONTEXT = exports.DROPPED_ITEM = exports.DND_CANCEL = exports.DIAGNOSTICS = exports.DEBUG_QUERY_RESULT = exports.DEBUG_QUERY = exports.DEBUG_LOG = exports.DEBUG_ENABLED = exports.COMPILE = exports.CHROME_STATE = exports.AUTH_STATE = exports.API_CATALOG = void 0;
13
+ exports.WIRE_NAMES = exports.WORKSPACE = exports.VCS_STATE = exports.URLCHANGE = exports.THEME_CATALOG = exports.THEME = exports.TASK_INPUT = exports.TASK_COMPLETE = exports.TASK_CANCEL = exports.SPACES_MODE = exports.SESSION_MOUNTS = exports.SECRETS_METADATA = exports.SDK_HANDSHAKE = exports.REQUEST_WORKSPACE = exports.REQUEST_VCS_STATE = exports.REQUEST_THEME_CATALOG = exports.REQUEST_THEME = exports.REQUEST_SPACES_MODE = exports.REQUEST_SESSION_MOUNTS = exports.REQUEST_SECRETS_METADATA = exports.REQUEST_REGION_VISIBILITY = exports.REQUEST_MOUNTS = exports.REQUEST_LLM_PROVIDER = exports.REQUEST_INVITATIONS = exports.REQUEST_HOST_ATTENTION = exports.REQUEST_HANDSHAKE = exports.REQUEST_FORM_FACTOR = void 0;
14
14
  /** `api-catalog` — push · host->app. polled with `request-api-catalog`. */
15
15
  exports.API_CATALOG = 'api-catalog';
16
16
  /** Read off this message today: `methods`. */
@@ -59,7 +59,7 @@ exports.LAUNCH_DISMISS = 'launch-dismiss';
59
59
  exports.LAUNCH_ENDED = 'launch-ended';
60
60
  /** `llm-provider` — push · host->app. polled with `request-llm-provider`. */
61
61
  exports.LLM_PROVIDER = 'llm-provider';
62
- /** Read off this message today: `provider`. */
62
+ /** Read off this message today: `provider`, `ungranted`. */
63
63
  /** `metadata-update` — message · host->app. */
64
64
  exports.METADATA_UPDATE = 'metadata-update';
65
65
  /** `mount-add` — message · host->app. */
@@ -100,6 +100,8 @@ exports.PROTOCOL_SECRETS = 'protocol-secrets';
100
100
  exports.PROTOCOL_SETTINGS = 'protocol-settings';
101
101
  /** `protocol-spaces` — request · app->host. */
102
102
  exports.PROTOCOL_SPACES = 'protocol-spaces';
103
+ /** `protocol-spaces-mode` — request · app->host. */
104
+ exports.PROTOCOL_SPACES_MODE = 'protocol-spaces-mode';
103
105
  /** `protocol-task` — request · app->host. */
104
106
  exports.PROTOCOL_TASK = 'protocol-task';
105
107
  /** `protocol-theme` — request · app->host. */
@@ -141,6 +143,8 @@ exports.REQUEST_REGION_VISIBILITY = 'request-region-visibility';
141
143
  exports.REQUEST_SECRETS_METADATA = 'request-secrets-metadata';
142
144
  /** `request-session-mounts` — poll · app->host. */
143
145
  exports.REQUEST_SESSION_MOUNTS = 'request-session-mounts';
146
+ /** `request-spaces-mode` — poll · app->host. */
147
+ exports.REQUEST_SPACES_MODE = 'request-spaces-mode';
144
148
  /** `request-theme` — poll · app->host. */
145
149
  exports.REQUEST_THEME = 'request-theme';
146
150
  /** `request-theme-catalog` — poll · app->host. */
@@ -157,6 +161,9 @@ exports.SECRETS_METADATA = 'secrets-metadata';
157
161
  /** `session-mounts` — push · host->app. polled with `request-session-mounts`. */
158
162
  exports.SESSION_MOUNTS = 'session-mounts';
159
163
  /** Read off this message today: `mounts`. */
164
+ /** `spaces-mode` — push · host->app. polled with `request-spaces-mode`. */
165
+ exports.SPACES_MODE = 'spaces-mode';
166
+ /** Read off this message today: `state`. */
160
167
  /** `task-cancel` — message · app->host. */
161
168
  exports.TASK_CANCEL = 'task-cancel';
162
169
  /** `task-complete` — message · app->host. */
@@ -217,6 +224,7 @@ exports.WIRE_NAMES = {
217
224
  PROTOCOL_SECRETS: exports.PROTOCOL_SECRETS,
218
225
  PROTOCOL_SETTINGS: exports.PROTOCOL_SETTINGS,
219
226
  PROTOCOL_SPACES: exports.PROTOCOL_SPACES,
227
+ PROTOCOL_SPACES_MODE: exports.PROTOCOL_SPACES_MODE,
220
228
  PROTOCOL_TASK: exports.PROTOCOL_TASK,
221
229
  PROTOCOL_THEME: exports.PROTOCOL_THEME,
222
230
  PROTOCOL_VCS: exports.PROTOCOL_VCS,
@@ -237,6 +245,7 @@ exports.WIRE_NAMES = {
237
245
  REQUEST_REGION_VISIBILITY: exports.REQUEST_REGION_VISIBILITY,
238
246
  REQUEST_SECRETS_METADATA: exports.REQUEST_SECRETS_METADATA,
239
247
  REQUEST_SESSION_MOUNTS: exports.REQUEST_SESSION_MOUNTS,
248
+ REQUEST_SPACES_MODE: exports.REQUEST_SPACES_MODE,
240
249
  REQUEST_THEME: exports.REQUEST_THEME,
241
250
  REQUEST_THEME_CATALOG: exports.REQUEST_THEME_CATALOG,
242
251
  REQUEST_VCS_STATE: exports.REQUEST_VCS_STATE,
@@ -244,6 +253,7 @@ exports.WIRE_NAMES = {
244
253
  SDK_HANDSHAKE: exports.SDK_HANDSHAKE,
245
254
  SECRETS_METADATA: exports.SECRETS_METADATA,
246
255
  SESSION_MOUNTS: exports.SESSION_MOUNTS,
256
+ SPACES_MODE: exports.SPACES_MODE,
247
257
  TASK_CANCEL: exports.TASK_CANCEL,
248
258
  TASK_COMPLETE: exports.TASK_COMPLETE,
249
259
  TASK_INPUT: exports.TASK_INPUT,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@immediately-run/sandbox-protocol",
3
- "version": "0.10.6",
3
+ "version": "0.11.0",
4
4
  "description": "The sandbox<->SDK wire protocol: ONE descriptor set, projected into the wire-name constants, the payload types, and the per-side snapshots both repos gate against (PLATFORM_LAYERING_SPEC S1). Consumed by sandbox and immediately-run-sdk so a wire change is a version bump, not a hand-copied file.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -52,7 +52,7 @@
52
52
  "generate": "node scripts/generate.mjs",
53
53
  "build": "npm run generate && tsc -p tsconfig.build.json",
54
54
  "test": "jest",
55
- "lint": "eslint src test",
55
+ "lint": "eslint src test --max-warnings 0",
56
56
  "check:drift": "node scripts/verify-drift.mjs --self-test && node scripts/verify-drift.mjs",
57
57
  "check:dependency-free": "node scripts/check-dependency-free.mjs --self-test && node scripts/check-dependency-free.mjs",
58
58
  "check:publish-version": "node scripts/check-publish-version.mjs --self-test && node scripts/check-publish-version.mjs",
@@ -735,7 +735,8 @@
735
735
  "poll": "request-llm-provider",
736
736
  "payload": {
737
737
  "reads": [
738
- "provider"
738
+ "provider",
739
+ "ungranted"
739
740
  ]
740
741
  },
741
742
  "value": {
@@ -1842,6 +1843,112 @@
1842
1843
  "src/mounts.ts"
1843
1844
  ]
1844
1845
  },
1846
+ "protocol-spaces-mode": {
1847
+ "kind": "request",
1848
+ "direction": "app->host",
1849
+ "methods": {
1850
+ "navigate": {
1851
+ "payload": {
1852
+ "union": [
1853
+ {
1854
+ "fields": [
1855
+ {
1856
+ "name": "activity",
1857
+ "optional": false,
1858
+ "union": [
1859
+ {
1860
+ "type": "\"inbox\""
1861
+ },
1862
+ {
1863
+ "type": "\"people\""
1864
+ },
1865
+ {
1866
+ "type": "\"settings\""
1867
+ },
1868
+ {
1869
+ "type": "\"spaces\""
1870
+ }
1871
+ ]
1872
+ },
1873
+ {
1874
+ "name": "member",
1875
+ "optional": true,
1876
+ "union": [
1877
+ {
1878
+ "type": "string"
1879
+ },
1880
+ {
1881
+ "type": "undefined"
1882
+ }
1883
+ ]
1884
+ },
1885
+ {
1886
+ "name": "path",
1887
+ "optional": true,
1888
+ "union": [
1889
+ {
1890
+ "type": "string"
1891
+ },
1892
+ {
1893
+ "type": "undefined"
1894
+ }
1895
+ ]
1896
+ },
1897
+ {
1898
+ "name": "roomId",
1899
+ "optional": true,
1900
+ "union": [
1901
+ {
1902
+ "type": "string"
1903
+ },
1904
+ {
1905
+ "type": "undefined"
1906
+ }
1907
+ ]
1908
+ },
1909
+ {
1910
+ "name": "section",
1911
+ "optional": true,
1912
+ "union": [
1913
+ {
1914
+ "type": "string"
1915
+ },
1916
+ {
1917
+ "type": "undefined"
1918
+ }
1919
+ ]
1920
+ },
1921
+ {
1922
+ "name": "spaceId",
1923
+ "optional": false,
1924
+ "union": [
1925
+ {
1926
+ "type": "null"
1927
+ },
1928
+ {
1929
+ "type": "string"
1930
+ }
1931
+ ]
1932
+ }
1933
+ ]
1934
+ },
1935
+ {
1936
+ "fields": [
1937
+ {
1938
+ "name": "destination",
1939
+ "optional": false,
1940
+ "type": "\"notifications\""
1941
+ }
1942
+ ]
1943
+ }
1944
+ ]
1945
+ }
1946
+ }
1947
+ },
1948
+ "sites": [
1949
+ "src/spacesMode.ts"
1950
+ ]
1951
+ },
1845
1952
  "protocol-task": {
1846
1953
  "kind": "request",
1847
1954
  "direction": "app->host",
@@ -2170,6 +2277,16 @@
2170
2277
  "src/mounts.ts"
2171
2278
  ]
2172
2279
  },
2280
+ "request-spaces-mode": {
2281
+ "kind": "poll",
2282
+ "direction": "app->host",
2283
+ "payload": {
2284
+ "fields": []
2285
+ },
2286
+ "sites": [
2287
+ "src/spacesMode.ts"
2288
+ ]
2289
+ },
2173
2290
  "request-theme": {
2174
2291
  "kind": "poll",
2175
2292
  "direction": "app->host",
@@ -2367,6 +2484,41 @@
2367
2484
  "src/mounts.ts"
2368
2485
  ]
2369
2486
  },
2487
+ "spaces-mode": {
2488
+ "kind": "push",
2489
+ "direction": "host->app",
2490
+ "poll": "request-spaces-mode",
2491
+ "payload": {
2492
+ "reads": [
2493
+ "state"
2494
+ ]
2495
+ },
2496
+ "value": {
2497
+ "union": [
2498
+ {
2499
+ "fields": [
2500
+ {
2501
+ "name": "route",
2502
+ "optional": false,
2503
+ "type": "SpacesRoute"
2504
+ },
2505
+ {
2506
+ "name": "space",
2507
+ "optional": false,
2508
+ "type": "SpacesModeSpace | null"
2509
+ }
2510
+ ]
2511
+ },
2512
+ {
2513
+ "type": "null"
2514
+ }
2515
+ ],
2516
+ "type": "SpacesModeState | null"
2517
+ },
2518
+ "sites": [
2519
+ "src/spacesMode.ts"
2520
+ ]
2521
+ },
2370
2522
  "task-cancel": {
2371
2523
  "kind": "message",
2372
2524
  "direction": "app->host",
@@ -2624,6 +2776,7 @@
2624
2776
  "secrets",
2625
2777
  "settings",
2626
2778
  "spaces",
2779
+ "spaces-mode",
2627
2780
  "task",
2628
2781
  "theme",
2629
2782
  "vcs"