@xenosystem/agent-interface-electron-host 0.1.25 → 0.1.26
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 +48 -10
- package/dist/sdkAgent.d.ts.map +1 -1
- package/dist/sdkAgent.js +175 -64
- package/dist/sdkAgent.js.map +1 -1
- package/dist/sdkExecutionSettlement.d.ts +27 -0
- package/dist/sdkExecutionSettlement.d.ts.map +1 -0
- package/dist/sdkExecutionSettlement.js +53 -0
- package/dist/sdkExecutionSettlement.js.map +1 -0
- package/dist/sdkNativeHeadlessRunner.d.ts +2 -0
- package/dist/sdkNativeHeadlessRunner.d.ts.map +1 -1
- package/dist/sdkNativeHeadlessRunner.js +9 -0
- package/dist/sdkNativeHeadlessRunner.js.map +1 -1
- package/dist/sdkNativeRunner.d.ts +2 -0
- package/dist/sdkNativeRunner.d.ts.map +1 -1
- package/dist/sdkNativeRunner.js +8 -0
- package/dist/sdkNativeRunner.js.map +1 -1
- package/dist/sdkReasoning.d.ts +3 -0
- package/dist/sdkReasoning.d.ts.map +1 -0
- package/dist/sdkReasoning.js +7 -0
- package/dist/sdkReasoning.js.map +1 -0
- package/dist/sdkSessionMutationAuthority.d.ts +26 -0
- package/dist/sdkSessionMutationAuthority.d.ts.map +1 -0
- package/dist/sdkSessionMutationAuthority.js +165 -0
- package/dist/sdkSessionMutationAuthority.js.map +1 -0
- package/dist/toolCategoryPolicy.d.ts +9 -0
- package/dist/toolCategoryPolicy.d.ts.map +1 -0
- package/dist/toolCategoryPolicy.js +36 -0
- package/dist/toolCategoryPolicy.js.map +1 -0
- package/dist/workspaceEnvironmentTools.d.ts +7 -0
- package/dist/workspaceEnvironmentTools.d.ts.map +1 -0
- package/dist/workspaceEnvironmentTools.js +24 -0
- package/dist/workspaceEnvironmentTools.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkExecutionSettlement.js","sourceRoot":"","sources":["../src/sdkExecutionSettlement.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ import type { AgentCommandExecutionEnvironment } from './sdkAgent.js';
|
|
|
24
24
|
* — is how an unattended agent quietly does the one thing a human would have stopped.
|
|
25
25
|
*/
|
|
26
26
|
export interface CreateSdkNativeHeadlessRunnerOptions {
|
|
27
|
+
settlementRegistry?: SdkExecutionSettlementRegistry;
|
|
27
28
|
getAuthToken(): string | null;
|
|
28
29
|
getPlatformAuthToken?(): string | null;
|
|
29
30
|
runtimeEventStore?: RuntimeEventStore;
|
|
@@ -42,6 +43,7 @@ export interface CreateSdkNativeHeadlessRunnerOptions {
|
|
|
42
43
|
onSurfaceError?(error: unknown, channel: string): void;
|
|
43
44
|
executionEnvironment?: AgentCommandExecutionEnvironment;
|
|
44
45
|
}
|
|
46
|
+
import { type SdkExecutionSettlementRegistry } from '@xenosystem/agent-interface-host/node';
|
|
45
47
|
export declare function createSdkNativeHeadlessRunner(options: CreateSdkNativeHeadlessRunnerOptions): SdkNativeAgentRunner;
|
|
46
48
|
export type { SdkNativeAgentRunInput };
|
|
47
49
|
//# sourceMappingURL=sdkNativeHeadlessRunner.d.ts.map
|
|
@@ -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,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,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,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,CAoGtB;AAiCD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { createHeadlessAgentSurface } from './headlessAgentSurface.js';
|
|
2
2
|
import { answerSdkAskUser, denySdkAccess, injectContextIntoActiveRun, onPermissionWaitChange, runSdkAgent } from './sdkAgent.js';
|
|
3
|
+
import { sdkExecutionSettlements } from '@xenosystem/agent-interface-host/node';
|
|
3
4
|
export function createSdkNativeHeadlessRunner(options) {
|
|
5
|
+
const registry = options.settlementRegistry ?? sdkExecutionSettlements;
|
|
4
6
|
return {
|
|
7
|
+
confirmExecutionSettlement: input => registry.confirm(input),
|
|
8
|
+
releaseExecutionAuthority: input => registry.release(input),
|
|
9
|
+
cancel: (requestId, conversationId) => registry.cancel({ requestId, conversationId }),
|
|
5
10
|
/**
|
|
6
11
|
* XENO SPAWN §2.2 pin-forward — and this lane had NONE of it.
|
|
7
12
|
*
|
|
@@ -46,6 +51,7 @@ export function createSdkNativeHeadlessRunner(options) {
|
|
|
46
51
|
});
|
|
47
52
|
try {
|
|
48
53
|
await runSdkAgent({
|
|
54
|
+
settlementRegistry: registry,
|
|
49
55
|
requestId: input.requestId,
|
|
50
56
|
conversationId: input.conversationId,
|
|
51
57
|
...(input.sdkSessionId ? { sdkSessionId: input.sdkSessionId } : {}),
|
|
@@ -59,12 +65,15 @@ export function createSdkNativeHeadlessRunner(options) {
|
|
|
59
65
|
...(input.systemPrompt ? { systemPrompt: input.systemPrompt } : {}),
|
|
60
66
|
maxIterations: input.maxIterations,
|
|
61
67
|
enableThinking: input.enableThinking,
|
|
68
|
+
...(input.reasoningEffort ? { reasoningEffort: input.reasoningEffort } : {}),
|
|
62
69
|
getAuthToken: options.getAuthToken,
|
|
63
70
|
...(options.getPlatformAuthToken
|
|
64
71
|
? { getPlatformAuthToken: options.getPlatformAuthToken }
|
|
65
72
|
: {}),
|
|
66
73
|
mainWindow: surface,
|
|
67
74
|
signal: context.signal,
|
|
75
|
+
...(context.workspaceEnvironment ? { workspaceEnvironment: context.workspaceEnvironment } : {}),
|
|
76
|
+
...(context.prepareRuntimeEventForPersistence ? { prepareRuntimeEventForPersistence: context.prepareRuntimeEventForPersistence } : {}),
|
|
68
77
|
...(input.capabilities
|
|
69
78
|
? { capabilities: input.capabilities }
|
|
70
79
|
: {}),
|
|
@@ -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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"}
|
|
@@ -2,7 +2,9 @@ import type { BrowserWindow } from 'electron';
|
|
|
2
2
|
import type { RuntimeEventStore } from '@xenosystem/agent-interface-host/node';
|
|
3
3
|
import type { SdkNativeAgentRunInput, SdkNativeAgentRunner } from '@xenosystem/agent-interface-host/node';
|
|
4
4
|
import type { AgentCommandExecutionEnvironment } from './sdkAgent.js';
|
|
5
|
+
import { type SdkExecutionSettlementRegistry } from '@xenosystem/agent-interface-host/node';
|
|
5
6
|
export interface CreateSdkNativeElectronRunnerOptions {
|
|
7
|
+
settlementRegistry?: SdkExecutionSettlementRegistry;
|
|
6
8
|
getAuthToken(): string | null;
|
|
7
9
|
getPlatformAuthToken?(): string | null;
|
|
8
10
|
createRuntimeWindow(input: SdkNativeAgentRunInput): BrowserWindow;
|
|
@@ -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;
|
|
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,CAuFtB"}
|
package/dist/sdkNativeRunner.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { app } from 'electron';
|
|
2
2
|
import { injectContextIntoActiveRun, onPermissionWaitChange, runSdkAgent } from './sdkAgent.js';
|
|
3
|
+
import { sdkExecutionSettlements } from '@xenosystem/agent-interface-host/node';
|
|
3
4
|
export function createSdkNativeElectronRunner(options) {
|
|
5
|
+
const registry = options.settlementRegistry ?? sdkExecutionSettlements;
|
|
4
6
|
return {
|
|
7
|
+
confirmExecutionSettlement: input => registry.confirm(input),
|
|
8
|
+
releaseExecutionAuthority: input => registry.release(input),
|
|
9
|
+
cancel: (requestId, conversationId) => registry.cancel({ requestId, conversationId }),
|
|
5
10
|
/**
|
|
6
11
|
* XENO SPAWN §2.2 pin-forward, mid-turn (see `activeAgentLoops` in sdkAgent.ts for why this
|
|
7
12
|
* lane cannot serve the between-turns case). `undefined` means no run is in flight; the
|
|
@@ -31,6 +36,7 @@ export function createSdkNativeElectronRunner(options) {
|
|
|
31
36
|
: undefined;
|
|
32
37
|
try {
|
|
33
38
|
await runSdkAgent({
|
|
39
|
+
settlementRegistry: registry,
|
|
34
40
|
requestId: input.requestId,
|
|
35
41
|
conversationId: input.conversationId,
|
|
36
42
|
...(input.hostBinding ? { hostBinding: structuredClone(input.hostBinding) } : {}),
|
|
@@ -45,12 +51,14 @@ export function createSdkNativeElectronRunner(options) {
|
|
|
45
51
|
...(input.systemPrompt ? { systemPrompt: input.systemPrompt } : {}),
|
|
46
52
|
maxIterations: input.maxIterations,
|
|
47
53
|
enableThinking: input.enableThinking,
|
|
54
|
+
...(input.reasoningEffort ? { reasoningEffort: input.reasoningEffort } : {}),
|
|
48
55
|
getAuthToken: options.getAuthToken,
|
|
49
56
|
...(options.getPlatformAuthToken
|
|
50
57
|
? { getPlatformAuthToken: options.getPlatformAuthToken }
|
|
51
58
|
: {}),
|
|
52
59
|
mainWindow: electronSurface(options.createRuntimeWindow(input)),
|
|
53
60
|
signal: context.signal,
|
|
61
|
+
...(context.workspaceEnvironment ? { workspaceEnvironment: context.workspaceEnvironment } : {}),
|
|
54
62
|
// The Electron lane knows this and the loop must not: `app.isPackaged` is the fact that
|
|
55
63
|
// forbids `debug-bypass` in a packaged build. Passed here so behaviour is byte-identical
|
|
56
64
|
// to the previous inline read, while the loop's own default stays restrictive for hosts
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"sdkNativeRunner.js","sourceRoot":"","sources":["../src/sdkNativeRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkReasoning.d.ts","sourceRoot":"","sources":["../src/sdkReasoning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,CAIjH"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function requireSdkReasoningEffort(value, supported) {
|
|
2
|
+
const effort = supported.find((entry) => entry === value);
|
|
3
|
+
if (!effort)
|
|
4
|
+
throw new Error('The SDK runtime does not support the advertised reasoning effort value.');
|
|
5
|
+
return effort;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=sdkReasoning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkReasoning.js","sourceRoot":"","sources":["../src/sdkReasoning.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CAAC,KAAa,EAAE,SAAsC;IAC7F,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;IACvG,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface SdkSessionAuthoritySnapshot {
|
|
2
|
+
sessionListRevision: number;
|
|
3
|
+
attachments: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
/** Durable per-user session mutation CAS. SDK session bytes remain owned by
|
|
6
|
+
* SessionRegistry; this record owns only attachment identity and list epochs. */
|
|
7
|
+
export declare class SdkSessionMutationAuthority {
|
|
8
|
+
private readonly path;
|
|
9
|
+
constructor(root: string);
|
|
10
|
+
private read;
|
|
11
|
+
private write;
|
|
12
|
+
private enqueue;
|
|
13
|
+
snapshot(): Promise<SdkSessionAuthoritySnapshot>;
|
|
14
|
+
observeSessionList(sessionFingerprint: string): Promise<SdkSessionAuthoritySnapshot>;
|
|
15
|
+
recordAttachment(conversationId: string, sessionId: string, validate?: () => void | Promise<void>): Promise<SdkSessionAuthoritySnapshot>;
|
|
16
|
+
establishAttachment<T>(conversationId: string, operation: () => Promise<{
|
|
17
|
+
sessionId: string;
|
|
18
|
+
value: T;
|
|
19
|
+
}>, validate?: (sessionId: string) => void | Promise<void>, dispose?: (value: T) => void | Promise<void>): Promise<{
|
|
20
|
+
value: T;
|
|
21
|
+
snapshot: SdkSessionAuthoritySnapshot;
|
|
22
|
+
}>;
|
|
23
|
+
recordDetachment(conversationId: string): Promise<SdkSessionAuthoritySnapshot>;
|
|
24
|
+
mutate(expectedRevision: number | undefined, readSessionFingerprint: () => string | Promise<string>, validate: (snapshot: SdkSessionAuthoritySnapshot) => void | Promise<void>, operation: () => Promise<void>): Promise<SdkSessionAuthoritySnapshot>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sdkSessionMutationAuthority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkSessionMutationAuthority.d.ts","sourceRoot":"","sources":["../src/sdkSessionMutationAuthority.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,2BAA2B;IAAG,mBAAmB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAEjH;iFACiF;AACjF,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBACjB,IAAI,EAAE,MAAM;IACxB,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,OAAO;IAOf,QAAQ,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAGhD,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAcpF,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAmB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAYzJ,mBAAmB,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,EAAE,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAmB,EAAE,OAAO,GAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAmB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,2BAA2B,CAAA;KAAE,CAAC;IAqB/S,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAW9E,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,sBAAsB,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,2BAA2B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,2BAA2B,CAAC;CA8BtP"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
const queues = new Map();
|
|
5
|
+
const empty = () => ({ version: 1, revision: 0, attachments: {} });
|
|
6
|
+
/** Durable per-user session mutation CAS. SDK session bytes remain owned by
|
|
7
|
+
* SessionRegistry; this record owns only attachment identity and list epochs. */
|
|
8
|
+
export class SdkSessionMutationAuthority {
|
|
9
|
+
path;
|
|
10
|
+
constructor(root) { this.path = join(resolve(root), 'session-mutation-authority.json'); }
|
|
11
|
+
read() {
|
|
12
|
+
if (!existsSync(this.path))
|
|
13
|
+
return empty();
|
|
14
|
+
const value = JSON.parse(readFileSync(this.path, 'utf8'));
|
|
15
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
16
|
+
throw new Error('SDK session authority record is invalid.');
|
|
17
|
+
const row = value;
|
|
18
|
+
if (row.version !== 1 || !Number.isSafeInteger(row.revision) || (row.revision ?? -1) < 0 || !row.attachments || typeof row.attachments !== 'object' || Array.isArray(row.attachments)
|
|
19
|
+
|| (row.sessionFingerprint !== undefined && !/^[a-f0-9]{64}$/.test(row.sessionFingerprint))
|
|
20
|
+
|| Object.entries(row.attachments).some(([conversationId, sessionId]) => !conversationId || typeof sessionId !== 'string' || !sessionId)) {
|
|
21
|
+
throw new Error('SDK session authority record is invalid.');
|
|
22
|
+
}
|
|
23
|
+
return { version: 1, revision: row.revision, attachments: { ...row.attachments }, ...(row.sessionFingerprint ? { sessionFingerprint: row.sessionFingerprint } : {}) };
|
|
24
|
+
}
|
|
25
|
+
write(state) {
|
|
26
|
+
const directory = dirname(this.path);
|
|
27
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
28
|
+
const temporary = `${this.path}.${randomUUID()}.tmp`;
|
|
29
|
+
writeFileSync(temporary, JSON.stringify(state), { flag: 'wx', mode: 0o600 });
|
|
30
|
+
const file = openSync(temporary, 'r+');
|
|
31
|
+
try {
|
|
32
|
+
fsyncSync(file);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
closeSync(file);
|
|
36
|
+
}
|
|
37
|
+
renameSync(temporary, this.path);
|
|
38
|
+
if (process.platform !== 'win32') {
|
|
39
|
+
const parent = openSync(directory, 'r');
|
|
40
|
+
try {
|
|
41
|
+
fsyncSync(parent);
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
closeSync(parent);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
enqueue(operation) {
|
|
49
|
+
const key = this.path.toLowerCase(), previous = queues.get(key) ?? Promise.resolve();
|
|
50
|
+
const result = previous.catch(() => undefined).then(operation);
|
|
51
|
+
queues.set(key, result);
|
|
52
|
+
void result.finally(() => { if (queues.get(key) === result)
|
|
53
|
+
queues.delete(key); }).catch(() => undefined);
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
snapshot() {
|
|
57
|
+
return this.enqueue(async () => { const state = this.read(); return { sessionListRevision: state.revision, attachments: { ...state.attachments } }; });
|
|
58
|
+
}
|
|
59
|
+
observeSessionList(sessionFingerprint) {
|
|
60
|
+
return this.enqueue(async () => {
|
|
61
|
+
const state = this.read();
|
|
62
|
+
if (!/^[a-f0-9]{64}$/.test(sessionFingerprint))
|
|
63
|
+
throw new Error('SDK session fingerprint is invalid.');
|
|
64
|
+
if (state.sessionFingerprint === sessionFingerprint)
|
|
65
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
66
|
+
if (state.sessionFingerprint !== undefined) {
|
|
67
|
+
if (state.revision === Number.MAX_SAFE_INTEGER)
|
|
68
|
+
throw new Error('SDK session authority revision capacity reached.');
|
|
69
|
+
state.revision++;
|
|
70
|
+
}
|
|
71
|
+
state.sessionFingerprint = sessionFingerprint;
|
|
72
|
+
this.write(state);
|
|
73
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
recordAttachment(conversationId, sessionId, validate = () => undefined) {
|
|
77
|
+
return this.enqueue(async () => {
|
|
78
|
+
const state = this.read();
|
|
79
|
+
await validate();
|
|
80
|
+
if (state.attachments[conversationId] === sessionId)
|
|
81
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
82
|
+
if (state.revision === Number.MAX_SAFE_INTEGER)
|
|
83
|
+
throw new Error('SDK session authority revision capacity reached.');
|
|
84
|
+
state.attachments[conversationId] = sessionId;
|
|
85
|
+
state.revision++;
|
|
86
|
+
this.write(state);
|
|
87
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
establishAttachment(conversationId, operation, validate = () => undefined, dispose = () => undefined) {
|
|
91
|
+
return this.enqueue(async () => {
|
|
92
|
+
const state = this.read();
|
|
93
|
+
let established;
|
|
94
|
+
try {
|
|
95
|
+
established = await operation();
|
|
96
|
+
if (!established.sessionId)
|
|
97
|
+
throw new Error('SDK session attachment did not provide a session ID.');
|
|
98
|
+
await validate(established.sessionId);
|
|
99
|
+
if (state.attachments[conversationId] !== established.sessionId) {
|
|
100
|
+
if (state.revision === Number.MAX_SAFE_INTEGER)
|
|
101
|
+
throw new Error('SDK session authority revision capacity reached.');
|
|
102
|
+
state.attachments[conversationId] = established.sessionId;
|
|
103
|
+
state.revision++;
|
|
104
|
+
this.write(state);
|
|
105
|
+
}
|
|
106
|
+
return { value: established.value, snapshot: { sessionListRevision: state.revision, attachments: { ...state.attachments } } };
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
if (established)
|
|
110
|
+
await dispose(established.value);
|
|
111
|
+
throw err;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
recordDetachment(conversationId) {
|
|
116
|
+
return this.enqueue(async () => {
|
|
117
|
+
const state = this.read();
|
|
118
|
+
if (!(conversationId in state.attachments))
|
|
119
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
120
|
+
if (state.revision === Number.MAX_SAFE_INTEGER)
|
|
121
|
+
throw new Error('SDK session authority revision capacity reached.');
|
|
122
|
+
delete state.attachments[conversationId];
|
|
123
|
+
state.revision++;
|
|
124
|
+
this.write(state);
|
|
125
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
mutate(expectedRevision, readSessionFingerprint, validate, operation) {
|
|
129
|
+
return this.enqueue(async () => {
|
|
130
|
+
const state = this.read();
|
|
131
|
+
const observedFingerprint = await readSessionFingerprint();
|
|
132
|
+
if (!/^[a-f0-9]{64}$/.test(observedFingerprint))
|
|
133
|
+
throw new Error('SDK session fingerprint is invalid.');
|
|
134
|
+
if (state.sessionFingerprint === undefined) {
|
|
135
|
+
state.sessionFingerprint = observedFingerprint;
|
|
136
|
+
this.write(state);
|
|
137
|
+
}
|
|
138
|
+
else if (state.sessionFingerprint !== observedFingerprint) {
|
|
139
|
+
if (state.revision === Number.MAX_SAFE_INTEGER)
|
|
140
|
+
throw new Error('SDK session authority revision capacity reached.');
|
|
141
|
+
state.sessionFingerprint = observedFingerprint;
|
|
142
|
+
state.revision++;
|
|
143
|
+
this.write(state);
|
|
144
|
+
throw new Error(`SDK_SESSION_REVISION_CONFLICT: session registry changed; current ${state.revision}. Reload SDK sessions.`);
|
|
145
|
+
}
|
|
146
|
+
if (!Number.isSafeInteger(expectedRevision) || state.revision !== expectedRevision)
|
|
147
|
+
throw new Error(`SDK_SESSION_REVISION_CONFLICT: expected ${String(expectedRevision)}, current ${state.revision}. Reload SDK sessions.`);
|
|
148
|
+
await validate({ sessionListRevision: state.revision, attachments: { ...state.attachments } });
|
|
149
|
+
if (state.revision === Number.MAX_SAFE_INTEGER)
|
|
150
|
+
throw new Error('SDK session authority revision capacity reached.');
|
|
151
|
+
// Fence the admitted mutation durably before touching SessionRegistry.
|
|
152
|
+
// A crash or partial SDK operation may consume an epoch, but can never
|
|
153
|
+
// leave the caller's old destructive capability reusable.
|
|
154
|
+
state.revision++;
|
|
155
|
+
this.write(state);
|
|
156
|
+
await operation();
|
|
157
|
+
state.sessionFingerprint = await readSessionFingerprint();
|
|
158
|
+
if (!/^[a-f0-9]{64}$/.test(state.sessionFingerprint))
|
|
159
|
+
throw new Error('SDK session fingerprint is invalid.');
|
|
160
|
+
this.write(state);
|
|
161
|
+
return { sessionListRevision: state.revision, attachments: { ...state.attachments } };
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=sdkSessionMutationAuthority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkSessionMutationAuthority.js","sourceRoot":"","sources":["../src/sdkSessionMutationAuthority.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentSandboxCapabilities } from '@xenosystem/agent-interface-host/node';
|
|
2
|
+
export declare function deniedCategoryToolNames(capabilities: AgentSandboxCapabilities): Set<string>;
|
|
3
|
+
/** Also reapply after dynamic registration: a late MCP/host registration may not restore a denied alias. */
|
|
4
|
+
export declare function enforceToolCategoryPolicy(registry: {
|
|
5
|
+
listNames(): string[];
|
|
6
|
+
unregister(name: string): boolean;
|
|
7
|
+
onChange(listener: () => void): () => void;
|
|
8
|
+
}, capabilities: AgentSandboxCapabilities): () => void;
|
|
9
|
+
//# sourceMappingURL=toolCategoryPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolCategoryPolicy.d.ts","sourceRoot":"","sources":["../src/toolCategoryPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAerF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,wBAAwB,GAAG,GAAG,CAAC,MAAM,CAAC,CAE3F;AAED,4GAA4G;AAC5G,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAAE,SAAS,IAAI,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAAE,EAAE,YAAY,EAAE,wBAAwB,GAAG,MAAM,IAAI,CAWhN"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// These are actual tool definitions/aliases in the SDK and host registry, not UI labels.
|
|
2
|
+
const TOOLS = {
|
|
3
|
+
terminal: ['Bash', 'TaskInput', 'TaskOutput', 'TaskStop', 'TerminalList', 'TerminalReadOutput', 'TerminalWriteInput'],
|
|
4
|
+
fileRead: ['Read', 'View', 'Glob', 'GlobTool', 'Grep', 'GrepTool', 'LS', 'ReadImage', 'NotebookRead', 'ReadNotebook', 'MemoryRead', 'SqliteAnalyze', 'SQLiteAnalyze', 'GcodeAnalyze', 'ElfAnalyze', 'GitStatus', 'GitDiff', 'GitLog', 'LspDefinition', 'LspDiagnostics', 'LspHover', 'LspReferences'],
|
|
5
|
+
fileWrite: ['Write', 'WriteFiles', 'Edit', 'Replace', 'NotebookEdit', 'NotebookEditCell', 'MemoryWrite', 'GitCommit', 'GitBranch'],
|
|
6
|
+
appLaunch: ['OpenApp'],
|
|
7
|
+
webSearch: ['WebSearch', 'WebFetch'],
|
|
8
|
+
// A general-purpose shell can execute code too. Denying code execution must deny that route.
|
|
9
|
+
codeExecution: ['Bash', 'TaskInput', 'TerminalWriteInput'],
|
|
10
|
+
imageGeneration: ['GenerateImage'],
|
|
11
|
+
dataAnalysis: ['SqliteAnalyze', 'SQLiteAnalyze', 'GcodeAnalyze', 'ElfAnalyze', 'ArtifactCompare'],
|
|
12
|
+
};
|
|
13
|
+
export function deniedCategoryToolNames(capabilities) {
|
|
14
|
+
return new Set(Object.keys(TOOLS).flatMap((key) => capabilities[key] === false ? [...TOOLS[key]] : []));
|
|
15
|
+
}
|
|
16
|
+
/** Also reapply after dynamic registration: a late MCP/host registration may not restore a denied alias. */
|
|
17
|
+
export function enforceToolCategoryPolicy(registry, capabilities) {
|
|
18
|
+
const denied = deniedCategoryToolNames(capabilities);
|
|
19
|
+
let applying = false;
|
|
20
|
+
const apply = () => {
|
|
21
|
+
if (applying)
|
|
22
|
+
return;
|
|
23
|
+
applying = true;
|
|
24
|
+
try {
|
|
25
|
+
for (const name of registry.listNames())
|
|
26
|
+
if (denied.has(name))
|
|
27
|
+
registry.unregister(name);
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
applying = false;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
apply();
|
|
34
|
+
return registry.onChange(apply);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=toolCategoryPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolCategoryPolicy.js","sourceRoot":"","sources":["../src/toolCategoryPolicy.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,KAAK,GAAG;IACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;IACrH,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,CAAC;IACrS,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;IAClI,SAAS,EAAE,CAAC,SAAS,CAAC;IACtB,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IACpC,6FAA6F;IAC7F,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,CAAC;IAC1D,eAAe,EAAE,CAAC,eAAe,CAAC;IAClC,YAAY,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,CAAC;CACrB,CAAA;AAE9E,MAAM,UAAU,uBAAuB,CAAC,YAAsC;IAC5E,OAAO,IAAI,GAAG,CAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAA+B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACxI,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,yBAAyB,CAAC,QAAkH,EAAE,YAAsC;IAClM,MAAM,MAAM,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAA;IACpD,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,QAAQ;YAAE,OAAM;QACpB,QAAQ,GAAG,IAAI,CAAA;QACf,IAAI,CAAC;YAAC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE;gBAAE,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;gBACxF,CAAC;YAAC,QAAQ,GAAG,KAAK,CAAA;QAAC,CAAC;IAC9B,CAAC,CAAA;IACD,KAAK,EAAE,CAAA;IACP,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Redacts before tool results return to the model, including late-registered tools. */
|
|
2
|
+
export declare function protectWorkspaceToolResults(registry: {
|
|
3
|
+
listNames(): string[];
|
|
4
|
+
get(name: string): unknown;
|
|
5
|
+
onChange(listener: () => void): () => void;
|
|
6
|
+
}, redact: (value: Record<string, unknown>) => Record<string, unknown>): () => void;
|
|
7
|
+
//# sourceMappingURL=workspaceEnvironmentTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceEnvironmentTools.d.ts","sourceRoot":"","sources":["../src/workspaceEnvironmentTools.ts"],"names":[],"mappings":"AACA,wFAAwF;AACxF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE;IAAE,SAAS,IAAI,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAexO"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Redacts before tool results return to the model, including late-registered tools. */
|
|
2
|
+
export function protectWorkspaceToolResults(registry, redact) {
|
|
3
|
+
const wrapped = new WeakSet();
|
|
4
|
+
const apply = () => {
|
|
5
|
+
for (const name of registry.listNames()) {
|
|
6
|
+
const tool = registry.get(name);
|
|
7
|
+
if (!tool || typeof tool.execute !== 'function' || wrapped.has(tool))
|
|
8
|
+
continue;
|
|
9
|
+
const execute = tool.execute.bind(tool);
|
|
10
|
+
tool.execute = async (...args) => {
|
|
11
|
+
try {
|
|
12
|
+
return redact({ result: await execute(...args) }).result;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error('Tool execution failed; private environment details were suppressed.');
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
wrapped.add(tool);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
apply();
|
|
22
|
+
return registry.onChange(apply);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=workspaceEnvironmentTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceEnvironmentTools.js","sourceRoot":"","sources":["../src/workspaceEnvironmentTools.ts"],"names":[],"mappings":"AACA,wFAAwF;AACxF,MAAM,UAAU,2BAA2B,CAAC,QAA2G,EAAE,MAAmE;IAC1N,MAAM,OAAO,GAAG,IAAI,OAAO,EAAU,CAAA;IACrC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAqB,CAAA;YACnD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAQ;YAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACvC,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBAAC,OAAO,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAA;gBAAC,CAAC;gBAChE,MAAM,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;gBAAC,CAAC;YAClG,CAAC,CAAA;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IACD,KAAK,EAAE,CAAC;IAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC1C,CAAC"}
|
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.26",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@xenosystem/agent-sdk": "0.9.25",
|
|
31
31
|
"@xenosystem/web-context-client": "0.1.1",
|
|
32
|
-
"@xenosystem/agent-interface-host": "0.1.
|
|
32
|
+
"@xenosystem/agent-interface-host": "0.1.26"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"electron": ">=44"
|