@xenosystem/agent-interface-electron-host 0.1.3
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/LICENSE +67 -0
- package/dist/headless.d.ts +26 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +26 -0
- package/dist/headless.js.map +1 -0
- package/dist/headlessAgentSurface.d.ts +97 -0
- package/dist/headlessAgentSurface.d.ts.map +1 -0
- package/dist/headlessAgentSurface.js +80 -0
- package/dist/headlessAgentSurface.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/permissionIpc.d.ts +38 -0
- package/dist/permissionIpc.d.ts.map +1 -0
- package/dist/permissionIpc.js +101 -0
- package/dist/permissionIpc.js.map +1 -0
- package/dist/sdkAgent.d.ts +232 -0
- package/dist/sdkAgent.d.ts.map +1 -0
- package/dist/sdkAgent.js +5268 -0
- package/dist/sdkAgent.js.map +1 -0
- package/dist/sdkAgentSurface.d.ts +45 -0
- package/dist/sdkAgentSurface.d.ts.map +1 -0
- package/dist/sdkAgentSurface.js +2 -0
- package/dist/sdkAgentSurface.js.map +1 -0
- package/dist/sdkNativeHeadlessRunner.d.ts +45 -0
- package/dist/sdkNativeHeadlessRunner.d.ts.map +1 -0
- package/dist/sdkNativeHeadlessRunner.js +101 -0
- package/dist/sdkNativeHeadlessRunner.js.map +1 -0
- package/dist/sdkNativeRunner.d.ts +11 -0
- package/dist/sdkNativeRunner.d.ts.map +1 -0
- package/dist/sdkNativeRunner.js +93 -0
- package/dist/sdkNativeRunner.js.map +1 -0
- package/dist/surfaceRuntimeBridge.d.ts +59 -0
- package/dist/surfaceRuntimeBridge.d.ts.map +1 -0
- package/dist/surfaceRuntimeBridge.js +64 -0
- package/dist/surfaceRuntimeBridge.js.map +1 -0
- package/dist/workspaceStateBridge.d.ts +18 -0
- package/dist/workspaceStateBridge.d.ts.map +1 -0
- package/dist/workspaceStateBridge.js +22 -0
- package/dist/workspaceStateBridge.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Agent Bridge
|
|
3
|
+
*
|
|
4
|
+
* Wraps the xeno-agent-sdk's AgentLoop for use in the Hub's main process.
|
|
5
|
+
* Replaces the custom agentLoop.ts + hubTools.ts with the SDK's production-grade
|
|
6
|
+
* agentic loop, tool registry, and permission engine.
|
|
7
|
+
*
|
|
8
|
+
* Hub-specific tools (web_search, open_app) are registered alongside the SDK's
|
|
9
|
+
* built-in tools (Read, Write, Edit, Glob, Grep, Bash).
|
|
10
|
+
*/
|
|
11
|
+
import { type PermissionWaitListener } from '@xenosystem/agent-interface-host';
|
|
12
|
+
export type { SdkAgentSurface } from './sdkAgentSurface.js';
|
|
13
|
+
import type { SdkAgentSurface } from './sdkAgentSurface.js';
|
|
14
|
+
import { type AgentPermissionProfileName, type AgentSandboxCapabilities, type RuntimeEventEnvelope, type RuntimeEventStore } from '@xenosystem/agent-interface-host/node';
|
|
15
|
+
interface ToolDefinitionLocal {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
input_schema: {
|
|
19
|
+
type: 'object';
|
|
20
|
+
properties: Record<string, unknown>;
|
|
21
|
+
required?: string[];
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
interface ToolResultLocal {
|
|
25
|
+
success: boolean;
|
|
26
|
+
output: string;
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function onPermissionWaitChange(listener: PermissionWaitListener): () => void;
|
|
30
|
+
type SurfaceApprovalAction = 'TerminalWriteInput' | 'BrowserGoto' | 'BrowserClick' | 'BrowserType' | 'BrowserKey';
|
|
31
|
+
export interface SurfaceApprovalRule {
|
|
32
|
+
id?: string;
|
|
33
|
+
surface: 'terminal' | 'browser';
|
|
34
|
+
action: SurfaceApprovalAction;
|
|
35
|
+
matcher: string;
|
|
36
|
+
command?: string;
|
|
37
|
+
browserOrigin?: string;
|
|
38
|
+
urlPattern?: string;
|
|
39
|
+
selector?: string;
|
|
40
|
+
key?: string;
|
|
41
|
+
label?: string;
|
|
42
|
+
createdAt?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function logAgentDebug(message: string, meta?: Record<string, unknown>): void;
|
|
45
|
+
export type { AgentPermissionProfileName, AgentSandboxCapabilities, } from '@xenosystem/agent-interface-host/node';
|
|
46
|
+
export interface SdkAgentRunOptions {
|
|
47
|
+
requestId: string;
|
|
48
|
+
conversationId?: string;
|
|
49
|
+
sdkSessionId?: string;
|
|
50
|
+
subagentRunId?: string;
|
|
51
|
+
workspaceId?: string;
|
|
52
|
+
teamId?: string;
|
|
53
|
+
agentId?: string;
|
|
54
|
+
model: string;
|
|
55
|
+
messages: Array<{
|
|
56
|
+
role: string;
|
|
57
|
+
content: string;
|
|
58
|
+
}>;
|
|
59
|
+
systemPrompt?: string;
|
|
60
|
+
maxIterations?: number;
|
|
61
|
+
enableThinking?: boolean;
|
|
62
|
+
getAuthToken: () => string | null;
|
|
63
|
+
getPlatformAuthToken?: () => string | null;
|
|
64
|
+
mainWindow: SdkAgentSurface;
|
|
65
|
+
signal: AbortSignal;
|
|
66
|
+
capabilities?: AgentSandboxCapabilities;
|
|
67
|
+
permissionProfile?: AgentPermissionProfileName;
|
|
68
|
+
allowedDirectories?: string[];
|
|
69
|
+
approvalRules?: Array<Record<string, unknown>> | SurfaceApprovalRule[];
|
|
70
|
+
/** Chat-only compatibility escape hatch. Engineering host adapters always set this false. */
|
|
71
|
+
allowTextOnlyFallback?: boolean;
|
|
72
|
+
/** When `'disabled'`, every tool is unregistered before the model is asked anything. */
|
|
73
|
+
toolExecution?: 'enabled' | 'disabled';
|
|
74
|
+
/** Receives the exact envelope after the host-owned runtime store commits it. */
|
|
75
|
+
onPersistedRuntimeEvent?: (event: RuntimeEventEnvelope) => void;
|
|
76
|
+
/** Host-owned journal used for this surface; defaults to the legacy per-user store for compatibility. */
|
|
77
|
+
runtimeEventStore?: RuntimeEventStore;
|
|
78
|
+
/**
|
|
79
|
+
* Coordination tools — ADE §5.2b — already built and already RUN-SCOPED.
|
|
80
|
+
*
|
|
81
|
+
* 🔴 Arrives finished. The host binds the caller's run id before these ever
|
|
82
|
+
* reach this process, so nothing here can address a coordination call as
|
|
83
|
+
* another run — there is no parameter through which to try. Absent means the
|
|
84
|
+
* host has no coordination mounted, and the agent correctly sees no such
|
|
85
|
+
* tools rather than tools that answer "unavailable".
|
|
86
|
+
*/
|
|
87
|
+
coordinationTools?: Array<{
|
|
88
|
+
definition: ToolDefinitionLocal;
|
|
89
|
+
execute: (input: Record<string, unknown>) => Promise<ToolResultLocal>;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Whether this process is a production build.
|
|
93
|
+
*
|
|
94
|
+
* Supplied by the composition because the answer is a fact about the HOST, not about the loop:
|
|
95
|
+
* Electron knows it as `app.isPackaged`, and a headless host has no such notion. Absent
|
|
96
|
+
* resolves to `true` — see the note at the use site; the permissive value is the one that
|
|
97
|
+
* unlocks `debug-bypass`, so it must never be reached by default.
|
|
98
|
+
*/
|
|
99
|
+
isProduction?: boolean;
|
|
100
|
+
}
|
|
101
|
+
export declare function runSdkAgent(options: SdkAgentRunOptions): Promise<void>;
|
|
102
|
+
export declare function grantSdkAccess(params: unknown): {
|
|
103
|
+
success: boolean;
|
|
104
|
+
error?: string;
|
|
105
|
+
};
|
|
106
|
+
export declare function denySdkAccess(params: unknown): {
|
|
107
|
+
success: boolean;
|
|
108
|
+
error?: string;
|
|
109
|
+
};
|
|
110
|
+
export declare function answerSdkAskUser(params: unknown): {
|
|
111
|
+
success: boolean;
|
|
112
|
+
error?: string;
|
|
113
|
+
};
|
|
114
|
+
export declare function createSdkNativeInteractionService(): {
|
|
115
|
+
answerPermission(params: {
|
|
116
|
+
permissionId: string;
|
|
117
|
+
granted: boolean;
|
|
118
|
+
directory?: string;
|
|
119
|
+
}): {
|
|
120
|
+
success: boolean;
|
|
121
|
+
error?: string;
|
|
122
|
+
};
|
|
123
|
+
answerAskUser(params: {
|
|
124
|
+
askUserId: string;
|
|
125
|
+
answer: string;
|
|
126
|
+
selectedOption?: string;
|
|
127
|
+
cancelled?: boolean;
|
|
128
|
+
}): {
|
|
129
|
+
success: boolean;
|
|
130
|
+
error?: string;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
export interface SdkNativeControlService {
|
|
134
|
+
listSessions(params?: {
|
|
135
|
+
role?: string;
|
|
136
|
+
workingDirectory?: string;
|
|
137
|
+
limit?: number;
|
|
138
|
+
}): Promise<{
|
|
139
|
+
success: boolean;
|
|
140
|
+
sessions?: unknown[];
|
|
141
|
+
error?: string;
|
|
142
|
+
}>;
|
|
143
|
+
showSession(params: {
|
|
144
|
+
sessionId: string;
|
|
145
|
+
}): Promise<{
|
|
146
|
+
success: boolean;
|
|
147
|
+
session?: unknown;
|
|
148
|
+
sessionDir?: string;
|
|
149
|
+
checkpoints?: unknown[];
|
|
150
|
+
error?: string;
|
|
151
|
+
}>;
|
|
152
|
+
attachSession(params: {
|
|
153
|
+
conversationId: string;
|
|
154
|
+
sessionId: string;
|
|
155
|
+
}): Promise<{
|
|
156
|
+
success: boolean;
|
|
157
|
+
session?: unknown;
|
|
158
|
+
sessionDir?: string;
|
|
159
|
+
sessionHistoryPath?: string;
|
|
160
|
+
checkpoints?: unknown[];
|
|
161
|
+
error?: string;
|
|
162
|
+
}>;
|
|
163
|
+
detachSession(params: {
|
|
164
|
+
conversationId: string;
|
|
165
|
+
}): Promise<{
|
|
166
|
+
success: boolean;
|
|
167
|
+
error?: string;
|
|
168
|
+
}>;
|
|
169
|
+
deleteSession(params: {
|
|
170
|
+
sessionId: string;
|
|
171
|
+
}): Promise<{
|
|
172
|
+
success: boolean;
|
|
173
|
+
error?: string;
|
|
174
|
+
}>;
|
|
175
|
+
cleanSessions(params: {
|
|
176
|
+
workingDirectory: string;
|
|
177
|
+
excludeSessionIds?: string[];
|
|
178
|
+
}): Promise<{
|
|
179
|
+
success: boolean;
|
|
180
|
+
result?: unknown;
|
|
181
|
+
error?: string;
|
|
182
|
+
}>;
|
|
183
|
+
listCheckpoints(params: {
|
|
184
|
+
sessionId: string;
|
|
185
|
+
}): Promise<{
|
|
186
|
+
success: boolean;
|
|
187
|
+
checkpoints?: unknown[];
|
|
188
|
+
error?: string;
|
|
189
|
+
}>;
|
|
190
|
+
restoreCheckpoint(params: {
|
|
191
|
+
sessionId: string;
|
|
192
|
+
checkpointId: string;
|
|
193
|
+
conversationId?: string;
|
|
194
|
+
}): Promise<{
|
|
195
|
+
success: boolean;
|
|
196
|
+
restored?: unknown;
|
|
197
|
+
pendingRuntimeRestore?: boolean;
|
|
198
|
+
error?: string;
|
|
199
|
+
}>;
|
|
200
|
+
deleteCheckpoint(params: {
|
|
201
|
+
sessionId: string;
|
|
202
|
+
checkpointId: string;
|
|
203
|
+
}): Promise<{
|
|
204
|
+
success: boolean;
|
|
205
|
+
error?: string;
|
|
206
|
+
}>;
|
|
207
|
+
readTaskOutput(params: {
|
|
208
|
+
taskId: string;
|
|
209
|
+
offset?: number;
|
|
210
|
+
}): Promise<{
|
|
211
|
+
success: boolean;
|
|
212
|
+
output?: string;
|
|
213
|
+
error?: string;
|
|
214
|
+
command?: string;
|
|
215
|
+
status?: 'running' | 'completed' | 'failed' | 'stopped' | 'unknown';
|
|
216
|
+
exitCode?: number | null;
|
|
217
|
+
totalSize?: number;
|
|
218
|
+
}>;
|
|
219
|
+
stopTask(params: {
|
|
220
|
+
taskId: string;
|
|
221
|
+
}): Promise<{
|
|
222
|
+
success: boolean;
|
|
223
|
+
output?: string;
|
|
224
|
+
error?: string;
|
|
225
|
+
command?: string;
|
|
226
|
+
status?: 'running' | 'completed' | 'failed' | 'stopped' | 'unknown';
|
|
227
|
+
exitCode?: number | null;
|
|
228
|
+
totalSize?: number;
|
|
229
|
+
}>;
|
|
230
|
+
}
|
|
231
|
+
export declare function createSdkNativeControlService(): SdkNativeControlService;
|
|
232
|
+
//# sourceMappingURL=sdkAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdkAgent.d.ts","sourceRoot":"","sources":["../src/sdkAgent.ts"],"names":[],"mappings":"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"}
|