@agent-vm/gateway-interface 0.0.81 → 0.0.84

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/index.d.ts CHANGED
@@ -20,6 +20,271 @@ declare function targetsAudience(configAudience: VmAudience, runtimeAudience: Ru
20
20
  declare function egressHostsForAudience(egressHosts: readonly EgressHostConfig[], runtimeAudience: RuntimeVmAudience): readonly string[];
21
21
  declare function gatewayVmAllowedHosts(egressHosts: readonly EgressHostConfig[]): readonly string[];
22
22
  //#endregion
23
+ //#region src/health/controller-request-policy.d.ts
24
+ declare const gatewayInternalControllerRequestOperations: readonly ["controller-health", "health-event-publish", "openclaw-runtime-status", "zone-git-push", "lease-create", "lease-get", "lease-peek", "lease-list", "lease-renew", "lease-release", "lease-use-start", "lease-heartbeat", "lease-use-end"];
25
+ type GatewayInternalControllerRequestOperation = (typeof gatewayInternalControllerRequestOperations)[number];
26
+ declare const workerInternalControllerRequestOperations: readonly ["worker-push-branches", "worker-pull-default"];
27
+ type WorkerInternalControllerRequestOperation = (typeof workerInternalControllerRequestOperations)[number];
28
+ type ControllerRequestPolicyOperation = GatewayInternalControllerRequestOperation | WorkerInternalControllerRequestOperation;
29
+ declare const dedicatedControllerRequestHealthEventOperations: readonly ["lease-heartbeat", "lease-renew"];
30
+ type DedicatedControllerRequestHealthEventOperation = (typeof dedicatedControllerRequestHealthEventOperations)[number];
31
+ type GenericControllerRequestEventOperation = Exclude<ControllerRequestPolicyOperation, DedicatedControllerRequestHealthEventOperation>;
32
+ declare const genericControllerRequestEventOperations: GenericControllerRequestEventOperation[];
33
+ declare const externalControllerRoutes: readonly ["GET /controller-status", "GET /zones/:zoneId/status", "GET /zones/:zoneId/health", "GET /zones/:zoneId/zone-git/status", "GET /zones/:zoneId/logs", "POST /zones/:zoneId/credentials/refresh", "POST /zones/:zoneId/destroy", "POST /zones/:zoneId/upgrade", "GET /zones/:zoneId/tasks/:taskId", "POST /zones/:zoneId/worker-tasks", "POST /zones/:zoneId/tasks/:taskId/close", "POST /zones/:zoneId/enable-ssh", "POST /zones/:zoneId/execute-command", "POST /stop-controller"];
34
+ type ExternalControllerRoute = (typeof externalControllerRoutes)[number];
35
+ type ControllerRequestPolicyIdempotency = 'read' | 'safe-mutation' | 'unsafe-mutation';
36
+ interface ControllerRequestPolicyBase {
37
+ readonly idempotency: ControllerRequestPolicyIdempotency;
38
+ readonly timeoutMs: number;
39
+ }
40
+ type ControllerRequestPolicy = (ControllerRequestPolicyBase & {
41
+ readonly maxAttempts: 1;
42
+ readonly retryBaseDelayMs: 0;
43
+ readonly retryEnabled: false;
44
+ readonly retryStatuses: readonly [];
45
+ }) | (ControllerRequestPolicyBase & {
46
+ readonly maxAttempts: number;
47
+ readonly retryBaseDelayMs: number;
48
+ readonly retryEnabled: true;
49
+ readonly retryStatuses: readonly [number, ...number[]];
50
+ });
51
+ type ControllerRequestPolicyTransportErrorCode = 'controller-request-failed' | 'controller-request-timeout';
52
+ declare class ControllerRequestPolicyTransportError extends Error {
53
+ readonly code: ControllerRequestPolicyTransportErrorCode;
54
+ readonly operation: ControllerRequestPolicyOperation;
55
+ constructor(options: {
56
+ readonly cause: unknown;
57
+ readonly code: ControllerRequestPolicyTransportErrorCode;
58
+ readonly operation: ControllerRequestPolicyOperation;
59
+ });
60
+ }
61
+ interface FetchControllerWithPolicyOptions {
62
+ readonly fetchImpl?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
63
+ readonly init?: RequestInit;
64
+ readonly input: string | URL | Request;
65
+ readonly operation: ControllerRequestPolicyOperation;
66
+ readonly policy?: ControllerRequestPolicy;
67
+ }
68
+ declare function drainControllerResponseBody(response: Response): Promise<void>;
69
+ declare function fetchControllerWithPolicy(options: FetchControllerWithPolicyOptions): Promise<Response>;
70
+ declare const controllerRequestPolicies: {
71
+ 'controller-health': {
72
+ idempotency: "read";
73
+ maxAttempts: 1;
74
+ retryBaseDelayMs: 0;
75
+ retryEnabled: false;
76
+ retryStatuses: [];
77
+ timeoutMs: number;
78
+ };
79
+ 'health-event-publish': {
80
+ idempotency: "safe-mutation";
81
+ maxAttempts: 1;
82
+ retryBaseDelayMs: 0;
83
+ retryEnabled: false;
84
+ retryStatuses: [];
85
+ timeoutMs: number;
86
+ };
87
+ 'openclaw-runtime-status': {
88
+ idempotency: "safe-mutation";
89
+ maxAttempts: number;
90
+ retryBaseDelayMs: number;
91
+ retryEnabled: true;
92
+ retryStatuses: [number, number, number];
93
+ timeoutMs: number;
94
+ };
95
+ 'zone-git-push': {
96
+ idempotency: "unsafe-mutation";
97
+ maxAttempts: 1;
98
+ retryBaseDelayMs: 0;
99
+ retryEnabled: false;
100
+ retryStatuses: [];
101
+ timeoutMs: number;
102
+ };
103
+ 'lease-create': {
104
+ idempotency: "unsafe-mutation";
105
+ maxAttempts: 1;
106
+ retryBaseDelayMs: 0;
107
+ retryEnabled: false;
108
+ retryStatuses: [];
109
+ timeoutMs: number;
110
+ };
111
+ 'lease-get': {
112
+ idempotency: "read";
113
+ maxAttempts: number;
114
+ retryBaseDelayMs: number;
115
+ retryEnabled: true;
116
+ retryStatuses: [number, number];
117
+ timeoutMs: number;
118
+ };
119
+ 'lease-peek': {
120
+ idempotency: "read";
121
+ maxAttempts: number;
122
+ retryBaseDelayMs: number;
123
+ retryEnabled: true;
124
+ retryStatuses: [number, number];
125
+ timeoutMs: number;
126
+ };
127
+ 'lease-list': {
128
+ idempotency: "read";
129
+ maxAttempts: number;
130
+ retryBaseDelayMs: number;
131
+ retryEnabled: true;
132
+ retryStatuses: [number, number];
133
+ timeoutMs: number;
134
+ };
135
+ 'lease-renew': {
136
+ idempotency: "safe-mutation";
137
+ maxAttempts: number;
138
+ retryBaseDelayMs: number;
139
+ retryEnabled: true;
140
+ retryStatuses: [number, number, number];
141
+ timeoutMs: number;
142
+ };
143
+ 'lease-release': {
144
+ idempotency: "safe-mutation";
145
+ maxAttempts: number;
146
+ retryBaseDelayMs: number;
147
+ retryEnabled: true;
148
+ retryStatuses: [number, number];
149
+ timeoutMs: number;
150
+ };
151
+ 'lease-use-start': {
152
+ idempotency: "safe-mutation";
153
+ maxAttempts: number;
154
+ retryBaseDelayMs: number;
155
+ retryEnabled: true;
156
+ retryStatuses: [number, number, number];
157
+ timeoutMs: number;
158
+ };
159
+ 'lease-heartbeat': {
160
+ idempotency: "safe-mutation";
161
+ maxAttempts: number;
162
+ retryBaseDelayMs: number;
163
+ retryEnabled: true;
164
+ retryStatuses: [number, number, number];
165
+ timeoutMs: number;
166
+ };
167
+ 'lease-use-end': {
168
+ idempotency: "safe-mutation";
169
+ maxAttempts: number;
170
+ retryBaseDelayMs: number;
171
+ retryEnabled: true;
172
+ retryStatuses: [number, number];
173
+ timeoutMs: number;
174
+ };
175
+ 'worker-push-branches': {
176
+ idempotency: "unsafe-mutation";
177
+ maxAttempts: 1;
178
+ retryBaseDelayMs: 0;
179
+ retryEnabled: false;
180
+ retryStatuses: [];
181
+ timeoutMs: number;
182
+ };
183
+ 'worker-pull-default': {
184
+ idempotency: "unsafe-mutation";
185
+ maxAttempts: 1;
186
+ retryBaseDelayMs: 0;
187
+ retryEnabled: false;
188
+ retryStatuses: [];
189
+ timeoutMs: number;
190
+ };
191
+ };
192
+ //#endregion
193
+ //#region src/health/agent-vm-health.d.ts
194
+ declare const agentVmHealthEventKinds: readonly ["gateway-service-health", "gateway-control-link", "controller-request", "lease-renew", "lease-heartbeat", "tool-vm-ssh", "gateway-plugin-health"];
195
+ type AgentVmHealthEventKind = (typeof agentVmHealthEventKinds)[number];
196
+ declare const agentVmHealthResultKinds: readonly ["ok", "failed", "timeout", "stale"];
197
+ type AgentVmHealthResultKind = (typeof agentVmHealthResultKinds)[number];
198
+ interface AgentVmHealthEventBase {
199
+ readonly observedAtMs: number;
200
+ readonly result: AgentVmHealthResultKind;
201
+ readonly zoneId: string;
202
+ }
203
+ type ToolVmSshHealthOperation = 'command' | 'file-bridge' | 'finalize' | 'probe';
204
+ declare const gatewayControlLinkHealthPins: {
205
+ readonly controllerHost: "controller.vm.host";
206
+ readonly controllerPort: 18800;
207
+ readonly operation: "controller-health";
208
+ readonly path: "/health";
209
+ };
210
+ type AgentVmHealthEvent = (AgentVmHealthEventBase & {
211
+ readonly kind: 'gateway-service-health';
212
+ readonly path: string;
213
+ readonly port: number;
214
+ readonly statusCode?: number | undefined;
215
+ }) | (AgentVmHealthEventBase & {
216
+ readonly controllerHost: typeof gatewayControlLinkHealthPins.controllerHost;
217
+ readonly controllerPort: typeof gatewayControlLinkHealthPins.controllerPort;
218
+ readonly elapsedMs: number;
219
+ readonly kind: 'gateway-control-link';
220
+ readonly operation: typeof gatewayControlLinkHealthPins.operation;
221
+ readonly path: typeof gatewayControlLinkHealthPins.path;
222
+ }) | (AgentVmHealthEventBase & {
223
+ readonly attempt: number;
224
+ readonly elapsedMs: number;
225
+ readonly errorCode?: string | undefined;
226
+ readonly kind: 'controller-request';
227
+ readonly maxAttempts: number;
228
+ readonly operation: GenericControllerRequestEventOperation;
229
+ readonly statusCode?: number | undefined;
230
+ }) | (AgentVmHealthEventBase & {
231
+ readonly agentId: string;
232
+ readonly elapsedMs: number;
233
+ readonly errorCode?: string | undefined;
234
+ readonly kind: 'lease-renew';
235
+ readonly leaseId: string;
236
+ }) | (AgentVmHealthEventBase & {
237
+ readonly agentId: string;
238
+ readonly elapsedMs: number;
239
+ readonly errorCode?: string | undefined;
240
+ readonly kind: 'lease-heartbeat';
241
+ readonly leaseId: string;
242
+ readonly useId: string;
243
+ }) | (AgentVmHealthEventBase & {
244
+ readonly agentId: string;
245
+ readonly elapsedMs: number;
246
+ readonly errorCode?: string | undefined;
247
+ readonly kind: 'tool-vm-ssh';
248
+ readonly leaseId: string;
249
+ readonly operation: ToolVmSshHealthOperation;
250
+ }) | (AgentVmHealthEventBase & {
251
+ readonly gatewayService: GatewayType;
252
+ readonly kind: 'gateway-plugin-health';
253
+ readonly state: 'starting' | 'ready' | 'stopping' | 'failed';
254
+ });
255
+ declare const zoneHealthStateKinds: readonly ["unknown", "ok", "stale", "failed"];
256
+ type ZoneHealthStateKind = (typeof zoneHealthStateKinds)[number];
257
+ declare const zoneHealthIssueKinds: readonly ["gateway-service-unhealthy", "gateway-control-link-unhealthy", "controller-request-failing", "lease-heartbeat-failing", "lease-renew-failing", "tool-vm-ssh-failing", "gateway-plugin-unhealthy", "health-event-stale"];
258
+ type ZoneHealthIssueKind = (typeof zoneHealthIssueKinds)[number];
259
+ interface ZoneHealthIssue {
260
+ readonly kind: ZoneHealthIssueKind;
261
+ readonly latestEvent: AgentVmHealthEvent;
262
+ readonly message: string;
263
+ readonly sinceMs: number;
264
+ }
265
+ type ZoneHealthSnapshot = {
266
+ readonly kind: 'unknown';
267
+ readonly reason: 'no-events';
268
+ readonly zoneId: string;
269
+ } | {
270
+ readonly kind: 'ok';
271
+ readonly latestEvents: readonly AgentVmHealthEvent[];
272
+ readonly zoneId: string;
273
+ } | {
274
+ readonly issues: readonly ZoneHealthIssue[];
275
+ readonly kind: 'stale' | 'failed';
276
+ readonly latestEvents: readonly AgentVmHealthEvent[];
277
+ readonly zoneId: string;
278
+ };
279
+ interface DeriveZoneHealthSnapshotOptions {
280
+ readonly nowMs: number;
281
+ readonly staleAfterMs: number;
282
+ readonly zoneId: string;
283
+ }
284
+ declare function isAgentVmHealthEvent(value: unknown): value is AgentVmHealthEvent;
285
+ declare function healthEventBucketKey(event: AgentVmHealthEvent): string;
286
+ declare function deriveZoneHealthSnapshot(events: readonly AgentVmHealthEvent[], options: DeriveZoneHealthSnapshotOptions): ZoneHealthSnapshot;
287
+ //#endregion
23
288
  //#region src/force-ipv4-egress.d.ts
24
289
  /**
25
290
  * Canonical NODE_OPTIONS value for forcing IPv4-preference egress
@@ -67,8 +332,9 @@ declare const FORCE_IPV4_EGRESS_NODE_OPTIONS = "--dns-result-order=ipv4first --n
67
332
  * a zone secret happens to provide its own NODE_OPTIONS.
68
333
  *
69
334
  * Forced flags come FIRST so they are unambiguously applied.
70
- * User-provided flags are appended verbatim. Node treats NODE_OPTIONS
71
- * as a whitespace-separated list and all flags apply.
335
+ * User-provided flags are appended verbatim except for duplicate
336
+ * forced IPv4-preference flags. Node treats NODE_OPTIONS as a
337
+ * whitespace-separated list and all flags apply.
72
338
  *
73
339
  * Returns just the forced flags if the user value is undefined,
74
340
  * empty, or whitespace-only.
@@ -306,14 +572,30 @@ declare function mergeRuntimeGatewaySecrets(baseSecrets: SplitResolvedSecretsRes
306
572
  //#region src/tool-vm-active-use.d.ts
307
573
  type ToolVmActiveUseOutcome = 'abandoned' | 'cancelled' | 'completed' | 'failed' | 'timed-out';
308
574
  interface ToolVmActiveUseCorrelation {
309
- readonly agentId?: string;
310
- readonly sessionId?: string;
311
- readonly sessionKey?: string;
312
- readonly toolCallId?: string;
313
- readonly toolName?: string;
575
+ readonly agentId?: string | undefined;
576
+ readonly sessionId?: string | undefined;
577
+ readonly sessionKey?: string | undefined;
578
+ readonly toolCallId?: string | undefined;
579
+ readonly toolName?: string | undefined;
580
+ }
581
+ type ToolVmSshOperationPhase = 'completed' | 'failed' | 'probe-succeeded' | 'running' | 'starting';
582
+ type ToolVmSshFailureKind = 'active-use-refreshable-failure' | 'ssh-command-failed' | 'ssh-command-timed-out' | 'ssh-probe-failed';
583
+ interface ToolVmSshFailureReport {
584
+ readonly kind: ToolVmSshFailureKind;
585
+ readonly message: string;
586
+ }
587
+ interface ToolVmSshOperationReport {
588
+ readonly failure?: ToolVmSshFailureReport | undefined;
589
+ readonly probeSucceeded?: boolean | undefined;
590
+ }
591
+ interface ToolVmActiveUseOperationReport {
592
+ readonly observedAtMs: number;
593
+ readonly phase: ToolVmSshOperationPhase;
594
+ readonly ssh?: ToolVmSshOperationReport | undefined;
314
595
  }
315
596
  interface StartToolVmActiveUseRequest {
316
- readonly correlation?: ToolVmActiveUseCorrelation;
597
+ readonly correlation?: ToolVmActiveUseCorrelation | undefined;
598
+ readonly report?: ToolVmActiveUseOperationReport | undefined;
317
599
  readonly useId: string;
318
600
  }
319
601
  interface StartToolVmActiveUseResponse {
@@ -325,31 +607,151 @@ interface HeartbeatToolVmActiveUseResponse {
325
607
  readonly expiresAt: number;
326
608
  readonly heartbeatAfterMs: number;
327
609
  }
610
+ interface HeartbeatToolVmActiveUseRequest {
611
+ readonly report?: ToolVmActiveUseOperationReport | undefined;
612
+ }
328
613
  interface EndToolVmActiveUseRequest {
329
614
  readonly outcome: ToolVmActiveUseOutcome;
615
+ readonly report?: ToolVmActiveUseOperationReport | undefined;
330
616
  }
331
617
  interface ToolVmActiveUseHandle {
618
+ readonly signal: AbortSignal;
332
619
  readonly useId: string;
333
620
  dispose(outcome?: ToolVmActiveUseOutcome): Promise<void>;
334
621
  end(outcome?: ToolVmActiveUseOutcome): Promise<void>;
622
+ report(report: ToolVmActiveUseOperationReport): void;
335
623
  }
336
624
  interface CreateToolVmActiveUseHandleOptions {
337
- readonly correlation?: ToolVmActiveUseCorrelation;
625
+ readonly correlation?: ToolVmActiveUseCorrelation | undefined;
338
626
  readonly endActiveUse: (useId: string, request: EndToolVmActiveUseRequest) => Promise<void>;
339
- readonly heartbeatActiveUse: (useId: string) => Promise<HeartbeatToolVmActiveUseResponse>;
627
+ readonly heartbeatActiveUse: (useId: string, request: HeartbeatToolVmActiveUseRequest) => Promise<HeartbeatToolVmActiveUseResponse>;
628
+ readonly heartbeatJitterRatio?: number | undefined;
340
629
  readonly isEndErrorTolerable?: (error: unknown) => boolean;
630
+ readonly isHeartbeatErrorRefreshable?: (error: unknown) => boolean;
341
631
  readonly logEndFailure?: (error: unknown) => void;
342
632
  readonly logHeartbeatFailure?: (error: unknown) => void;
343
- readonly maxHeartbeatDurationMs?: number;
344
- readonly nowImpl?: () => number;
633
+ readonly maxHeartbeatDurationMs?: number | undefined;
634
+ readonly nowImpl?: (() => number) | undefined;
635
+ readonly onRefreshableHeartbeatFailure?: (error: unknown) => Promise<void>;
636
+ readonly randomImpl?: (() => number) | undefined;
345
637
  readonly startActiveUse: (request: StartToolVmActiveUseRequest) => Promise<StartToolVmActiveUseResponse>;
346
- readonly setTimeoutImpl?: typeof setTimeout;
347
- readonly clearTimeoutImpl?: typeof clearTimeout;
638
+ readonly setTimeoutImpl?: typeof setTimeout | undefined;
639
+ readonly clearTimeoutImpl?: typeof clearTimeout | undefined;
348
640
  }
349
641
  declare function createToolVmActiveUseId(): string;
350
642
  declare function isToolVmActiveUseId(value: string): boolean;
351
643
  declare function createToolVmActiveUseHandle(options: CreateToolVmActiveUseHandleOptions): Promise<ToolVmActiveUseHandle>;
352
644
  //#endregion
645
+ //#region src/runtime-paths/runtime-path-mapping.d.ts
646
+ declare const TOOL_VM_WORKSPACE_GUEST_ROOT = "/workspace";
647
+ declare const TOOL_VM_SCRATCH_GUEST_ROOT = "/work";
648
+ declare const OPENCLAW_STATE_VM_ROOT = "/home/openclaw/.openclaw/state";
649
+ declare const OPENCLAW_STATE_SANDBOXES_VM_ROOT = "/home/openclaw/.openclaw/state/sandboxes";
650
+ type RuntimePathNamespace = 'controller-host' | 'openclaw-gateway' | 'tool-vm-guest';
651
+ type RuntimePathPurpose = 'executionCwd' | 'leaseMount';
652
+ interface RuntimePathCapabilities {
653
+ readonly executionCwd: boolean;
654
+ readonly leaseMount: boolean;
655
+ }
656
+ type RuntimePathBacking = {
657
+ readonly kind: 'host-realfs';
658
+ readonly durability: 'durable' | 'runtime' | 'cache';
659
+ readonly backup: 'included' | 'excluded';
660
+ } | {
661
+ readonly kind: 'guest-rootfs-cow';
662
+ readonly durability: 'vm-lifetime';
663
+ };
664
+ type RuntimePathLocations = Partial<Record<RuntimePathNamespace, string>>;
665
+ type RuntimePathHostRealfsLocations = {
666
+ readonly 'controller-host': string;
667
+ readonly 'openclaw-gateway'?: string;
668
+ readonly 'tool-vm-guest'?: string;
669
+ } | {
670
+ readonly 'controller-host'?: string;
671
+ readonly 'openclaw-gateway': string;
672
+ readonly 'tool-vm-guest'?: string;
673
+ };
674
+ interface RuntimePathGuestRootfsCowLocations {
675
+ readonly 'controller-host'?: never;
676
+ readonly 'openclaw-gateway'?: never;
677
+ readonly 'tool-vm-guest': string;
678
+ }
679
+ type RuntimePathGuidanceVisibility = Partial<Record<RuntimePathNamespace, boolean>>;
680
+ interface RuntimePathRootMappingBase {
681
+ readonly capabilities: RuntimePathCapabilities;
682
+ readonly guidanceLabel: string;
683
+ readonly id: string;
684
+ /**
685
+ * False for broad roots like /zone where mounting the root would expose
686
+ * unrelated children; callers must request an explicit child path.
687
+ */
688
+ readonly rootPathAllowed: boolean;
689
+ readonly showInGuidance?: RuntimePathGuidanceVisibility;
690
+ }
691
+ type RuntimePathRootMapping = (RuntimePathRootMappingBase & {
692
+ readonly backing: Extract<RuntimePathBacking, {
693
+ readonly kind: 'host-realfs';
694
+ }>;
695
+ readonly locations: RuntimePathHostRealfsLocations;
696
+ }) | (RuntimePathRootMappingBase & {
697
+ readonly backing: Extract<RuntimePathBacking, {
698
+ readonly kind: 'guest-rootfs-cow';
699
+ }>;
700
+ readonly capabilities: RuntimePathCapabilities & {
701
+ readonly leaseMount: false;
702
+ };
703
+ readonly locations: RuntimePathGuestRootfsCowLocations;
704
+ });
705
+ interface RuntimePathMapping {
706
+ readonly id: string;
707
+ readonly roots: readonly RuntimePathRootMapping[];
708
+ }
709
+ interface TranslateRuntimePathInput {
710
+ readonly inputPath: string;
711
+ readonly mapping: RuntimePathMapping;
712
+ readonly purpose: RuntimePathPurpose;
713
+ readonly sourceNamespace?: RuntimePathNamespace;
714
+ readonly targetNamespace: RuntimePathNamespace;
715
+ }
716
+ interface RuntimePathTranslation {
717
+ readonly backing: RuntimePathBacking;
718
+ readonly capabilities: RuntimePathCapabilities;
719
+ readonly inputNamespace: RuntimePathNamespace;
720
+ readonly inputPath: string;
721
+ readonly mappingId: string;
722
+ readonly outputNamespace: RuntimePathNamespace;
723
+ readonly outputPath: string;
724
+ readonly relativePath: string;
725
+ readonly rootId: string;
726
+ }
727
+ type RuntimePathTranslationErrorCode = 'path-not-absolute' | 'path-parent-traversal' | 'invalid-runtime-root' | 'unknown-runtime-path' | 'purpose-not-allowed' | 'root-path-not-allowed' | 'target-namespace-not-available';
728
+ interface RuntimePathTranslationError {
729
+ readonly allowedPathForms: readonly string[];
730
+ readonly code: RuntimePathTranslationErrorCode;
731
+ readonly inputPath: string;
732
+ readonly mappingId: string;
733
+ readonly message: string;
734
+ readonly purpose: RuntimePathPurpose;
735
+ readonly retryGuidance: string;
736
+ }
737
+ type TranslateRuntimePathResult = {
738
+ readonly ok: true;
739
+ readonly value: RuntimePathTranslation;
740
+ } | {
741
+ readonly ok: false;
742
+ readonly error: RuntimePathTranslationError;
743
+ };
744
+ declare function translateRuntimePath(input: TranslateRuntimePathInput): TranslateRuntimePathResult;
745
+ //#endregion
746
+ //#region src/tool-vm-lease-id.d.ts
747
+ declare const toolVmLeaseIdBrand: unique symbol;
748
+ type ToolVmLeaseId = string & {
749
+ readonly [toolVmLeaseIdBrand]: true;
750
+ };
751
+ declare function createToolVmLeaseId(): ToolVmLeaseId;
752
+ declare function isToolVmLeaseId(value: unknown): value is ToolVmLeaseId;
753
+ declare function parseToolVmLeaseId(value: unknown): ToolVmLeaseId;
754
+ //#endregion
353
755
  //#region src/vm-capability-lease.d.ts
354
756
  /**
355
757
  * Small host-issued capability envelope shared by VM-backed transports. The
@@ -382,16 +784,18 @@ declare function isVmSshPublicEndpoint(value: unknown): value is VmSshPublicEndp
382
784
  //#region src/tool-vm-lease.d.ts
383
785
  interface ToolVmSshLease extends VmSshLease<'ssh-sandbox'> {
384
786
  readonly agentId: string;
385
- readonly scopeKey: string;
787
+ readonly idleTtlMs: number;
788
+ readonly leaseId: ToolVmLeaseId;
386
789
  readonly tcpSlot: number;
387
790
  readonly workdir: string;
388
791
  }
389
792
  interface ToolVmLeasePeek extends VmCapabilityLease<'ssh-sandbox'> {
390
793
  readonly agentId: string;
391
794
  readonly createdAt: number;
795
+ readonly idleTtlMs: number;
392
796
  readonly lastUsedAt: number;
797
+ readonly leaseId: ToolVmLeaseId;
393
798
  readonly profileId: string;
394
- readonly scopeKey: string;
395
799
  readonly ssh: VmSshPublicEndpoint;
396
800
  readonly tcpSlot: number;
397
801
  readonly workdir: string;
@@ -400,5 +804,5 @@ interface ToolVmLeasePeek extends VmCapabilityLease<'ssh-sandbox'> {
400
804
  declare function isToolVmSshLease(value: unknown): value is ToolVmSshLease;
401
805
  declare function isToolVmLeasePeek(value: unknown): value is ToolVmLeasePeek;
402
806
  //#endregion
403
- export { type BuildGatewayVmSpecOptions, type CreateToolVmActiveUseHandleOptions, type EgressHostConfig, type EndToolVmActiveUseRequest, type EnvInjectedGatewaySecretConfig, FORCE_IPV4_EGRESS_NODE_OPTIONS, type GatewayAuthConfig, type GatewayHealthCheck, type GatewayIngressConfig, type GatewayLifecycle, type GatewayProcessSpec, type GatewaySecretConfig, type GatewayType, type GatewayVmSpec, type GatewayZoneAgentConfig, type GatewayZoneConfig, type GatewayZoneMcpPortalConfig, type HeartbeatToolVmActiveUseResponse, type HttpMediatedGatewaySecretConfig, type RuntimeVmAudience, type SecretInjectionConfig, type SplitResolvedGatewaySecretsResult, type SplitResolvedSecretsResult, type StartToolVmActiveUseRequest, type StartToolVmActiveUseResponse, type ToolVmActiveUseCorrelation, type ToolVmActiveUseHandle, type ToolVmActiveUseOutcome, type ToolVmLeasePeek, type ToolVmSshLease, type VmAudience, type VmCapabilityLease, type VmSshEndpoint, type VmSshLease, type VmSshPublicEndpoint, buildGatewaySessionLabel, buildToolSessionLabel, composeNodeOptions, controllerVmHost, createToolVmActiveUseHandle, createToolVmActiveUseId, egressHostsForAudience, gatewayTypeValues, gatewayVmAllowedHosts, isToolVmActiveUseId, isToolVmLeasePeek, isToolVmSshLease, isVmCapabilityLease, isVmSshEndpoint, isVmSshPublicEndpoint, mergeRuntimeGatewaySecrets, splitResolvedGatewaySecrets, splitResolvedSecretsByInjection, targetsAudience, vmAudienceValues };
807
+ export { type AgentVmHealthEvent, type AgentVmHealthEventBase, type AgentVmHealthEventKind, type AgentVmHealthResultKind, type BuildGatewayVmSpecOptions, type ControllerRequestPolicy, type ControllerRequestPolicyOperation, ControllerRequestPolicyTransportError, type ControllerRequestPolicyTransportErrorCode, type CreateToolVmActiveUseHandleOptions, type DeriveZoneHealthSnapshotOptions, type EgressHostConfig, type EndToolVmActiveUseRequest, type EnvInjectedGatewaySecretConfig, type ExternalControllerRoute, FORCE_IPV4_EGRESS_NODE_OPTIONS, type FetchControllerWithPolicyOptions, type GatewayAuthConfig, type GatewayHealthCheck, type GatewayIngressConfig, type GatewayInternalControllerRequestOperation, type GatewayLifecycle, type GatewayProcessSpec, type GatewaySecretConfig, type GatewayType, type GatewayVmSpec, type GatewayZoneAgentConfig, type GatewayZoneConfig, type GatewayZoneMcpPortalConfig, type GenericControllerRequestEventOperation, type HeartbeatToolVmActiveUseRequest, type HeartbeatToolVmActiveUseResponse, type HttpMediatedGatewaySecretConfig, OPENCLAW_STATE_SANDBOXES_VM_ROOT, OPENCLAW_STATE_VM_ROOT, type RuntimePathBacking, type RuntimePathCapabilities, type RuntimePathGuidanceVisibility, type RuntimePathLocations, type RuntimePathMapping, type RuntimePathNamespace, type RuntimePathPurpose, type RuntimePathRootMapping, type RuntimePathTranslation, type RuntimePathTranslationError, type RuntimePathTranslationErrorCode, type RuntimeVmAudience, type SecretInjectionConfig, type SplitResolvedGatewaySecretsResult, type SplitResolvedSecretsResult, type StartToolVmActiveUseRequest, type StartToolVmActiveUseResponse, TOOL_VM_SCRATCH_GUEST_ROOT, TOOL_VM_WORKSPACE_GUEST_ROOT, type ToolVmActiveUseCorrelation, type ToolVmActiveUseHandle, type ToolVmActiveUseOperationReport, type ToolVmActiveUseOutcome, type ToolVmLeaseId, type ToolVmLeasePeek, type ToolVmSshFailureKind, type ToolVmSshFailureReport, type ToolVmSshHealthOperation, type ToolVmSshLease, type ToolVmSshOperationPhase, type ToolVmSshOperationReport, type TranslateRuntimePathInput, type TranslateRuntimePathResult, type VmAudience, type VmCapabilityLease, type VmSshEndpoint, type VmSshLease, type VmSshPublicEndpoint, type WorkerInternalControllerRequestOperation, type ZoneHealthIssue, type ZoneHealthIssueKind, type ZoneHealthSnapshot, type ZoneHealthStateKind, agentVmHealthEventKinds, agentVmHealthResultKinds, buildGatewaySessionLabel, buildToolSessionLabel, composeNodeOptions, controllerRequestPolicies, controllerVmHost, createToolVmActiveUseHandle, createToolVmActiveUseId, createToolVmLeaseId, deriveZoneHealthSnapshot, drainControllerResponseBody, egressHostsForAudience, externalControllerRoutes, fetchControllerWithPolicy, gatewayControlLinkHealthPins, gatewayInternalControllerRequestOperations, gatewayTypeValues, gatewayVmAllowedHosts, genericControllerRequestEventOperations, healthEventBucketKey, isAgentVmHealthEvent, isToolVmActiveUseId, isToolVmLeaseId, isToolVmLeasePeek, isToolVmSshLease, isVmCapabilityLease, isVmSshEndpoint, isVmSshPublicEndpoint, mergeRuntimeGatewaySecrets, parseToolVmLeaseId, splitResolvedGatewaySecrets, splitResolvedSecretsByInjection, targetsAudience, translateRuntimePath, vmAudienceValues, workerInternalControllerRequestOperations, zoneHealthIssueKinds, zoneHealthStateKinds };
404
808
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/gateway-runtime-contract.ts","../src/audience.ts","../src/force-ipv4-egress.ts","../src/gateway-process-spec.ts","../src/gateway-vm-spec.ts","../src/gateway-lifecycle.ts","../src/split-resolved-gateway-secrets.ts","../src/tool-vm-active-use.ts","../src/vm-capability-lease.ts","../src/tool-vm-lease.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/gateway-runtime-contract.ts","../src/audience.ts","../src/health/controller-request-policy.ts","../src/health/agent-vm-health.ts","../src/force-ipv4-egress.ts","../src/gateway-process-spec.ts","../src/gateway-vm-spec.ts","../src/gateway-lifecycle.ts","../src/split-resolved-gateway-secrets.ts","../src/tool-vm-active-use.ts","../src/runtime-paths/runtime-path-mapping.ts","../src/tool-vm-lease-id.ts","../src/vm-capability-lease.ts","../src/tool-vm-lease.ts"],"mappings":"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"}