@xenosystem/agent-interface-electron-host 0.1.25 → 0.1.27

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.
Files changed (33) hide show
  1. package/dist/sdkAgent.d.ts +48 -10
  2. package/dist/sdkAgent.d.ts.map +1 -1
  3. package/dist/sdkAgent.js +175 -64
  4. package/dist/sdkAgent.js.map +1 -1
  5. package/dist/sdkExecutionSettlement.d.ts +27 -0
  6. package/dist/sdkExecutionSettlement.d.ts.map +1 -0
  7. package/dist/sdkExecutionSettlement.js +53 -0
  8. package/dist/sdkExecutionSettlement.js.map +1 -0
  9. package/dist/sdkNativeHeadlessRunner.d.ts +2 -0
  10. package/dist/sdkNativeHeadlessRunner.d.ts.map +1 -1
  11. package/dist/sdkNativeHeadlessRunner.js +9 -0
  12. package/dist/sdkNativeHeadlessRunner.js.map +1 -1
  13. package/dist/sdkNativeRunner.d.ts +2 -0
  14. package/dist/sdkNativeRunner.d.ts.map +1 -1
  15. package/dist/sdkNativeRunner.js +8 -0
  16. package/dist/sdkNativeRunner.js.map +1 -1
  17. package/dist/sdkReasoning.d.ts +3 -0
  18. package/dist/sdkReasoning.d.ts.map +1 -0
  19. package/dist/sdkReasoning.js +7 -0
  20. package/dist/sdkReasoning.js.map +1 -0
  21. package/dist/sdkSessionMutationAuthority.d.ts +26 -0
  22. package/dist/sdkSessionMutationAuthority.d.ts.map +1 -0
  23. package/dist/sdkSessionMutationAuthority.js +165 -0
  24. package/dist/sdkSessionMutationAuthority.js.map +1 -0
  25. package/dist/toolCategoryPolicy.d.ts +9 -0
  26. package/dist/toolCategoryPolicy.d.ts.map +1 -0
  27. package/dist/toolCategoryPolicy.js +36 -0
  28. package/dist/toolCategoryPolicy.js.map +1 -0
  29. package/dist/workspaceEnvironmentTools.d.ts +7 -0
  30. package/dist/workspaceEnvironmentTools.d.ts.map +1 -0
  31. package/dist/workspaceEnvironmentTools.js +24 -0
  32. package/dist/workspaceEnvironmentTools.js.map +1 -0
  33. package/package.json +2 -2
@@ -9,7 +9,8 @@
9
9
  * built-in tools (Read, Write, Edit, Glob, Grep, Bash).
10
10
  */
11
11
  import { type PermissionWaitListener } from '@xenosystem/agent-interface-host';
12
- import { type CommandExecutionResult } from '@xenosystem/agent-interface-host/node';
12
+ import { type CommandExecutionPort } from '@xenosystem/agent-interface-host/node';
13
+ import { type SdkExecutionSettlementRegistry } from '@xenosystem/agent-interface-host/node';
13
14
  export type { SdkAgentSurface } from './sdkAgentSurface.js';
14
15
  import type { SdkAgentSurface } from './sdkAgentSurface.js';
15
16
  import { type AgentPermissionProfileName, type AgentSandboxCapabilities, type RuntimeEventEnvelope, type RuntimeEventStore } from '@xenosystem/agent-interface-host/node';
@@ -58,6 +59,31 @@ export declare function injectContextIntoActiveRun(conversationId: string, input
58
59
  pendingCount: number;
59
60
  } | undefined>;
60
61
  export declare function logAgentDebug(message: string, meta?: Record<string, unknown>): void;
62
+ declare function loadSdk(): Promise<{
63
+ AgentLoop: typeof import("@xenosystem/agent-sdk")["AgentLoop"];
64
+ AGENT_EFFORT_LEVELS: typeof import("@xenosystem/agent-sdk")["AGENT_EFFORT_LEVELS"];
65
+ ToolRegistry: typeof import("@xenosystem/agent-sdk")["ToolRegistry"];
66
+ createDefaultToolRegistry: typeof import("@xenosystem/agent-sdk")["createDefaultToolRegistry"];
67
+ createWebContextRequestFactory: typeof import("@xenosystem/agent-sdk")["createWebContextRequestFactory"];
68
+ compileAgentProfile: typeof import("@xenosystem/agent-sdk")["compileAgentProfile"];
69
+ resolveBuiltInAgentProfile: typeof import("@xenosystem/agent-sdk")["resolveBuiltInAgentProfile"];
70
+ createXenoHostGovernedAutomationRuntime: typeof import("@xenosystem/agent-sdk")["createXenoHostGovernedAutomationRuntime"];
71
+ readXenoHostAutomationEnvironment: typeof import("@xenosystem/agent-sdk")["readXenoHostAutomationEnvironment"];
72
+ PermissionEngine: typeof import("@xenosystem/agent-sdk")["PermissionEngine"];
73
+ createAuditBackedPermissionEngine: typeof import("@xenosystem/agent-sdk")["createAuditBackedPermissionEngine"];
74
+ SessionManager: typeof import("@xenosystem/agent-sdk")["SessionManager"];
75
+ SessionRegistry: typeof import("@xenosystem/agent-sdk")["SessionRegistry"];
76
+ getAgentHome: typeof import("@xenosystem/agent-sdk")["getAgentHome"];
77
+ CheckpointManager: typeof import("@xenosystem/agent-sdk")["CheckpointManager"];
78
+ XenoRuntimeEventBus: typeof import("@xenosystem/agent-sdk")["XenoRuntimeEventBus"];
79
+ TurnDiffTracker: typeof import("@xenosystem/agent-sdk")["TurnDiffTracker"];
80
+ initializeSessionRuntime: typeof import("@xenosystem/agent-sdk")["initializeSessionRuntime"];
81
+ activateSessionRuntime: typeof import("@xenosystem/agent-sdk")["activateSessionRuntime"];
82
+ cleanupSessionRuntime: typeof import("@xenosystem/agent-sdk")["cleanupSessionRuntime"];
83
+ taskOutputTool: typeof import("@xenosystem/agent-sdk")["taskOutputTool"];
84
+ taskStopTool: typeof import("@xenosystem/agent-sdk")["taskStopTool"];
85
+ backgroundProcessManager: unknown;
86
+ }>;
61
87
  interface SdkGovernedAutomationModulePort {
62
88
  compileAgentProfile: typeof import('@xenosystem/agent-sdk')['compileAgentProfile'];
63
89
  resolveBuiltInAgentProfile: typeof import('@xenosystem/agent-sdk')['resolveBuiltInAgentProfile'];
@@ -81,6 +107,11 @@ export declare function registerSdkNativeGovernedAutomationTools(options: {
81
107
  }): number;
82
108
  export type { AgentPermissionProfileName, AgentSandboxCapabilities, } from '@xenosystem/agent-interface-host/node';
83
109
  export interface SdkAgentRunOptions {
110
+ settlementRegistry?: SdkExecutionSettlementRegistry;
111
+ workspaceEnvironment?: {
112
+ values: Record<string, string>;
113
+ redact(value: Record<string, unknown>): Record<string, unknown>;
114
+ };
84
115
  requestId: string;
85
116
  conversationId?: string;
86
117
  hostBinding?: {
@@ -107,6 +138,7 @@ export interface SdkAgentRunOptions {
107
138
  systemPrompt?: string;
108
139
  maxIterations?: number;
109
140
  enableThinking?: boolean;
141
+ reasoningEffort?: string;
110
142
  getAuthToken: () => string | null;
111
143
  getPlatformAuthToken?: () => string | null;
112
144
  mainWindow: SdkAgentSurface;
@@ -157,14 +189,7 @@ export interface SdkAgentRunOptions {
157
189
  }
158
190
  export interface AgentCommandExecutionEnvironment {
159
191
  resolutionForConversation(conversationId: string | undefined): {
160
- executor: {
161
- execute(request: {
162
- argv: readonly [string, ...string[]];
163
- cwd: string;
164
- timeoutMs: number;
165
- maxOutputBytes?: number;
166
- }): Promise<CommandExecutionResult>;
167
- };
192
+ executor: CommandExecutionPort;
168
193
  isolation: {
169
194
  isolation: string;
170
195
  };
@@ -210,6 +235,8 @@ export interface SdkNativeControlService {
210
235
  }): Promise<{
211
236
  success: boolean;
212
237
  sessions?: unknown[];
238
+ sessionListRevision?: number;
239
+ attachedSessionIds?: string[];
213
240
  error?: string;
214
241
  }>;
215
242
  showSession(params: {
@@ -231,27 +258,35 @@ export interface SdkNativeControlService {
231
258
  sessionHistoryPath?: string;
232
259
  coordinationSessionId?: string;
233
260
  checkpoints?: unknown[];
261
+ sessionListRevision?: number;
234
262
  error?: string;
235
263
  }>;
236
264
  detachSession(params: {
237
265
  conversationId: string;
238
266
  }): Promise<{
239
267
  success: boolean;
268
+ sessionListRevision?: number;
240
269
  error?: string;
241
270
  }>;
242
271
  deleteSession(params: {
243
272
  sessionId: string;
273
+ expectedSessionListRevision?: number;
244
274
  }): Promise<{
245
275
  success: boolean;
276
+ sessionListRevision?: number;
246
277
  error?: string;
278
+ code?: 'revision_conflict' | 'session_attached' | 'mutation_failed';
247
279
  }>;
248
280
  cleanSessions(params: {
249
281
  workingDirectory: string;
250
282
  excludeSessionIds?: string[];
283
+ expectedSessionListRevision?: number;
251
284
  }): Promise<{
252
285
  success: boolean;
253
286
  result?: unknown;
287
+ sessionListRevision?: number;
254
288
  error?: string;
289
+ code?: 'revision_conflict' | 'session_attached' | 'mutation_failed';
255
290
  }>;
256
291
  listCheckpoints(params: {
257
292
  sessionId: string;
@@ -301,5 +336,8 @@ export interface SdkNativeControlService {
301
336
  totalSize?: number;
302
337
  }>;
303
338
  }
304
- export declare function createSdkNativeControlService(): SdkNativeControlService;
339
+ export declare function createSdkNativeControlService(options?: {
340
+ authorityRoot?: string;
341
+ sdkLoader?: typeof loadSdk;
342
+ }): SdkNativeControlService;
305
343
  //# sourceMappingURL=sdkAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdkAgent.d.ts","sourceRoot":"","sources":["../src/sdkAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdkAgent.d.ts","sourceRoot":"","sources":["../src/sdkAgent.ts"],"names":[],"mappings":"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"}
package/dist/sdkAgent.js CHANGED
@@ -10,7 +10,13 @@
10
10
  */
11
11
  import { createPermissionWaitRegistry, } from '@xenosystem/agent-interface-host';
12
12
  import { commandSucceeded, commandShellArgv, LocalCommandExecutor, } from '@xenosystem/agent-interface-host/node';
13
+ import { sdkExecutionSettlements } from '@xenosystem/agent-interface-host/node';
13
14
  import { spawn } from 'child_process';
15
+ import { createHash } from 'node:crypto';
16
+ import { requireSdkReasoningEffort } from './sdkReasoning.js';
17
+ import { enforceToolCategoryPolicy } from './toolCategoryPolicy.js';
18
+ import { protectWorkspaceToolResults } from './workspaceEnvironmentTools.js';
19
+ import { SdkSessionMutationAuthority } from './sdkSessionMutationAuthority.js';
14
20
  import { mkdirSync, readFileSync, existsSync, readdirSync, statSync, writeFileSync } from 'fs';
15
21
  import { resolve as pathResolve, dirname, join, basename, extname, relative } from 'path';
16
22
  import { homedir } from 'os';
@@ -439,7 +445,7 @@ function truncateHubToolOutput(output, limit = 12_000) {
439
445
  * the one `WorkspaceHostService.runCommand` adopting the port could not cover.
440
446
  * Both now go through the same executor the composition binds per run.
441
447
  */
442
- function executeAgentShellCommand(input, cwd, environment, conversationId) {
448
+ function executeAgentShellCommand(input, cwd, environment, conversationId, workspaceEnvironment, executionIdentity, settlementRegistry = sdkExecutionSettlements) {
443
449
  const command = typeof input.command === 'string' ? input.command : '';
444
450
  if (!command.trim()) {
445
451
  return Promise.resolve({ success: false, output: '', error: 'Missing required parameter: command' });
@@ -448,11 +454,14 @@ function executeAgentShellCommand(input, cwd, environment, conversationId) {
448
454
  const resolution = environment?.resolutionForConversation(conversationId);
449
455
  const executor = resolution?.executor ?? fallbackCommandExecutor;
450
456
  const destination = resolution?.isolation.isolation === 'sandboxed' ? 'sandbox' : 'host';
451
- return executor.execute({
457
+ const request = {
452
458
  argv: commandShellArgv(command, destination),
453
459
  cwd,
454
460
  timeoutMs,
455
- }).then((result) => toolResultFromExecution(result));
461
+ ...(workspaceEnvironment ? { env: workspaceEnvironment.values } : {}),
462
+ };
463
+ return (executionIdentity ? settlementRegistry.execute(executionIdentity, executor, request) : executor.execute(request))
464
+ .then((result) => toolResultFromExecution(result));
456
465
  }
457
466
  function toolResultFromExecution(result) {
458
467
  const output = truncateHubToolOutput([result.stdout.trimEnd(), result.stderr.trimEnd()].filter(Boolean).join('\n'));
@@ -2183,6 +2192,7 @@ async function loadSdk() {
2183
2192
  const sdk = await import('@xenosystem/agent-sdk');
2184
2193
  sdkModules = {
2185
2194
  AgentLoop: sdk.AgentLoop,
2195
+ AGENT_EFFORT_LEVELS: sdk.AGENT_EFFORT_LEVELS,
2186
2196
  ToolRegistry: sdk.ToolRegistry,
2187
2197
  createDefaultToolRegistry: sdk.createDefaultToolRegistry,
2188
2198
  createWebContextRequestFactory: sdk.createWebContextRequestFactory,
@@ -2194,6 +2204,7 @@ async function loadSdk() {
2194
2204
  createAuditBackedPermissionEngine: sdk.createAuditBackedPermissionEngine,
2195
2205
  SessionManager: sdk.SessionManager,
2196
2206
  SessionRegistry: sdk.SessionRegistry,
2207
+ getAgentHome: sdk.getAgentHome,
2197
2208
  CheckpointManager: sdk.CheckpointManager,
2198
2209
  XenoRuntimeEventBus: sdk.XenoRuntimeEventBus,
2199
2210
  TurnDiffTracker: sdk.TurnDiffTracker,
@@ -2202,9 +2213,14 @@ async function loadSdk() {
2202
2213
  cleanupSessionRuntime: sdk.cleanupSessionRuntime,
2203
2214
  taskOutputTool: sdk.taskOutputTool,
2204
2215
  taskStopTool: sdk.taskStopTool,
2216
+ backgroundProcessManager: sdk.backgroundProcessManager,
2205
2217
  };
2206
2218
  return sdkModules;
2207
2219
  }
2220
+ let defaultSdkSessionMutationAuthority;
2221
+ function getDefaultSdkSessionMutationAuthority() {
2222
+ return defaultSdkSessionMutationAuthority ??= loadSdk().then(sdk => new SdkSessionMutationAuthority(join(sdk.getAgentHome(), 'interface')));
2223
+ }
2208
2224
  /**
2209
2225
  * The testable composition seam for SDK-native governed automation. Keeping
2210
2226
  * discovery and registration here proves the Interface is a client of the
@@ -3186,7 +3202,20 @@ function wrapRegisteredMultiPathTool(toolRegistry, toolName, pathParams, allowed
3186
3202
  toolRegistry.register(wrappedTool);
3187
3203
  }
3188
3204
  export async function runSdkAgent(options) {
3189
- const { requestId, conversationId, hostBinding, sdkSessionId, subagentRunId, workspaceId, teamId, agentId, model, messages, systemPrompt, maxIterations = 10, enableThinking = false, getAuthToken, getPlatformAuthToken, mainWindow, signal, capabilities, permissionProfile, allowedDirectories, approvalRules: rawApprovalRules, allowTextOnlyFallback = false, toolExecution, onPersistedRuntimeEvent, prepareRuntimeEventForPersistence, runtimeEventStore: injectedRuntimeEventStore, coordinationTools, isProduction, executionEnvironment, } = options;
3205
+ const sdk = await loadSdk();
3206
+ const identity = { requestId: options.requestId, ...(options.conversationId ? { conversationId: options.conversationId } : {}) };
3207
+ const registry = options.settlementRegistry ?? sdkExecutionSettlements;
3208
+ await registry.retryAcknowledgedReleases();
3209
+ const ownerId = registry.begin(identity, sdk.backgroundProcessManager);
3210
+ try {
3211
+ await runSdkAgentOwned(options, ownerId);
3212
+ }
3213
+ finally {
3214
+ registry.finish(identity);
3215
+ }
3216
+ }
3217
+ async function runSdkAgentOwned(options, ownerId) {
3218
+ const { requestId, conversationId, hostBinding, sdkSessionId, subagentRunId, workspaceId, teamId, agentId, model, messages, systemPrompt, maxIterations = 10, enableThinking = false, reasoningEffort, getAuthToken, getPlatformAuthToken, mainWindow, signal, capabilities, permissionProfile, allowedDirectories, approvalRules: rawApprovalRules, allowTextOnlyFallback = false, toolExecution, onPersistedRuntimeEvent, prepareRuntimeEventForPersistence, runtimeEventStore: injectedRuntimeEventStore, coordinationTools, isProduction, executionEnvironment, workspaceEnvironment, } = options;
3190
3219
  const approvalRules = normalizeApprovalRules(rawApprovalRules);
3191
3220
  const resolvedPermissionProfile = resolveAgentPermissionProfile({
3192
3221
  ...(permissionProfile ? { requestedProfile: permissionProfile } : {}),
@@ -3277,6 +3306,7 @@ export async function runSdkAgent(options) {
3277
3306
  // configured, Web Context replaces both legacy direct-network web tools.
3278
3307
  const toolRegistry = sdk.createDefaultToolRegistry({
3279
3308
  cwd: toolRuntimeCwd,
3309
+ ownerSessionId: ownerId,
3280
3310
  askUser: createHubAskUserHandler(mainWindow, requestId),
3281
3311
  ...(webContextTools ? { webContext: webContextTools } : {}),
3282
3312
  });
@@ -3522,7 +3552,7 @@ export async function runSdkAgent(options) {
3522
3552
  if (typeof input.timeout !== 'number' && typeof input.timeout_ms !== 'number') {
3523
3553
  input.timeout = DEFAULT_AGENT_TOOL_TIMEOUT_MS;
3524
3554
  }
3525
- return executeAgentShellCommand(input, bashPolicyPath, executionEnvironment, conversationId);
3555
+ return executeAgentShellCommand(input, bashPolicyPath, executionEnvironment, conversationId, workspaceEnvironment, { requestId, ...(conversationId ? { conversationId } : {}) }, options.settlementRegistry ?? sdkExecutionSettlements);
3526
3556
  }
3527
3557
  };
3528
3558
  toolRegistry.unregister('Bash');
@@ -3735,6 +3765,11 @@ export async function runSdkAgent(options) {
3735
3765
  const baseEvent = event && typeof event === 'object' && !Array.isArray(event)
3736
3766
  ? sanitizeRuntimeEventForHub(event, runtimeModeGuard)
3737
3767
  : event;
3768
+ // This runner constructs a fresh AgentLoop per request. Its final totals
3769
+ // therefore have a known request boundary, unlike legacy session counters.
3770
+ if (baseEvent && typeof baseEvent === 'object' && !Array.isArray(baseEvent) && rawType === 'turn.completed') {
3771
+ Object.assign(baseEvent, { usageBasis: 'request', model: isLocalModel ? model : modelId });
3772
+ }
3738
3773
  const enrichedEvent = subagentRunId && baseEvent && typeof baseEvent === 'object' && !Array.isArray(baseEvent)
3739
3774
  ? { ...baseEvent, subagentRunId }
3740
3775
  : baseEvent;
@@ -4112,6 +4147,9 @@ export async function runSdkAgent(options) {
4112
4147
  allowedDirectoriesCount: dirs.length,
4113
4148
  approvalRulesCount: approvalRules.length,
4114
4149
  });
4150
+ enforceToolCategoryPolicy(toolRegistry, caps);
4151
+ if (workspaceEnvironment && Object.keys(workspaceEnvironment.values).length)
4152
+ protectWorkspaceToolResults(toolRegistry, workspaceEnvironment.redact);
4115
4153
  if (latestUserMessageRequestsNoTools(messages)) {
4116
4154
  unregisterAllTools(toolRegistry);
4117
4155
  emitRuntimeEvent({
@@ -4133,42 +4171,65 @@ export async function runSdkAgent(options) {
4133
4171
  sessionRuntime = undefined;
4134
4172
  }
4135
4173
  if (!sessionRuntime) {
4136
- const resumeSessionId = pendingCheckpointRestore?.sessionId || sdkSessionId || undefined;
4174
+ let createdRuntime;
4175
+ let runtimeReachedAttachmentAuthority = false;
4137
4176
  try {
4138
- sessionRuntime = await sdk.initializeSessionRuntime({
4139
- cwd: toolRuntimeCwd,
4140
- role: sessionRole,
4141
- model,
4142
- ...(hostBinding ? { hostBinding: structuredClone(hostBinding) } : {}),
4143
- ...(resumeSessionId ? { resume: resumeSessionId } : {}),
4144
- ...(pendingCheckpointRestore?.checkpointId
4145
- ? { checkpoint: pendingCheckpointRestore.checkpointId }
4146
- : {}),
4147
- });
4177
+ const established = await (await getDefaultSdkSessionMutationAuthority()).establishAttachment(conversationId, async () => {
4178
+ const resumeSessionId = pendingCheckpointRestore?.sessionId || sdkSessionId || undefined;
4179
+ try {
4180
+ createdRuntime = await sdk.initializeSessionRuntime({
4181
+ cwd: toolRuntimeCwd,
4182
+ role: sessionRole,
4183
+ model,
4184
+ ...(hostBinding ? { hostBinding: structuredClone(hostBinding) } : {}),
4185
+ ...(resumeSessionId ? { resume: resumeSessionId } : {}),
4186
+ ...(pendingCheckpointRestore?.checkpointId
4187
+ ? { checkpoint: pendingCheckpointRestore.checkpointId }
4188
+ : {}),
4189
+ });
4190
+ }
4191
+ catch (err) {
4192
+ if (!sdkSessionId || pendingCheckpointRestore)
4193
+ throw err;
4194
+ const error = err instanceof Error ? err : new Error(String(err));
4195
+ logAgentDebug('Unable to resume SDK session; creating a replacement session', {
4196
+ requestId,
4197
+ conversationId,
4198
+ sdkSessionId,
4199
+ error: error.message,
4200
+ });
4201
+ createdRuntime = await sdk.initializeSessionRuntime({
4202
+ cwd: toolRuntimeCwd,
4203
+ role: sessionRole,
4204
+ model,
4205
+ ...(hostBinding ? { hostBinding: structuredClone(hostBinding) } : {}),
4206
+ });
4207
+ }
4208
+ createdRuntime = await sdk.activateSessionRuntime(createdRuntime, {
4209
+ cwd: toolRuntimeCwd,
4210
+ role: sessionRole,
4211
+ model,
4212
+ ...(hostBinding ? { hostBinding: structuredClone(hostBinding) } : {}),
4213
+ });
4214
+ const activeSessionId = createdRuntime?.sessionManager?.meta?.id;
4215
+ if (typeof activeSessionId !== 'string' || !activeSessionId)
4216
+ throw new Error('SDK session runtime did not expose an authoritative session ID.');
4217
+ runtimeReachedAttachmentAuthority = true;
4218
+ return { sessionId: activeSessionId, value: createdRuntime };
4219
+ }, async (activeSessionId) => {
4220
+ if (!await sdk.SessionRegistry.find(activeSessionId))
4221
+ throw new Error('SDK session disappeared before runtime attachment was recorded.');
4222
+ }, runtime => sdk.cleanupSessionRuntime(runtime, 'abandoned'));
4223
+ sessionRuntime = established.value;
4148
4224
  }
4149
4225
  catch (err) {
4150
- if (!sdkSessionId || pendingCheckpointRestore)
4151
- throw err;
4152
- const error = err instanceof Error ? err : new Error(String(err));
4153
- logAgentDebug('Unable to resume SDK session; creating a replacement session', {
4154
- requestId,
4155
- conversationId,
4156
- sdkSessionId,
4157
- error: error.message,
4158
- });
4159
- sessionRuntime = await sdk.initializeSessionRuntime({
4160
- cwd: toolRuntimeCwd,
4161
- role: sessionRole,
4162
- model,
4163
- ...(hostBinding ? { hostBinding: structuredClone(hostBinding) } : {}),
4164
- });
4226
+ // An operation that failed before returning an established runtime
4227
+ // still owns its provisional SDK object; the authority disposes only
4228
+ // values that reached validation/publication.
4229
+ if (createdRuntime && !runtimeReachedAttachmentAuthority)
4230
+ await sdk.cleanupSessionRuntime(createdRuntime, 'abandoned');
4231
+ throw err;
4165
4232
  }
4166
- sessionRuntime = await sdk.activateSessionRuntime(sessionRuntime, {
4167
- cwd: toolRuntimeCwd,
4168
- role: sessionRole,
4169
- model,
4170
- ...(hostBinding ? { hostBinding: structuredClone(hostBinding) } : {}),
4171
- });
4172
4233
  hubSessionRuntimes.set(conversationId, sessionRuntime);
4173
4234
  if (pendingCheckpointRestore) {
4174
4235
  pendingSdkCheckpointRestores.delete(conversationId);
@@ -4485,9 +4546,11 @@ export async function runSdkAgent(options) {
4485
4546
  'Bash',
4486
4547
  ]);
4487
4548
  const agent = new sdk.AgentLoop({
4549
+ ownerSessionId: ownerId,
4488
4550
  apiKey,
4489
4551
  baseURL,
4490
4552
  model: isLocalModel ? model : modelId,
4553
+ ...(reasoningEffort ? { effort: requireSdkReasoningEffort(reasoningEffort, sdk.AGENT_EFFORT_LEVELS) } : {}),
4491
4554
  maxTokens: 8192,
4492
4555
  maxIterations,
4493
4556
  systemPrompt: runtimeSystemPrompt,
@@ -5005,6 +5068,20 @@ function toIpcPlainArray(value) {
5005
5068
  const plain = toIpcPlainValue(value);
5006
5069
  return Array.isArray(plain) ? plain : [];
5007
5070
  }
5071
+ function canonicalSessionValue(value) {
5072
+ if (Array.isArray(value))
5073
+ return value.map(canonicalSessionValue);
5074
+ if (!value || typeof value !== 'object')
5075
+ return value;
5076
+ return Object.fromEntries(Object.entries(value)
5077
+ .sort(([left], [right]) => left.localeCompare(right))
5078
+ .map(([key, entry]) => [key, canonicalSessionValue(entry)]));
5079
+ }
5080
+ async function readSdkSessionFingerprint(sdk) {
5081
+ const sessions = toIpcPlainArray(await sdk.SessionRegistry.list({ limit: Number.MAX_SAFE_INTEGER }));
5082
+ const rows = sessions.map(entry => JSON.stringify(canonicalSessionValue(entry))).sort();
5083
+ return createHash('sha256').update(JSON.stringify(rows)).digest('hex');
5084
+ }
5008
5085
  function findHubSessionRuntimeBySdkSessionId(sessionId) {
5009
5086
  for (const runtime of hubSessionRuntimes.values()) {
5010
5087
  if (runtime?.sessionManager?.meta?.id === sessionId)
@@ -5036,9 +5113,16 @@ async function cleanupHubSessionRuntime(conversationId, status = 'abandoned') {
5036
5113
  error: error.message,
5037
5114
  });
5038
5115
  }
5116
+ try {
5117
+ await (await getDefaultSdkSessionMutationAuthority()).recordDetachment(conversationId);
5118
+ }
5119
+ catch (err) {
5120
+ const error = err instanceof Error ? err : new Error(String(err));
5121
+ logAgentDebug('Failed to record SDK session runtime detachment', { conversationId, status, error: error.message });
5122
+ }
5039
5123
  }
5040
- async function getSdkCheckpointManager(sessionId) {
5041
- const sdk = await loadSdk();
5124
+ async function getSdkCheckpointManager(sessionId, sdkLoader = loadSdk) {
5125
+ const sdk = await sdkLoader();
5042
5126
  const activeRuntime = findHubSessionRuntimeBySdkSessionId(sessionId);
5043
5127
  if (activeRuntime?.checkpointManager)
5044
5128
  return activeRuntime.checkpointManager;
@@ -5165,17 +5249,34 @@ export function createSdkNativeInteractionService() {
5165
5249
  answerAskUser: answerSdkAskUser,
5166
5250
  };
5167
5251
  }
5168
- export function createSdkNativeControlService() {
5252
+ export function createSdkNativeControlService(options = {}) {
5253
+ const sdkLoader = options.sdkLoader ?? loadSdk;
5254
+ let authorityPromise;
5255
+ const authority = () => {
5256
+ if (!options.authorityRoot && !options.sdkLoader)
5257
+ return getDefaultSdkSessionMutationAuthority();
5258
+ return authorityPromise ??= (async () => {
5259
+ const sdk = await sdkLoader();
5260
+ return new SdkSessionMutationAuthority(options.authorityRoot ?? join(sdk.getAgentHome(), 'interface'));
5261
+ })();
5262
+ };
5263
+ const mutationFailure = (err) => {
5264
+ const error = err instanceof Error ? err : new Error(String(err));
5265
+ const code = error.message.startsWith('SDK_SESSION_REVISION_CONFLICT:') ? 'revision_conflict'
5266
+ : error.message.startsWith('SDK_SESSION_ATTACHED:') ? 'session_attached' : 'mutation_failed';
5267
+ return { success: false, code, error: error.message };
5268
+ };
5169
5269
  return {
5170
5270
  async listSessions(params = {}) {
5171
5271
  try {
5172
- const sdk = await loadSdk();
5272
+ const sdk = await sdkLoader();
5173
5273
  const sessions = await sdk.SessionRegistry.list({
5174
5274
  ...(typeof params.role === 'string' ? { role: params.role } : {}),
5175
5275
  ...(typeof params.workingDirectory === 'string' ? { workingDirectory: params.workingDirectory } : {}),
5176
5276
  limit: typeof params.limit === 'number' ? params.limit : 100,
5177
5277
  });
5178
- return { success: true, sessions: toIpcPlainArray(sessions) };
5278
+ const snapshot = await (await authority()).observeSessionList(await readSdkSessionFingerprint(sdk));
5279
+ return { success: true, sessions: toIpcPlainArray(sessions), sessionListRevision: snapshot.sessionListRevision, attachedSessionIds: [...new Set(Object.values(snapshot.attachments))] };
5179
5280
  }
5180
5281
  catch (err) {
5181
5282
  const error = err instanceof Error ? err : new Error(String(err));
@@ -5187,11 +5288,11 @@ export function createSdkNativeControlService() {
5187
5288
  const sessionId = String(params?.sessionId || '');
5188
5289
  if (!sessionId)
5189
5290
  return { success: false, error: 'Missing sessionId' };
5190
- const sdk = await loadSdk();
5291
+ const sdk = await sdkLoader();
5191
5292
  const meta = await sdk.SessionRegistry.find(sessionId);
5192
5293
  if (!meta)
5193
5294
  return { success: false, error: 'SDK session not found' };
5194
- const checkpoints = await getSdkCheckpointManager(sessionId).then((manager) => manager.list());
5295
+ const checkpoints = await getSdkCheckpointManager(sessionId, sdkLoader).then((manager) => manager.list());
5195
5296
  return {
5196
5297
  success: true,
5197
5298
  session: toIpcPlainValue(meta),
@@ -5210,7 +5311,7 @@ export function createSdkNativeControlService() {
5210
5311
  const sessionId = String(params?.sessionId || '');
5211
5312
  if (!conversationId || !sessionId)
5212
5313
  return { success: false, error: 'Missing conversationId or sessionId' };
5213
- const sdk = await loadSdk();
5314
+ const sdk = await sdkLoader();
5214
5315
  const meta = await sdk.SessionRegistry.find(sessionId);
5215
5316
  if (!meta)
5216
5317
  return { success: false, error: 'SDK session not found' };
@@ -5219,7 +5320,11 @@ export function createSdkNativeControlService() {
5219
5320
  if (currentRuntime && currentSessionId !== sessionId) {
5220
5321
  await cleanupHubSessionRuntime(conversationId, 'abandoned');
5221
5322
  }
5222
- const checkpoints = await getSdkCheckpointManager(sessionId).then((manager) => manager.list());
5323
+ const checkpoints = await getSdkCheckpointManager(sessionId, sdkLoader).then((manager) => manager.list());
5324
+ const snapshot = await (await authority()).recordAttachment(conversationId, sessionId, async () => {
5325
+ if (!await sdk.SessionRegistry.find(sessionId))
5326
+ throw new Error('SDK session disappeared before attachment was recorded.');
5327
+ });
5223
5328
  return {
5224
5329
  success: true,
5225
5330
  session: toIpcPlainValue(meta),
@@ -5227,6 +5332,7 @@ export function createSdkNativeControlService() {
5227
5332
  sessionHistoryPath: `.xeno\\sessions\\${sessionId}.md`,
5228
5333
  coordinationSessionId: sessionId.startsWith('session-') ? sessionId : `session-${sessionId}`,
5229
5334
  checkpoints: toIpcPlainArray(checkpoints),
5335
+ sessionListRevision: snapshot.sessionListRevision,
5230
5336
  };
5231
5337
  }
5232
5338
  catch (err) {
@@ -5240,7 +5346,8 @@ export function createSdkNativeControlService() {
5240
5346
  if (!conversationId)
5241
5347
  return { success: false, error: 'Missing conversationId' };
5242
5348
  await cleanupHubSessionRuntime(conversationId, 'abandoned');
5243
- return { success: true };
5349
+ const snapshot = await (await authority()).recordDetachment(conversationId);
5350
+ return { success: true, sessionListRevision: snapshot.sessionListRevision };
5244
5351
  }
5245
5352
  catch (err) {
5246
5353
  const error = err instanceof Error ? err : new Error(String(err));
@@ -5252,17 +5359,15 @@ export function createSdkNativeControlService() {
5252
5359
  const sessionId = String(params?.sessionId || '');
5253
5360
  if (!sessionId)
5254
5361
  return { success: false, error: 'Missing sessionId' };
5255
- const sdk = await loadSdk();
5256
- const activeEntry = findHubSessionRuntimeEntryBySdkSessionId(sessionId);
5257
- if (activeEntry) {
5258
- await cleanupHubSessionRuntime(activeEntry.conversationId, 'abandoned');
5259
- }
5260
- await sdk.SessionRegistry.delete(sessionId);
5261
- return { success: true };
5362
+ const sdk = await sdkLoader();
5363
+ const snapshot = await (await authority()).mutate(params.expectedSessionListRevision, () => readSdkSessionFingerprint(sdk), state => {
5364
+ if (findHubSessionRuntimeEntryBySdkSessionId(sessionId) || Object.values(state.attachments).includes(sessionId))
5365
+ throw new Error('SDK_SESSION_ATTACHED: Detach this SDK session before deleting it.');
5366
+ }, () => sdk.SessionRegistry.delete(sessionId));
5367
+ return { success: true, sessionListRevision: snapshot.sessionListRevision };
5262
5368
  }
5263
5369
  catch (err) {
5264
- const error = err instanceof Error ? err : new Error(String(err));
5265
- return { success: false, error: error.message };
5370
+ return mutationFailure(err);
5266
5371
  }
5267
5372
  },
5268
5373
  async cleanSessions(params) {
@@ -5273,13 +5378,19 @@ export function createSdkNativeControlService() {
5273
5378
  : [];
5274
5379
  if (!workingDirectory)
5275
5380
  return { success: false, error: 'Missing workingDirectory' };
5276
- const sdk = await loadSdk();
5277
- const result = await sdk.SessionRegistry.purgeWorkingDirectory(workingDirectory, { excludeSessionIds });
5278
- return { success: true, result: toIpcPlainValue(result) };
5381
+ const sdk = await sdkLoader();
5382
+ let result;
5383
+ const snapshot = await (await authority()).mutate(params.expectedSessionListRevision, () => readSdkSessionFingerprint(sdk), async (state) => {
5384
+ const candidates = await sdk.SessionRegistry.list({ workingDirectory });
5385
+ const attached = new Set([...Object.values(state.attachments), ...[...hubSessionRuntimes.values()].flatMap(runtime => typeof runtime?.sessionManager?.meta?.id === 'string' ? [runtime.sessionManager.meta.id] : [])]);
5386
+ const collision = candidates.find(session => attached.has(session.id) && !excludeSessionIds.includes(session.id));
5387
+ if (collision)
5388
+ throw new Error(`SDK_SESSION_ATTACHED: Session ${collision.id} became attached; reload before cleaning.`);
5389
+ }, async () => { result = await sdk.SessionRegistry.purgeWorkingDirectory(workingDirectory, { excludeSessionIds }); });
5390
+ return { success: true, result: toIpcPlainValue(result), sessionListRevision: snapshot.sessionListRevision };
5279
5391
  }
5280
5392
  catch (err) {
5281
- const error = err instanceof Error ? err : new Error(String(err));
5282
- return { success: false, error: error.message };
5393
+ return mutationFailure(err);
5283
5394
  }
5284
5395
  },
5285
5396
  async listCheckpoints(params) {
@@ -5287,7 +5398,7 @@ export function createSdkNativeControlService() {
5287
5398
  const sessionId = String(params?.sessionId || '');
5288
5399
  if (!sessionId)
5289
5400
  return { success: false, error: 'Missing sessionId' };
5290
- const checkpoints = await getSdkCheckpointManager(sessionId).then((manager) => manager.list());
5401
+ const checkpoints = await getSdkCheckpointManager(sessionId, sdkLoader).then((manager) => manager.list());
5291
5402
  return { success: true, checkpoints: toIpcPlainArray(checkpoints) };
5292
5403
  }
5293
5404
  catch (err) {
@@ -5302,7 +5413,7 @@ export function createSdkNativeControlService() {
5302
5413
  const conversationId = typeof params?.conversationId === 'string' ? params.conversationId.trim() : '';
5303
5414
  if (!sessionId || !checkpointId)
5304
5415
  return { success: false, error: 'Missing sessionId or checkpointId' };
5305
- const restored = await getSdkCheckpointManager(sessionId).then((manager) => manager.restore(checkpointId));
5416
+ const restored = await getSdkCheckpointManager(sessionId, sdkLoader).then((manager) => manager.restore(checkpointId));
5306
5417
  if (conversationId) {
5307
5418
  pendingSdkCheckpointRestores.set(conversationId, { sessionId, checkpointId });
5308
5419
  const runtimeEntry = findHubSessionRuntimeEntryBySdkSessionId(sessionId);
@@ -5327,7 +5438,7 @@ export function createSdkNativeControlService() {
5327
5438
  const checkpointId = String(params?.checkpointId || '');
5328
5439
  if (!sessionId || !checkpointId)
5329
5440
  return { success: false, error: 'Missing sessionId or checkpointId' };
5330
- await getSdkCheckpointManager(sessionId).then((manager) => manager.delete(checkpointId));
5441
+ await getSdkCheckpointManager(sessionId, sdkLoader).then((manager) => manager.delete(checkpointId));
5331
5442
  return { success: true };
5332
5443
  }
5333
5444
  catch (err) {