@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
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { withBurnTags } from './burn.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the single-handler dispatcher that enforces local concurrency limits.
|
|
4
|
+
*/
|
|
5
|
+
export function createDispatcher(options) {
|
|
6
|
+
const concurrency = Math.max(1, options.concurrency);
|
|
7
|
+
const queue = [];
|
|
8
|
+
const active = new Set();
|
|
9
|
+
const controllers = new Set();
|
|
10
|
+
let closed = false;
|
|
11
|
+
const pump = () => {
|
|
12
|
+
if (closed && queue.length > 0) {
|
|
13
|
+
while (queue.length > 0) {
|
|
14
|
+
const queued = queue.shift();
|
|
15
|
+
queued?.reject(new Error('Dispatcher closed'));
|
|
16
|
+
}
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
while (active.size < concurrency && queue.length > 0) {
|
|
20
|
+
const next = queue.shift();
|
|
21
|
+
if (!next) {
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
const task = runItem(next);
|
|
25
|
+
active.add(task);
|
|
26
|
+
void task.finally(() => {
|
|
27
|
+
active.delete(task);
|
|
28
|
+
pump();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const runItem = async (item) => {
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
controllers.add(controller);
|
|
35
|
+
const timeout = setTimeout(() => {
|
|
36
|
+
controller.abort(new Error('Handler timed out'));
|
|
37
|
+
}, options.handlerTimeoutMs);
|
|
38
|
+
try {
|
|
39
|
+
const ctx = options.createContext(controller.signal, item.event);
|
|
40
|
+
await dispatchToHandler(ctx, item.event, options.onEvent, controller.signal);
|
|
41
|
+
item.resolve();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
item.reject(error);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
clearTimeout(timeout);
|
|
48
|
+
controllers.delete(controller);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
dispatch(event) {
|
|
53
|
+
if (closed) {
|
|
54
|
+
return Promise.reject(new Error('Dispatcher closed'));
|
|
55
|
+
}
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
queue.push({ event, resolve, reject });
|
|
58
|
+
pump();
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
close() {
|
|
62
|
+
closed = true;
|
|
63
|
+
pump();
|
|
64
|
+
},
|
|
65
|
+
abortActive(reason) {
|
|
66
|
+
for (const controller of controllers) {
|
|
67
|
+
controller.abort(reason);
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
async drain(timeoutMs) {
|
|
71
|
+
const deadline = Date.now() + timeoutMs;
|
|
72
|
+
while ((queue.length > 0 || active.size > 0) && Date.now() < deadline) {
|
|
73
|
+
await new Promise((resolve) => {
|
|
74
|
+
setTimeout(resolve, 25);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return queue.length === 0 && active.size === 0;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async function dispatchToHandler(ctx, event, handler, signal) {
|
|
82
|
+
if (signal.aborted) {
|
|
83
|
+
throw signal.reason instanceof Error ? signal.reason : new Error('Handler aborted');
|
|
84
|
+
}
|
|
85
|
+
const abortPromise = new Promise((_, reject) => {
|
|
86
|
+
signal.addEventListener('abort', () => {
|
|
87
|
+
reject(signal.reason instanceof Error ? signal.reason : new Error('Handler aborted'));
|
|
88
|
+
}, { once: true });
|
|
89
|
+
});
|
|
90
|
+
await withBurnTags({
|
|
91
|
+
workspace: ctx.workspace,
|
|
92
|
+
agentId: ctx.agentId,
|
|
93
|
+
eventType: event.type,
|
|
94
|
+
eventId: event.id,
|
|
95
|
+
occurredAt: event.occurredAt,
|
|
96
|
+
}, async () => {
|
|
97
|
+
const handlerPromise = Promise.resolve(handler(ctx, event));
|
|
98
|
+
await Promise.race([handlerPromise, abortPromise]);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NoRetry, relayfileTools } from '@agent-relay/events';
|
|
2
|
+
import { deployAgent } from './deploy.js';
|
|
3
|
+
import type { AgentDefinition, AgentHandle } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Registers and runs a proactive agent using the layered runtime SDK.
|
|
6
|
+
*/
|
|
7
|
+
export declare function agent(definition: AgentDefinition): AgentHandle;
|
|
8
|
+
/**
|
|
9
|
+
* Re-exported for callers that want relayfile-compatible tools next to `agent()`.
|
|
10
|
+
*/
|
|
11
|
+
export { NoRetry, relayfileTools, deployAgent };
|
|
12
|
+
export type { AgentDefinition, AgentHandle, AgentOptions, AgentPolicy, AgentPolicyMode, AgentProviderConfig, CoalesceMissedTicksMode, Context, DeployHandle, FileSummary, HostedAgentDefinition, HostedAgentHandler, HostedAgentStatus, Logger, LogFields, PostOpts, ReplayOnStart, RelaycastClient, RelaycronClient, RelaycronScheduleDefinition, RelaycronScheduleHandle, RelayfileClient, ScheduleSpec, WorkspaceFile, WriteMeta, } from './types.js';
|
|
13
|
+
export type { AgentEvent, ChangeEvent, CronTickEvent, EventType, Expansion, ExpansionLevel, RelaycastMessageEvent, RelayfileChangeEvent, StartupEvent, } from '@agent-relay/events';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,OAAO,EACP,cAAc,EAWf,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EACV,eAAe,EAEf,WAAW,EAuBZ,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,wBAAgB,KAAK,CAAC,UAAU,EAAE,eAAe,GAAG,WAAW,CAiJ9D;AAED;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAEhD,YAAY,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,OAAO,EACP,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,QAAQ,EACR,aAAa,EACb,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,GACb,MAAM,qBAAqB,CAAC"}
|