@dharma-ai-labs/agent-fabric 0.2.99 → 0.2.100
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/AGENT_FABRIC_ONBOARDING.md +3 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +147 -8
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +16 -4
- package/dist/index.test.js.map +1 -1
- package/dist/relaySupervisor.d.ts +11 -0
- package/dist/relaySupervisor.d.ts.map +1 -0
- package/dist/relaySupervisor.js +56 -0
- package/dist/relaySupervisor.js.map +1 -0
- package/dist/relaySupervisor.test.d.ts +2 -0
- package/dist/relaySupervisor.test.d.ts.map +1 -0
- package/dist/relaySupervisor.test.js +127 -0
- package/dist/relaySupervisor.test.js.map +1 -0
- package/dist/usage.d.ts +1 -1
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +1 -1
- package/dist/usage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ChildProcess } from 'node:child_process';
|
|
2
|
+
export declare function relayRestartDelayMs(consecutiveShortRuns: number): number;
|
|
3
|
+
export declare function superviseRelay(input: {
|
|
4
|
+
start: () => ChildProcess;
|
|
5
|
+
signal: AbortSignal;
|
|
6
|
+
now?: () => number;
|
|
7
|
+
wait?: (delayMs: number, signal: AbortSignal) => Promise<void>;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
restarts: number;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=relaySupervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relaySupervisor.d.ts","sourceRoot":"","sources":["../src/relaySupervisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAExE;AAeD,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,KAAK,EAAE,MAAM,YAAY,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuChC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function relayRestartDelayMs(consecutiveShortRuns) {
|
|
2
|
+
return Math.min(30_000, 1_000 * 2 ** Math.min(Math.max(0, consecutiveShortRuns - 1), 5));
|
|
3
|
+
}
|
|
4
|
+
async function waitForRestart(delayMs, signal) {
|
|
5
|
+
if (signal.aborted)
|
|
6
|
+
return;
|
|
7
|
+
await new Promise((resolveWait) => {
|
|
8
|
+
const finish = () => {
|
|
9
|
+
clearTimeout(timer);
|
|
10
|
+
signal.removeEventListener('abort', finish);
|
|
11
|
+
resolveWait();
|
|
12
|
+
};
|
|
13
|
+
const timer = setTimeout(finish, delayMs);
|
|
14
|
+
signal.addEventListener('abort', finish, { once: true });
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export async function superviseRelay(input) {
|
|
18
|
+
const now = input.now || Date.now;
|
|
19
|
+
const wait = input.wait || waitForRestart;
|
|
20
|
+
let consecutiveShortRuns = 0;
|
|
21
|
+
let restarts = 0;
|
|
22
|
+
while (!input.signal.aborted) {
|
|
23
|
+
const startedAt = now();
|
|
24
|
+
let child;
|
|
25
|
+
try {
|
|
26
|
+
child = input.start();
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
consecutiveShortRuns += 1;
|
|
30
|
+
restarts += 1;
|
|
31
|
+
await wait(relayRestartDelayMs(consecutiveShortRuns), input.signal);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
await new Promise((resolveExit) => {
|
|
35
|
+
const onAbort = () => { child.kill('SIGTERM'); };
|
|
36
|
+
const onExit = () => {
|
|
37
|
+
input.signal.removeEventListener('abort', onAbort);
|
|
38
|
+
child.removeListener('error', onExit);
|
|
39
|
+
child.removeListener('exit', onExit);
|
|
40
|
+
resolveExit();
|
|
41
|
+
};
|
|
42
|
+
child.once('error', onExit);
|
|
43
|
+
child.once('exit', onExit);
|
|
44
|
+
input.signal.addEventListener('abort', onAbort, { once: true });
|
|
45
|
+
if (input.signal.aborted)
|
|
46
|
+
onAbort();
|
|
47
|
+
});
|
|
48
|
+
if (input.signal.aborted)
|
|
49
|
+
break;
|
|
50
|
+
consecutiveShortRuns = now() - startedAt >= 60_000 ? 1 : consecutiveShortRuns + 1;
|
|
51
|
+
restarts += 1;
|
|
52
|
+
await wait(relayRestartDelayMs(consecutiveShortRuns), input.signal);
|
|
53
|
+
}
|
|
54
|
+
return { restarts };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=relaySupervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relaySupervisor.js","sourceRoot":"","sources":["../src/relaySupervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relaySupervisor.test.d.ts","sourceRoot":"","sources":["../src/relaySupervisor.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { execFile, spawn } from 'node:child_process';
|
|
3
|
+
import { EventEmitter, once } from 'node:events';
|
|
4
|
+
import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import test from 'node:test';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { promisify } from 'node:util';
|
|
10
|
+
import { relayRestartDelayMs, superviseRelay } from './relaySupervisor.js';
|
|
11
|
+
const execFileAsync = promisify(execFile);
|
|
12
|
+
test('relay restart backoff is bounded', () => {
|
|
13
|
+
assert.equal(relayRestartDelayMs(1), 1_000);
|
|
14
|
+
assert.equal(relayRestartDelayMs(2), 2_000);
|
|
15
|
+
assert.equal(relayRestartDelayMs(6), 30_000);
|
|
16
|
+
assert.equal(relayRestartDelayMs(100), 30_000);
|
|
17
|
+
});
|
|
18
|
+
test('supervisor restarts unexpected exits and stops its child on shutdown', async () => {
|
|
19
|
+
const controller = new AbortController();
|
|
20
|
+
const waits = [];
|
|
21
|
+
let starts = 0;
|
|
22
|
+
const result = await superviseRelay({
|
|
23
|
+
signal: controller.signal,
|
|
24
|
+
wait: async (delayMs) => { waits.push(delayMs); },
|
|
25
|
+
start: () => {
|
|
26
|
+
starts += 1;
|
|
27
|
+
const child = new EventEmitter();
|
|
28
|
+
child.kill = () => {
|
|
29
|
+
queueMicrotask(() => child.emit('exit', 0, null));
|
|
30
|
+
return true;
|
|
31
|
+
};
|
|
32
|
+
queueMicrotask(() => {
|
|
33
|
+
if (starts === 3)
|
|
34
|
+
controller.abort();
|
|
35
|
+
else
|
|
36
|
+
child.emit('exit', 1, null);
|
|
37
|
+
});
|
|
38
|
+
return child;
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
assert.equal(starts, 3);
|
|
42
|
+
assert.deepEqual(waits, [1_000, 2_000]);
|
|
43
|
+
assert.equal(result.restarts, 2);
|
|
44
|
+
});
|
|
45
|
+
test('supervisor does not start a relay after shutdown', async () => {
|
|
46
|
+
const controller = new AbortController();
|
|
47
|
+
controller.abort();
|
|
48
|
+
let starts = 0;
|
|
49
|
+
const result = await superviseRelay({
|
|
50
|
+
signal: controller.signal,
|
|
51
|
+
start: () => { starts += 1; throw new Error('must not start'); },
|
|
52
|
+
});
|
|
53
|
+
assert.equal(starts, 0);
|
|
54
|
+
assert.equal(result.restarts, 0);
|
|
55
|
+
});
|
|
56
|
+
test('a detached supervisor records its workspace and relay stop shuts it down', {
|
|
57
|
+
skip: process.platform === 'win32',
|
|
58
|
+
}, async () => {
|
|
59
|
+
const root = await mkdtemp(join(tmpdir(), 'dharma-relay-supervisor-process-'));
|
|
60
|
+
const home = join(root, 'home');
|
|
61
|
+
const workspace = join(root, 'repo');
|
|
62
|
+
const policyPath = join(workspace, '.dharma', 'approved-policy.json');
|
|
63
|
+
await mkdir(join(workspace, '.dharma'), { recursive: true });
|
|
64
|
+
await mkdir(join(home, 'registry'), { recursive: true });
|
|
65
|
+
await writeFile(policyPath, '{}\n');
|
|
66
|
+
await writeFile(join(home, 'device.json'), JSON.stringify({ organizationId: 'org_test', deviceId: 'device_test' }));
|
|
67
|
+
await writeFile(join(home, 'registry', 'workspaces.json'), JSON.stringify([{ path: workspace, workspaceId: 'workspace_test' }]));
|
|
68
|
+
const env = { ...process.env, DHARMA_HOME: home };
|
|
69
|
+
const bin = fileURLToPath(new URL('./bin.js', import.meta.url));
|
|
70
|
+
const child = spawn(process.execPath, [bin, 'relay', 'supervise', '--policy', policyPath], {
|
|
71
|
+
env, stdio: 'ignore', detached: true,
|
|
72
|
+
});
|
|
73
|
+
try {
|
|
74
|
+
let binding = null;
|
|
75
|
+
for (let attempt = 0; attempt < 50; attempt += 1) {
|
|
76
|
+
binding = await readFile(join(home, 'relay', 'supervisor-workspace.json'), 'utf8')
|
|
77
|
+
.then(value => JSON.parse(value)).catch(() => null);
|
|
78
|
+
if (binding)
|
|
79
|
+
break;
|
|
80
|
+
await new Promise(resolveWait => setTimeout(resolveWait, 100));
|
|
81
|
+
}
|
|
82
|
+
assert.deepEqual(binding && { workspaceId: binding.workspaceId, policyPath: binding.policyPath }, {
|
|
83
|
+
workspaceId: 'workspace_test', policyPath,
|
|
84
|
+
});
|
|
85
|
+
const { stdout } = await execFileAsync(process.execPath, [bin, 'relay', 'stop'], { env, timeout: 10_000 });
|
|
86
|
+
assert.deepEqual(JSON.parse(stdout), { ok: true, stopped: true, vaultPreserved: true });
|
|
87
|
+
const status = await execFileAsync(process.execPath, [bin, 'status'], { env, timeout: 10_000 });
|
|
88
|
+
assert.equal(JSON.parse(status.stdout).supervisor, 'stopped');
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
if (child.exitCode === null)
|
|
92
|
+
child.kill('SIGTERM');
|
|
93
|
+
await rm(root, { recursive: true, force: true });
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
test('relay stop terminates an orphaned receiver after the supervisor exits', async () => {
|
|
97
|
+
const root = await mkdtemp(join(tmpdir(), 'dharma-relay-orphan-stop-'));
|
|
98
|
+
const home = join(root, 'home');
|
|
99
|
+
const relayDir = join(home, 'relay');
|
|
100
|
+
await mkdir(relayDir, { recursive: true });
|
|
101
|
+
const supervisor = spawn(process.execPath, ['-e', 'console.log("ready"); setInterval(() => {}, 1000)'], {
|
|
102
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
103
|
+
});
|
|
104
|
+
const receiver = spawn(process.execPath, ['-e', 'console.log("ready"); setInterval(() => {}, 1000)'], {
|
|
105
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
106
|
+
});
|
|
107
|
+
try {
|
|
108
|
+
assert.ok(supervisor.pid);
|
|
109
|
+
assert.ok(receiver.pid);
|
|
110
|
+
await Promise.all([once(supervisor.stdout, 'data'), once(receiver.stdout, 'data')]);
|
|
111
|
+
await writeFile(join(relayDir, 'supervisor.pid'), `${supervisor.pid}\n`);
|
|
112
|
+
await writeFile(join(relayDir, 'relay.pid'), `${receiver.pid}\n`);
|
|
113
|
+
const bin = fileURLToPath(new URL('./bin.js', import.meta.url));
|
|
114
|
+
const { stdout } = await execFileAsync(process.execPath, [bin, 'relay', 'stop'], {
|
|
115
|
+
env: { ...process.env, DHARMA_HOME: home }, timeout: 10_000,
|
|
116
|
+
});
|
|
117
|
+
assert.deepEqual(JSON.parse(stdout), { ok: true, stopped: true, vaultPreserved: true });
|
|
118
|
+
assert.equal(supervisor.exitCode !== null || supervisor.signalCode !== null, true);
|
|
119
|
+
assert.equal(receiver.exitCode !== null || receiver.signalCode !== null, true);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
supervisor.kill('SIGTERM');
|
|
123
|
+
receiver.kill('SIGTERM');
|
|
124
|
+
await rm(root, { recursive: true, force: true });
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=relaySupervisor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relaySupervisor.test.js","sourceRoot":"","sources":["../src/relaySupervisor.test.ts"],"names":[],"mappings":"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"}
|
package/dist/usage.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_USAGE = "Usage: dharma <bootstrap|onboard|login|status|demo connect|demo status|demo package|demo package-status|demo watch|demo role|demo peers|demo ask|demo reply|demo inbox|demo ack|demo resume|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]";
|
|
1
|
+
export declare const CLI_USAGE = "Usage: dharma <bootstrap|onboard|login|status|demo connect|demo status|demo package|demo package-status|demo watch|demo role|demo peers|demo ask|demo reply|demo inbox|demo ack|demo resume|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|relay stop|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]";
|
|
2
2
|
//# sourceMappingURL=usage.d.ts.map
|
package/dist/usage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,s/BAAs/B,CAAC"}
|
package/dist/usage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_USAGE = 'Usage: dharma <bootstrap|onboard|login|status|demo connect|demo status|demo package|demo package-status|demo watch|demo role|demo peers|demo ask|demo reply|demo inbox|demo ack|demo resume|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]';
|
|
1
|
+
export const CLI_USAGE = 'Usage: dharma <bootstrap|onboard|login|status|demo connect|demo status|demo package|demo package-status|demo watch|demo role|demo peers|demo ask|demo reply|demo inbox|demo ack|demo resume|providers list|repositories discover|repositories connect|repositories list|repositories status|repositories snapshot|repositories role-register|repositories role-discover|repositories ask|repositories reply|workspace add|workspace sync|evidence preview|evidence capture|evidence capture-batch|evidence sync|evidence run-request|relay probe|relay start|relay stop|assistant chat|assistant history|assistant status|assistant approve|assistant reject|organization status|agents list|agents bind-runtime|evaluations validate|evaluations launch|evaluations status|evaluations results|experiments list|experiments run|failures list|remediations list|remediations act|tasks list|tasks dispatch|handoffs list|skills list|skills release|skills rollout|skills rollback|skills sync|skills status|skills verify|usage list> [options]';
|
|
2
2
|
//# sourceMappingURL=usage.js.map
|
package/dist/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,m/BAAm/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dharma-ai-labs/agent-fabric",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.100",
|
|
4
4
|
"description": "Local-first CLI for connecting coding agents to Dharma evaluation, orchestration, and signed Skill delivery",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/dharma-ai-labs/dharma-agent-fabric/tree/main/packages/cli#readme",
|