@agent-relay/agent 0.1.0
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/burn.d.ts +10 -0
- package/dist/burn.d.ts.map +1 -0
- package/dist/burn.js +139 -0
- package/dist/burn.js.map +1 -0
- package/dist/context.d.ts +28 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +170 -0
- package/dist/context.js.map +1 -0
- package/dist/deploy.d.ts +6 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +209 -0
- package/dist/deploy.js.map +1 -0
- package/dist/dispatcher.d.ts +20 -0
- package/dist/dispatcher.d.ts.map +1 -0
- package/dist/dispatcher.js +101 -0
- package/dist/dispatcher.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +606 -0
- package/dist/index.js.map +1 -0
- package/dist/policy.d.ts +13 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +152 -0
- package/dist/policy.js.map +1 -0
- package/dist/types.d.ts +387 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +42 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,606 @@
|
|
|
1
|
+
import { createLogger, createStartupEvent, events, NoRetry, relayfileTools, } from '@agent-relay/events';
|
|
2
|
+
import { RelayFileClient as RelayFileSdkClient } from '@relayfile/sdk';
|
|
3
|
+
import { createContextFactory } from './context.js';
|
|
4
|
+
import { deployAgent } from './deploy.js';
|
|
5
|
+
import { createDispatcher } from './dispatcher.js';
|
|
6
|
+
const DEFAULT_DRAIN_MS = 30_000;
|
|
7
|
+
const DEFAULT_HANDLER_TIMEOUT_MS = 300_000;
|
|
8
|
+
const DEFAULT_RELAYFILE_URL = 'https://api.relayfile.dev';
|
|
9
|
+
const DEFAULT_RELAYCAST_URL = 'https://api.relaycast.dev';
|
|
10
|
+
/**
|
|
11
|
+
* Registers and runs a proactive agent using the layered runtime SDK.
|
|
12
|
+
*/
|
|
13
|
+
export function agent(definition) {
|
|
14
|
+
assertDefinition(definition);
|
|
15
|
+
const options = definition.options ?? {};
|
|
16
|
+
const apiKey = resolveApiKey(options);
|
|
17
|
+
const agentId = sanitizeAgentId(definition.name ?? definition.workspace);
|
|
18
|
+
const scheduleIds = new Set();
|
|
19
|
+
const stopController = new AbortController();
|
|
20
|
+
let relayfileClient = null;
|
|
21
|
+
let relaycastClient = null;
|
|
22
|
+
let relaycronClient = null;
|
|
23
|
+
let onceCoordinator = null;
|
|
24
|
+
let publishStructuredLog = null;
|
|
25
|
+
const logger = createLogger({
|
|
26
|
+
workspace: definition.workspace,
|
|
27
|
+
agentId,
|
|
28
|
+
level: options.logLevel,
|
|
29
|
+
sink: (entry) => {
|
|
30
|
+
publishStructuredLog?.(entry);
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
const contextFactory = createContextFactory({
|
|
34
|
+
workspace: definition.workspace,
|
|
35
|
+
agentId,
|
|
36
|
+
logger,
|
|
37
|
+
getRelayfileClient: () => relayfileClient,
|
|
38
|
+
getRelaycastClient: () => relaycastClient,
|
|
39
|
+
getRelaycronClient: () => relaycronClient,
|
|
40
|
+
getOnceCoordinator: () => onceCoordinator,
|
|
41
|
+
awaitApproval: (approvalId) => stream.awaitApproval(approvalId),
|
|
42
|
+
policy: definition.policy,
|
|
43
|
+
trackSchedule(id) {
|
|
44
|
+
scheduleIds.add(id);
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
const dispatcher = createDispatcher({
|
|
48
|
+
concurrency: options.concurrency ?? 1,
|
|
49
|
+
handlerTimeoutMs: options.handlerTimeoutMs ?? DEFAULT_HANDLER_TIMEOUT_MS,
|
|
50
|
+
createContext(signal, event) {
|
|
51
|
+
return contextFactory.withEvent(signal, event);
|
|
52
|
+
},
|
|
53
|
+
onEvent(ctx, event) {
|
|
54
|
+
return definition.onEvent(ctx, event);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const stream = events({
|
|
58
|
+
workspace: definition.workspace,
|
|
59
|
+
apiKey,
|
|
60
|
+
agentId,
|
|
61
|
+
gatewayUrl: options.gatewayUrl,
|
|
62
|
+
signal: stopController.signal,
|
|
63
|
+
onEvent: async (event) => {
|
|
64
|
+
await dispatcher.dispatch(event);
|
|
65
|
+
},
|
|
66
|
+
onError: async (error, event) => {
|
|
67
|
+
const normalized = normalizeError(error);
|
|
68
|
+
contextFactory.base.logger.error('agent event delivery failed', {
|
|
69
|
+
eventId: event.id,
|
|
70
|
+
eventType: event.type,
|
|
71
|
+
error: normalized.message,
|
|
72
|
+
});
|
|
73
|
+
await definition.onError?.(contextFactory.base, normalized, event);
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
publishStructuredLog = (entry) => {
|
|
77
|
+
stream.publishLog(entry);
|
|
78
|
+
};
|
|
79
|
+
relayfileClient = shouldUseGatewayTransport(options)
|
|
80
|
+
? createGatewayRelayfileClient(stream)
|
|
81
|
+
: createDirectRelayfileClient(definition.workspace, apiKey, options);
|
|
82
|
+
relaycastClient = shouldUseGatewayTransport(options)
|
|
83
|
+
? createGatewayRelaycastClient(stream)
|
|
84
|
+
: createDirectRelaycastClient(apiKey, options);
|
|
85
|
+
relaycronClient = createGatewayRelaycronClient(stream);
|
|
86
|
+
onceCoordinator = createGatewayOnceCoordinator(stream);
|
|
87
|
+
let stopping = null;
|
|
88
|
+
const detachSignals = installSignalHandlers(options, async () => {
|
|
89
|
+
await handle.stop();
|
|
90
|
+
});
|
|
91
|
+
const ready = (async () => {
|
|
92
|
+
await stream.ready;
|
|
93
|
+
await registerSchedules(contextFactory.base, definition.schedule);
|
|
94
|
+
if (shouldUseGatewayTransport(options)) {
|
|
95
|
+
await registerWatches(stream, definition.watch, options);
|
|
96
|
+
await registerInboxes(stream, definition.inbox);
|
|
97
|
+
}
|
|
98
|
+
await definition.onStart?.(contextFactory.base);
|
|
99
|
+
if (shouldEmitLocalStartup(options)) {
|
|
100
|
+
try {
|
|
101
|
+
await stream.trigger(createStartupEvent({
|
|
102
|
+
workspace: definition.workspace,
|
|
103
|
+
reason: 'cold-start',
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// The stream-level onError path already surfaced the startup failure.
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
})();
|
|
111
|
+
const handle = {
|
|
112
|
+
ready,
|
|
113
|
+
stop: async () => {
|
|
114
|
+
if (stopping) {
|
|
115
|
+
return stopping;
|
|
116
|
+
}
|
|
117
|
+
stopping = (async () => {
|
|
118
|
+
detachSignals();
|
|
119
|
+
await cancelSchedules(contextFactory.base, scheduleIds);
|
|
120
|
+
dispatcher.close();
|
|
121
|
+
stopController.abort(new Error('Agent stopping'));
|
|
122
|
+
dispatcher.abortActive(new Error('Agent stopping'));
|
|
123
|
+
await stream.close();
|
|
124
|
+
const drained = await dispatcher.drain(options.drainMs ?? DEFAULT_DRAIN_MS);
|
|
125
|
+
if (!drained) {
|
|
126
|
+
await dispatcher.drain(1_000);
|
|
127
|
+
}
|
|
128
|
+
await definition.onStop?.(contextFactory.base);
|
|
129
|
+
})();
|
|
130
|
+
return stopping;
|
|
131
|
+
},
|
|
132
|
+
trigger: async (event) => {
|
|
133
|
+
await stream.trigger({
|
|
134
|
+
...event,
|
|
135
|
+
workspace: event.workspace ?? definition.workspace,
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
ctx: contextFactory.base,
|
|
139
|
+
};
|
|
140
|
+
return handle;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Re-exported for callers that want relayfile-compatible tools next to `agent()`.
|
|
144
|
+
*/
|
|
145
|
+
export { NoRetry, relayfileTools, deployAgent };
|
|
146
|
+
async function registerSchedules(ctx, schedule) {
|
|
147
|
+
for (const spec of normalizeSchedules(schedule)) {
|
|
148
|
+
if (typeof spec === 'string') {
|
|
149
|
+
if (looksLikeIsoTimestamp(spec)) {
|
|
150
|
+
await ctx.schedule.at(spec);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
await ctx.schedule.every(spec);
|
|
154
|
+
}
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if ('cron' in spec) {
|
|
158
|
+
await ctx.schedule.every(spec.cron, undefined, { tz: spec.tz });
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
await ctx.schedule.at(spec.at);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async function registerWatches(stream, watch, options) {
|
|
165
|
+
const watches = normalizeWatches(watch, options);
|
|
166
|
+
if (watches.length === 0) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
await stream.registerWatches(watches);
|
|
170
|
+
}
|
|
171
|
+
async function registerInboxes(stream, inbox) {
|
|
172
|
+
const inboxes = normalizeInboxes(inbox);
|
|
173
|
+
if (inboxes.length === 0) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
await stream.registerInboxes(inboxes);
|
|
177
|
+
}
|
|
178
|
+
async function cancelSchedules(ctx, scheduleIds) {
|
|
179
|
+
for (const id of scheduleIds) {
|
|
180
|
+
try {
|
|
181
|
+
await ctx.schedule.cancel(id);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
ctx.logger.warn('failed to cancel schedule during shutdown', {
|
|
185
|
+
scheduleId: id,
|
|
186
|
+
error: normalizeError(error).message,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function installSignalHandlers(options, stop) {
|
|
192
|
+
if (options.handleSignals === false) {
|
|
193
|
+
return () => { };
|
|
194
|
+
}
|
|
195
|
+
const onSignal = () => {
|
|
196
|
+
void stop();
|
|
197
|
+
};
|
|
198
|
+
process.on('SIGTERM', onSignal);
|
|
199
|
+
process.on('SIGINT', onSignal);
|
|
200
|
+
return () => {
|
|
201
|
+
process.off('SIGTERM', onSignal);
|
|
202
|
+
process.off('SIGINT', onSignal);
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
function normalizeSchedules(schedule) {
|
|
206
|
+
if (!schedule) {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
return Array.isArray(schedule) ? schedule : [schedule];
|
|
210
|
+
}
|
|
211
|
+
function normalizeWatches(watch, options) {
|
|
212
|
+
if (!watch) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
const entries = Array.isArray(watch) ? watch : [watch];
|
|
216
|
+
const replayOnStart = normalizeReplayOnStart(options?.replayOnStart);
|
|
217
|
+
const coalesceMs = typeof options?.coalesceMs === 'number' && Number.isFinite(options.coalesceMs)
|
|
218
|
+
? Math.max(0, Math.floor(options.coalesceMs))
|
|
219
|
+
: 200;
|
|
220
|
+
const maxBacklog = typeof options?.maxBacklog === 'number' && Number.isFinite(options.maxBacklog)
|
|
221
|
+
? Math.max(1, Math.floor(options.maxBacklog))
|
|
222
|
+
: undefined;
|
|
223
|
+
const handlerTimeoutMs = typeof options?.handlerTimeoutMs === 'number' && Number.isFinite(options.handlerTimeoutMs)
|
|
224
|
+
? Math.max(1, Math.floor(options.handlerTimeoutMs))
|
|
225
|
+
: undefined;
|
|
226
|
+
return entries
|
|
227
|
+
.map((entry) => {
|
|
228
|
+
if (typeof entry !== 'string') {
|
|
229
|
+
throw new Error('agent.watch must be a string or string[] of globs');
|
|
230
|
+
}
|
|
231
|
+
return entry.trim();
|
|
232
|
+
})
|
|
233
|
+
.filter(Boolean)
|
|
234
|
+
.map((glob) => ({
|
|
235
|
+
glob,
|
|
236
|
+
replayOnStart,
|
|
237
|
+
coalesceMs,
|
|
238
|
+
...(maxBacklog !== undefined ? { maxBacklog } : {}),
|
|
239
|
+
...(handlerTimeoutMs !== undefined ? { handlerTimeoutMs } : {}),
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
function normalizeInboxes(inbox) {
|
|
243
|
+
if (!inbox) {
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
return (Array.isArray(inbox) ? inbox : [inbox])
|
|
247
|
+
.map((entry) => {
|
|
248
|
+
if (typeof entry !== 'string') {
|
|
249
|
+
throw new Error('agent.inbox must be a string or string[] of inbox targets');
|
|
250
|
+
}
|
|
251
|
+
const trimmed = entry.trim();
|
|
252
|
+
if (!trimmed) {
|
|
253
|
+
return '';
|
|
254
|
+
}
|
|
255
|
+
if (trimmed.startsWith('#') || trimmed.startsWith('@')) {
|
|
256
|
+
return trimmed;
|
|
257
|
+
}
|
|
258
|
+
return `#${trimmed}`;
|
|
259
|
+
})
|
|
260
|
+
.filter(Boolean);
|
|
261
|
+
}
|
|
262
|
+
function normalizeReplayOnStart(value) {
|
|
263
|
+
const normalized = value?.trim() ?? 'none';
|
|
264
|
+
if (normalized === 'none') {
|
|
265
|
+
return 'none';
|
|
266
|
+
}
|
|
267
|
+
if (normalized.startsWith('last:')) {
|
|
268
|
+
const count = Number.parseInt(normalized.slice('last:'.length), 10);
|
|
269
|
+
if (Number.isFinite(count) && count > 0) {
|
|
270
|
+
return `last:${count}`;
|
|
271
|
+
}
|
|
272
|
+
throw new Error('agent.options.replayOnStart must use "last:<positive-integer>"');
|
|
273
|
+
}
|
|
274
|
+
if (normalized.startsWith('since:')) {
|
|
275
|
+
const since = normalized.slice('since:'.length).trim();
|
|
276
|
+
const parsed = Date.parse(since);
|
|
277
|
+
if (Number.isFinite(parsed)) {
|
|
278
|
+
return `since:${new Date(parsed).toISOString()}`;
|
|
279
|
+
}
|
|
280
|
+
throw new Error('agent.options.replayOnStart must use "since:<iso-timestamp>"');
|
|
281
|
+
}
|
|
282
|
+
throw new Error('agent.options.replayOnStart must be "none", "last:<n>", or "since:<iso-timestamp>"');
|
|
283
|
+
}
|
|
284
|
+
function looksLikeIsoTimestamp(value) {
|
|
285
|
+
return !isNaN(Date.parse(value)) && value.includes('T');
|
|
286
|
+
}
|
|
287
|
+
function resolveApiKey(options) {
|
|
288
|
+
const apiKey = options.apiKey ?? process.env.RELAY_API_KEY;
|
|
289
|
+
if (!apiKey) {
|
|
290
|
+
throw new Error('RELAY_API_KEY is required');
|
|
291
|
+
}
|
|
292
|
+
return apiKey;
|
|
293
|
+
}
|
|
294
|
+
function sanitizeAgentId(input) {
|
|
295
|
+
return input.trim().replace(/[^a-zA-Z0-9._-]+/g, '-');
|
|
296
|
+
}
|
|
297
|
+
function assertDefinition(definition) {
|
|
298
|
+
if (!definition.workspace.trim()) {
|
|
299
|
+
throw new Error('agent.workspace is required');
|
|
300
|
+
}
|
|
301
|
+
if (typeof definition.onEvent !== 'function') {
|
|
302
|
+
throw new Error('agent.onEvent is required');
|
|
303
|
+
}
|
|
304
|
+
if (definition.watch !== undefined) {
|
|
305
|
+
const watches = normalizeWatches(definition.watch, definition.options);
|
|
306
|
+
if (watches.length === 0) {
|
|
307
|
+
throw new Error('agent.watch must include at least one non-empty glob');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (definition.inbox !== undefined) {
|
|
311
|
+
const inboxes = normalizeInboxes(definition.inbox);
|
|
312
|
+
if (inboxes.length === 0) {
|
|
313
|
+
throw new Error('agent.inbox must include at least one non-empty inbox target');
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
function normalizeError(error) {
|
|
318
|
+
if (error instanceof Error) {
|
|
319
|
+
return error;
|
|
320
|
+
}
|
|
321
|
+
return new Error(typeof error === 'string' ? error : 'Unknown agent error');
|
|
322
|
+
}
|
|
323
|
+
function createGatewayRelaycronClient(stream) {
|
|
324
|
+
return {
|
|
325
|
+
available: true,
|
|
326
|
+
register: async (definition) => {
|
|
327
|
+
if (definition.cron) {
|
|
328
|
+
return stream.registerSchedule(definition.tz ? { cron: definition.cron, tz: definition.tz } : definition.cron);
|
|
329
|
+
}
|
|
330
|
+
if (definition.at) {
|
|
331
|
+
return stream.registerSchedule({
|
|
332
|
+
at: definition.at instanceof Date ? definition.at.toISOString() : definition.at,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
throw new Error('schedule definition must include cron or at');
|
|
336
|
+
},
|
|
337
|
+
cancel: async (id) => {
|
|
338
|
+
await stream.unregisterSchedules([id]);
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
function createGatewayRelayfileClient(stream) {
|
|
343
|
+
return {
|
|
344
|
+
available: true,
|
|
345
|
+
read: async (path) => normalizeWorkspaceFile(await stream.readFile(path)),
|
|
346
|
+
write: async (path, body, meta) => {
|
|
347
|
+
const serialized = serializeWorkspaceBody(body, meta);
|
|
348
|
+
await stream.writeFile(path, serialized.body, serialized.meta);
|
|
349
|
+
},
|
|
350
|
+
delete: async (path) => stream.deleteFile(path),
|
|
351
|
+
list: async (glob) => normalizeFileSummaries(await stream.listFiles(glob)),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
function createDirectRelayfileClient(workspace, apiKey, options) {
|
|
355
|
+
const client = new RelayFileSdkClient({
|
|
356
|
+
baseUrl: resolveRelayfileUrl(options),
|
|
357
|
+
token: apiKey,
|
|
358
|
+
});
|
|
359
|
+
return {
|
|
360
|
+
available: true,
|
|
361
|
+
read: async (path) => normalizeWorkspaceFile(await client.readFile(workspace, path)),
|
|
362
|
+
write: async (path, body, meta) => {
|
|
363
|
+
const serialized = serializeWorkspaceBody(body, meta);
|
|
364
|
+
await client.writeFile({
|
|
365
|
+
workspaceId: workspace,
|
|
366
|
+
path,
|
|
367
|
+
content: typeof serialized.body === 'string' ? serialized.body : JSON.stringify(serialized.body, null, 2),
|
|
368
|
+
contentType: serialized.meta?.contentType ??
|
|
369
|
+
(typeof serialized.body === 'string' ? 'text/plain; charset=utf-8' : 'application/json'),
|
|
370
|
+
encoding: serialized.meta?.encoding ?? 'utf-8',
|
|
371
|
+
baseRevision: serialized.meta?.baseRevision ?? '*',
|
|
372
|
+
...(serialized.meta?.semantics ? { semantics: serialized.meta.semantics } : {}),
|
|
373
|
+
...(serialized.meta?.contentIdentity ? { contentIdentity: serialized.meta.contentIdentity } : {}),
|
|
374
|
+
});
|
|
375
|
+
},
|
|
376
|
+
delete: async (path) => {
|
|
377
|
+
await client.deleteFile({
|
|
378
|
+
workspaceId: workspace,
|
|
379
|
+
path,
|
|
380
|
+
baseRevision: '*',
|
|
381
|
+
});
|
|
382
|
+
},
|
|
383
|
+
list: async (glob) => normalizeFileSummaries((await client.queryFiles(workspace, {
|
|
384
|
+
path: glob,
|
|
385
|
+
})).items ?? []),
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
function createGatewayRelaycastClient(stream) {
|
|
389
|
+
return {
|
|
390
|
+
available: true,
|
|
391
|
+
post: async (channel, text, opts) => stream.postMessage(channel, text, opts),
|
|
392
|
+
reply: async (threadId, text, opts) => stream.replyMessage(threadId, text, opts),
|
|
393
|
+
dm: async (agentOrUser, text, opts) => stream.sendDm(agentOrUser, text, opts),
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
function createDirectRelaycastClient(apiKey, options) {
|
|
397
|
+
return {
|
|
398
|
+
available: true,
|
|
399
|
+
post: async (channel, text, opts) => relaycastRequest(apiKey, options, '/v1/message', {
|
|
400
|
+
channel: channel.startsWith('#') ? channel.slice(1) : channel,
|
|
401
|
+
text,
|
|
402
|
+
mode: 'wait',
|
|
403
|
+
}, opts),
|
|
404
|
+
reply: async (threadId, text, opts) => relaycastRequest(apiKey, options, '/v1/message/reply', {
|
|
405
|
+
messageId: threadId,
|
|
406
|
+
text,
|
|
407
|
+
mode: 'wait',
|
|
408
|
+
}, opts),
|
|
409
|
+
dm: async (agentOrUser, text, opts) => relaycastRequest(apiKey, options, '/v1/dm', {
|
|
410
|
+
to: agentOrUser.startsWith('@') ? agentOrUser.slice(1) : agentOrUser,
|
|
411
|
+
text,
|
|
412
|
+
mode: 'wait',
|
|
413
|
+
}, opts),
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
async function relaycastRequest(apiKey, options, path, body, opts) {
|
|
417
|
+
const idempotencyKey = opts?.idempotencyKey?.trim() || globalThis.crypto.randomUUID();
|
|
418
|
+
const headers = new Headers({
|
|
419
|
+
authorization: `Bearer ${apiKey}`,
|
|
420
|
+
'content-type': 'application/json',
|
|
421
|
+
'Idempotency-Key': idempotencyKey,
|
|
422
|
+
'X-Idempotency-Key': idempotencyKey,
|
|
423
|
+
});
|
|
424
|
+
const response = await fetch(new URL(path, resolveRelaycastUrl(options)), {
|
|
425
|
+
method: 'POST',
|
|
426
|
+
headers,
|
|
427
|
+
body: JSON.stringify(body),
|
|
428
|
+
});
|
|
429
|
+
if (!response.ok) {
|
|
430
|
+
throw new Error(`relaycast request failed: ${response.status} ${response.statusText}`);
|
|
431
|
+
}
|
|
432
|
+
const payload = (await response.json().catch(() => null));
|
|
433
|
+
const id = typeof payload?.id === 'string'
|
|
434
|
+
? payload.id
|
|
435
|
+
: typeof payload?.messageId === 'string'
|
|
436
|
+
? payload.messageId
|
|
437
|
+
: typeof payload?.message_id === 'string'
|
|
438
|
+
? payload.message_id
|
|
439
|
+
: null;
|
|
440
|
+
if (!id) {
|
|
441
|
+
throw new Error(`relaycast request did not return a message id for ${path}`);
|
|
442
|
+
}
|
|
443
|
+
return { id };
|
|
444
|
+
}
|
|
445
|
+
function createGatewayOnceCoordinator(stream) {
|
|
446
|
+
return {
|
|
447
|
+
acquireOnce: async (key) => stream.acquireOnce(key),
|
|
448
|
+
releaseOnce: async (key) => stream.releaseOnce(key),
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
function resolveRelayfileUrl(options) {
|
|
452
|
+
return options.relayfileUrl?.trim() || process.env.RELAYFILE_URL?.trim() || DEFAULT_RELAYFILE_URL;
|
|
453
|
+
}
|
|
454
|
+
function resolveRelaycastUrl(options) {
|
|
455
|
+
return options.relaycastUrl?.trim() || process.env.RELAYCAST_URL?.trim() || DEFAULT_RELAYCAST_URL;
|
|
456
|
+
}
|
|
457
|
+
function shouldEmitLocalStartup(options) {
|
|
458
|
+
return typeof options.gatewayUrl === 'string' && options.gatewayUrl.trim().length === 0;
|
|
459
|
+
}
|
|
460
|
+
function shouldUseGatewayTransport(options) {
|
|
461
|
+
return !(typeof options.gatewayUrl === 'string' && options.gatewayUrl.trim().length === 0);
|
|
462
|
+
}
|
|
463
|
+
function normalizeWorkspaceFile(value) {
|
|
464
|
+
if (value == null) {
|
|
465
|
+
return null;
|
|
466
|
+
}
|
|
467
|
+
if (!value || typeof value !== 'object') {
|
|
468
|
+
throw new Error('Gateway returned an invalid relayfile read response');
|
|
469
|
+
}
|
|
470
|
+
const record = value;
|
|
471
|
+
if (typeof record.path !== 'string') {
|
|
472
|
+
throw new Error('Gateway returned a relayfile read response without a path');
|
|
473
|
+
}
|
|
474
|
+
const file = {
|
|
475
|
+
path: record.path,
|
|
476
|
+
body: normalizeWorkspaceBody(record),
|
|
477
|
+
};
|
|
478
|
+
if (typeof record.revision === 'string') {
|
|
479
|
+
file.revision = record.revision;
|
|
480
|
+
}
|
|
481
|
+
if (typeof record.contentType === 'string') {
|
|
482
|
+
file.contentType = record.contentType;
|
|
483
|
+
}
|
|
484
|
+
if (record.encoding === 'utf-8' || record.encoding === 'base64') {
|
|
485
|
+
file.encoding = record.encoding;
|
|
486
|
+
}
|
|
487
|
+
if (record.semantics && typeof record.semantics === 'object' && !Array.isArray(record.semantics)) {
|
|
488
|
+
file.semantics = record.semantics;
|
|
489
|
+
}
|
|
490
|
+
return file;
|
|
491
|
+
}
|
|
492
|
+
function normalizeFileSummaries(values) {
|
|
493
|
+
return values.map((value) => {
|
|
494
|
+
if (!value || typeof value !== 'object') {
|
|
495
|
+
throw new Error('Gateway returned an invalid relayfile list entry');
|
|
496
|
+
}
|
|
497
|
+
const record = value;
|
|
498
|
+
if (typeof record.path !== 'string') {
|
|
499
|
+
throw new Error('Gateway returned a relayfile list entry without a path');
|
|
500
|
+
}
|
|
501
|
+
const summary = { path: record.path };
|
|
502
|
+
if (record.type === 'file' || record.type === 'dir') {
|
|
503
|
+
summary.type = record.type;
|
|
504
|
+
}
|
|
505
|
+
if (typeof record.revision === 'string') {
|
|
506
|
+
summary.revision = record.revision;
|
|
507
|
+
}
|
|
508
|
+
if (typeof record.provider === 'string') {
|
|
509
|
+
summary.provider = record.provider;
|
|
510
|
+
}
|
|
511
|
+
if (typeof record.providerObjectId === 'string') {
|
|
512
|
+
summary.providerObjectId = record.providerObjectId;
|
|
513
|
+
}
|
|
514
|
+
if (typeof record.size === 'number' && Number.isFinite(record.size)) {
|
|
515
|
+
summary.size = record.size;
|
|
516
|
+
}
|
|
517
|
+
if (typeof record.updatedAt === 'string') {
|
|
518
|
+
summary.updatedAt = record.updatedAt;
|
|
519
|
+
}
|
|
520
|
+
else if (typeof record.lastEditedAt === 'string') {
|
|
521
|
+
summary.updatedAt = record.lastEditedAt;
|
|
522
|
+
}
|
|
523
|
+
if (typeof record.propertyCount === 'number' && Number.isFinite(record.propertyCount)) {
|
|
524
|
+
summary.propertyCount = record.propertyCount;
|
|
525
|
+
}
|
|
526
|
+
else if (record.properties &&
|
|
527
|
+
typeof record.properties === 'object' &&
|
|
528
|
+
!Array.isArray(record.properties)) {
|
|
529
|
+
summary.propertyCount = Object.keys(record.properties).length;
|
|
530
|
+
}
|
|
531
|
+
if (typeof record.relationCount === 'number' && Number.isFinite(record.relationCount)) {
|
|
532
|
+
summary.relationCount = record.relationCount;
|
|
533
|
+
}
|
|
534
|
+
else if (Array.isArray(record.relations)) {
|
|
535
|
+
summary.relationCount = record.relations.length;
|
|
536
|
+
}
|
|
537
|
+
if (typeof record.permissionCount === 'number' && Number.isFinite(record.permissionCount)) {
|
|
538
|
+
summary.permissionCount = record.permissionCount;
|
|
539
|
+
}
|
|
540
|
+
else if (Array.isArray(record.permissions)) {
|
|
541
|
+
summary.permissionCount = record.permissions.length;
|
|
542
|
+
}
|
|
543
|
+
if (typeof record.commentCount === 'number' && Number.isFinite(record.commentCount)) {
|
|
544
|
+
summary.commentCount = record.commentCount;
|
|
545
|
+
}
|
|
546
|
+
else if (Array.isArray(record.comments)) {
|
|
547
|
+
summary.commentCount = record.comments.length;
|
|
548
|
+
}
|
|
549
|
+
return summary;
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
function normalizeWorkspaceBody(record) {
|
|
553
|
+
if ('body' in record) {
|
|
554
|
+
return record.body;
|
|
555
|
+
}
|
|
556
|
+
const content = record.content;
|
|
557
|
+
if (typeof content !== 'string') {
|
|
558
|
+
throw new Error('Gateway returned a relayfile read response without file content');
|
|
559
|
+
}
|
|
560
|
+
const encoding = record.encoding === 'utf-8' || record.encoding === 'base64' ? record.encoding : undefined;
|
|
561
|
+
const contentType = typeof record.contentType === 'string' ? record.contentType : undefined;
|
|
562
|
+
if (encoding === 'base64') {
|
|
563
|
+
return content;
|
|
564
|
+
}
|
|
565
|
+
if (looksLikeJsonContentType(contentType)) {
|
|
566
|
+
try {
|
|
567
|
+
return JSON.parse(content);
|
|
568
|
+
}
|
|
569
|
+
catch {
|
|
570
|
+
return content;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
return content;
|
|
574
|
+
}
|
|
575
|
+
function serializeWorkspaceBody(body, meta) {
|
|
576
|
+
if (typeof body === 'string') {
|
|
577
|
+
return { body, meta };
|
|
578
|
+
}
|
|
579
|
+
if (body instanceof Uint8Array || body instanceof ArrayBuffer) {
|
|
580
|
+
const bytes = body instanceof Uint8Array ? body : new Uint8Array(body);
|
|
581
|
+
return {
|
|
582
|
+
body: Buffer.from(bytes).toString('base64'),
|
|
583
|
+
meta: {
|
|
584
|
+
...meta,
|
|
585
|
+
contentType: meta?.contentType ?? 'application/octet-stream',
|
|
586
|
+
encoding: meta?.encoding ?? 'base64',
|
|
587
|
+
},
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
return {
|
|
591
|
+
body: JSON.stringify(body),
|
|
592
|
+
meta: {
|
|
593
|
+
...meta,
|
|
594
|
+
contentType: meta?.contentType ?? 'application/json',
|
|
595
|
+
encoding: meta?.encoding ?? 'utf-8',
|
|
596
|
+
},
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
function looksLikeJsonContentType(contentType) {
|
|
600
|
+
if (!contentType) {
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
const normalized = contentType.toLowerCase();
|
|
604
|
+
return normalized.includes('/json') || normalized.endsWith('+json');
|
|
605
|
+
}
|
|
606
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/policy.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AgentPolicy, PolicyActionType, PolicySuggestion, RelayfileClient } from './types.js';
|
|
2
|
+
interface PolicyGateOptions {
|
|
3
|
+
workspace: string;
|
|
4
|
+
agentId: string;
|
|
5
|
+
policy?: AgentPolicy;
|
|
6
|
+
relayfile: RelayfileClient;
|
|
7
|
+
awaitApproval?: (approvalId: string) => Promise<unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare function createPolicyGate(options: PolicyGateOptions): {
|
|
10
|
+
run: <T>(actionType: PolicyActionType, action: Record<string, unknown>, execute: () => Promise<T>) => Promise<T | PolicySuggestion>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;UAE3C,CAAC,cACC,gBAAgB,UACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WACtB,MAAM,OAAO,CAAC,CAAC,CAAC,KACxB,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC;EA4EnC"}
|