@immediately-run/sandbox-protocol 0.9.0 → 0.10.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,11 +31,16 @@ 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, 57 in the SDK, 18 shared. 39 are SDK-only because the frame
34
+ wire names in the frame, 71 in the SDK, 18 shared. 53 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.
38
38
 
39
+ *(Those four numbers are asserted against the descriptors by `test/protocol.test.ts`, in
40
+ this file and in `src/index.ts`. They had drifted — the SDK counts above were wrong —
41
+ because prose counts in a comment are believed by the next reader and checked by
42
+ nobody.)*
43
+
39
44
  ## Changing the wire
40
45
 
41
46
  Edit **`src/descriptors.protocol.mjs`** — never a generated file — then:
package/dist/index.js CHANGED
@@ -12,8 +12,11 @@
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
- // 57 in the SDK, 18 shared; 39 are SDK-only because the frame merely relays them and
16
- // the host is the other end. Hence a module per side: a union module would hand each
15
+ // 71 in the SDK, 18 shared; 53 are SDK-only because the frame merely relays them and
16
+ // the host is the other end. (These four counts are ASSERTED against the descriptors by
17
+ // `test/protocol.test.ts` — they are shipped in `dist/index.d.ts`, so a reader downloads
18
+ // them, and they had drifted to 57/39 because nothing checked.) Hence a module per side:
19
+ // a union module would hand each
17
20
  // repo constants it does not speak, and each repo's gate asserts its module covers
18
21
  // EXACTLY its own wire surface.
19
22
  //
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: 5150c9ae680eb1cc
4
+ // descriptorsHash: 1d323f9bbbe8f104
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-recents' | 'protocol-secrets' | 'protocol-settings' | 'protocol-spaces' | 'protocol-task' | 'protocol-theme' | 'protocol-vcs' | 'region-message' | '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-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-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';
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`. */
@@ -218,6 +218,14 @@ export interface ProtocolLlmChatParams {
218
218
  responseFormat?: "json" | "text" | undefined;
219
219
  tools?: Array<unknown> | undefined;
220
220
  }
221
+ /** `protocol-openrepo` — request · app->host. */
222
+ export declare const PROTOCOL_OPENREPO = "protocol-openrepo";
223
+ /** Params of `protocol-openrepo` method `open`. */
224
+ export interface ProtocolOpenrepoOpenParams {
225
+ namespace: string;
226
+ provider: string;
227
+ repository: string;
228
+ }
221
229
  /** `protocol-recents` — request · app->host. */
222
230
  export declare const PROTOCOL_RECENTS = "protocol-recents";
223
231
  /** Params of `protocol-recents` method `list`. */
@@ -286,6 +294,9 @@ export interface RegionMessagePayload {
286
294
  data: unknown;
287
295
  from: string;
288
296
  }
297
+ /** `region-visibility` — push · host->app. polled with `request-region-visibility`. */
298
+ export declare const REGION_VISIBILITY = "region-visibility";
299
+ /** Read off this message today: `hidden`. */
289
300
  /** `request-api-catalog` — poll · app->host. */
290
301
  export declare const REQUEST_API_CATALOG = "request-api-catalog";
291
302
  /** `request-auth-state` — poll · app->host. */
@@ -310,6 +321,8 @@ export declare const REQUEST_INVITATIONS = "request-invitations";
310
321
  export declare const REQUEST_LLM_PROVIDER = "request-llm-provider";
311
322
  /** `request-mounts` — message · app->host. */
312
323
  export declare const REQUEST_MOUNTS = "request-mounts";
324
+ /** `request-region-visibility` — poll · app->host. */
325
+ export declare const REQUEST_REGION_VISIBILITY = "request-region-visibility";
313
326
  /** `request-secrets-metadata` — poll · app->host. */
314
327
  export declare const REQUEST_SECRETS_METADATA = "request-secrets-metadata";
315
328
  /** `request-session-mounts` — poll · app->host. */
@@ -395,6 +408,7 @@ export declare const WIRE_NAMES: {
395
408
  readonly PROTOCOL_IPC: "protocol-ipc";
396
409
  readonly PROTOCOL_LAUNCH: "protocol-launch";
397
410
  readonly PROTOCOL_LLM: "protocol-llm";
411
+ readonly PROTOCOL_OPENREPO: "protocol-openrepo";
398
412
  readonly PROTOCOL_RECENTS: "protocol-recents";
399
413
  readonly PROTOCOL_SECRETS: "protocol-secrets";
400
414
  readonly PROTOCOL_SETTINGS: "protocol-settings";
@@ -403,6 +417,7 @@ export declare const WIRE_NAMES: {
403
417
  readonly PROTOCOL_THEME: "protocol-theme";
404
418
  readonly PROTOCOL_VCS: "protocol-vcs";
405
419
  readonly REGION_MESSAGE: "region-message";
420
+ readonly REGION_VISIBILITY: "region-visibility";
406
421
  readonly REQUEST_API_CATALOG: "request-api-catalog";
407
422
  readonly REQUEST_AUTH_STATE: "request-auth-state";
408
423
  readonly REQUEST_CHROME_STATE: "request-chrome-state";
@@ -415,6 +430,7 @@ export declare const WIRE_NAMES: {
415
430
  readonly REQUEST_INVITATIONS: "request-invitations";
416
431
  readonly REQUEST_LLM_PROVIDER: "request-llm-provider";
417
432
  readonly REQUEST_MOUNTS: "request-mounts";
433
+ readonly REQUEST_REGION_VISIBILITY: "request-region-visibility";
418
434
  readonly REQUEST_SECRETS_METADATA: "request-secrets-metadata";
419
435
  readonly REQUEST_SESSION_MOUNTS: "request-session-mounts";
420
436
  readonly REQUEST_THEME: "request-theme";
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: 5150c9ae680eb1cc
4
+ // descriptorsHash: 1d323f9bbbe8f104
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_LLM_PROVIDER = exports.REQUEST_INVITATIONS = exports.REQUEST_HOST_ATTENTION = exports.REQUEST_HANDSHAKE = 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_MESSAGE = exports.PROTOCOL_VCS = exports.PROTOCOL_THEME = exports.PROTOCOL_TASK = exports.PROTOCOL_SPACES = exports.PROTOCOL_SETTINGS = exports.PROTOCOL_SECRETS = exports.PROTOCOL_RECENTS = 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_MOUNTS = void 0;
12
+ exports.REQUEST_HOST_ATTENTION = exports.REQUEST_HANDSHAKE = 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_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 = 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`. */
@@ -86,6 +86,8 @@ exports.PROTOCOL_IPC = 'protocol-ipc';
86
86
  exports.PROTOCOL_LAUNCH = 'protocol-launch';
87
87
  /** `protocol-llm` — stream · app->host. */
88
88
  exports.PROTOCOL_LLM = 'protocol-llm';
89
+ /** `protocol-openrepo` — request · app->host. */
90
+ exports.PROTOCOL_OPENREPO = 'protocol-openrepo';
89
91
  /** `protocol-recents` — request · app->host. */
90
92
  exports.PROTOCOL_RECENTS = 'protocol-recents';
91
93
  /** `protocol-secrets` — request · app->host. */
@@ -102,6 +104,9 @@ exports.PROTOCOL_THEME = 'protocol-theme';
102
104
  exports.PROTOCOL_VCS = 'protocol-vcs';
103
105
  /** `region-message` — message · host->app. */
104
106
  exports.REGION_MESSAGE = 'region-message';
107
+ /** `region-visibility` — push · host->app. polled with `request-region-visibility`. */
108
+ exports.REGION_VISIBILITY = 'region-visibility';
109
+ /** Read off this message today: `hidden`. */
105
110
  /** `request-api-catalog` — poll · app->host. */
106
111
  exports.REQUEST_API_CATALOG = 'request-api-catalog';
107
112
  /** `request-auth-state` — poll · app->host. */
@@ -126,6 +131,8 @@ exports.REQUEST_INVITATIONS = 'request-invitations';
126
131
  exports.REQUEST_LLM_PROVIDER = 'request-llm-provider';
127
132
  /** `request-mounts` — message · app->host. */
128
133
  exports.REQUEST_MOUNTS = 'request-mounts';
134
+ /** `request-region-visibility` — poll · app->host. */
135
+ exports.REQUEST_REGION_VISIBILITY = 'request-region-visibility';
129
136
  /** `request-secrets-metadata` — poll · app->host. */
130
137
  exports.REQUEST_SECRETS_METADATA = 'request-secrets-metadata';
131
138
  /** `request-session-mounts` — poll · app->host. */
@@ -199,6 +206,7 @@ exports.WIRE_NAMES = {
199
206
  PROTOCOL_IPC: exports.PROTOCOL_IPC,
200
207
  PROTOCOL_LAUNCH: exports.PROTOCOL_LAUNCH,
201
208
  PROTOCOL_LLM: exports.PROTOCOL_LLM,
209
+ PROTOCOL_OPENREPO: exports.PROTOCOL_OPENREPO,
202
210
  PROTOCOL_RECENTS: exports.PROTOCOL_RECENTS,
203
211
  PROTOCOL_SECRETS: exports.PROTOCOL_SECRETS,
204
212
  PROTOCOL_SETTINGS: exports.PROTOCOL_SETTINGS,
@@ -207,6 +215,7 @@ exports.WIRE_NAMES = {
207
215
  PROTOCOL_THEME: exports.PROTOCOL_THEME,
208
216
  PROTOCOL_VCS: exports.PROTOCOL_VCS,
209
217
  REGION_MESSAGE: exports.REGION_MESSAGE,
218
+ REGION_VISIBILITY: exports.REGION_VISIBILITY,
210
219
  REQUEST_API_CATALOG: exports.REQUEST_API_CATALOG,
211
220
  REQUEST_AUTH_STATE: exports.REQUEST_AUTH_STATE,
212
221
  REQUEST_CHROME_STATE: exports.REQUEST_CHROME_STATE,
@@ -219,6 +228,7 @@ exports.WIRE_NAMES = {
219
228
  REQUEST_INVITATIONS: exports.REQUEST_INVITATIONS,
220
229
  REQUEST_LLM_PROVIDER: exports.REQUEST_LLM_PROVIDER,
221
230
  REQUEST_MOUNTS: exports.REQUEST_MOUNTS,
231
+ REQUEST_REGION_VISIBILITY: exports.REQUEST_REGION_VISIBILITY,
222
232
  REQUEST_SECRETS_METADATA: exports.REQUEST_SECRETS_METADATA,
223
233
  REQUEST_SESSION_MOUNTS: exports.REQUEST_SESSION_MOUNTS,
224
234
  REQUEST_THEME: exports.REQUEST_THEME,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@immediately-run/sandbox-protocol",
3
- "version": "0.9.0",
3
+ "version": "0.10.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": {
@@ -1476,6 +1476,36 @@
1476
1476
  "src/llm.ts"
1477
1477
  ]
1478
1478
  },
1479
+ "protocol-openrepo": {
1480
+ "kind": "request",
1481
+ "direction": "app->host",
1482
+ "methods": {
1483
+ "open": {
1484
+ "payload": {
1485
+ "fields": [
1486
+ {
1487
+ "name": "namespace",
1488
+ "optional": false,
1489
+ "type": "string"
1490
+ },
1491
+ {
1492
+ "name": "provider",
1493
+ "optional": false,
1494
+ "type": "string"
1495
+ },
1496
+ {
1497
+ "name": "repository",
1498
+ "optional": false,
1499
+ "type": "string"
1500
+ }
1501
+ ]
1502
+ }
1503
+ }
1504
+ },
1505
+ "sites": [
1506
+ "src/openRepository.ts"
1507
+ ]
1508
+ },
1479
1509
  "protocol-recents": {
1480
1510
  "kind": "request",
1481
1511
  "direction": "app->host",
@@ -1858,6 +1888,22 @@
1858
1888
  "src/ipc.ts"
1859
1889
  ]
1860
1890
  },
1891
+ "region-visibility": {
1892
+ "kind": "push",
1893
+ "direction": "host->app",
1894
+ "poll": "request-region-visibility",
1895
+ "payload": {
1896
+ "reads": [
1897
+ "hidden"
1898
+ ]
1899
+ },
1900
+ "value": {
1901
+ "type": "boolean"
1902
+ },
1903
+ "sites": [
1904
+ "src/region.ts"
1905
+ ]
1906
+ },
1861
1907
  "request-api-catalog": {
1862
1908
  "kind": "poll",
1863
1909
  "direction": "app->host",
@@ -1978,6 +2024,16 @@
1978
2024
  "src/mounts.ts"
1979
2025
  ]
1980
2026
  },
2027
+ "request-region-visibility": {
2028
+ "kind": "poll",
2029
+ "direction": "app->host",
2030
+ "payload": {
2031
+ "fields": []
2032
+ },
2033
+ "sites": [
2034
+ "src/region.ts"
2035
+ ]
2036
+ },
1981
2037
  "request-secrets-metadata": {
1982
2038
  "kind": "poll",
1983
2039
  "direction": "app->host",
@@ -2440,6 +2496,7 @@
2440
2496
  "ipc",
2441
2497
  "launch",
2442
2498
  "llm",
2499
+ "openrepo",
2443
2500
  "recents",
2444
2501
  "secrets",
2445
2502
  "settings",