remote-codex 0.11.31 → 0.11.32
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/README.md +12 -4
- package/apps/relay-server/dist/index.js +2956 -164
- package/apps/supervisor-api/dist/index.js +457 -54
- package/apps/supervisor-web/dist/assets/index-CGHHTNkM.js +21 -0
- package/apps/supervisor-web/dist/assets/index-CdjTdnJt.css +1 -0
- package/apps/supervisor-web/dist/assets/thread-ui-B9eC2H4u.js +3677 -0
- package/apps/supervisor-web/dist/index.html +3 -3
- package/bin/remote-codex.mjs +6 -3
- package/package.json +1 -1
- package/packages/agent-runtime/src/types.ts +13 -0
- package/packages/claude/src/runtimeAdapter.test.ts +64 -0
- package/packages/claude/src/runtimeAdapter.ts +60 -0
- package/packages/codex/src/appServerManager.ts +16 -0
- package/packages/codex/src/runtimeAdapter.test.ts +44 -0
- package/packages/codex/src/runtimeAdapter.ts +66 -0
- package/packages/db/migrations/0029_thread_turn_delivery.sql +19 -0
- package/packages/db/src/repositories.ts +96 -1
- package/packages/db/src/schema.ts +20 -0
- package/packages/shared/src/index.ts +199 -6
- package/scripts/run-web-service.mjs +2 -2
- package/scripts/service-manager.mjs +2 -2
- package/apps/supervisor-web/dist/assets/index-BkwJP0KB.js +0 -6
- package/apps/supervisor-web/dist/assets/index-CJFMmjP5.css +0 -1
- package/apps/supervisor-web/dist/assets/thread-ui-BOqbjoiB.js +0 -3677
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AgentBackendIdDto,
|
|
3
|
-
} from './agent-providers';
|
|
1
|
+
import type { AgentBackendIdDto } from './agent-providers';
|
|
4
2
|
|
|
5
3
|
export {
|
|
6
4
|
agentBackendIds,
|
|
@@ -110,6 +108,9 @@ export interface RelayDeviceDto {
|
|
|
110
108
|
connectedAt: string | null;
|
|
111
109
|
lastHeartbeatAt: string | null;
|
|
112
110
|
createdAt: string;
|
|
111
|
+
hostedStatus?: RelayHostedSandboxStatusDto | null;
|
|
112
|
+
hostedActiveTurnCount?: number;
|
|
113
|
+
hostedIdleDeadlineAt?: string | null;
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
export interface RelayAdminUserDto extends RelayUserDto {
|
|
@@ -145,6 +146,12 @@ export interface RelayRegistrationSettingsDto {
|
|
|
145
146
|
enabled: boolean;
|
|
146
147
|
registrationPassword: string | null;
|
|
147
148
|
approvalRequired: boolean;
|
|
149
|
+
googleAuthEnabled: boolean;
|
|
150
|
+
githubAuthEnabled: boolean;
|
|
151
|
+
emailVerificationEnabled: boolean;
|
|
152
|
+
googleAuthAvailable: boolean;
|
|
153
|
+
githubAuthAvailable: boolean;
|
|
154
|
+
emailVerificationAvailable: boolean;
|
|
148
155
|
}
|
|
149
156
|
|
|
150
157
|
export interface RelayPendingRegistrationDto {
|
|
@@ -152,6 +159,7 @@ export interface RelayPendingRegistrationDto {
|
|
|
152
159
|
email: string;
|
|
153
160
|
username: string;
|
|
154
161
|
createdAt: string;
|
|
162
|
+
provider?: 'password' | 'google' | 'github';
|
|
155
163
|
}
|
|
156
164
|
|
|
157
165
|
export type RelayThreadAccessDto = 'read' | 'control';
|
|
@@ -297,6 +305,7 @@ export interface RelaySessionDto {
|
|
|
297
305
|
authenticated: boolean;
|
|
298
306
|
user: RelayUserDto | null;
|
|
299
307
|
registrationEnabled: boolean;
|
|
308
|
+
registrationSettings?: RelayRegistrationSettingsDto;
|
|
300
309
|
}
|
|
301
310
|
|
|
302
311
|
export interface RelayLoginResultDto {
|
|
@@ -337,6 +346,153 @@ export interface RelayAdminSummaryDto {
|
|
|
337
346
|
registrationEnabled: boolean;
|
|
338
347
|
}
|
|
339
348
|
|
|
349
|
+
export type RelayHostedSandboxProviderDto = 'disabled' | 'incus';
|
|
350
|
+
|
|
351
|
+
export interface RelayHostedSandboxCapabilityDto {
|
|
352
|
+
provider: RelayHostedSandboxProviderDto;
|
|
353
|
+
configured: boolean;
|
|
354
|
+
reachable: boolean;
|
|
355
|
+
available: boolean;
|
|
356
|
+
reasonCode: string | null;
|
|
357
|
+
reason: string | null;
|
|
358
|
+
checkedAt: string;
|
|
359
|
+
limits?: {
|
|
360
|
+
maxInstances: number;
|
|
361
|
+
maxRunningInstances: number;
|
|
362
|
+
};
|
|
363
|
+
capacity?: {
|
|
364
|
+
totalInstances: number;
|
|
365
|
+
runningInstances: number;
|
|
366
|
+
};
|
|
367
|
+
metrics?: {
|
|
368
|
+
cpuCount: number;
|
|
369
|
+
load1: number;
|
|
370
|
+
loadPerCpu: number;
|
|
371
|
+
memoryTotalMiB: number;
|
|
372
|
+
memoryAvailableMiB: number;
|
|
373
|
+
diskTotalGiB: number;
|
|
374
|
+
diskAvailableGiB: number;
|
|
375
|
+
monitorPath: string;
|
|
376
|
+
};
|
|
377
|
+
alerts?: Array<{
|
|
378
|
+
code: 'host_memory_low' | 'host_disk_low' | 'host_load_high';
|
|
379
|
+
severity: 'warning';
|
|
380
|
+
message: string;
|
|
381
|
+
}>;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
export type RelayHostedSandboxStatusDto =
|
|
385
|
+
| 'requested'
|
|
386
|
+
| 'creating'
|
|
387
|
+
| 'starting'
|
|
388
|
+
| 'provisioning'
|
|
389
|
+
| 'stopped'
|
|
390
|
+
| 'online'
|
|
391
|
+
| 'stopping'
|
|
392
|
+
| 'error'
|
|
393
|
+
| 'deleting';
|
|
394
|
+
|
|
395
|
+
export type RelayHostedSandboxOperationActionDto =
|
|
396
|
+
| 'create'
|
|
397
|
+
| 'start'
|
|
398
|
+
| 'stop'
|
|
399
|
+
| 'snapshot'
|
|
400
|
+
| 'delete'
|
|
401
|
+
| 'rotate_credential';
|
|
402
|
+
|
|
403
|
+
export type RelayHostedSandboxOperationStatusDto =
|
|
404
|
+
| 'pending'
|
|
405
|
+
| 'running'
|
|
406
|
+
| 'succeeded'
|
|
407
|
+
| 'failed';
|
|
408
|
+
|
|
409
|
+
export interface RelayHostedSandboxResourcesDto {
|
|
410
|
+
cpuCount: number;
|
|
411
|
+
memoryMiB: number;
|
|
412
|
+
diskGiB: number;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
export interface RelayHostedCodexConfigDto {
|
|
416
|
+
modelProvider: string;
|
|
417
|
+
model: string;
|
|
418
|
+
reviewModel: string;
|
|
419
|
+
reasoningEffort: 'low' | 'medium' | 'high' | 'xhigh';
|
|
420
|
+
baseUrl: string;
|
|
421
|
+
wireApi: 'responses';
|
|
422
|
+
requiresOpenaiAuth: boolean;
|
|
423
|
+
disableResponseStorage: boolean;
|
|
424
|
+
networkAccess: 'enabled' | 'disabled';
|
|
425
|
+
goals: boolean;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
export interface RelayHostedSandboxMemberDto {
|
|
429
|
+
userId: string;
|
|
430
|
+
username: string;
|
|
431
|
+
email: string;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export interface RelayHostedCodexFilesDto {
|
|
435
|
+
configToml: string;
|
|
436
|
+
authJson: string;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
export interface RelayHostedSandboxDto {
|
|
440
|
+
id: string;
|
|
441
|
+
deviceId: string;
|
|
442
|
+
deviceName: string;
|
|
443
|
+
assignedUserId: string;
|
|
444
|
+
assignedUsername: string;
|
|
445
|
+
assignedUsers: RelayHostedSandboxMemberDto[];
|
|
446
|
+
workspaceIsolationEnabled: boolean;
|
|
447
|
+
createdByAdminUserId: string;
|
|
448
|
+
provider: 'incus';
|
|
449
|
+
providerInstanceId: string | null;
|
|
450
|
+
imageVersion: string;
|
|
451
|
+
resources: RelayHostedSandboxResourcesDto;
|
|
452
|
+
status: RelayHostedSandboxStatusDto;
|
|
453
|
+
lastErrorCode: string | null;
|
|
454
|
+
lastErrorMessage: string | null;
|
|
455
|
+
activeTurnCount: number;
|
|
456
|
+
lastUserActivityAt: string | null;
|
|
457
|
+
idleDeadlineAt: string | null;
|
|
458
|
+
runningSince: string | null;
|
|
459
|
+
createdAt: string;
|
|
460
|
+
updatedAt: string;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
export interface RelayHostedSandboxOperationDto {
|
|
464
|
+
id: string;
|
|
465
|
+
sandboxId: string;
|
|
466
|
+
action: RelayHostedSandboxOperationActionDto;
|
|
467
|
+
status: RelayHostedSandboxOperationStatusDto;
|
|
468
|
+
errorCode: string | null;
|
|
469
|
+
errorMessage: string | null;
|
|
470
|
+
createdAt: string;
|
|
471
|
+
updatedAt: string;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
export interface RelayHostedSandboxDetailDto extends RelayHostedSandboxDto {
|
|
475
|
+
operations: RelayHostedSandboxOperationDto[];
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
export interface RelayHostedSandboxReconciliationDto {
|
|
479
|
+
status: 'never_run' | 'healthy' | 'issues' | 'unavailable';
|
|
480
|
+
checkedAt: string | null;
|
|
481
|
+
errorCode: string | null;
|
|
482
|
+
missingInstanceSandboxIds: string[];
|
|
483
|
+
missingCredentialSandboxIds: string[];
|
|
484
|
+
orphanInstances: Array<{
|
|
485
|
+
id: string;
|
|
486
|
+
status: string;
|
|
487
|
+
snapshots: string[];
|
|
488
|
+
}>;
|
|
489
|
+
orphanCredentials: Array<{
|
|
490
|
+
credentialRef: string;
|
|
491
|
+
createdAt: string;
|
|
492
|
+
}>;
|
|
493
|
+
orphanSnapshotCount: number;
|
|
494
|
+
}
|
|
495
|
+
|
|
340
496
|
export type RelaySupervisorEnvelope =
|
|
341
497
|
| {
|
|
342
498
|
type: 'relay.connected';
|
|
@@ -348,6 +504,16 @@ export type RelaySupervisorEnvelope =
|
|
|
348
504
|
timestamp: string;
|
|
349
505
|
deviceId?: string;
|
|
350
506
|
}
|
|
507
|
+
| {
|
|
508
|
+
type: 'relay.activity';
|
|
509
|
+
timestamp: string;
|
|
510
|
+
deviceId?: string;
|
|
511
|
+
payload: {
|
|
512
|
+
kind: 'turn_started' | 'turn_terminal';
|
|
513
|
+
threadId: string;
|
|
514
|
+
turnId: string;
|
|
515
|
+
};
|
|
516
|
+
}
|
|
351
517
|
| {
|
|
352
518
|
type: 'relay.request';
|
|
353
519
|
timestamp: string;
|
|
@@ -408,6 +574,22 @@ export interface AgentRuntimeStatusDto {
|
|
|
408
574
|
restartCount: number;
|
|
409
575
|
}
|
|
410
576
|
|
|
577
|
+
export interface AgentSubscriptionUsageWindowDto {
|
|
578
|
+
id: string;
|
|
579
|
+
durationMinutes: number | null;
|
|
580
|
+
label: string;
|
|
581
|
+
usedPercent: number;
|
|
582
|
+
resetsAt: string | null;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export interface AgentSubscriptionUsageDto {
|
|
586
|
+
provider: 'codex' | 'claude';
|
|
587
|
+
authKind: 'subscription' | 'apiKey' | 'unknown';
|
|
588
|
+
observedAt: string;
|
|
589
|
+
stale: boolean;
|
|
590
|
+
windows: AgentSubscriptionUsageWindowDto[];
|
|
591
|
+
}
|
|
592
|
+
|
|
411
593
|
export interface AgentProviderCapabilitiesDto {
|
|
412
594
|
sessions: {
|
|
413
595
|
list: boolean;
|
|
@@ -535,6 +717,7 @@ export interface VersionDto {
|
|
|
535
717
|
export interface HealthDto {
|
|
536
718
|
status: 'ok';
|
|
537
719
|
timestamp: string;
|
|
720
|
+
activeTurnCount: number;
|
|
538
721
|
}
|
|
539
722
|
|
|
540
723
|
export type ProviderHostFileNameDto = string;
|
|
@@ -596,7 +779,9 @@ export interface CreateWorkspaceFromGitInput {
|
|
|
596
779
|
label?: string;
|
|
597
780
|
}
|
|
598
781
|
|
|
599
|
-
export type CreateWorkspaceInput =
|
|
782
|
+
export type CreateWorkspaceInput =
|
|
783
|
+
| CreateWorkspaceFromPathInput
|
|
784
|
+
| CreateWorkspaceFromGitInput;
|
|
600
785
|
|
|
601
786
|
export interface WorkspaceSettingsDto {
|
|
602
787
|
workspaceRoot: string;
|
|
@@ -705,7 +890,10 @@ export type ReasoningEffortDto =
|
|
|
705
890
|
| 'max'
|
|
706
891
|
| 'ultra';
|
|
707
892
|
export type CollaborationModeDto = 'default' | 'plan';
|
|
708
|
-
export type SandboxModeDto =
|
|
893
|
+
export type SandboxModeDto =
|
|
894
|
+
| 'read-only'
|
|
895
|
+
| 'workspace-write'
|
|
896
|
+
| 'danger-full-access';
|
|
709
897
|
|
|
710
898
|
export interface ReasoningEffortOptionDto {
|
|
711
899
|
reasoningEffort: ReasoningEffortDto;
|
|
@@ -1053,7 +1241,11 @@ export type AgentHookSourceDto =
|
|
|
1053
1241
|
| 'legacyManagedConfigFile'
|
|
1054
1242
|
| 'legacyManagedConfigMdm'
|
|
1055
1243
|
| 'unknown';
|
|
1056
|
-
export type AgentHookTrustStatusDto =
|
|
1244
|
+
export type AgentHookTrustStatusDto =
|
|
1245
|
+
| 'managed'
|
|
1246
|
+
| 'untrusted'
|
|
1247
|
+
| 'trusted'
|
|
1248
|
+
| 'modified';
|
|
1057
1249
|
|
|
1058
1250
|
export interface AgentHookDto {
|
|
1059
1251
|
key: string;
|
|
@@ -1156,6 +1348,7 @@ export interface ThreadPendingSteerDto {
|
|
|
1156
1348
|
clientRequestId: string | null;
|
|
1157
1349
|
turnId: string;
|
|
1158
1350
|
prompt: string;
|
|
1351
|
+
delivery: 'steer' | 'continuation';
|
|
1159
1352
|
createdAt: string;
|
|
1160
1353
|
}
|
|
1161
1354
|
|
|
@@ -13,9 +13,9 @@ const sourceCheckout =
|
|
|
13
13
|
const defaultServicePort = sourceCheckout ? 4173 : 45673;
|
|
14
14
|
const defaultApiPort = sourceCheckout ? 8787 : 45674;
|
|
15
15
|
|
|
16
|
-
const serviceHost = process.env.SERVICE_HOST ?? '
|
|
16
|
+
const serviceHost = process.env.SERVICE_HOST ?? '0.0.0.0';
|
|
17
17
|
const servicePort = parsePort(process.env.SERVICE_PORT, defaultServicePort);
|
|
18
|
-
const apiHost = process.env.SERVICE_API_HOST ?? '
|
|
18
|
+
const apiHost = process.env.SERVICE_API_HOST ?? '0.0.0.0';
|
|
19
19
|
const apiPort = parsePort(process.env.SERVICE_API_PORT, defaultApiPort);
|
|
20
20
|
const distDir = path.resolve(
|
|
21
21
|
process.env.SERVICE_WEB_DIST_DIR ?? path.join(repoRoot, 'apps/supervisor-web/dist')
|
|
@@ -23,9 +23,9 @@ const webIndex = path.join(repoRoot, 'apps', 'supervisor-web', 'dist', 'index.ht
|
|
|
23
23
|
const defaultServicePort = supportsSourceRestart ? 4173 : 45673;
|
|
24
24
|
const defaultApiPort = supportsSourceRestart ? 8787 : 45674;
|
|
25
25
|
|
|
26
|
-
const serviceHost = process.env.SERVICE_HOST ?? '
|
|
26
|
+
const serviceHost = process.env.SERVICE_HOST ?? '0.0.0.0';
|
|
27
27
|
const servicePort = parsePort(process.env.SERVICE_PORT, defaultServicePort);
|
|
28
|
-
const apiHost = process.env.SERVICE_API_HOST ?? '
|
|
28
|
+
const apiHost = process.env.SERVICE_API_HOST ?? '0.0.0.0';
|
|
29
29
|
const apiPort = parsePort(process.env.SERVICE_API_PORT, defaultApiPort);
|
|
30
30
|
|
|
31
31
|
const command = process.argv[2];
|