@xenosystem/agent-interface-electron-host 0.1.36 → 0.1.38
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/sdkAgent.d.ts +39 -0
- package/dist/sdkAgent.d.ts.map +1 -1
- package/dist/sdkAgent.js +179 -8
- package/dist/sdkAgent.js.map +1 -1
- package/dist/sdkNativeHeadlessRunner.d.ts +16 -0
- package/dist/sdkNativeHeadlessRunner.d.ts.map +1 -1
- package/dist/sdkNativeHeadlessRunner.js +1 -0
- package/dist/sdkNativeHeadlessRunner.js.map +1 -1
- package/dist/sdkNativeRunner.d.ts +16 -0
- package/dist/sdkNativeRunner.d.ts.map +1 -1
- package/dist/sdkNativeRunner.js +1 -0
- package/dist/sdkNativeRunner.js.map +1 -1
- package/package.json +3 -3
- package/dist/desktopDocumentConnections.d.ts +0 -30
- package/dist/desktopDocumentConnections.d.ts.map +0 -1
- package/dist/desktopDocumentConnections.js +0 -81
- package/dist/desktopDocumentConnections.js.map +0 -1
- package/dist/desktopSenderAuthority.d.ts +0 -45
- package/dist/desktopSenderAuthority.d.ts.map +0 -1
- package/dist/desktopSenderAuthority.js +0 -133
- package/dist/desktopSenderAuthority.js.map +0 -1
- package/dist/sdkExecutionSettlement.d.ts +0 -27
- package/dist/sdkExecutionSettlement.d.ts.map +0 -1
- package/dist/sdkExecutionSettlement.js +0 -53
- package/dist/sdkExecutionSettlement.js.map +0 -1
|
@@ -26,6 +26,22 @@ import type { AgentCommandExecutionEnvironment } from './sdkAgent.js';
|
|
|
26
26
|
export interface CreateSdkNativeHeadlessRunnerOptions {
|
|
27
27
|
settlementRegistry?: SdkExecutionSettlementRegistry;
|
|
28
28
|
getAuthToken(): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Authorize one inference request as the signed-in account. See `sdkAgent`'s own field.
|
|
31
|
+
*
|
|
32
|
+
* 🔴 `undefined` and a function that resolves `null` are DIFFERENT ANSWERS. Absent means this
|
|
33
|
+
* host has no account credential, so the SDK uses `apiKey`. Present-but-`null` means there IS an
|
|
34
|
+
* account and it could not authorize, which the SDK treats as a refusal and never falls back
|
|
35
|
+
* from. Declared as possibly-`undefined` rather than merely optional so a composition can pass
|
|
36
|
+
* the distinction through a getter under `exactOptionalPropertyTypes`.
|
|
37
|
+
*/
|
|
38
|
+
authorizeRequest?: ((target: {
|
|
39
|
+
method: string;
|
|
40
|
+
url: string;
|
|
41
|
+
}) => Promise<{
|
|
42
|
+
authorization: string;
|
|
43
|
+
dpop?: string;
|
|
44
|
+
} | null>) | undefined;
|
|
29
45
|
getPlatformAuthToken?(): string | null;
|
|
30
46
|
runtimeEventStore?: RuntimeEventStore;
|
|
31
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkNativeHeadlessRunner.d.ts","sourceRoot":"","sources":["../src/sdkNativeHeadlessRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,uCAAuC,CAAA;AAG9C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAA;AAErE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,oCAAoC;IACnD,kBAAkB,CAAC,EAAC,8BAA8B,CAAA;IAClD,YAAY,IAAI,MAAM,GAAG,IAAI,CAAA;IAC7B,oBAAoB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAA;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC9E,4FAA4F;IAC5F,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,6FAA6F;IAC7F,cAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtD,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;CACxD;AAED,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,uCAAuC,CAAA;AAEpH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oCAAoC,GAC5C,oBAAoB,
|
|
1
|
+
{"version":3,"file":"sdkNativeHeadlessRunner.d.ts","sourceRoot":"","sources":["../src/sdkNativeHeadlessRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,uCAAuC,CAAA;AAG9C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAA;AAErE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,oCAAoC;IACnD,kBAAkB,CAAC,EAAC,8BAA8B,CAAA;IAClD,YAAY,IAAI,MAAM,GAAG,IAAI,CAAA;IAC7B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;IACtI,oBAAoB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAA;IACtC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC9E,4FAA4F;IAC5F,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,6FAA6F;IAC7F,cAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtD,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;CACxD;AAED,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,uCAAuC,CAAA;AAEpH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oCAAoC,GAC5C,oBAAoB,CAqGtB;AAiCD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -67,6 +67,7 @@ export function createSdkNativeHeadlessRunner(options) {
|
|
|
67
67
|
enableThinking: input.enableThinking,
|
|
68
68
|
...(input.reasoningEffort ? { reasoningEffort: input.reasoningEffort } : {}),
|
|
69
69
|
getAuthToken: options.getAuthToken,
|
|
70
|
+
...(options.authorizeRequest ? { authorizeRequest: options.authorizeRequest } : {}),
|
|
70
71
|
...(options.getPlatformAuthToken
|
|
71
72
|
? { getPlatformAuthToken: options.getPlatformAuthToken }
|
|
72
73
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkNativeHeadlessRunner.js","sourceRoot":"","sources":["../src/sdkNativeHeadlessRunner.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"sdkNativeHeadlessRunner.js","sourceRoot":"","sources":["../src/sdkNativeHeadlessRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,22 @@ import { type SdkExecutionSettlementRegistry } from '@xenosystem/agent-interface
|
|
|
6
6
|
export interface CreateSdkNativeElectronRunnerOptions {
|
|
7
7
|
settlementRegistry?: SdkExecutionSettlementRegistry;
|
|
8
8
|
getAuthToken(): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Authorize one inference request as the signed-in account. See `sdkAgent`'s own field.
|
|
11
|
+
*
|
|
12
|
+
* 🔴 `undefined` and a function that resolves `null` are DIFFERENT ANSWERS. Absent means this
|
|
13
|
+
* host has no account credential, so the SDK uses `apiKey`. Present-but-`null` means there IS an
|
|
14
|
+
* account and it could not authorize, which the SDK treats as a refusal and never falls back
|
|
15
|
+
* from. Declared as possibly-`undefined` rather than merely optional so a composition can pass
|
|
16
|
+
* the distinction through a getter under `exactOptionalPropertyTypes`.
|
|
17
|
+
*/
|
|
18
|
+
authorizeRequest?: ((target: {
|
|
19
|
+
method: string;
|
|
20
|
+
url: string;
|
|
21
|
+
}) => Promise<{
|
|
22
|
+
authorization: string;
|
|
23
|
+
dpop?: string;
|
|
24
|
+
} | null>) | undefined;
|
|
9
25
|
getPlatformAuthToken?(): string | null;
|
|
10
26
|
createRuntimeWindow(input: SdkNativeAgentRunInput): BrowserWindow;
|
|
11
27
|
runtimeEventStore?: RuntimeEventStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkNativeRunner.d.ts","sourceRoot":"","sources":["../src/sdkNativeRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAA;AAGrE,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,uCAAuC,CAAA;AAEpH,MAAM,WAAW,oCAAoC;IACnD,kBAAkB,CAAC,EAAC,8BAA8B,CAAA;IAClD,YAAY,IAAI,MAAM,GAAG,IAAI,CAAA;IAC7B,oBAAoB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAA;IACtC,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,aAAa,CAAA;IACjE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;CACxD;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oCAAoC,GAC5C,oBAAoB,
|
|
1
|
+
{"version":3,"file":"sdkNativeRunner.d.ts","sourceRoot":"","sources":["../src/sdkNativeRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAA;AAGrE,OAAO,EAA2B,KAAK,8BAA8B,EAAE,MAAM,uCAAuC,CAAA;AAEpH,MAAM,WAAW,oCAAoC;IACnD,kBAAkB,CAAC,EAAC,8BAA8B,CAAA;IAClD,YAAY,IAAI,MAAM,GAAG,IAAI,CAAA;IAC7B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;IACtI,oBAAoB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAA;IACtC,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,aAAa,CAAA;IACjE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;CACxD;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oCAAoC,GAC5C,oBAAoB,CAwFtB"}
|
package/dist/sdkNativeRunner.js
CHANGED
|
@@ -53,6 +53,7 @@ export function createSdkNativeElectronRunner(options) {
|
|
|
53
53
|
enableThinking: input.enableThinking,
|
|
54
54
|
...(input.reasoningEffort ? { reasoningEffort: input.reasoningEffort } : {}),
|
|
55
55
|
getAuthToken: options.getAuthToken,
|
|
56
|
+
...(options.authorizeRequest ? { authorizeRequest: options.authorizeRequest } : {}),
|
|
56
57
|
...(options.getPlatformAuthToken
|
|
57
58
|
? { getPlatformAuthToken: options.getPlatformAuthToken }
|
|
58
59
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkNativeRunner.js","sourceRoot":"","sources":["../src/sdkNativeRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAW9B,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE/F,OAAO,EAAE,uBAAuB,EAAuC,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"sdkNativeRunner.js","sourceRoot":"","sources":["../src/sdkNativeRunner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xenosystem/agent-interface-electron-host",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.38",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"directory": "packages/electron-host"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@xenosystem/agent-sdk": "0.9.
|
|
30
|
+
"@xenosystem/agent-sdk": "0.9.29",
|
|
31
31
|
"@xenosystem/web-context-client": "0.1.1",
|
|
32
|
-
"@xenosystem/agent-interface-host": "0.1.
|
|
32
|
+
"@xenosystem/agent-interface-host": "0.1.38"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"electron": ">=35"
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { AgentHostClientIdentity, AgentHostEvent, AgentHostTransport } from '@xenosystem/agent-interface-contract';
|
|
2
|
-
export interface DesktopAttachedSession {
|
|
3
|
-
role: string;
|
|
4
|
-
descriptor: {
|
|
5
|
-
instanceId: string;
|
|
6
|
-
endpoint: string;
|
|
7
|
-
};
|
|
8
|
-
transport: AgentHostTransport;
|
|
9
|
-
close(): Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
/** Each document owns a client socket, never the shared host authority. Socket
|
|
12
|
-
* loss then reaches the existing canonical server releaseClient path exactly. */
|
|
13
|
-
export declare class DesktopDocumentConnections {
|
|
14
|
-
private readonly options;
|
|
15
|
-
private readonly entries;
|
|
16
|
-
private closing;
|
|
17
|
-
constructor(options: {
|
|
18
|
-
attach: () => Promise<DesktopAttachedSession>;
|
|
19
|
-
expectedAuthority: () => {
|
|
20
|
-
instanceId: string;
|
|
21
|
-
endpoint: string;
|
|
22
|
-
};
|
|
23
|
-
onEvent: (identity: AgentHostClientIdentity, event: AgentHostEvent) => void;
|
|
24
|
-
});
|
|
25
|
-
request(identity: AgentHostClientIdentity, dispatch: (transport: AgentHostTransport) => Promise<unknown>): Promise<unknown>;
|
|
26
|
-
retire(identity: Pick<AgentHostClientIdentity, 'instanceId'>): Promise<void>;
|
|
27
|
-
close(): Promise<void>;
|
|
28
|
-
private create;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=desktopDocumentConnections.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"desktopDocumentConnections.d.ts","sourceRoot":"","sources":["../src/desktopDocumentConnections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAEvH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD,SAAS,EAAE,kBAAkB,CAAA;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAGD;iFACiF;AACjF,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,OAAO,CAAQ;gBACM,OAAO,EAAE;QACpC,MAAM,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAA;QAC7C,iBAAiB,EAAE,MAAM;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;QACjE,OAAO,EAAE,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;KAC5E;IAEK,OAAO,CAAC,QAAQ,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAYjI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,MAAM;CAyBf"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/** Each document owns a client socket, never the shared host authority. Socket
|
|
2
|
-
* loss then reaches the existing canonical server releaseClient path exactly. */
|
|
3
|
-
export class DesktopDocumentConnections {
|
|
4
|
-
options;
|
|
5
|
-
entries = new Map();
|
|
6
|
-
closing = false;
|
|
7
|
-
constructor(options) {
|
|
8
|
-
this.options = options;
|
|
9
|
-
}
|
|
10
|
-
async request(identity, dispatch) {
|
|
11
|
-
if (this.closing)
|
|
12
|
-
throw new Error('Desktop document connections are closing.');
|
|
13
|
-
const entry = this.entries.get(identity.instanceId) || this.create(identity);
|
|
14
|
-
if (entry.retired)
|
|
15
|
-
throw new Error('Desktop document connection was retired.');
|
|
16
|
-
const session = await entry.ready;
|
|
17
|
-
if (entry.retired || this.closing) {
|
|
18
|
-
await this.retire(identity);
|
|
19
|
-
throw new Error('Desktop document connection was retired while attaching.');
|
|
20
|
-
}
|
|
21
|
-
return dispatch(session.transport);
|
|
22
|
-
}
|
|
23
|
-
retire(identity) {
|
|
24
|
-
const entry = this.entries.get(identity.instanceId);
|
|
25
|
-
if (!entry)
|
|
26
|
-
return Promise.resolve();
|
|
27
|
-
entry.retired = true;
|
|
28
|
-
entry.unsubscribe?.();
|
|
29
|
-
delete entry.unsubscribe;
|
|
30
|
-
if (entry.retirement)
|
|
31
|
-
return entry.retirement;
|
|
32
|
-
const retirement = (async () => {
|
|
33
|
-
try {
|
|
34
|
-
await entry.ready;
|
|
35
|
-
}
|
|
36
|
-
catch { /* An attached session, if any, is retained below. */ }
|
|
37
|
-
if (entry.session)
|
|
38
|
-
await entry.session.close();
|
|
39
|
-
if (this.entries.get(identity.instanceId) === entry)
|
|
40
|
-
this.entries.delete(identity.instanceId);
|
|
41
|
-
})();
|
|
42
|
-
entry.retirement = retirement;
|
|
43
|
-
void retirement.finally(() => { if (entry.retirement === retirement)
|
|
44
|
-
delete entry.retirement; }).catch(() => { });
|
|
45
|
-
return retirement;
|
|
46
|
-
}
|
|
47
|
-
async close() {
|
|
48
|
-
this.closing = true;
|
|
49
|
-
await Promise.all([...this.entries.keys()].map(instanceId => this.retire({ instanceId })));
|
|
50
|
-
}
|
|
51
|
-
create(identity) {
|
|
52
|
-
const expected = this.options.expectedAuthority();
|
|
53
|
-
const entry = { retired: false, ready: Promise.resolve(undefined) };
|
|
54
|
-
this.entries.set(identity.instanceId, entry);
|
|
55
|
-
entry.ready = Promise.resolve().then(async () => {
|
|
56
|
-
if (entry.retired)
|
|
57
|
-
throw new Error('Desktop document retired before attachment.');
|
|
58
|
-
const session = await this.options.attach();
|
|
59
|
-
// Never close an owner session from this client-only pool, even if an
|
|
60
|
-
// erroneous injected factory hands one back.
|
|
61
|
-
if (session.role !== 'attached-client')
|
|
62
|
-
throw new Error('Desktop documents may only attach to an existing authority.');
|
|
63
|
-
entry.session = session;
|
|
64
|
-
if (session.descriptor.instanceId !== expected.instanceId || session.descriptor.endpoint !== expected.endpoint) {
|
|
65
|
-
entry.retired = true;
|
|
66
|
-
await session.close();
|
|
67
|
-
delete entry.session;
|
|
68
|
-
throw new Error('Desktop shared authority changed during document attachment.');
|
|
69
|
-
}
|
|
70
|
-
if (!entry.retired)
|
|
71
|
-
entry.unsubscribe = session.transport.subscribe(event => {
|
|
72
|
-
if (!entry.retired && this.entries.get(identity.instanceId) === entry)
|
|
73
|
-
this.options.onEvent(identity, event);
|
|
74
|
-
});
|
|
75
|
-
return session;
|
|
76
|
-
});
|
|
77
|
-
void entry.ready.catch(() => { });
|
|
78
|
-
return entry;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=desktopDocumentConnections.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"desktopDocumentConnections.js","sourceRoot":"","sources":["../src/desktopDocumentConnections.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type AgentHostClientIdentity } from '@xenosystem/agent-interface-contract';
|
|
2
|
-
export declare const DESKTOP_BOOTSTRAP_CHANNEL = "xeno-agent-host:bootstrap";
|
|
3
|
-
/** The two other channel names a product must agree on with its preload. */
|
|
4
|
-
export declare const AGENT_HOST_REQUEST_CHANNEL = "xeno-agent-host:request";
|
|
5
|
-
export declare const AGENT_HOST_EVENT_CHANNEL = "xeno-agent-host:event";
|
|
6
|
-
export interface DesktopDocumentReceipt {
|
|
7
|
-
identity: AgentHostClientIdentity;
|
|
8
|
-
token: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function sameDesktopDocumentUrl(actual: string, expected: string): boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Which product this authority mints identities for.
|
|
13
|
-
*
|
|
14
|
-
* Parameters rather than constants because this class is the ONLY safe way for an Electron
|
|
15
|
-
* product to mint a client identity, and every product needs its own. Hard-coding
|
|
16
|
-
* `xeno-agent-desktop`/`standalone-desktop` here is what kept it app-private, and the
|
|
17
|
-
* alternative — each product writing its own copy — is a second implementation of the check
|
|
18
|
-
* that decides whether a renderer may speak to the agent host at all.
|
|
19
|
-
*/
|
|
20
|
-
export interface DocumentAuthorityProduct {
|
|
21
|
-
/** Stable product id, e.g. `xeno-agent-desktop`, `xeno-canvas`. */
|
|
22
|
-
clientId: string;
|
|
23
|
-
/** The surface the host will see. The embed layer refuses a client whose surface disagrees
|
|
24
|
-
* with its mount, so this is not cosmetic. */
|
|
25
|
-
surface: AgentHostClientIdentity['surface'];
|
|
26
|
-
}
|
|
27
|
-
/** Main-process authority. Renderer claims never create a client identity. */
|
|
28
|
-
export declare class DesktopSenderAuthority {
|
|
29
|
-
private readonly version;
|
|
30
|
-
private readonly uuid;
|
|
31
|
-
private readonly onRetire;
|
|
32
|
-
private readonly senders;
|
|
33
|
-
private readonly product;
|
|
34
|
-
constructor(version: string, uuid?: () => string, onRetire?: (identity: AgentHostClientIdentity) => void, product?: DocumentAuthorityProduct);
|
|
35
|
-
register(sender: object, allowedUrl: string): void;
|
|
36
|
-
remove(sender: object): void;
|
|
37
|
-
invalidate(sender: object): void;
|
|
38
|
-
committed(sender: object, url: string, sameDocument?: boolean): void;
|
|
39
|
-
bootstrap(sender: object, isMainFrame: boolean, url: string): DesktopDocumentReceipt;
|
|
40
|
-
assert(sender: object, isMainFrame: boolean, url: string, token: unknown, handshake?: boolean): AgentHostClientIdentity;
|
|
41
|
-
canReceive(sender: object, url: string): boolean;
|
|
42
|
-
request(sender: object, isMainFrame: boolean, url: string, token: unknown, method: string, input: unknown, dispatch: (input: unknown) => Promise<unknown>): Promise<unknown>;
|
|
43
|
-
private document;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=desktopSenderAuthority.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"desktopSenderAuthority.d.ts","sourceRoot":"","sources":["../src/desktopSenderAuthority.ts"],"names":[],"mappings":"AACA,OAAO,EAAmD,KAAK,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAEpI,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AACpE,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B,4BAA4B,CAAA;AACnE,eAAO,MAAM,wBAAwB,0BAA0B,CAAA;AAC/D,MAAM,WAAW,sBAAsB;IAAG,QAAQ,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAK5F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMhF;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB;mDAC+C;IAC/C,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAA;CAC5C;AAED,8EAA8E;AAC9E,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,IAAI;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBACrB,OAAO,EAAE,MAAM,EAAmB,IAAI,GAAE,MAAM,MAAmB,EAC3E,QAAQ,GAAE,CAAC,QAAQ,EAAE,uBAAuB,KAAK,IAAe,EACjF,OAAO,GAAE,wBAA4F;IAIvG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIlD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAC5B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,IAAI;IAgBlE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAKpF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,UAAQ,GAAG,uBAAuB;IAMrH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAI1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgClL,OAAO,CAAC,QAAQ;CAKjB"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { isAgentHostClientIdentity, isAgentHostHandshake } from '@xenosystem/agent-interface-contract';
|
|
3
|
-
export const DESKTOP_BOOTSTRAP_CHANNEL = 'xeno-agent-host:bootstrap';
|
|
4
|
-
/** The two other channel names a product must agree on with its preload. */
|
|
5
|
-
export const AGENT_HOST_REQUEST_CHANNEL = 'xeno-agent-host:request';
|
|
6
|
-
export const AGENT_HOST_EVENT_CHANNEL = 'xeno-agent-host:event';
|
|
7
|
-
const record = (value) => Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
8
|
-
export function sameDesktopDocumentUrl(actual, expected) {
|
|
9
|
-
try {
|
|
10
|
-
const left = new URL(actual), right = new URL(expected);
|
|
11
|
-
left.hash = '';
|
|
12
|
-
right.hash = '';
|
|
13
|
-
return !left.username && !left.password && left.href === right.href;
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/** Main-process authority. Renderer claims never create a client identity. */
|
|
20
|
-
export class DesktopSenderAuthority {
|
|
21
|
-
version;
|
|
22
|
-
uuid;
|
|
23
|
-
onRetire;
|
|
24
|
-
senders = new Map();
|
|
25
|
-
product;
|
|
26
|
-
constructor(version, uuid = randomUUID, onRetire = () => { }, product = { clientId: 'xeno-agent-desktop', surface: 'standalone-desktop' }) {
|
|
27
|
-
this.version = version;
|
|
28
|
-
this.uuid = uuid;
|
|
29
|
-
this.onRetire = onRetire;
|
|
30
|
-
this.product = product;
|
|
31
|
-
}
|
|
32
|
-
register(sender, allowedUrl) {
|
|
33
|
-
if (this.senders.has(sender))
|
|
34
|
-
throw new Error('Desktop sender is already registered.');
|
|
35
|
-
this.senders.set(sender, { allowedUrl });
|
|
36
|
-
}
|
|
37
|
-
remove(sender) { this.invalidate(sender); this.senders.delete(sender); }
|
|
38
|
-
invalidate(sender) {
|
|
39
|
-
const registration = this.senders.get(sender);
|
|
40
|
-
const prior = registration?.document;
|
|
41
|
-
if (registration)
|
|
42
|
-
delete registration.document;
|
|
43
|
-
if (prior)
|
|
44
|
-
this.onRetire({ ...prior.identity });
|
|
45
|
-
}
|
|
46
|
-
committed(sender, url, sameDocument = false) {
|
|
47
|
-
const registration = this.senders.get(sender);
|
|
48
|
-
if (!registration)
|
|
49
|
-
return;
|
|
50
|
-
if (sameDocument)
|
|
51
|
-
return;
|
|
52
|
-
const prior = registration.document;
|
|
53
|
-
// A foreign committed document must not retain the old page's authority.
|
|
54
|
-
this.invalidate(sender);
|
|
55
|
-
if (!sameDesktopDocumentUrl(url, registration.allowedUrl))
|
|
56
|
-
return;
|
|
57
|
-
const instanceId = this.uuid(), token = this.uuid();
|
|
58
|
-
if (!instanceId || !token || instanceId === token || instanceId === prior?.identity.instanceId || token === prior?.token
|
|
59
|
-
|| [...this.senders.values()].some(item => item.document?.identity.instanceId === instanceId || item.document?.token === token)) {
|
|
60
|
-
throw new Error('Duplicate desktop document identity refused.');
|
|
61
|
-
}
|
|
62
|
-
registration.document = { identity: { clientId: this.product.clientId, clientVersion: this.version, instanceId, surface: this.product.surface }, token, acknowledged: false };
|
|
63
|
-
}
|
|
64
|
-
bootstrap(sender, isMainFrame, url) {
|
|
65
|
-
const document = this.document(sender, isMainFrame, url);
|
|
66
|
-
return { identity: { ...document.identity }, token: document.token };
|
|
67
|
-
}
|
|
68
|
-
assert(sender, isMainFrame, url, token, handshake = false) {
|
|
69
|
-
const document = this.document(sender, isMainFrame, url);
|
|
70
|
-
if (token !== document.token || (handshake && !document.acknowledged))
|
|
71
|
-
throw new Error('Desktop document authority refused.');
|
|
72
|
-
return { ...document.identity };
|
|
73
|
-
}
|
|
74
|
-
canReceive(sender, url) {
|
|
75
|
-
try {
|
|
76
|
-
return this.document(sender, true, url).acknowledged;
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async request(sender, isMainFrame, url, token, method, input, dispatch) {
|
|
83
|
-
const identity = this.assert(sender, isMainFrame, url, token, method !== 'host.handshake');
|
|
84
|
-
const document = this.senders.get(sender).document;
|
|
85
|
-
if (!record(input))
|
|
86
|
-
throw new Error('Desktop request input is invalid.');
|
|
87
|
-
const matches = (value) => isAgentHostClientIdentity(value)
|
|
88
|
-
&& value.clientId === identity.clientId && value.clientVersion === identity.clientVersion
|
|
89
|
-
&& value.surface === identity.surface && value.instanceId === identity.instanceId
|
|
90
|
-
&& Object.keys(value).every(key => ['clientId', 'clientVersion', 'surface', 'instanceId'].includes(key));
|
|
91
|
-
if ((method === 'host.handshake' && !matches(input.identity))
|
|
92
|
-
|| ('identity' in input && !matches(input.identity))
|
|
93
|
-
|| ('client' in input && !matches(input.client))
|
|
94
|
-
|| (record(input.command) && !matches(input.command.client)))
|
|
95
|
-
throw new Error('Desktop request client identity refused.');
|
|
96
|
-
const current = () => this.senders.get(sender)?.document === document;
|
|
97
|
-
if (method === 'host.handshake') {
|
|
98
|
-
const fingerprint = JSON.stringify(input);
|
|
99
|
-
if (document.handshake && document.handshake !== fingerprint)
|
|
100
|
-
throw new Error('Desktop handshake changed within the document.');
|
|
101
|
-
if (document.pending)
|
|
102
|
-
return document.pending;
|
|
103
|
-
document.handshake = fingerprint;
|
|
104
|
-
const pending = dispatch(structuredClone(input)).then(result => {
|
|
105
|
-
if (!current())
|
|
106
|
-
throw new Error('Desktop document changed during handshake.');
|
|
107
|
-
if (!isAgentHostHandshake(result) || !matches(result.surface))
|
|
108
|
-
throw new Error('Desktop host handshake was not acknowledged.');
|
|
109
|
-
document.acknowledged = true;
|
|
110
|
-
return result;
|
|
111
|
-
});
|
|
112
|
-
document.pending = pending;
|
|
113
|
-
try {
|
|
114
|
-
return await pending;
|
|
115
|
-
}
|
|
116
|
-
finally {
|
|
117
|
-
if (current())
|
|
118
|
-
delete document.pending;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
const result = await dispatch(structuredClone(input));
|
|
122
|
-
if (!current())
|
|
123
|
-
throw new Error('Desktop document changed during request.');
|
|
124
|
-
return result;
|
|
125
|
-
}
|
|
126
|
-
document(sender, isMainFrame, url) {
|
|
127
|
-
const registration = this.senders.get(sender);
|
|
128
|
-
if (!isMainFrame || !registration?.document || !sameDesktopDocumentUrl(url, registration.allowedUrl))
|
|
129
|
-
throw new Error('Desktop sender is not an authorized main document.');
|
|
130
|
-
return registration.document;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=desktopSenderAuthority.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"desktopSenderAuthority.js","sourceRoot":"","sources":["../src/desktopSenderAuthority.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { CommandExecutionPort, CommandExecutionRequest, CommandExecutionResult } from '@xenosystem/agent-interface-host/node';
|
|
2
|
-
export declare class SdkExecutionSettlementRegistry {
|
|
3
|
-
private readonly records;
|
|
4
|
-
private key;
|
|
5
|
-
begin(input: {
|
|
6
|
-
conversationId?: string;
|
|
7
|
-
requestId: string;
|
|
8
|
-
}, manager: unknown): string;
|
|
9
|
-
finish(input: {
|
|
10
|
-
conversationId?: string;
|
|
11
|
-
requestId: string;
|
|
12
|
-
}): void;
|
|
13
|
-
execute(input: {
|
|
14
|
-
conversationId?: string;
|
|
15
|
-
requestId: string;
|
|
16
|
-
}, executor: CommandExecutionPort, request: CommandExecutionRequest): Promise<CommandExecutionResult>;
|
|
17
|
-
confirm(input: {
|
|
18
|
-
conversationId?: string;
|
|
19
|
-
requestId: string;
|
|
20
|
-
}): boolean;
|
|
21
|
-
cancel(input: {
|
|
22
|
-
conversationId?: string;
|
|
23
|
-
requestId: string;
|
|
24
|
-
}): Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
export declare const sdkExecutionSettlements: SdkExecutionSettlementRegistry;
|
|
27
|
-
//# sourceMappingURL=sdkExecutionSettlement.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdkExecutionSettlement.d.ts","sourceRoot":"","sources":["../src/sdkExecutionSettlement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,oBAAoB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAezJ,qBAAa,8BAA8B;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,GAAG;IACX,KAAK,CAAC,KAAK,EAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC,EAAC,OAAO,EAAC,OAAO,GAAE,MAAM;IAY7E,MAAM,CAAC,KAAK,EAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC,GAAE,IAAI;IACtD,OAAO,CAAC,KAAK,EAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC,EAAC,QAAQ,EAAC,oBAAoB,EAAC,OAAO,EAAC,uBAAuB,GAAE,OAAO,CAAC,sBAAsB,CAAC;IAS5J,OAAO,CAAC,KAAK,EAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC,GAAE,OAAO;IAU1D,MAAM,CAAC,KAAK,EAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC,GAAE,OAAO,CAAC,IAAI,CAAC;CAS5E;AACD,eAAO,MAAM,uBAAuB,gCAAqC,CAAA"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
export class SdkExecutionSettlementRegistry {
|
|
3
|
-
records = new Map();
|
|
4
|
-
key(input) { return JSON.stringify([input.conversationId ?? null, input.requestId]); }
|
|
5
|
-
begin(input, manager) {
|
|
6
|
-
const key = this.key(input);
|
|
7
|
-
if (this.records.has(key) || this.records.size >= 2048)
|
|
8
|
-
throw new Error('SDK execution identity reused or retained authority limit reached');
|
|
9
|
-
const record = { ownerId: `interface-turn:${randomUUID()}`, finished: false, cancelling: false, commands: new Map() };
|
|
10
|
-
const port = manager;
|
|
11
|
-
if (typeof port?.captureOwnerCleanup === 'function' && typeof port.sealOwnerAdmission === 'function' && typeof port.cleanupOwnerAndWait === 'function') {
|
|
12
|
-
record.manager = port;
|
|
13
|
-
record.authority = record.manager.captureOwnerCleanup(record.ownerId);
|
|
14
|
-
}
|
|
15
|
-
this.records.set(key, record);
|
|
16
|
-
return record.ownerId;
|
|
17
|
-
}
|
|
18
|
-
finish(input) { const record = this.records.get(this.key(input)); if (record)
|
|
19
|
-
record.finished = true; }
|
|
20
|
-
async execute(input, executor, request) {
|
|
21
|
-
const record = this.records.get(this.key(input));
|
|
22
|
-
if (!record || record.finished || record.cancelling)
|
|
23
|
-
throw new Error('SDK command has no active issuing execution owner');
|
|
24
|
-
if (!record.commands.has(executor))
|
|
25
|
-
record.commands.set(executor, executor.captureExecutionOwner && executor.sealExecutionOwner && executor.cancelExecutionOwner
|
|
26
|
-
? executor.captureExecutionOwner(record.ownerId) : undefined);
|
|
27
|
-
const authority = record.commands.get(executor);
|
|
28
|
-
return executor.execute({ ...request, ...(authority ? { ownership: { authority, operationId: randomUUID() } } : {}) });
|
|
29
|
-
}
|
|
30
|
-
confirm(input) {
|
|
31
|
-
const record = this.records.get(this.key(input));
|
|
32
|
-
if (!record?.finished)
|
|
33
|
-
return false;
|
|
34
|
-
let settled = record.manager?.sealOwnerAdmission(record.ownerId, record.authority).settled === true;
|
|
35
|
-
for (const [executor, authority] of record.commands) {
|
|
36
|
-
const commandSettled = authority ? executor.sealExecutionOwner?.(authority).settled === true : false;
|
|
37
|
-
settled = commandSettled && settled;
|
|
38
|
-
}
|
|
39
|
-
return settled;
|
|
40
|
-
}
|
|
41
|
-
async cancel(input) {
|
|
42
|
-
const record = this.records.get(this.key(input));
|
|
43
|
-
if (!record)
|
|
44
|
-
return;
|
|
45
|
-
record.cancelling = true;
|
|
46
|
-
await Promise.all([
|
|
47
|
-
record.manager?.cleanupOwnerAndWait(record.ownerId, { authority: record.authority, timeoutMs: 1000 }),
|
|
48
|
-
...[...record.commands].map(([executor, authority]) => authority ? executor.cancelExecutionOwner?.(authority, 1000) : undefined),
|
|
49
|
-
]);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export const sdkExecutionSettlements = new SdkExecutionSettlementRegistry();
|
|
53
|
-
//# sourceMappingURL=sdkExecutionSettlement.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdkExecutionSettlement.js","sourceRoot":"","sources":["../src/sdkExecutionSettlement.ts"],"names":[],"mappings":"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"}
|