@econ-v1/rpc 7.5.26 → 7.5.28

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.
@@ -0,0 +1,20 @@
1
+ export type Unsubscribe = import("./client.js").Unsubscribe;
2
+ export type ClientUpdateSnapshot = {
3
+ readonly running?: string;
4
+ readonly available?: string;
5
+ readonly state: "idle" | "updating" | "failed";
6
+ readonly error?: string;
7
+ readonly result?: {
8
+ readonly ok: boolean;
9
+ readonly message: string;
10
+ };
11
+ };
12
+ export type ClientUpdateHost = {
13
+ get(): ClientUpdateSnapshot;
14
+ subscribe(listener: (snapshot: ClientUpdateSnapshot) => void): Unsubscribe;
15
+ update(options?: {
16
+ readonly repair?: boolean;
17
+ }): Promise<void>;
18
+ refresh(): void;
19
+ };
20
+ //# sourceMappingURL=client-update-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-update-contract.d.ts","sourceRoot":"","sources":["../src/client-update-contract.js"],"names":[],"mappings":"0BAEc,OAAO,aAAa,EAAE,WAAW;mCA+BjC;IACb,QAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAY,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAChC,QAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACnD,QAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAY,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACrE;+BAUU;IACT,GAAG,IAAI,oBAAoB,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,GAAG,WAAW,CAAC;IAC3E,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,IAAI,IAAI,CAAA;CAChB"}
package/dist/index.d.ts CHANGED
@@ -136,6 +136,8 @@ export type PickerSearchOption = import("./model-picker-contract.js").PickerSear
136
136
  export type PickerStore = import("./model-picker-contract.js").PickerStore;
137
137
  export type RouteMode = import("./model-picker-contract.js").RouteMode;
138
138
  export type WebSearchChoice = import("./model-picker-contract.js").WebSearchChoice;
139
+ export type ClientUpdateHost = import("./client-update-contract.js").ClientUpdateHost;
140
+ export type ClientUpdateSnapshot = import("./client-update-contract.js").ClientUpdateSnapshot;
139
141
  export type ClientServicesRetryResult = import("./client-services-contract.js").ClientServicesRetryResult;
140
142
  export type FactoryResetPending = import("./factory-reset-contract.js").FactoryResetPending;
141
143
  export type FactoryResetStatus = import("./factory-reset-contract.js").FactoryResetStatus;
@@ -220,7 +222,7 @@ export { HOST_CONTEXT_MAX_BYTES, validateHostContextView } from "./host-context-
220
222
  export { L402_ENFORCEMENT_QUERY, L402_ENFORCEMENT_ROW_ID, L402_ENFORCEMENT_SET_COMMAND } from "./l402-enforcement-contract.js";
221
223
  export { isRouteMode, MODEL_PICKER_CATALOG_QUERY, MODEL_PICKER_CATALOG_ROW_ID, MODEL_PICKER_RECENTS_LIMIT, MODEL_PICKER_RECENTS_SETTING, MODEL_PICKER_REFRESH_COMMAND, MODEL_PICKER_REFRESH_QUERY, MODEL_PICKER_REFRESH_ROW_ID, MODEL_PICKER_STAGE_ID, parseModelPickerRefreshPayload, ROUTE_MODES, WEB_SEARCH_AUTO } from "./model-picker-contract.js";
222
224
  export { FACTORY_RESET_ARM_COMMAND, FACTORY_RESET_CANCEL_COMMAND, FACTORY_RESET_CHALLENGE_COMMAND, FACTORY_RESET_ROW_ID, FACTORY_RESET_STATUS_QUERY } from "./factory-reset-contract.js";
223
- export { CLIENT_DEVICE_PAIRING_STATUS_QUERY, CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED, CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED, CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE, CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE_PROTECTED, CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN } from "./pairing-status-contract.js";
225
+ export { CLIENT_DEVICE_PAIRING_STATUS_QUERY, CLIENT_DEVICE_WIRE_ERROR_DELEGATION_REVOKED, CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED, CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED, CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE, CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE_PROTECTED, CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN, CLIENT_DEVICE_WIRE_ERROR_REVOKED } from "./pairing-status-contract.js";
224
226
  export { DEVICE_CLEANUP_CANCEL_COMMAND, DEVICE_CLEANUP_QUERY, DEVICE_CLEANUP_REQUEST_COMMAND, DEVICE_CLEANUP_STATUS_COMMAND } from "./device-cleanup-contract.js";
225
227
  export { CONNECTIVITY_STATE_QUERY, TRANSPORT_STATE_QUERY, TRANSPORT_STATE_QUERY_V2 } from "./transport-contract.js";
226
228
  export { isStageReady, normalizeStageAvailability, STAGE_AVAILABILITY, STAGE_CATALOG_AVAILABILITY_OPT_IN, STAGE_CATALOG_ENVELOPE_OPT_IN, STAGE_CATALOG_META_QUERY, STAGE_REJECTED_QUERY } from "./stage-catalog-contract.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
@@ -25,6 +25,38 @@ export const CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED: "device_not_registe
25
25
  * @see CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN
26
26
  */
27
27
  export const CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED: "device_limit_exceeded";
28
+ /**
29
+ * The REQUESTING device's own DID-device binding is revoked (key-safety gaps Task 1,
30
+ * 2026-10-08-key-safety-gaps). Travels in the envelope's `code` (HTTP 403), same convention as
31
+ * `CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED` above — `error.message` stays the node's
32
+ * unchanged human sentence `"Client device is revoked"`. Emitted by
33
+ * `adapters/auth/src/authenticator.rs::refuse` (`ClientDeviceDelegationError::RevokedDevice`,
34
+ * every owner-gated request carrying a delegation) and `adapters/http/src/
35
+ * client_devices.rs::map_error` (`ClientDevicePairingError::Revoked` on
36
+ * `/client-devices/session`'s delegation-issuance path). `DeviceSessionClient#request`
37
+ * (`client/adapters-web/src/network/device-session-client.js`) lifts it off the structured
38
+ * `error.code` — NEVER off `error.message` text, which could coincidentally collide with an
39
+ * unrelated (e.g. target-device) refusal — and is the ONLY trigger for entering the revoked
40
+ * state (session dropped, delegation + connection-metadata cleared, key material KEPT; see
41
+ * `IndexedDbIdentityStore#markRevoked`). See `CLIENT_DEVICE_WIRE_ERROR_DELEGATION_REVOKED` for
42
+ * the sibling code. A node that predates this code and answers `/client-devices/session` with a
43
+ * bare, uncoded 403 is handled as an ordinary retryable transport failure (key-safety gaps
44
+ * follow-up, 2026-10-08): never terminal, never destructive, since the uncoded text alone
45
+ * cannot be told apart from an unrelated refusal that happens to use the same words.
46
+ */
47
+ export const CLIENT_DEVICE_WIRE_ERROR_REVOKED: "client_device_revoked";
48
+ /**
49
+ * Only the PRESENTED delegation credential is revoked; the requesting device's own binding is
50
+ * still active (key-safety gaps Task 1). Same wire shape as
51
+ * {@link CLIENT_DEVICE_WIRE_ERROR_REVOKED} (HTTP 403, `code` field, unchanged human message) —
52
+ * emitted ONLY by `adapters/auth/src/authenticator.rs::refuse`
53
+ * (`ClientDeviceDelegationError::Revoked`), never by `/client-devices/session` itself. A
54
+ * browser seeing this on any owner-gated request (`DeviceSessionClient#request`) drops the
55
+ * in-memory session and the stored delegation and lets the next attempt re-establish a session
56
+ * with the SAME device key — this is deliberately NOT terminal and never touches key material.
57
+ * @see CLIENT_DEVICE_WIRE_ERROR_REVOKED
58
+ */
59
+ export const CLIENT_DEVICE_WIRE_ERROR_DELEGATION_REVOKED: "client_device_delegation_revoked";
28
60
  /**
29
61
  * Kernel-owned view of the CURRENT pairing attempt this browser has in flight (design M4,
30
62
  * `docs/superpowers/plans/2026-08-11-pwa-trusted-devices.md`). Single-slot — there is never
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-status-contract.d.ts","sourceRoot":"","sources":["../src/pairing-status-contract.js"],"names":[],"mappings":"AACA,iDAAkD,iCAAiC,CAAC;AACpF;;;;;;;;GAQG;AACH,kDAAmD,YAAY,CAAC;AAChE,+CAA+C;AAC/C,mDAAoD,aAAa,CAAC;AAClE,+CAA+C;AAC/C,6DAA8D,uBAAuB,CAAC;AACtF,+CAA+C;AAC/C,6DAA8D,uBAAuB,CAAC;AACtF;;;;;;;;GAQG;AACH,6DAA8D,uBAAuB,CAAC;;;;;;;;;;;;;;;;;;2CAiBzE;IAAE,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAC,SAAS,GAAC,OAAO,GAAC,UAAU,GAAC,SAAS,GAAC,SAAS,GAAC,eAAe,GAAC,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE"}
1
+ {"version":3,"file":"pairing-status-contract.d.ts","sourceRoot":"","sources":["../src/pairing-status-contract.js"],"names":[],"mappings":"AACA,iDAAkD,iCAAiC,CAAC;AACpF;;;;;;;;GAQG;AACH,kDAAmD,YAAY,CAAC;AAChE,+CAA+C;AAC/C,mDAAoD,aAAa,CAAC;AAClE,+CAA+C;AAC/C,6DAA8D,uBAAuB,CAAC;AACtF,+CAA+C;AAC/C,6DAA8D,uBAAuB,CAAC;AACtF;;;;;;;;GAQG;AACH,6DAA8D,uBAAuB,CAAC;AACtF;;;;;;;;;;;;;;;;;;GAkBG;AACH,+CAAgD,uBAAuB,CAAC;AACxE;;;;;;;;;;GAUG;AACH,0DAA2D,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;2CAiBjF;IAAE,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAC,SAAS,GAAC,OAAO,GAAC,UAAU,GAAC,SAAS,GAAC,SAAS,GAAC,eAAe,GAAC,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE"}
@@ -5,6 +5,7 @@ export type EventSubscribeOptions = import("./client.js").EventSubscribeOptions;
5
5
  export type EventSubscription = import("./client.js").EventSubscription;
6
6
  export type DialogCenter = import("./dialog-contract.js").DialogCenter;
7
7
  export type ModelPickerCenter = import("./model-picker-contract.js").ModelPickerCenter;
8
+ export type ClientUpdateHost = import("./client-update-contract.js").ClientUpdateHost;
8
9
  export type SystemNoticeCenter = import("./system-notice-contract.js").SystemNoticeCenter;
9
10
  export type JsonValue = import("@econ-v1/domain").JsonValue;
10
11
  export type StageComposition = {
@@ -121,6 +122,7 @@ export type StageHostShared = {
121
122
  };
122
123
  readonly diagnostics?: StageDiagnosticsHost;
123
124
  readonly panel?: AssistantPanelHost;
125
+ readonly clientUpdate?: ClientUpdateHost;
124
126
  };
125
127
  export type StageContextV1 = StageContextShared & {
126
128
  readonly host: StageHostShared & {
@@ -1 +1 @@
1
- {"version":3,"file":"stage-context.d.ts","sourceRoot":"","sources":["../src/stage-context.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stage-context.d.ts","sourceRoot":"","sources":["../src/stage-context.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@econ-v1/rpc",
3
- "version": "7.5.26",
3
+ "version": "7.5.28",
4
4
  "description": "Typed runtime and contracts for Node client stage-to-kernel RPC",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "author": "Node contributors",
@@ -56,7 +56,7 @@
56
56
  "access": "public"
57
57
  },
58
58
  "dependencies": {
59
- "@econ-v1/domain": "7.5.26",
60
- "@econ-v1/ports": "7.5.26"
59
+ "@econ-v1/domain": "7.5.28",
60
+ "@econ-v1/ports": "7.5.28"
61
61
  }
62
62
  }
@@ -0,0 +1,57 @@
1
+ // @ts-check
2
+
3
+ /** @typedef {import("./client.js").Unsubscribe} Unsubscribe */
4
+
5
+ /**
6
+ * `ctx.host.clientUpdate` — the one door a stage has onto the shared client-app (PWA bundle)
7
+ * update/repair flow, granted only to the OTA stage host (ADR-114;
8
+ * `CLIENT_UPDATE_HOST_APPS` in `stage-loader.js`).
9
+ *
10
+ * Before this contract only the bottom-right system-update panel and Profile could drive a
11
+ * client-app update (`system-update-panel.js` -> `currentShellCacheReset().update(repair)` ->
12
+ * `browser-shell-update.js`); a `node` package upgrade that replaced the PWA bundle under OTA's
13
+ * own feet just read "Update complete" there, with no way for OTA to see the update was
14
+ * available or start it. This contract gives OTA exactly the same seam the panel and Profile
15
+ * already use, shared through ONE controller
16
+ * (`client/ui/src/shell/client-update-controller.js`) so an update started from any surface —
17
+ * OTA's own "Update app"/"Repair" actions, or the panel's — shows the same state everywhere.
18
+ *
19
+ * `running`/`available` retain the panel's own "keep the last complete pair" rule: a failed
20
+ * read of either half is UNKNOWN, never evidence that a known update vanished, so both are
21
+ * absent until a complete pair has been read at least once, and a later incomplete read never
22
+ * overwrites a complete pair already held. `state` is `"updating"` for the lifetime of a
23
+ * single-flight `update()` call — from any caller — and `"failed"` once that call's attempt
24
+ * ends in an error without the document having reloaded; a call that merely requested
25
+ * navigation (the normal success path) returns to `"idle"`, matching the existing Profile/panel
26
+ * behaviour, since the reload itself ends the session rather than resolving it.
27
+ *
28
+ * `result` is the one-shot post-reload receipt (`readShellUpdateResultOnce()`,
29
+ * `shell-cache-reset.js`): present once, on the page load that confirms (or fails to confirm) a
30
+ * reload a PRIOR page requested, then gone for the rest of the session — nothing re-derives it.
31
+ *
32
+ * Plan: `docs/superpowers/plans/2026-10-08-ota-stage-client-update.md`.
33
+ */
34
+ /** @typedef {{
35
+ * readonly running?: string,
36
+ * readonly available?: string,
37
+ * readonly state: "idle" | "updating" | "failed",
38
+ * readonly error?: string,
39
+ * readonly result?: { readonly ok: boolean, readonly message: string }
40
+ * }} ClientUpdateSnapshot */
41
+
42
+ /**
43
+ * `update` is single-flight: a call made while one is already in progress — from this stage, the
44
+ * panel's own button, or any other caller of the shared controller — joins the SAME attempt
45
+ * rather than starting a second one, so two surfaces racing a reload cannot race each other.
46
+ * `refresh()` invalidates `node.about.v1` (the query the shell's own version comparison reads),
47
+ * so a transaction this stage just completed can recheck the client-app pair without waiting for
48
+ * the node's own next push.
49
+ */
50
+ /** @typedef {{
51
+ * get(): ClientUpdateSnapshot,
52
+ * subscribe(listener: (snapshot: ClientUpdateSnapshot) => void): Unsubscribe,
53
+ * update(options?: { readonly repair?: boolean }): Promise<void>,
54
+ * refresh(): void
55
+ * }} ClientUpdateHost */
56
+
57
+ export {};
package/src/index.js CHANGED
@@ -129,6 +129,8 @@
129
129
  /** @typedef {import("./model-picker-contract.js").PickerStore} PickerStore */
130
130
  /** @typedef {import("./model-picker-contract.js").RouteMode} RouteMode */
131
131
  /** @typedef {import("./model-picker-contract.js").WebSearchChoice} WebSearchChoice */
132
+ /** @typedef {import("./client-update-contract.js").ClientUpdateHost} ClientUpdateHost */
133
+ /** @typedef {import("./client-update-contract.js").ClientUpdateSnapshot} ClientUpdateSnapshot */
132
134
  /** @typedef {import("./client-services-contract.js").ClientServicesRetryResult} ClientServicesRetryResult */
133
135
  /** @typedef {import("./factory-reset-contract.js").FactoryResetPending} FactoryResetPending */
134
136
  /** @typedef {import("./factory-reset-contract.js").FactoryResetStatus} FactoryResetStatus */
@@ -228,11 +230,13 @@ export { DEVICE_BOOT_STATE_QUERY } from "./device-boot-contract.js";
228
230
  export { CLIENT_DEVICE_PENDING_QUERY } from "./client-device-pending-contract.js";
229
231
  export {
230
232
  CLIENT_DEVICE_PAIRING_STATUS_QUERY,
233
+ CLIENT_DEVICE_WIRE_ERROR_DELEGATION_REVOKED,
231
234
  CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED,
232
235
  CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED,
233
236
  CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE,
234
237
  CLIENT_DEVICE_WIRE_ERROR_LAST_DEVICE_PROTECTED,
235
238
  CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN,
239
+ CLIENT_DEVICE_WIRE_ERROR_REVOKED,
236
240
  } from "./pairing-status-contract.js";
237
241
  export {
238
242
  DEVICE_CLEANUP_CANCEL_COMMAND,
@@ -26,6 +26,38 @@ export const CLIENT_DEVICE_WIRE_ERROR_DEVICE_NOT_REGISTERED = "device_not_regist
26
26
  * @see CLIENT_DEVICE_WIRE_ERROR_NAME_TAKEN
27
27
  */
28
28
  export const CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED = "device_limit_exceeded";
29
+ /**
30
+ * The REQUESTING device's own DID-device binding is revoked (key-safety gaps Task 1,
31
+ * 2026-10-08-key-safety-gaps). Travels in the envelope's `code` (HTTP 403), same convention as
32
+ * `CLIENT_DEVICE_WIRE_ERROR_DEVICE_LIMIT_EXCEEDED` above — `error.message` stays the node's
33
+ * unchanged human sentence `"Client device is revoked"`. Emitted by
34
+ * `adapters/auth/src/authenticator.rs::refuse` (`ClientDeviceDelegationError::RevokedDevice`,
35
+ * every owner-gated request carrying a delegation) and `adapters/http/src/
36
+ * client_devices.rs::map_error` (`ClientDevicePairingError::Revoked` on
37
+ * `/client-devices/session`'s delegation-issuance path). `DeviceSessionClient#request`
38
+ * (`client/adapters-web/src/network/device-session-client.js`) lifts it off the structured
39
+ * `error.code` — NEVER off `error.message` text, which could coincidentally collide with an
40
+ * unrelated (e.g. target-device) refusal — and is the ONLY trigger for entering the revoked
41
+ * state (session dropped, delegation + connection-metadata cleared, key material KEPT; see
42
+ * `IndexedDbIdentityStore#markRevoked`). See `CLIENT_DEVICE_WIRE_ERROR_DELEGATION_REVOKED` for
43
+ * the sibling code. A node that predates this code and answers `/client-devices/session` with a
44
+ * bare, uncoded 403 is handled as an ordinary retryable transport failure (key-safety gaps
45
+ * follow-up, 2026-10-08): never terminal, never destructive, since the uncoded text alone
46
+ * cannot be told apart from an unrelated refusal that happens to use the same words.
47
+ */
48
+ export const CLIENT_DEVICE_WIRE_ERROR_REVOKED = "client_device_revoked";
49
+ /**
50
+ * Only the PRESENTED delegation credential is revoked; the requesting device's own binding is
51
+ * still active (key-safety gaps Task 1). Same wire shape as
52
+ * {@link CLIENT_DEVICE_WIRE_ERROR_REVOKED} (HTTP 403, `code` field, unchanged human message) —
53
+ * emitted ONLY by `adapters/auth/src/authenticator.rs::refuse`
54
+ * (`ClientDeviceDelegationError::Revoked`), never by `/client-devices/session` itself. A
55
+ * browser seeing this on any owner-gated request (`DeviceSessionClient#request`) drops the
56
+ * in-memory session and the stored delegation and lets the next attempt re-establish a session
57
+ * with the SAME device key — this is deliberately NOT terminal and never touches key material.
58
+ * @see CLIENT_DEVICE_WIRE_ERROR_REVOKED
59
+ */
60
+ export const CLIENT_DEVICE_WIRE_ERROR_DELEGATION_REVOKED = "client_device_delegation_revoked";
29
61
  /**
30
62
  * Kernel-owned view of the CURRENT pairing attempt this browser has in flight (design M4,
31
63
  * `docs/superpowers/plans/2026-08-11-pwa-trusted-devices.md`). Single-slot — there is never
@@ -7,6 +7,7 @@
7
7
  /** @typedef {import("./client.js").EventSubscription} EventSubscription */
8
8
  /** @typedef {import("./dialog-contract.js").DialogCenter} DialogCenter */
9
9
  /** @typedef {import("./model-picker-contract.js").ModelPickerCenter} ModelPickerCenter */
10
+ /** @typedef {import("./client-update-contract.js").ClientUpdateHost} ClientUpdateHost */
10
11
  /** @typedef {import("./system-notice-contract.js").SystemNoticeCenter} SystemNoticeCenter */
11
12
  /** @typedef {import("@econ-v1/domain").JsonValue} JsonValue */
12
13
  /** @typedef {{ getInput(): JsonValue, subscribeInput(listener: (input: JsonValue) => void): Unsubscribe, emit(event: JsonValue): Promise<void> }} StageComposition */
@@ -35,7 +36,7 @@
35
36
  /** @typedef {{status:"excluded"|"collecting"|"ready"|"partial"|"unavailable",snapshot:unknown}} AgentPageContextResult */
36
37
  /** @typedef {{readonly tabId:string,prepareTurn(conversationId:string):Promise<void>,executeAuthorized(name:string,args:Record<string,unknown>,target:{nodeId:string,pageId:string,navigationRevision:number},verify:()=>Promise<void>):Promise<unknown>,setConversation(selection:{conversationId:string,allowed:boolean,active:boolean}):void,subscribe(listener:(result:AgentPageContextResult)=>void):Unsubscribe,captureForSend():Promise<AgentPageContextResult>,readTarget():Promise<{nodeId:string,pageId:string,navigationRevision:number}|null>}} AgentPageContextHost */
37
38
  /** @typedef {{read():unknown,activate(provider:()=>unknown):Unsubscribe,current(view:"stage"|"widget"):unknown,register(view:"stage"|"widget",provider:()=>unknown,releaseDraft?:(current:unknown,accepted:unknown)=>unknown):Unsubscribe,transfer(from:"stage"|"widget",to:"stage"|"widget"):boolean,cancelTransfersFrom?(from:"stage"|"widget"):void,pending(view:"stage"|"widget"):{id:number,state:unknown}|null,subscribe(view:"stage"|"widget",listener:()=>void):Unsubscribe,acknowledge(view:"stage"|"widget",id:number):boolean}} AgentViewWorkspace */
38
- /** @typedef {{ readonly assistantWorkspace?: AgentViewWorkspace, readonly pageContext?: AgentPageContextHost, navigate(path: string): void, readonly root: Element, readonly context: { set(view: object): void, clear(): void }, readonly diagnostics?: StageDiagnosticsHost, readonly panel?: AssistantPanelHost }} StageHostShared */
39
+ /** @typedef {{ readonly assistantWorkspace?: AgentViewWorkspace, readonly pageContext?: AgentPageContextHost, navigate(path: string): void, readonly root: Element, readonly context: { set(view: object): void, clear(): void }, readonly diagnostics?: StageDiagnosticsHost, readonly panel?: AssistantPanelHost, readonly clientUpdate?: ClientUpdateHost }} StageHostShared */
39
40
  /** @typedef {StageContextShared & { readonly host: StageHostShared & { readonly uiApi: 1 } }} StageContextV1 */
40
41
  /** @typedef {StageContextShared & { readonly host: StageHostShared & { readonly dialogs: DialogCenter, readonly modelPicker: ModelPickerCenter, readonly systemNotices: SystemNoticeCenter, readonly uiApi: 2 } }} StageContextV2 */
41
42
  /** @typedef {StageContextV1 | StageContextV2} StageContext */