@econ-v1/rpc 7.2.10 → 7.3.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/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/describe-client-error.d.ts.map +1 -1
- package/dist/grants-contract.d.ts +7 -0
- package/dist/grants-contract.d.ts.map +1 -0
- package/dist/host-context-contract.d.ts +26 -0
- package/dist/host-context-contract.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/message-port-client.d.ts +4 -0
- package/dist/message-port-client.d.ts.map +1 -1
- package/dist/protocol.d.ts +24 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/stage-context.d.ts +14 -0
- package/dist/stage-context.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/client.js +2 -0
- package/src/describe-client-error.js +28 -1
- package/src/grants-contract.js +8 -0
- package/src/host-context-contract.js +60 -0
- package/src/index.js +6 -0
- package/src/message-port-client.js +49 -0
- package/src/protocol.js +21 -0
- package/src/stage-context.js +3 -1
package/dist/client.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export type LiveQueryFailure = {
|
|
|
37
37
|
export type KernelRpcClient = {
|
|
38
38
|
command<T>(name: string, payload: unknown): Promise<T>;
|
|
39
39
|
liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void, onError?: (error: LiveQueryFailure) => void): Unsubscribe;
|
|
40
|
+
onUiRequest(handler: (name: string, payload: import("@econ-v1/domain").JsonValue) => Promise<import("@econ-v1/domain").JsonValue>): Unsubscribe;
|
|
40
41
|
openStageSession(appName: string, manifestSha256: string, surfaceId?: string): Promise<StageRpcSession>;
|
|
41
42
|
prepareStage(appName: string): Promise<PreparedStage>;
|
|
42
43
|
publish<T extends KernelEventType>(type: T, payload: import("@econ-v1/domain").KernelEventPayload<T>): Promise<void>;
|
|
@@ -45,6 +46,7 @@ export type KernelRpcClient = {
|
|
|
45
46
|
};
|
|
46
47
|
export type StageRpcSession = {
|
|
47
48
|
close(): void;
|
|
49
|
+
command<T>(name: string, payload: unknown): Promise<T>;
|
|
48
50
|
invokeCapability<T>(capability: string, payload: unknown): Promise<T>;
|
|
49
51
|
liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void, onError?: (error: LiveQueryFailure) => void): Unsubscribe;
|
|
50
52
|
publish<T extends KernelEventType>(type: T, payload: import("@econ-v1/domain").KernelEventPayload<T>): Promise<void>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.js"],"names":[],"mappings":"0BAEc,OAAO,iBAAiB,EAAE,WAAW;8BACrC,OAAO,iBAAiB,EAAE,eAAe;wBACzC,OAAO,iBAAiB,EAAE,SAAS;0BACnC,MAAM,IAAI;;;;;;;;;;;;;;;;;;4BAiBX;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;;;;;;+BAMnJ;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;8BAE3B;IACT,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,WAAW,CAAC;IAC3K,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACxG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrH,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAAA;CACtI;8BACU;IACT,KAAK,IAAI,IAAI,CAAC;IACd,gBAAgB,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,WAAW,CAAC;IAC3K,OAAO,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrH,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,WAAW,CAAA;CACtI"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe-client-error.d.ts","sourceRoot":"","sources":["../src/describe-client-error.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"describe-client-error.d.ts","sourceRoot":"","sources":["../src/describe-client-error.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;GAUG;AACH,2CAHW,OAAO,GACL,oBAAoB,CAmChC;mCA5Fa;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one grant the shell can record today: page inspection (console, network, page structure
|
|
3
|
+
* and owner-approved scripts). The kernel's grant policy and the shell's consent dialog and
|
|
4
|
+
* settings page all name it through this constant so the id cannot drift between them.
|
|
5
|
+
*/
|
|
6
|
+
export const DEVTOOLS_GRANT: "devtools.inspect";
|
|
7
|
+
//# sourceMappingURL=grants-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants-contract.d.ts","sourceRoot":"","sources":["../src/grants-contract.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,6BAA8B,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one rule set for a stage-reported view. The shell checks it before reporting and the
|
|
3
|
+
* kernel checks it again on receipt, so neither trusts the other's copy. Returns a detached
|
|
4
|
+
* JSON copy on success (caller getters are read once) or the reason it was rejected.
|
|
5
|
+
* @param {unknown} value @returns {string | HostContextView}
|
|
6
|
+
*/
|
|
7
|
+
export function validateHostContextView(value: unknown): string | HostContextView;
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {{ type: string, id: string, label?: string }} HostContextRef
|
|
10
|
+
* @typedef {{ screen: string, entity?: HostContextRef, selection?: HostContextRef[], summary?: string, facts?: Record<string, string | number | boolean | null> }} HostContextView
|
|
11
|
+
*/
|
|
12
|
+
/** Serialized size limit of one `ctx.host.context.set` view (spec §4.5.2). */
|
|
13
|
+
export const HOST_CONTEXT_MAX_BYTES: 4096;
|
|
14
|
+
export type HostContextRef = {
|
|
15
|
+
type: string;
|
|
16
|
+
id: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
};
|
|
19
|
+
export type HostContextView = {
|
|
20
|
+
screen: string;
|
|
21
|
+
entity?: HostContextRef;
|
|
22
|
+
selection?: HostContextRef[];
|
|
23
|
+
summary?: string;
|
|
24
|
+
facts?: Record<string, string | number | boolean | null>;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=host-context-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-context-contract.d.ts","sourceRoot":"","sources":["../src/host-context-contract.js"],"names":[],"mappings":"AA8BA;;;;;GAKG;AACH,+CAFW,OAAO,GAAkB,MAAM,GAAG,eAAe,CAyB3D;AAzDD;;;GAGG;AAEH,8EAA8E;AAC9E,qCAAsC,IAAI,CAAC;6BAL9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;8BAC5C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAA;CAAE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { CLIENT_SERVICES_RETRY_COMMAND } from "./client-services-contract.js";
|
|
2
|
+
export { DEVTOOLS_GRANT } from "./grants-contract.js";
|
|
2
3
|
export { DEVICE_BOOT_STATE_QUERY } from "./device-boot-contract.js";
|
|
3
4
|
export { CLIENT_DEVICE_PENDING_QUERY } from "./client-device-pending-contract.js";
|
|
4
5
|
export { SYNC_CURSORS_QUERY } from "./sync-cursors-contract.js";
|
|
@@ -191,11 +192,16 @@ export type RpcTransportState = import("./transport.js").RpcTransportState;
|
|
|
191
192
|
export type ChildState = import("./child-state-contract.js").ChildState;
|
|
192
193
|
export type ChildStateCopy = import("./child-state-contract.js").ChildStateCopy;
|
|
193
194
|
export type ChildAction = import("./child-state-contract.js").ChildAction;
|
|
195
|
+
export type DevtoolsScriptContext = import("@econ-v1/ports").DevtoolsScriptContext;
|
|
196
|
+
export type DevtoolsScriptHostPort = import("@econ-v1/ports").DevtoolsScriptHostPort;
|
|
197
|
+
export type HostContextRef = import("./host-context-contract.js").HostContextRef;
|
|
198
|
+
export type HostContextView = import("./host-context-contract.js").HostContextView;
|
|
194
199
|
export { DOMAIN_ERROR_CODES, DomainError, SYNC_ERROR_CODES, SyncError, TRANSPORT_ERROR_CODES, TransportError } from "@econ-v1/domain";
|
|
195
200
|
export { deserializeClientError, isJsonValue, isSerializableClientError, serializeClientError } from "./errors.js";
|
|
196
201
|
export { DEFAULT_REQUEST_TIMEOUT_MS, KernelRpcTimeoutError, MessagePortKernelRpcClient } from "./message-port-client.js";
|
|
197
202
|
export { NODE_APP_LIFECYCLE_COMMAND, NODE_APP_MEMORY_CAPTURE_COMMAND, NODE_APP_MEMORY_DETAIL_QUERY, NODE_APP_MEMORY_DOWNLOAD_COMMAND, NODE_APP_MEMORY_LIST_QUERY, NODE_APP_MEMORY_OVERVIEW_QUERY, NODE_APP_MEMORY_STATUS_COMMAND } from "./node-app-memory-contract.js";
|
|
198
203
|
export { APPS_LIFECYCLE_PIN_COMMAND, APPS_LIFECYCLE_QUERY } from "./apps-lifecycle-contract.js";
|
|
204
|
+
export { HOST_CONTEXT_MAX_BYTES, validateHostContextView } from "./host-context-contract.js";
|
|
199
205
|
export { L402_ENFORCEMENT_QUERY, L402_ENFORCEMENT_ROW_ID, L402_ENFORCEMENT_SET_COMMAND } from "./l402-enforcement-contract.js";
|
|
200
206
|
export { isRouteMode, MODEL_PICKER_CATALOG_QUERY, MODEL_PICKER_CATALOG_ROW_ID, MODEL_PICKER_RECENTS_LIMIT, MODEL_PICKER_RECENTS_SETTING, MODEL_PICKER_STAGE_ID, ROUTE_MODES, WEB_SEARCH_AUTO } from "./model-picker-contract.js";
|
|
201
207
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"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"}
|
|
@@ -86,6 +86,10 @@ export class MessagePortKernelRpcClient implements KernelRpcClient {
|
|
|
86
86
|
* @returns {Promise<T>}
|
|
87
87
|
*/
|
|
88
88
|
invokeStageCapability<T>(sessionId: string, capability: string, payload: unknown): Promise<T>;
|
|
89
|
+
/** @template T @param {string} sessionId @param {string} name @param {unknown} payload @returns {Promise<T>} */
|
|
90
|
+
commandStage<T>(sessionId: string, name: string, payload: unknown): Promise<T>;
|
|
91
|
+
/** @param {(name: string, payload: JsonValue) => Promise<JsonValue>} handler @returns {Unsubscribe} */
|
|
92
|
+
onUiRequest(handler: (name: string, payload: JsonValue) => Promise<JsonValue>): Unsubscribe;
|
|
89
93
|
/**
|
|
90
94
|
* @template T
|
|
91
95
|
* @param {string} sessionId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-port-client.d.ts","sourceRoot":"","sources":["../src/message-port-client.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message-port-client.d.ts","sourceRoot":"","sources":["../src/message-port-client.js"],"names":[],"mappings":"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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -66,6 +66,24 @@ export type RpcRequest = {
|
|
|
66
66
|
readonly name: string;
|
|
67
67
|
readonly payload: JsonValue;
|
|
68
68
|
readonly type: "command";
|
|
69
|
+
} | {
|
|
70
|
+
readonly id: string;
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly payload: JsonValue;
|
|
73
|
+
readonly sessionId: string;
|
|
74
|
+
readonly type: "stage.command";
|
|
75
|
+
} | {
|
|
76
|
+
readonly id: string;
|
|
77
|
+
readonly ok: true;
|
|
78
|
+
readonly requestId: string;
|
|
79
|
+
readonly type: "ui.response";
|
|
80
|
+
readonly value: JsonValue;
|
|
81
|
+
} | {
|
|
82
|
+
readonly error: ClientError;
|
|
83
|
+
readonly id: string;
|
|
84
|
+
readonly ok: false;
|
|
85
|
+
readonly requestId: string;
|
|
86
|
+
readonly type: "ui.response";
|
|
69
87
|
} | {
|
|
70
88
|
readonly id: string;
|
|
71
89
|
readonly name: QueryName;
|
|
@@ -162,6 +180,11 @@ export type RpcEvent = {
|
|
|
162
180
|
readonly diff: QueryDiff<JsonValue>;
|
|
163
181
|
readonly subscriptionId: string;
|
|
164
182
|
readonly type: "live-query.changed";
|
|
183
|
+
} | {
|
|
184
|
+
readonly name: string;
|
|
185
|
+
readonly payload: JsonValue;
|
|
186
|
+
readonly requestId: string;
|
|
187
|
+
readonly type: "ui.request";
|
|
165
188
|
} | {
|
|
166
189
|
readonly message: string;
|
|
167
190
|
readonly subscriptionId: string;
|
|
@@ -174,7 +197,7 @@ export type RpcEvent = {
|
|
|
174
197
|
import type { JsonValue } from '@econ-v1/domain';
|
|
175
198
|
import type { DomainEvent } from '@econ-v1/domain';
|
|
176
199
|
import type { CoreKernelEventType } from '@econ-v1/domain';
|
|
177
|
-
import type { QueryName } from '@econ-v1/domain';
|
|
178
200
|
import type { ClientError } from '@econ-v1/domain';
|
|
201
|
+
import type { QueryName } from '@econ-v1/domain';
|
|
179
202
|
import type { QueryDiff } from '@econ-v1/domain';
|
|
180
203
|
//# sourceMappingURL=protocol.d.ts.map
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.js"],"names":[],"mappings":"AAeA;;;GAGG;AACH,6CAHW,UAAU,GACR,MAAM,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.js"],"names":[],"mappings":"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"}
|
package/dist/stage-context.d.ts
CHANGED
|
@@ -48,13 +48,27 @@ export type StageContextShared = {
|
|
|
48
48
|
};
|
|
49
49
|
invokeCapability<T>(capability: string, payload: unknown): Promise<T>;
|
|
50
50
|
liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void): Unsubscribe;
|
|
51
|
+
command?: <T>(name: string, payload?: unknown) => Promise<T>;
|
|
51
52
|
query<T>(name: QueryName, params: unknown): Promise<T>;
|
|
52
53
|
readonly composition?: StageComposition;
|
|
53
54
|
readonly stage: StageHost;
|
|
54
55
|
};
|
|
56
|
+
export type AssistantPanelHost = {
|
|
57
|
+
open(): void;
|
|
58
|
+
close(): void;
|
|
59
|
+
readonly isOpen: boolean;
|
|
60
|
+
onVisibilityChange(cb: (open: boolean) => void): Unsubscribe;
|
|
61
|
+
setStatus(text: string): void;
|
|
62
|
+
setBadge(count: number): void;
|
|
63
|
+
};
|
|
55
64
|
export type StageHostShared = {
|
|
56
65
|
navigate(path: string): void;
|
|
57
66
|
readonly root: Element;
|
|
67
|
+
readonly context: {
|
|
68
|
+
set(view: object): void;
|
|
69
|
+
clear(): void;
|
|
70
|
+
};
|
|
71
|
+
readonly panel?: AssistantPanelHost;
|
|
58
72
|
};
|
|
59
73
|
export type StageContextV1 = StageContextShared & {
|
|
60
74
|
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.
|
|
3
|
+
"version": "7.3.0",
|
|
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.
|
|
60
|
-
"@econ-v1/ports": "7.
|
|
59
|
+
"@econ-v1/domain": "7.3.0",
|
|
60
|
+
"@econ-v1/ports": "7.3.0"
|
|
61
61
|
}
|
|
62
62
|
}
|
package/src/client.js
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
/** @typedef {{
|
|
32
32
|
* command<T>(name: string, payload: unknown): Promise<T>,
|
|
33
33
|
* liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void, onError?: (error: LiveQueryFailure) => void): Unsubscribe,
|
|
34
|
+
* onUiRequest(handler: (name: string, payload: import("@econ-v1/domain").JsonValue) => Promise<import("@econ-v1/domain").JsonValue>): Unsubscribe,
|
|
34
35
|
* openStageSession(appName: string, manifestSha256: string, surfaceId?: string): Promise<StageRpcSession>,
|
|
35
36
|
* prepareStage(appName: string): Promise<PreparedStage>,
|
|
36
37
|
* publish<T extends KernelEventType>(type: T, payload: import("@econ-v1/domain").KernelEventPayload<T>): Promise<void>,
|
|
@@ -39,6 +40,7 @@
|
|
|
39
40
|
* }} KernelRpcClient */
|
|
40
41
|
/** @typedef {{
|
|
41
42
|
* close(): void,
|
|
43
|
+
* command<T>(name: string, payload: unknown): Promise<T>,
|
|
42
44
|
* invokeCapability<T>(capability: string, payload: unknown): Promise<T>,
|
|
43
45
|
* liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void, onError?: (error: LiveQueryFailure) => void): Unsubscribe,
|
|
44
46
|
* publish<T extends KernelEventType>(type: T, payload: import("@econ-v1/domain").KernelEventPayload<T>): Promise<void>,
|
|
@@ -12,19 +12,42 @@
|
|
|
12
12
|
*/
|
|
13
13
|
const DOMAIN_COPY = {
|
|
14
14
|
"access-code-invalid": { message: "That access code wasn't accepted.", showRetry: false },
|
|
15
|
+
approval_denied: { message: "That action wasn't approved.", showRetry: false },
|
|
15
16
|
capability_not_declared: { message: "This app asked for something it isn't allowed to use.", showRetry: false },
|
|
16
17
|
capability_unavailable: { message: "This app isn't running on your node.", showRetry: true },
|
|
17
18
|
child_unavailable: { message: "This part of the app isn't available right now.", showRetry: false },
|
|
18
19
|
"code-already-bound": { message: "That access code has already been used.", showRetry: false },
|
|
19
20
|
conflict: { message: "Someone else changed this first.", showRetry: true },
|
|
21
|
+
forbidden: { message: "This app isn't allowed to do that.", showRetry: false },
|
|
22
|
+
invalid_payload: { message: "Some of those details weren't accepted.", showRetry: false },
|
|
20
23
|
invalid_request: { message: "Your node couldn't understand that request.", showRetry: false },
|
|
21
24
|
not_found: { message: "That isn't here any more.", showRetry: false },
|
|
25
|
+
scope_unavailable: { message: "There's nothing to look at there right now.", showRetry: true },
|
|
26
|
+
script_timeout: { message: "That script took too long and was stopped.", showRetry: false },
|
|
27
|
+
script_unavailable: { message: "Scripts can't run in this tab right now.", showRetry: true },
|
|
22
28
|
stage_composition_not_enabled: { message: "This screen can't open other apps here.", showRetry: false },
|
|
29
|
+
timeout: { message: "That took too long. Please try again.", showRetry: true },
|
|
23
30
|
unauthorized: { message: "This device isn't allowed to do that.", showRetry: false },
|
|
31
|
+
unknown_command: { message: "Your node doesn't support that action yet.", showRetry: false },
|
|
24
32
|
unsupported_query: { message: "Your node doesn't support this yet.", showRetry: false },
|
|
25
33
|
validation_failed: { message: "Some of those details weren't accepted.", showRetry: false },
|
|
26
34
|
};
|
|
27
35
|
|
|
36
|
+
/**
|
|
37
|
+
* A `forbidden` error names why in `details.reason`; each reason gets its own copy so the user
|
|
38
|
+
* learns what to do, not just that they were refused. An unrecognised reason falls back to the
|
|
39
|
+
* generic `forbidden` copy.
|
|
40
|
+
*
|
|
41
|
+
* @type {Readonly<Record<string, { readonly message: string, readonly showRetry: boolean }>>}
|
|
42
|
+
*/
|
|
43
|
+
const FORBIDDEN_REASON_COPY = {
|
|
44
|
+
grant_request_invalid: { message: "That permission request has expired. Ask again to continue.", showRetry: false },
|
|
45
|
+
not_exposed: { message: "That isn't available to apps.", showRetry: false },
|
|
46
|
+
not_granted: { message: "This app hasn't been given permission for that yet.", showRetry: false },
|
|
47
|
+
owner_only: { message: "Only the owner's paired device can do that.", showRetry: false },
|
|
48
|
+
reserved_key: { message: "That setting is managed by your node and can't be changed here.", showRetry: false },
|
|
49
|
+
};
|
|
50
|
+
|
|
28
51
|
/**
|
|
29
52
|
* Maps any thrown value to what the UI should do with it.
|
|
30
53
|
*
|
|
@@ -51,7 +74,11 @@ export function describeClientError(error) {
|
|
|
51
74
|
}
|
|
52
75
|
|
|
53
76
|
if (kind === "domain" && typeof code === "string") {
|
|
54
|
-
const
|
|
77
|
+
const details = /** @type {{ details?: unknown }} */ (error)?.details;
|
|
78
|
+
const reason = code === "forbidden" && typeof details === "object" && details !== null
|
|
79
|
+
? /** @type {{ reason?: unknown }} */ (details).reason
|
|
80
|
+
: undefined;
|
|
81
|
+
const copy = (typeof reason === "string" ? FORBIDDEN_REASON_COPY[reason] : undefined) ?? DOMAIN_COPY[code];
|
|
55
82
|
if (copy !== undefined) {
|
|
56
83
|
return Object.freeze({ ...copy, surface: /** @type {const} */ ("inline") });
|
|
57
84
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The one grant the shell can record today: page inspection (console, network, page structure
|
|
5
|
+
* and owner-approved scripts). The kernel's grant policy and the shell's consent dialog and
|
|
6
|
+
* settings page all name it through this constant so the id cannot drift between them.
|
|
7
|
+
*/
|
|
8
|
+
export const DEVTOOLS_GRANT = "devtools.inspect";
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {{ type: string, id: string, label?: string }} HostContextRef
|
|
5
|
+
* @typedef {{ screen: string, entity?: HostContextRef, selection?: HostContextRef[], summary?: string, facts?: Record<string, string | number | boolean | null> }} HostContextView
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** Serialized size limit of one `ctx.host.context.set` view (spec §4.5.2). */
|
|
9
|
+
export const HOST_CONTEXT_MAX_BYTES = 4096;
|
|
10
|
+
const VIEW_KEYS = new Set(["screen", "entity", "selection", "summary", "facts"]);
|
|
11
|
+
const REF_KEYS = new Set(["type", "id", "label"]);
|
|
12
|
+
|
|
13
|
+
/** UTF-8 length without `TextEncoder`, which this platform-free package cannot assume.
|
|
14
|
+
* @param {string} text */
|
|
15
|
+
function utf8Length(text) {
|
|
16
|
+
let bytes = 0;
|
|
17
|
+
for (const char of text) {
|
|
18
|
+
const code = /** @type {number} */ (char.codePointAt(0));
|
|
19
|
+
bytes += code < 0x80 ? 1 : code < 0x800 ? 2 : code < 0x10000 ? 3 : 4;
|
|
20
|
+
}
|
|
21
|
+
return bytes;
|
|
22
|
+
}
|
|
23
|
+
/** @param {unknown} value @returns {value is HostContextRef} */
|
|
24
|
+
function isRef(value) {
|
|
25
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
|
|
26
|
+
const ref = /** @type {Record<string, unknown>} */ (value);
|
|
27
|
+
return Object.keys(ref).every((key) => REF_KEYS.has(key)) && typeof ref.type === "string" && typeof ref.id === "string"
|
|
28
|
+
&& (ref.label === undefined || typeof ref.label === "string");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The one rule set for a stage-reported view. The shell checks it before reporting and the
|
|
33
|
+
* kernel checks it again on receipt, so neither trusts the other's copy. Returns a detached
|
|
34
|
+
* JSON copy on success (caller getters are read once) or the reason it was rejected.
|
|
35
|
+
* @param {unknown} value @returns {string | HostContextView}
|
|
36
|
+
*/
|
|
37
|
+
export function validateHostContextView(value) {
|
|
38
|
+
try {
|
|
39
|
+
const json = JSON.stringify(value);
|
|
40
|
+
if (utf8Length(json) > HOST_CONTEXT_MAX_BYTES) return `view exceeds ${HOST_CONTEXT_MAX_BYTES} bytes`;
|
|
41
|
+
value = JSON.parse(json);
|
|
42
|
+
} catch { return "view must be JSON"; }
|
|
43
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) return "view must be an object";
|
|
44
|
+
const view = /** @type {Record<string, unknown>} */ (value);
|
|
45
|
+
const unknown = Object.keys(view).find((key) => !VIEW_KEYS.has(key));
|
|
46
|
+
if (unknown !== undefined) return `view has unknown key ${unknown}`;
|
|
47
|
+
if (typeof view.screen !== "string" || view.screen.length === 0 || view.screen.length > 64) return "screen must be 1–64 chars";
|
|
48
|
+
if (view.summary !== undefined && (typeof view.summary !== "string" || view.summary.length > 280)) return "summary must be ≤ 280 chars";
|
|
49
|
+
if (view.entity !== undefined && !isRef(view.entity)) return "entity must be { type, id, label? } strings";
|
|
50
|
+
if (view.selection !== undefined) {
|
|
51
|
+
if (!Array.isArray(view.selection) || view.selection.length > 20) return "selection must have ≤ 20 items";
|
|
52
|
+
if (!view.selection.every(isRef)) return "selection items must be { type, id, label? } strings";
|
|
53
|
+
}
|
|
54
|
+
if (view.facts !== undefined) {
|
|
55
|
+
if (view.facts === null || typeof view.facts !== "object" || Array.isArray(view.facts)) return "facts must be an object";
|
|
56
|
+
const entries = Object.entries(view.facts);
|
|
57
|
+
if (entries.length > 32 || entries.some(([, v]) => v !== null && !["string", "number", "boolean"].includes(typeof v))) return "facts must have ≤ 32 primitive values";
|
|
58
|
+
}
|
|
59
|
+
return /** @type {HostContextView} */ (view);
|
|
60
|
+
}
|
package/src/index.js
CHANGED
|
@@ -204,6 +204,8 @@ export { DEFAULT_REQUEST_TIMEOUT_MS, KernelRpcTimeoutError, MessagePortKernelRpc
|
|
|
204
204
|
export { NODE_APP_LIFECYCLE_COMMAND, NODE_APP_MEMORY_CAPTURE_COMMAND, NODE_APP_MEMORY_DETAIL_QUERY, NODE_APP_MEMORY_DOWNLOAD_COMMAND, NODE_APP_MEMORY_LIST_QUERY, NODE_APP_MEMORY_OVERVIEW_QUERY, NODE_APP_MEMORY_STATUS_COMMAND } from "./node-app-memory-contract.js";
|
|
205
205
|
export { APPS_LIFECYCLE_PIN_COMMAND, APPS_LIFECYCLE_QUERY } from "./apps-lifecycle-contract.js";
|
|
206
206
|
export { CLIENT_SERVICES_RETRY_COMMAND } from "./client-services-contract.js";
|
|
207
|
+
export { DEVTOOLS_GRANT } from "./grants-contract.js";
|
|
208
|
+
export { HOST_CONTEXT_MAX_BYTES, validateHostContextView } from "./host-context-contract.js";
|
|
207
209
|
export { L402_ENFORCEMENT_QUERY, L402_ENFORCEMENT_ROW_ID, L402_ENFORCEMENT_SET_COMMAND } from "./l402-enforcement-contract.js";
|
|
208
210
|
export { isRouteMode, MODEL_PICKER_CATALOG_QUERY, MODEL_PICKER_CATALOG_ROW_ID, MODEL_PICKER_RECENTS_LIMIT, MODEL_PICKER_RECENTS_SETTING, MODEL_PICKER_STAGE_ID, ROUTE_MODES, WEB_SEARCH_AUTO } from "./model-picker-contract.js";
|
|
209
211
|
export {
|
|
@@ -276,3 +278,7 @@ export { CHILD_ACTIONS, CHILD_STATE_CODES, describeChildState, isTransientChildS
|
|
|
276
278
|
/** @typedef {import("./child-state-contract.js").ChildAction} ChildAction */
|
|
277
279
|
export { createNodeHealthQuery, NODE_HEALTH_QUERY } from "./node-health-query.js";
|
|
278
280
|
export { createResponsivenessTracker, EMA_HOLD_MS } from "./node-responsiveness.js";
|
|
281
|
+
/** @typedef {import("@econ-v1/ports").DevtoolsScriptContext} DevtoolsScriptContext */
|
|
282
|
+
/** @typedef {import("@econ-v1/ports").DevtoolsScriptHostPort} DevtoolsScriptHostPort */
|
|
283
|
+
/** @typedef {import("./host-context-contract.js").HostContextRef} HostContextRef */
|
|
284
|
+
/** @typedef {import("./host-context-contract.js").HostContextView} HostContextView */
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import {
|
|
3
3
|
DomainError,
|
|
4
|
+
SyncError,
|
|
4
5
|
TransportError,
|
|
5
6
|
} from "@econ-v1/domain";
|
|
6
7
|
|
|
@@ -169,6 +170,8 @@ export class MessagePortKernelRpcClient {
|
|
|
169
170
|
/** @type {() => void} */
|
|
170
171
|
#unsubscribeMessages;
|
|
171
172
|
#closed = false;
|
|
173
|
+
/** @type {((name: string, payload: JsonValue) => Promise<JsonValue>) | undefined} */
|
|
174
|
+
#uiRequestHandler;
|
|
172
175
|
#nextRequestId = 1;
|
|
173
176
|
#nextSubscriptionId = 1;
|
|
174
177
|
|
|
@@ -322,6 +325,42 @@ export class MessagePortKernelRpcClient {
|
|
|
322
325
|
}));
|
|
323
326
|
}
|
|
324
327
|
|
|
328
|
+
/** @template T @param {string} sessionId @param {string} name @param {unknown} payload @returns {Promise<T>} */
|
|
329
|
+
commandStage(sessionId, name, payload) {
|
|
330
|
+
return /** @type {Promise<T>} */ (this.#request({ name, payload: jsonValue(payload, "command payload"), sessionId, type: "stage.command" }));
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/** @param {(name: string, payload: JsonValue) => Promise<JsonValue>} handler @returns {Unsubscribe} */
|
|
334
|
+
onUiRequest(handler) {
|
|
335
|
+
this.#uiRequestHandler = handler;
|
|
336
|
+
return () => { if (this.#uiRequestHandler === handler) this.#uiRequestHandler = undefined; };
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/** @param {{ readonly name: string, readonly payload: JsonValue, readonly requestId: string }} event */
|
|
340
|
+
async #answerUiRequest(event) {
|
|
341
|
+
const handler = this.#uiRequestHandler;
|
|
342
|
+
/** @type {RpcRequestWithoutId} */
|
|
343
|
+
let response;
|
|
344
|
+
try {
|
|
345
|
+
if (handler === undefined) throw new TransportError({ code: "unavailable", message: "No shell is handling UI requests in this tab" });
|
|
346
|
+
const value = jsonValue(await handler(event.name, event.payload), "UI response value");
|
|
347
|
+
response = { ok: true, requestId: event.requestId, type: "ui.response", value };
|
|
348
|
+
} catch (error) {
|
|
349
|
+
const clientError = error instanceof DomainError || error instanceof SyncError || error instanceof TransportError
|
|
350
|
+
? error
|
|
351
|
+
: new DomainError({ code: "invalid_request", message: "UI request handler failed" });
|
|
352
|
+
response = { error: clientError, ok: false, requestId: event.requestId, type: "ui.response" };
|
|
353
|
+
}
|
|
354
|
+
if (this.#closed || this.#transport.state !== "open") return;
|
|
355
|
+
const id = `request-${this.#nextRequestId}`;
|
|
356
|
+
this.#nextRequestId += 1;
|
|
357
|
+
try {
|
|
358
|
+
this.#transport.send(serializeRpcRequest(/** @type {RpcRequest} */ ({ ...response, id })));
|
|
359
|
+
} catch {
|
|
360
|
+
// UI responses are fire-and-forget; a closed transport cannot receive them.
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
325
364
|
/**
|
|
326
365
|
* @template T
|
|
327
366
|
* @param {string} sessionId
|
|
@@ -429,6 +468,10 @@ export class MessagePortKernelRpcClient {
|
|
|
429
468
|
|
|
430
469
|
try {
|
|
431
470
|
const event = deserializeRpcEvent(message);
|
|
471
|
+
if (event.type === "ui.request") {
|
|
472
|
+
void this.#answerUiRequest(event);
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
432
475
|
if (event.type === "kernel.event") {
|
|
433
476
|
const group = this.#eventGroupsBySubscription.get(event.subscriptionId);
|
|
434
477
|
if (group === undefined || group.eventType !== event.event.type) return;
|
|
@@ -752,6 +795,12 @@ class BoundStageRpcSession {
|
|
|
752
795
|
this.#client.closeStageSession(this.#sessionId);
|
|
753
796
|
}
|
|
754
797
|
|
|
798
|
+
/** @template T @param {string} name @param {unknown} payload @returns {Promise<T>} */
|
|
799
|
+
command(name, payload) {
|
|
800
|
+
this.#assertOpen();
|
|
801
|
+
return this.#client.commandStage(this.#sessionId, name, payload);
|
|
802
|
+
}
|
|
803
|
+
|
|
755
804
|
/**
|
|
756
805
|
* @template T
|
|
757
806
|
* @param {string} capability
|
package/src/protocol.js
CHANGED
|
@@ -36,6 +36,12 @@ export function serializeRpcRequest(request) {
|
|
|
36
36
|
return stringify({ appName: request.appName, id: request.id, type: request.type });
|
|
37
37
|
case "stage.open-session":
|
|
38
38
|
return stringify({ appName: request.appName, id: request.id, manifestSha256: request.manifestSha256, ...(request.surfaceId === undefined ? {} : { surfaceId: request.surfaceId }), type: request.type });
|
|
39
|
+
case "stage.command":
|
|
40
|
+
return stringify({ id: request.id, name: request.name, payload: request.payload, sessionId: request.sessionId, type: request.type });
|
|
41
|
+
case "ui.response":
|
|
42
|
+
return request.ok
|
|
43
|
+
? stringify({ id: request.id, ok: true, requestId: request.requestId, type: request.type, value: request.value })
|
|
44
|
+
: stringify({ error: serializeClientError(request.error), id: request.id, ok: false, requestId: request.requestId, type: request.type });
|
|
39
45
|
case "stage.query":
|
|
40
46
|
return stringify({ id: request.id, name: request.name, params: request.params, sessionId: request.sessionId, type: request.type });
|
|
41
47
|
case "stage.live-query.subscribe":
|
|
@@ -74,6 +80,13 @@ export function deserializeRpcRequest(serialized) {
|
|
|
74
80
|
const surfaceId = optionalStringField(value, "surfaceId");
|
|
75
81
|
return { appName: stringField(value, "appName"), id, manifestSha256: stringField(value, "manifestSha256"), ...(surfaceId === undefined ? {} : { surfaceId }), type };
|
|
76
82
|
}
|
|
83
|
+
case "stage.command": return { id, name: versionedNameField(value, "name"), payload: jsonField(value, "payload"), sessionId: stringField(value, "sessionId"), type };
|
|
84
|
+
case "ui.response": {
|
|
85
|
+
const requestId = stringField(value, "requestId");
|
|
86
|
+
if (value.ok === true) return { id, ok: true, requestId, type, value: jsonField(value, "value") };
|
|
87
|
+
if (value.ok === false && isSerializableClientError(value.error)) return { error: deserializeClientError(value.error), id, ok: false, requestId, type };
|
|
88
|
+
throw new TypeError("Invalid ui.response");
|
|
89
|
+
}
|
|
77
90
|
case "stage.query": return { id, name: queryNameField(value), params: jsonField(value, "params"), sessionId: stringField(value, "sessionId"), type };
|
|
78
91
|
case "stage.live-query.subscribe": return { id, name: queryNameField(value), params: jsonField(value, "params"), sessionId: stringField(value, "sessionId"), subscriptionId: stringField(value, "subscriptionId"), type };
|
|
79
92
|
case "stage.live-query.unsubscribe": return { id, sessionId: stringField(value, "sessionId"), subscriptionId: stringField(value, "subscriptionId"), type };
|
|
@@ -123,6 +136,8 @@ export function deserializeRpcResponse(serialized) {
|
|
|
123
136
|
* @returns {string}
|
|
124
137
|
*/
|
|
125
138
|
export function serializeRpcEvent(event) {
|
|
139
|
+
if (event.type === "ui.request")
|
|
140
|
+
return stringify({ name: event.name, payload: event.payload, requestId: event.requestId, type: event.type });
|
|
126
141
|
if (event.type === "live-query.changed")
|
|
127
142
|
return stringify({ diff: projectQueryDiff(event.diff), subscriptionId: event.subscriptionId, type: event.type });
|
|
128
143
|
if (event.type === "live-query.failed")
|
|
@@ -135,6 +150,8 @@ export function serializeRpcEvent(event) {
|
|
|
135
150
|
*/
|
|
136
151
|
export function deserializeRpcEvent(serialized) {
|
|
137
152
|
const value = parseRecord(serialized);
|
|
153
|
+
if (value.type === "ui.request")
|
|
154
|
+
return { name: versionedNameField(value, "name"), payload: jsonField(value, "payload"), requestId: stringField(value, "requestId"), type: value.type };
|
|
138
155
|
const subscriptionId = stringField(value, "subscriptionId");
|
|
139
156
|
if (value.type === "live-query.changed")
|
|
140
157
|
return { diff: queryDiffField(value), subscriptionId, type: value.type };
|
|
@@ -864,6 +881,9 @@ function entityActionField(value) {
|
|
|
864
881
|
}
|
|
865
882
|
/**
|
|
866
883
|
* @typedef {| { readonly id: string; readonly name: string; readonly payload: JsonValue; readonly type: "command" }
|
|
884
|
+
* | { readonly id: string; readonly name: string; readonly payload: JsonValue; readonly sessionId: string; readonly type: "stage.command" }
|
|
885
|
+
* | { readonly id: string; readonly ok: true; readonly requestId: string; readonly type: "ui.response"; readonly value: JsonValue }
|
|
886
|
+
* | { readonly error: ClientError; readonly id: string; readonly ok: false; readonly requestId: string; readonly type: "ui.response" }
|
|
867
887
|
* | { readonly id: string; readonly name: QueryName; readonly params: JsonValue; readonly type: "query" }
|
|
868
888
|
* | { readonly id: string; readonly name: QueryName; readonly params: JsonValue; readonly subscriptionId: string; readonly type: "live-query.subscribe" }
|
|
869
889
|
* | { readonly id: string; readonly subscriptionId: string; readonly type: "live-query.unsubscribe" }
|
|
@@ -887,6 +907,7 @@ function entityActionField(value) {
|
|
|
887
907
|
*/
|
|
888
908
|
/**
|
|
889
909
|
* @typedef {| { readonly diff: QueryDiff<JsonValue>; readonly subscriptionId: string; readonly type: "live-query.changed" }
|
|
910
|
+
* | { readonly name: string; readonly payload: JsonValue; readonly requestId: string; readonly type: "ui.request" }
|
|
890
911
|
* | { readonly message: string; readonly subscriptionId: string; readonly type: "live-query.failed" }
|
|
891
912
|
* | { readonly event: ProtocolDomainEvent; readonly subscriptionId: string; readonly type: "kernel.event" }} RpcEvent
|
|
892
913
|
*/
|
package/src/stage-context.js
CHANGED
|
@@ -22,11 +22,13 @@
|
|
|
22
22
|
* },
|
|
23
23
|
* invokeCapability<T>(capability: string, payload: unknown): Promise<T>,
|
|
24
24
|
* liveQuery<T>(name: QueryName, params: unknown, listener: (diff: import("@econ-v1/domain").QueryDiff<T>) => void): Unsubscribe,
|
|
25
|
+
* command?: <T>(name: string, payload?: unknown) => Promise<T>,
|
|
25
26
|
* query<T>(name: QueryName, params: unknown): Promise<T>,
|
|
26
27
|
* readonly composition?: StageComposition,
|
|
27
28
|
* readonly stage: StageHost
|
|
28
29
|
* }} StageContextShared */
|
|
29
|
-
/** @typedef {{
|
|
30
|
+
/** @typedef {{ open(): void, close(): void, readonly isOpen: boolean, onVisibilityChange(cb: (open: boolean) => void): Unsubscribe, setStatus(text: string): void, setBadge(count: number): void }} AssistantPanelHost */
|
|
31
|
+
/** @typedef {{ navigate(path: string): void, readonly root: Element, readonly context: { set(view: object): void, clear(): void }, readonly panel?: AssistantPanelHost }} StageHostShared */
|
|
30
32
|
/** @typedef {StageContextShared & { readonly host: StageHostShared & { readonly uiApi: 1 } }} StageContextV1 */
|
|
31
33
|
/** @typedef {StageContextShared & { readonly host: StageHostShared & { readonly dialogs: DialogCenter, readonly modelPicker: ModelPickerCenter, readonly systemNotices: SystemNoticeCenter, readonly uiApi: 2 } }} StageContextV2 */
|
|
32
34
|
/** @typedef {StageContextV1 | StageContextV2} StageContext */
|