@agent-relay/cloud 8.7.0 → 8.7.2

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
@@ -3,6 +3,7 @@ export { CloudApiClient, buildApiUrl, type CloudApiClientOptions, type CloudApiC
3
3
  export { runWorkflow, scheduleWorkflow, listWorkflowSchedules, getRunStatus, getRunLogs, cancelWorkflow, syncWorkflowPatch, resolveWorkflowInput, inferWorkflowFileType, shouldSyncCodeByDefault, } from './workflows.js';
4
4
  export { connectProvider, getProviderHelpText, normalizeProvider, type ConnectProviderIo, type ConnectProviderOptions, type ConnectProviderResult, } from './connect.js';
5
5
  export { createWorkspace, issueWorkspaceToken, resolveActiveWorkspace } from './workspaces.js';
6
+ export { acknowledgeCloudWorkerAssignment, cloudWorkerStateDir, cloudWorkerStorePath, downloadCloudWorkerAssignmentStorage, headCloudWorkerAssignmentStorage, readCloudWorkerStore, registerCloudWorker, reportCloudWorkerAssignmentStatus, resolveCloudWorkerRecord, resolveWorkerWorkflowPayload, runCloudWorkerLoop, sendCloudWorkerHeartbeat, streamCloudWorkerQueue, upsertCloudWorkerRecord, writeCloudWorkerStore, type CloudWorkerLoopOptions, type CloudWorkerRecord, type CloudWorkerStore, type ExecuteWorkerAssignment, type WorkAssignmentRecord, type WorkerFileType, type WorkerQueueEvent, type WorkerStatusDetail, type WorkerWorkflowPayload, type WorkerWorkflowRef, } from './worker.js';
6
7
  export { activeWorkspaceKey, readWorkspaceStore, resolveActiveWorkspaceKey, setActiveWorkspace, setWorkspaceKey, switchWorkspace, validateWorkspaceName, workspaceStorePath, writeWorkspaceStore, type WorkspaceStore, } from './workspace-store.js';
7
8
  export { deployProactiveAgent, listProactiveAgents, inspectProactiveAgent, undeployProactiveAgent, createWorkspaceSecret, getWorkspaceSecret, deleteWorkspaceSecret, } from './proactive-runtime.js';
8
9
  export { runInteractiveSession, formatShellInvocation, wrapWithLaunchCheckpoint, type SshConnectionInfo, type InteractiveSessionOptions, type InteractiveSessionResult, } from './lib/ssh-interactive.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { CloudApiClient, buildApiUrl, } from './api-client.js';
3
3
  export { runWorkflow, scheduleWorkflow, listWorkflowSchedules, getRunStatus, getRunLogs, cancelWorkflow, syncWorkflowPatch, resolveWorkflowInput, inferWorkflowFileType, shouldSyncCodeByDefault, } from './workflows.js';
4
4
  export { connectProvider, getProviderHelpText, normalizeProvider, } from './connect.js';
5
5
  export { createWorkspace, issueWorkspaceToken, resolveActiveWorkspace } from './workspaces.js';
6
+ export { acknowledgeCloudWorkerAssignment, cloudWorkerStateDir, cloudWorkerStorePath, downloadCloudWorkerAssignmentStorage, headCloudWorkerAssignmentStorage, readCloudWorkerStore, registerCloudWorker, reportCloudWorkerAssignmentStatus, resolveCloudWorkerRecord, resolveWorkerWorkflowPayload, runCloudWorkerLoop, sendCloudWorkerHeartbeat, streamCloudWorkerQueue, upsertCloudWorkerRecord, writeCloudWorkerStore, } from './worker.js';
6
7
  export { activeWorkspaceKey, readWorkspaceStore, resolveActiveWorkspaceKey, setActiveWorkspace, setWorkspaceKey, switchWorkspace, validateWorkspaceName, workspaceStorePath, writeWorkspaceStore, } from './workspace-store.js';
7
8
  export { deployProactiveAgent, listProactiveAgents, inspectProactiveAgent, undeployProactiveAgent, createWorkspaceSecret, getWorkspaceSecret, deleteWorkspaceSecret, } from './proactive-runtime.js';
8
9
  export { runInteractiveSession, formatShellInvocation, wrapWithLaunchCheckpoint, } from './lib/ssh-interactive.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GAIzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,qEAAqE;AACrE,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GAEf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,iCAAiC,GAIlC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,EAEL,cAAc,EAoBd,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,EACpC,gCAAgC,EAChC,oBAAoB,EACpB,mBAAmB,EACnB,iCAAiC,EACjC,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GAWtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GAIzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,qEAAqE;AACrE,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GAEf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,iCAAiC,GAIlC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,EAEL,cAAc,EAoBd,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,162 @@
1
+ export type WorkerFileType = 'yaml' | 'ts' | 'py';
2
+ export type WorkerWorkflowPayload = {
3
+ runId: string;
4
+ workspaceId: string;
5
+ relayWorkspaceId: string;
6
+ relaycastApiKey: string;
7
+ relaycastBaseUrl?: string;
8
+ relayfileUrl: string;
9
+ relayfileToken: string;
10
+ workflow: string;
11
+ fileType: WorkerFileType;
12
+ sourceFileType: WorkerFileType | 'workflow';
13
+ workflowFileName: string;
14
+ envSecrets?: Record<string, string>;
15
+ metadata?: Record<string, string>;
16
+ s3CodeKey?: string;
17
+ paths?: Array<{
18
+ name: string;
19
+ s3CodeKey: string;
20
+ repoOwner?: string;
21
+ repoName?: string;
22
+ }>;
23
+ resumeRunId?: string;
24
+ startFrom?: string;
25
+ previousRunId?: string;
26
+ };
27
+ export type WorkerWorkflowRef = {
28
+ type: 'inline' | 'url';
29
+ value: string;
30
+ };
31
+ export type WorkAssignmentRecord = {
32
+ id: string;
33
+ workspaceId: string;
34
+ workerId: string | null;
35
+ runId: string;
36
+ workflowRef: WorkerWorkflowRef;
37
+ status: 'queued' | 'assigned' | 'running' | 'completed' | 'failed' | 'timeout';
38
+ queuedAt: string;
39
+ assignedAt: string | null;
40
+ startedAt: string | null;
41
+ completedAt: string | null;
42
+ queueDeadline: string;
43
+ result?: Record<string, unknown>;
44
+ error?: string;
45
+ };
46
+ export type CloudWorkerRecord = {
47
+ baseUrl: string;
48
+ workerId: string;
49
+ workerToken: string;
50
+ name: string;
51
+ heartbeatIntervalMs: number;
52
+ registeredAt: string;
53
+ updatedAt: string;
54
+ pid?: number;
55
+ logPath?: string;
56
+ };
57
+ export type CloudWorkerStore = {
58
+ active?: Record<string, string>;
59
+ workers: Record<string, CloudWorkerRecord>;
60
+ };
61
+ export type WorkerStatusDetail = {
62
+ phase: 'running' | 'completed' | 'failed';
63
+ exitCode?: number;
64
+ durationMs?: number;
65
+ summary?: string;
66
+ error?: string;
67
+ result?: Record<string, unknown>;
68
+ };
69
+ export type WorkerQueueEvent = {
70
+ type: 'assignment';
71
+ assignment: WorkAssignmentRecord;
72
+ } | {
73
+ type: 'timeout';
74
+ assignment: WorkAssignmentRecord;
75
+ } | {
76
+ type: 'revoke';
77
+ } | {
78
+ type: 'ping';
79
+ };
80
+ export type ExecuteWorkerAssignment = (input: {
81
+ assignment: WorkAssignmentRecord;
82
+ payload: WorkerWorkflowPayload;
83
+ worker: CloudWorkerRecord;
84
+ signal: AbortSignal;
85
+ }) => Promise<{
86
+ exitCode?: number;
87
+ durationMs?: number;
88
+ summary?: string;
89
+ result?: Record<string, unknown>;
90
+ }>;
91
+ export type CloudWorkerLoopOptions = {
92
+ worker: CloudWorkerRecord;
93
+ executeAssignment: ExecuteWorkerAssignment;
94
+ once?: boolean;
95
+ signal?: AbortSignal;
96
+ log?: (message: string) => void;
97
+ fetchImpl?: typeof fetch;
98
+ sleep?: (ms: number) => Promise<void>;
99
+ };
100
+ export declare function cloudWorkerStorePath(env?: NodeJS.ProcessEnv): string;
101
+ export declare function cloudWorkerStateDir(env?: NodeJS.ProcessEnv): string;
102
+ export declare function readCloudWorkerStore(env?: NodeJS.ProcessEnv): CloudWorkerStore;
103
+ export declare function writeCloudWorkerStore(store: CloudWorkerStore, env?: NodeJS.ProcessEnv): void;
104
+ export declare function upsertCloudWorkerRecord(worker: CloudWorkerRecord, env?: NodeJS.ProcessEnv): CloudWorkerStore;
105
+ export declare function resolveCloudWorkerRecord(input?: {
106
+ baseUrl?: string;
107
+ workerId?: string;
108
+ name?: string;
109
+ env?: NodeJS.ProcessEnv;
110
+ }): CloudWorkerRecord;
111
+ export declare function registerCloudWorker(input: {
112
+ enrollmentToken: string;
113
+ name: string;
114
+ baseUrl?: string;
115
+ hostInfo?: Record<string, unknown>;
116
+ env?: NodeJS.ProcessEnv;
117
+ fetchImpl?: typeof fetch;
118
+ }): Promise<CloudWorkerRecord>;
119
+ export declare function sendCloudWorkerHeartbeat(input: {
120
+ worker: CloudWorkerRecord;
121
+ signal?: AbortSignal;
122
+ fetchImpl?: typeof fetch;
123
+ }): Promise<{
124
+ nextHeartbeatMs: number;
125
+ }>;
126
+ export declare function acknowledgeCloudWorkerAssignment(input: {
127
+ worker: CloudWorkerRecord;
128
+ runId: string;
129
+ fetchImpl?: typeof fetch;
130
+ }): Promise<void>;
131
+ export declare function reportCloudWorkerAssignmentStatus(input: {
132
+ worker: CloudWorkerRecord;
133
+ runId: string;
134
+ status: WorkerStatusDetail;
135
+ fetchImpl?: typeof fetch;
136
+ }): Promise<void>;
137
+ export declare function downloadCloudWorkerAssignmentStorage(input: {
138
+ worker: CloudWorkerRecord;
139
+ runId: string;
140
+ objectKey: string;
141
+ fetchImpl?: typeof fetch;
142
+ signal?: AbortSignal;
143
+ }): Promise<Buffer>;
144
+ export declare function headCloudWorkerAssignmentStorage(input: {
145
+ worker: CloudWorkerRecord;
146
+ runId: string;
147
+ objectKey: string;
148
+ fetchImpl?: typeof fetch;
149
+ signal?: AbortSignal;
150
+ }): Promise<void>;
151
+ export declare function resolveWorkerWorkflowPayload(input: {
152
+ workflowRef: WorkerWorkflowRef;
153
+ worker?: CloudWorkerRecord;
154
+ fetchImpl?: typeof fetch;
155
+ }): Promise<WorkerWorkflowPayload>;
156
+ export declare function streamCloudWorkerQueue(input: {
157
+ worker: CloudWorkerRecord;
158
+ fetchImpl?: typeof fetch;
159
+ signal?: AbortSignal;
160
+ }): AsyncGenerator<WorkerQueueEvent>;
161
+ export declare function runCloudWorkerLoop(options: CloudWorkerLoopOptions): Promise<void>;
162
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/dist/worker.js ADDED
@@ -0,0 +1,580 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { buildApiUrl } from './api-client.js';
5
+ import { defaultApiUrl } from './types.js';
6
+ const RESERVED_WORKER_NAMES = new Set(['__proto__', 'prototype', 'constructor']);
7
+ const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
8
+ const QUEUE_RECONNECT_MS = 2_000;
9
+ const MAX_SEEN_RUN_IDS = 1_000;
10
+ function ensurePlainObject(value) {
11
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
12
+ }
13
+ function trimTrailingSlashes(value) {
14
+ let end = value.length;
15
+ while (end > 0 && value.charCodeAt(end - 1) === 47) {
16
+ end -= 1;
17
+ }
18
+ return value.slice(0, end);
19
+ }
20
+ function normalizeBaseUrl(value) {
21
+ const raw = trimTrailingSlashes(value?.trim() || defaultApiUrl());
22
+ if (!raw) {
23
+ throw new Error('Cloud API base URL is required.');
24
+ }
25
+ try {
26
+ return trimTrailingSlashes(new URL(raw).toString());
27
+ }
28
+ catch {
29
+ throw new Error(`Invalid Cloud API base URL: ${raw}`);
30
+ }
31
+ }
32
+ function normalizeWorkerName(value) {
33
+ const name = value.trim();
34
+ if (!name) {
35
+ throw new Error('Worker name is required.');
36
+ }
37
+ if (name.length > 128) {
38
+ throw new Error('Worker name must be 128 characters or fewer.');
39
+ }
40
+ if (RESERVED_WORKER_NAMES.has(name)) {
41
+ throw new Error(`Invalid worker name "${name}".`);
42
+ }
43
+ return name;
44
+ }
45
+ function cloudHome(env = process.env) {
46
+ return env.AGENT_RELAY_HOME ?? path.join(os.homedir(), '.agentworkforce/relay');
47
+ }
48
+ export function cloudWorkerStorePath(env = process.env) {
49
+ return path.join(cloudHome(env), 'cloud-workers.json');
50
+ }
51
+ export function cloudWorkerStateDir(env = process.env) {
52
+ return path.join(cloudHome(env), 'cloud-workers');
53
+ }
54
+ function workerKey(baseUrl, workerId) {
55
+ return `${baseUrl}#${workerId}`;
56
+ }
57
+ function activeBaseKey(baseUrl) {
58
+ return baseUrl;
59
+ }
60
+ function isNodeError(error) {
61
+ return error instanceof Error && 'code' in error;
62
+ }
63
+ function isCloudWorkerRecord(value) {
64
+ if (!ensurePlainObject(value))
65
+ return false;
66
+ return (typeof value.baseUrl === 'string' &&
67
+ typeof value.workerId === 'string' &&
68
+ typeof value.workerToken === 'string' &&
69
+ typeof value.name === 'string' &&
70
+ typeof value.heartbeatIntervalMs === 'number' &&
71
+ typeof value.registeredAt === 'string' &&
72
+ typeof value.updatedAt === 'string');
73
+ }
74
+ export function readCloudWorkerStore(env = process.env) {
75
+ const file = cloudWorkerStorePath(env);
76
+ try {
77
+ const parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
78
+ if (!ensurePlainObject(parsed)) {
79
+ return { active: {}, workers: {} };
80
+ }
81
+ const workers = {};
82
+ const rawWorkers = ensurePlainObject(parsed.workers) ? parsed.workers : {};
83
+ for (const [key, value] of Object.entries(rawWorkers)) {
84
+ if (isCloudWorkerRecord(value)) {
85
+ workers[key] = value;
86
+ }
87
+ }
88
+ const active = {};
89
+ const rawActive = ensurePlainObject(parsed.active) ? parsed.active : {};
90
+ for (const [key, value] of Object.entries(rawActive)) {
91
+ if (typeof value === 'string') {
92
+ active[key] = value;
93
+ }
94
+ }
95
+ return { active, workers };
96
+ }
97
+ catch (error) {
98
+ if (isNodeError(error) && error.code === 'ENOENT') {
99
+ return { active: {}, workers: {} };
100
+ }
101
+ throw error;
102
+ }
103
+ }
104
+ export function writeCloudWorkerStore(store, env = process.env) {
105
+ const file = cloudWorkerStorePath(env);
106
+ fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
107
+ fs.writeFileSync(file, `${JSON.stringify(store, null, 2)}\n`, { mode: 0o600 });
108
+ fs.chmodSync(file, 0o600);
109
+ }
110
+ export function upsertCloudWorkerRecord(worker, env = process.env) {
111
+ const store = readCloudWorkerStore(env);
112
+ const key = workerKey(worker.baseUrl, worker.workerId);
113
+ store.workers[key] = worker;
114
+ store.active ??= {};
115
+ store.active[activeBaseKey(worker.baseUrl)] = key;
116
+ writeCloudWorkerStore(store, env);
117
+ return store;
118
+ }
119
+ export function resolveCloudWorkerRecord(input = {}) {
120
+ const baseUrl = normalizeBaseUrl(input.baseUrl);
121
+ const store = readCloudWorkerStore(input.env);
122
+ if (input.workerId) {
123
+ const record = store.workers[workerKey(baseUrl, input.workerId.trim())];
124
+ if (!record) {
125
+ throw new Error(`No stored cloud worker found for ${input.workerId.trim()} at ${baseUrl}.`);
126
+ }
127
+ return record;
128
+ }
129
+ if (input.name) {
130
+ const name = input.name.trim();
131
+ const records = Object.values(store.workers).filter((record) => record.baseUrl === baseUrl && record.name === name);
132
+ if (records.length === 1) {
133
+ return records[0];
134
+ }
135
+ if (records.length > 1) {
136
+ throw new Error(`Multiple stored workers named "${name}" at ${baseUrl}; pass --worker-id.`);
137
+ }
138
+ throw new Error(`No stored cloud worker named "${name}" at ${baseUrl}.`);
139
+ }
140
+ const activeKey = store.active?.[activeBaseKey(baseUrl)];
141
+ const active = activeKey ? store.workers[activeKey] : undefined;
142
+ if (!active) {
143
+ throw new Error(`No active cloud worker is stored for ${baseUrl}. Run cloud worker register first.`);
144
+ }
145
+ return active;
146
+ }
147
+ function workerHeaders(workerToken, headers) {
148
+ const merged = new Headers(headers);
149
+ merged.set('Authorization', `Bearer ${workerToken}`);
150
+ return merged;
151
+ }
152
+ async function readJsonResponse(response) {
153
+ const contentType = response.headers.get('content-type') ?? '';
154
+ if (contentType.includes('application/json')) {
155
+ return response.json();
156
+ }
157
+ const text = await response.text().catch(() => '');
158
+ return text ? { error: text } : null;
159
+ }
160
+ function responseError(response, payload) {
161
+ const message = ensurePlainObject(payload) && typeof payload.error === 'string'
162
+ ? payload.error
163
+ : `${response.status} ${response.statusText}`.trim();
164
+ return new Error(message);
165
+ }
166
+ function encodeStorageObjectKey(objectKey) {
167
+ const segments = objectKey.split('/').filter(Boolean);
168
+ if (segments.length === 0 || segments.some((segment) => segment === '.' || segment === '..')) {
169
+ throw new Error('Worker assignment storage object key is invalid.');
170
+ }
171
+ return segments.map((segment) => encodeURIComponent(segment)).join('/');
172
+ }
173
+ function validHeartbeatIntervalMs(value) {
174
+ return typeof value === 'number' && Number.isFinite(value) && value > 0;
175
+ }
176
+ function sameOrigin(left, right) {
177
+ return new URL(left).origin === new URL(right).origin;
178
+ }
179
+ export async function registerCloudWorker(input) {
180
+ const fetcher = input.fetchImpl ?? fetch;
181
+ const baseUrl = normalizeBaseUrl(input.baseUrl);
182
+ const name = normalizeWorkerName(input.name);
183
+ const response = await fetcher(buildApiUrl(baseUrl, '/api/v1/workers/register'), {
184
+ method: 'POST',
185
+ headers: { 'Content-Type': 'application/json' },
186
+ body: JSON.stringify({
187
+ enrollmentToken: input.enrollmentToken.trim(),
188
+ name,
189
+ ...(input.hostInfo ? { hostInfo: input.hostInfo } : {}),
190
+ }),
191
+ });
192
+ const payload = await readJsonResponse(response);
193
+ if (!response.ok) {
194
+ throw responseError(response, payload);
195
+ }
196
+ if (!ensurePlainObject(payload)) {
197
+ throw new Error('Worker registration returned an invalid response.');
198
+ }
199
+ const workerId = payload.workerId;
200
+ const workerToken = payload.workerToken;
201
+ const heartbeatIntervalMs = payload.heartbeatIntervalMs;
202
+ if (typeof workerId !== 'string' ||
203
+ typeof workerToken !== 'string' ||
204
+ typeof heartbeatIntervalMs !== 'number') {
205
+ throw new Error('Worker registration response is missing worker credentials.');
206
+ }
207
+ const now = new Date().toISOString();
208
+ const record = {
209
+ baseUrl,
210
+ workerId,
211
+ workerToken,
212
+ name,
213
+ heartbeatIntervalMs,
214
+ registeredAt: now,
215
+ updatedAt: now,
216
+ };
217
+ upsertCloudWorkerRecord(record, input.env);
218
+ return record;
219
+ }
220
+ export async function sendCloudWorkerHeartbeat(input) {
221
+ const fetcher = input.fetchImpl ?? fetch;
222
+ const response = await fetcher(buildApiUrl(input.worker.baseUrl, `/api/v1/workers/${encodeURIComponent(input.worker.workerId)}/heartbeat`), {
223
+ method: 'POST',
224
+ headers: workerHeaders(input.worker.workerToken),
225
+ signal: input.signal,
226
+ });
227
+ const payload = await readJsonResponse(response);
228
+ if (!response.ok) {
229
+ throw responseError(response, payload);
230
+ }
231
+ const requestedHeartbeatMs = ensurePlainObject(payload) && validHeartbeatIntervalMs(payload.nextHeartbeatMs)
232
+ ? payload.nextHeartbeatMs
233
+ : input.worker.heartbeatIntervalMs;
234
+ const nextHeartbeatMs = validHeartbeatIntervalMs(requestedHeartbeatMs)
235
+ ? requestedHeartbeatMs
236
+ : DEFAULT_HEARTBEAT_INTERVAL_MS;
237
+ return { nextHeartbeatMs };
238
+ }
239
+ export async function acknowledgeCloudWorkerAssignment(input) {
240
+ const fetcher = input.fetchImpl ?? fetch;
241
+ const response = await fetcher(buildApiUrl(input.worker.baseUrl, `/api/v1/workers/${encodeURIComponent(input.worker.workerId)}/assignments/${encodeURIComponent(input.runId)}/ack`), {
242
+ method: 'POST',
243
+ headers: workerHeaders(input.worker.workerToken),
244
+ });
245
+ const payload = await readJsonResponse(response);
246
+ if (!response.ok) {
247
+ throw responseError(response, payload);
248
+ }
249
+ }
250
+ export async function reportCloudWorkerAssignmentStatus(input) {
251
+ const fetcher = input.fetchImpl ?? fetch;
252
+ const response = await fetcher(buildApiUrl(input.worker.baseUrl, `/api/v1/workers/${encodeURIComponent(input.worker.workerId)}/assignments/${encodeURIComponent(input.runId)}/status`), {
253
+ method: 'POST',
254
+ headers: workerHeaders(input.worker.workerToken, { 'Content-Type': 'application/json' }),
255
+ body: JSON.stringify(input.status),
256
+ });
257
+ const payload = await readJsonResponse(response);
258
+ if (!response.ok) {
259
+ throw responseError(response, payload);
260
+ }
261
+ }
262
+ export async function downloadCloudWorkerAssignmentStorage(input) {
263
+ const fetcher = input.fetchImpl ?? fetch;
264
+ const response = await fetcher(buildApiUrl(input.worker.baseUrl, `/api/v1/workers/${encodeURIComponent(input.worker.workerId)}/assignments/${encodeURIComponent(input.runId)}/storage/${encodeStorageObjectKey(input.objectKey)}`), {
265
+ method: 'GET',
266
+ headers: workerHeaders(input.worker.workerToken),
267
+ signal: input.signal,
268
+ });
269
+ if (!response.ok) {
270
+ const payload = await readJsonResponse(response);
271
+ throw responseError(response, payload);
272
+ }
273
+ return Buffer.from(await response.arrayBuffer());
274
+ }
275
+ export async function headCloudWorkerAssignmentStorage(input) {
276
+ const fetcher = input.fetchImpl ?? fetch;
277
+ const response = await fetcher(buildApiUrl(input.worker.baseUrl, `/api/v1/workers/${encodeURIComponent(input.worker.workerId)}/assignments/${encodeURIComponent(input.runId)}/storage/${encodeStorageObjectKey(input.objectKey)}`), {
278
+ method: 'HEAD',
279
+ headers: workerHeaders(input.worker.workerToken),
280
+ signal: input.signal,
281
+ });
282
+ if (!response.ok) {
283
+ const payload = await readJsonResponse(response);
284
+ throw responseError(response, payload);
285
+ }
286
+ }
287
+ function isWorkflowRef(value) {
288
+ if (!ensurePlainObject(value))
289
+ return false;
290
+ return ((value.type === 'inline' || value.type === 'url') &&
291
+ typeof value.value === 'string' &&
292
+ value.value.trim().length > 0);
293
+ }
294
+ function isWorkerWorkflowPayload(value) {
295
+ if (!ensurePlainObject(value))
296
+ return false;
297
+ return (typeof value.runId === 'string' &&
298
+ typeof value.workspaceId === 'string' &&
299
+ typeof value.relayWorkspaceId === 'string' &&
300
+ typeof value.relaycastApiKey === 'string' &&
301
+ typeof value.relayfileUrl === 'string' &&
302
+ typeof value.relayfileToken === 'string' &&
303
+ typeof value.workflow === 'string' &&
304
+ (value.fileType === 'yaml' || value.fileType === 'ts' || value.fileType === 'py') &&
305
+ (value.sourceFileType === 'yaml' ||
306
+ value.sourceFileType === 'ts' ||
307
+ value.sourceFileType === 'py' ||
308
+ value.sourceFileType === 'workflow') &&
309
+ typeof value.workflowFileName === 'string');
310
+ }
311
+ export async function resolveWorkerWorkflowPayload(input) {
312
+ if (!isWorkflowRef(input.workflowRef)) {
313
+ throw new Error('Assignment is missing a valid workflowRef.');
314
+ }
315
+ let raw;
316
+ if (input.workflowRef.type === 'inline') {
317
+ raw = JSON.parse(input.workflowRef.value);
318
+ }
319
+ else {
320
+ const fetcher = input.fetchImpl ?? fetch;
321
+ const headers = input.worker && sameOrigin(input.workflowRef.value, input.worker.baseUrl)
322
+ ? workerHeaders(input.worker.workerToken)
323
+ : undefined;
324
+ const response = await fetcher(input.workflowRef.value, {
325
+ headers,
326
+ });
327
+ raw = await readJsonResponse(response);
328
+ if (!response.ok) {
329
+ throw responseError(response, raw);
330
+ }
331
+ }
332
+ if (!isWorkerWorkflowPayload(raw)) {
333
+ throw new Error('Resolved worker workflow payload is invalid.');
334
+ }
335
+ return raw;
336
+ }
337
+ function parseSseEvent(event, data) {
338
+ if (event === 'ping') {
339
+ return { type: 'ping' };
340
+ }
341
+ if (event === 'revoke') {
342
+ return { type: 'revoke' };
343
+ }
344
+ const payload = data ? JSON.parse(data) : {};
345
+ if (event === 'assignment' || event === 'timeout') {
346
+ if (!ensurePlainObject(payload) ||
347
+ !isWorkflowRef(payload.workflowRef) ||
348
+ typeof payload.runId !== 'string') {
349
+ throw new Error(`Invalid worker ${event} event payload.`);
350
+ }
351
+ return { type: event, assignment: payload };
352
+ }
353
+ return null;
354
+ }
355
+ export async function* streamCloudWorkerQueue(input) {
356
+ const fetcher = input.fetchImpl ?? fetch;
357
+ const response = await fetcher(buildApiUrl(input.worker.baseUrl, `/api/v1/workers/${encodeURIComponent(input.worker.workerId)}/queue`), {
358
+ method: 'GET',
359
+ headers: workerHeaders(input.worker.workerToken),
360
+ signal: input.signal,
361
+ });
362
+ if (!response.ok) {
363
+ const payload = await readJsonResponse(response);
364
+ throw responseError(response, payload);
365
+ }
366
+ if (!response.body) {
367
+ throw new Error('Worker queue response did not include a stream body.');
368
+ }
369
+ const reader = response.body.getReader();
370
+ try {
371
+ const decoder = new TextDecoder();
372
+ let buffer = '';
373
+ let event = 'message';
374
+ let data = '';
375
+ const flush = () => {
376
+ const currentEvent = event;
377
+ const currentData = data.replace(/\n$/, '');
378
+ event = 'message';
379
+ data = '';
380
+ if (!currentData && currentEvent === 'message') {
381
+ return null;
382
+ }
383
+ return parseSseEvent(currentEvent, currentData);
384
+ };
385
+ while (true) {
386
+ const { done, value } = await reader.read();
387
+ if (done)
388
+ break;
389
+ buffer += decoder.decode(value, { stream: true });
390
+ let newlineIndex;
391
+ while ((newlineIndex = buffer.search(/\r?\n/)) !== -1) {
392
+ const rawLine = buffer.slice(0, newlineIndex);
393
+ const nextOffset = buffer[newlineIndex] === '\r' && buffer[newlineIndex + 1] === '\n' ? 2 : 1;
394
+ buffer = buffer.slice(newlineIndex + nextOffset);
395
+ const line = rawLine.trimEnd();
396
+ if (!line) {
397
+ const parsed = flush();
398
+ if (parsed) {
399
+ yield parsed;
400
+ }
401
+ continue;
402
+ }
403
+ if (line.startsWith(':')) {
404
+ continue;
405
+ }
406
+ const colonIndex = line.indexOf(':');
407
+ const field = colonIndex === -1 ? line : line.slice(0, colonIndex);
408
+ const valueText = colonIndex === -1 ? '' : line.slice(colonIndex + 1).replace(/^ /, '');
409
+ if (field === 'event') {
410
+ event = valueText || 'message';
411
+ }
412
+ else if (field === 'data') {
413
+ data += `${valueText}\n`;
414
+ }
415
+ }
416
+ }
417
+ }
418
+ finally {
419
+ await reader.cancel().catch(() => undefined);
420
+ }
421
+ }
422
+ function toShortError(error) {
423
+ if (error instanceof Error && error.message) {
424
+ return error.message.slice(0, 500);
425
+ }
426
+ return String(error).slice(0, 500);
427
+ }
428
+ async function defaultSleep(ms) {
429
+ await new Promise((resolve) => setTimeout(resolve, ms));
430
+ }
431
+ export async function runCloudWorkerLoop(options) {
432
+ const fetchImpl = options.fetchImpl ?? fetch;
433
+ const sleep = options.sleep ?? defaultSleep;
434
+ const seenRunIds = new Set();
435
+ let heartbeatMs = options.worker.heartbeatIntervalMs || DEFAULT_HEARTBEAT_INTERVAL_MS;
436
+ let stopped = false;
437
+ let wakeHeartbeat;
438
+ const heartbeatAbort = new AbortController();
439
+ const sleepUntilStopped = async (ms) => {
440
+ if (stopped || options.signal?.aborted)
441
+ return;
442
+ await Promise.race([
443
+ sleep(ms),
444
+ new Promise((resolve) => {
445
+ wakeHeartbeat = resolve;
446
+ }),
447
+ ]);
448
+ wakeHeartbeat = undefined;
449
+ };
450
+ const heartbeat = async () => {
451
+ while (!stopped && !options.signal?.aborted) {
452
+ try {
453
+ const result = await sendCloudWorkerHeartbeat({
454
+ worker: options.worker,
455
+ fetchImpl,
456
+ signal: heartbeatAbort.signal,
457
+ });
458
+ heartbeatMs = result.nextHeartbeatMs;
459
+ }
460
+ catch (error) {
461
+ if (stopped || heartbeatAbort.signal.aborted || options.signal?.aborted) {
462
+ return;
463
+ }
464
+ options.log?.(`Heartbeat failed: ${toShortError(error)}`);
465
+ }
466
+ await sleepUntilStopped(heartbeatMs);
467
+ }
468
+ };
469
+ const heartbeatPromise = heartbeat();
470
+ try {
471
+ while (!options.signal?.aborted) {
472
+ try {
473
+ for await (const event of streamCloudWorkerQueue({
474
+ worker: options.worker,
475
+ fetchImpl,
476
+ signal: options.signal,
477
+ })) {
478
+ if (options.signal?.aborted) {
479
+ return;
480
+ }
481
+ if (event.type === 'ping') {
482
+ continue;
483
+ }
484
+ if (event.type === 'revoke') {
485
+ options.log?.('Worker was revoked by Cloud; stopping.');
486
+ return;
487
+ }
488
+ if (event.type === 'timeout') {
489
+ options.log?.(`Assignment ${event.assignment.runId} timed out before execution.`);
490
+ continue;
491
+ }
492
+ const assignment = event.assignment;
493
+ if (seenRunIds.has(assignment.runId)) {
494
+ options.log?.(`Ignoring duplicate assignment for run ${assignment.runId}.`);
495
+ continue;
496
+ }
497
+ const startedAt = Date.now();
498
+ try {
499
+ await acknowledgeCloudWorkerAssignment({
500
+ worker: options.worker,
501
+ runId: assignment.runId,
502
+ fetchImpl,
503
+ });
504
+ seenRunIds.add(assignment.runId);
505
+ if (seenRunIds.size > MAX_SEEN_RUN_IDS) {
506
+ const oldest = seenRunIds.values().next().value;
507
+ if (oldest !== undefined) {
508
+ seenRunIds.delete(oldest);
509
+ }
510
+ }
511
+ const payload = await resolveWorkerWorkflowPayload({
512
+ workflowRef: assignment.workflowRef,
513
+ worker: options.worker,
514
+ fetchImpl,
515
+ });
516
+ await reportCloudWorkerAssignmentStatus({
517
+ worker: options.worker,
518
+ runId: assignment.runId,
519
+ fetchImpl,
520
+ status: { phase: 'running' },
521
+ });
522
+ const result = await options.executeAssignment({
523
+ assignment,
524
+ payload,
525
+ worker: options.worker,
526
+ signal: options.signal ?? new AbortController().signal,
527
+ });
528
+ await reportCloudWorkerAssignmentStatus({
529
+ worker: options.worker,
530
+ runId: assignment.runId,
531
+ fetchImpl,
532
+ status: {
533
+ phase: 'completed',
534
+ exitCode: result.exitCode ?? 0,
535
+ durationMs: result.durationMs ?? Date.now() - startedAt,
536
+ summary: result.summary,
537
+ result: result.result,
538
+ },
539
+ });
540
+ options.log?.(`Assignment ${assignment.runId} completed.`);
541
+ }
542
+ catch (error) {
543
+ await reportCloudWorkerAssignmentStatus({
544
+ worker: options.worker,
545
+ runId: assignment.runId,
546
+ fetchImpl,
547
+ status: {
548
+ phase: 'failed',
549
+ exitCode: 1,
550
+ durationMs: Date.now() - startedAt,
551
+ error: toShortError(error),
552
+ summary: 'Worker assignment failed.',
553
+ },
554
+ }).catch((statusError) => {
555
+ options.log?.(`Failed to report assignment failure: ${toShortError(statusError)}`);
556
+ });
557
+ options.log?.(`Assignment ${assignment.runId} failed: ${toShortError(error)}`);
558
+ }
559
+ if (options.once) {
560
+ return;
561
+ }
562
+ }
563
+ }
564
+ catch (error) {
565
+ if (options.signal?.aborted) {
566
+ return;
567
+ }
568
+ options.log?.(`Worker queue disconnected: ${toShortError(error)}`);
569
+ await sleep(QUEUE_RECONNECT_MS);
570
+ }
571
+ }
572
+ }
573
+ finally {
574
+ stopped = true;
575
+ heartbeatAbort.abort();
576
+ wakeHeartbeat?.();
577
+ await heartbeatPromise.catch(() => undefined);
578
+ }
579
+ }
580
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/cloud",
3
- "version": "8.7.0",
3
+ "version": "8.7.2",
4
4
  "description": "Cloud SDK for Agent Relay — auth, workflow execution, and provider connections",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,7 +43,7 @@
43
43
  "test:watch": "vitest"
44
44
  },
45
45
  "dependencies": {
46
- "@agent-relay/config": "8.7.0",
46
+ "@agent-relay/config": "8.7.2",
47
47
  "@aws-sdk/client-s3": "3.1020.0",
48
48
  "ignore": "^7.0.5",
49
49
  "tar": "^7.5.10"