@dharma-ai-labs/agent-fabric 0.2.206 → 0.2.208
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 +22 -0
- package/dist/bootstrapHostScope.test.js +2 -1
- package/dist/bootstrapHostScope.test.js.map +1 -1
- package/dist/bootstrapProcessCaller.test.js +2 -0
- package/dist/bootstrapProcessCaller.test.js.map +1 -1
- package/dist/bootstrapVaultScope.test.js +32 -1
- package/dist/bootstrapVaultScope.test.js.map +1 -1
- package/dist/codexInboxSession.d.ts +1 -1
- package/dist/codexSetupSessionCaller.test.js +2 -0
- package/dist/codexSetupSessionCaller.test.js.map +1 -1
- package/dist/cooperativeInboxSession.d.ts +1 -1
- package/dist/demoPeer.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -4
- package/dist/index.js.map +1 -1
- package/dist/namedSessionAdmission.d.ts +23 -0
- package/dist/namedSessionAdmission.d.ts.map +1 -0
- package/dist/namedSessionAdmission.js +120 -0
- package/dist/namedSessionAdmission.js.map +1 -0
- package/dist/namedSessionAdmission.test.d.ts +2 -0
- package/dist/namedSessionAdmission.test.d.ts.map +1 -0
- package/dist/namedSessionAdmission.test.js +151 -0
- package/dist/namedSessionAdmission.test.js.map +1 -0
- package/dist/namedSessionMaintenance.d.ts +49 -0
- package/dist/namedSessionMaintenance.d.ts.map +1 -0
- package/dist/namedSessionMaintenance.js +79 -0
- package/dist/namedSessionMaintenance.js.map +1 -0
- package/dist/namedSessionMaintenance.test.d.ts +2 -0
- package/dist/namedSessionMaintenance.test.d.ts.map +1 -0
- package/dist/namedSessionMaintenance.test.js +141 -0
- package/dist/namedSessionMaintenance.test.js.map +1 -0
- package/dist/namedSessionService.d.ts +8 -1
- package/dist/namedSessionService.d.ts.map +1 -1
- package/dist/namedSessionService.js +138 -45
- package/dist/namedSessionService.js.map +1 -1
- package/dist/namedSessionService.test.js +58 -3
- package/dist/namedSessionService.test.js.map +1 -1
- package/dist/namedSessionTransportDiagnostic.d.ts +40 -0
- package/dist/namedSessionTransportDiagnostic.d.ts.map +1 -0
- package/dist/namedSessionTransportDiagnostic.js +71 -0
- package/dist/namedSessionTransportDiagnostic.js.map +1 -0
- package/dist/namedSessionTransportDiagnostic.test.d.ts +2 -0
- package/dist/namedSessionTransportDiagnostic.test.d.ts.map +1 -0
- package/dist/namedSessionTransportDiagnostic.test.js +188 -0
- package/dist/namedSessionTransportDiagnostic.test.js.map +1 -0
- package/dist/providerSessionReplyRecovery.d.ts +1 -1
- package/dist/schemas/named-session-maintenance.schema.json +38 -0
- package/dist/schemas/named-session-readiness-diagnostic.schema.json +37 -0
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +3 -2
- package/dist/usage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import test from 'node:test';
|
|
4
|
+
import { activateMaintenanceRestart, maintainNamedSession, recoverStoppedNamedSession } from './namedSessionMaintenance.js';
|
|
5
|
+
import { assertNamedSessionStartupRegistration } from './namedSessionAdmission.js';
|
|
6
|
+
import { validateContract } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
function fixture() {
|
|
9
|
+
const registration = { schema: 'dharma.named-session/v1', name: 'reviewer',
|
|
10
|
+
bindingId: randomUUID(), enabled: true, maximumCostCents: 100, maximumTurnCostCents: 25,
|
|
11
|
+
identity: { organizationId: 'org_test', repositoryBindingId: randomUUID(), workspaceId: randomUUID(),
|
|
12
|
+
endpointId: randomUUID(), membershipId: randomUUID(), deviceId: randomUUID(), provider: 'codex' } };
|
|
13
|
+
const fenceId = randomUUID(), generation = randomUUID(), sessionId = randomUUID();
|
|
14
|
+
const status = { ok: true, name: registration.name, bindingId: registration.bindingId,
|
|
15
|
+
...registration.identity, sessionId, admission: { generation, fenceId: null, pending: 0, state: 'open' } };
|
|
16
|
+
const receipt = { ok: true, schema: 'dharma.named-session-maintenance/v1', receiptId: randomUUID(),
|
|
17
|
+
...registration.identity, name: registration.name, bindingId: registration.bindingId, sessionId,
|
|
18
|
+
action: 'quiesce', fenceId, generation, mode: 'live', state: 'quiesced', pending: 0, automaticRestartEnabled: false, observedAt: new Date().toISOString() };
|
|
19
|
+
return { registration, fenceId, generation, status, receipt };
|
|
20
|
+
}
|
|
21
|
+
for (const action of ['quiesce', 'resume', 'stop-drained'])
|
|
22
|
+
test(`maintenance ${action} binds the actual owner generation and scoped receipt`, async () => {
|
|
23
|
+
const value = fixture(), requests = [];
|
|
24
|
+
value.receipt.action = action;
|
|
25
|
+
value.receipt.state = action === 'quiesce' ? 'quiesced' : action === 'resume' ? 'open' : 'stop_requested';
|
|
26
|
+
value.receipt.automaticRestartEnabled = action === 'resume';
|
|
27
|
+
const result = await maintainNamedSession({ ...value, action, request: async (body) => {
|
|
28
|
+
requests.push(body);
|
|
29
|
+
return requests.length === 1 ? value.status : value.receipt;
|
|
30
|
+
} });
|
|
31
|
+
assert.deepEqual(requests, [{ action: 'status' }, { action, fenceId: value.fenceId, generation: value.generation }]);
|
|
32
|
+
assert.deepEqual(result, value.receipt);
|
|
33
|
+
});
|
|
34
|
+
test('a legacy service lacking a real admission fence is rejected before a control request', async () => {
|
|
35
|
+
const value = fixture(), requests = [];
|
|
36
|
+
delete value.status.admission;
|
|
37
|
+
await assert.rejects(maintainNamedSession({ ...value, action: 'quiesce', request: async (body) => {
|
|
38
|
+
requests.push(body);
|
|
39
|
+
return value.status;
|
|
40
|
+
} }), /named_session_quiescence_not_supported/);
|
|
41
|
+
assert.deepEqual(requests, [{ action: 'status' }]);
|
|
42
|
+
});
|
|
43
|
+
test('foreign owner, repository, member or device cannot authorize a maintenance request', async () => {
|
|
44
|
+
for (const key of ['name', 'bindingId', 'organizationId', 'repositoryBindingId', 'membershipId', 'deviceId', 'workspaceId', 'endpointId']) {
|
|
45
|
+
const value = fixture();
|
|
46
|
+
value.status[key] = key === 'name' ? 'foreign' : key === 'organizationId' ? 'org_foreign' : randomUUID();
|
|
47
|
+
const requests = [];
|
|
48
|
+
await assert.rejects(maintainNamedSession({ ...value, action: 'quiesce', request: async (body) => {
|
|
49
|
+
requests.push(body);
|
|
50
|
+
return value.status;
|
|
51
|
+
} }), /named_session_scope_mismatch/);
|
|
52
|
+
assert.deepEqual(requests, [{ action: 'status' }]);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
test('invalid, stale, foreign or secret-bearing receipts never establish a drained boundary', async () => {
|
|
56
|
+
for (const change of [
|
|
57
|
+
{ generation: randomUUID() }, { fenceId: randomUUID() }, { pending: 1 }, { state: 'open' }, { action: 'resume' },
|
|
58
|
+
{ deviceId: randomUUID() }, { sessionId: randomUUID() }, { membershipId: randomUUID() },
|
|
59
|
+
{ grant: 'dhab_PRIVATE_TEST_GRANT' }, { observedAt: 'invalid' }, { ok: false }, { automaticRestartEnabled: true },
|
|
60
|
+
]) {
|
|
61
|
+
const value = fixture();
|
|
62
|
+
let requests = 0;
|
|
63
|
+
await assert.rejects(maintainNamedSession({ ...value, action: 'quiesce', request: async () => ++requests === 1 ? value.status : { ...value.receipt, ...change } }), /named_session_maintenance_scope_mismatch/);
|
|
64
|
+
assert.equal(requests, 2);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
test('lost control responses are not retried or interpreted as successful drain', async () => {
|
|
68
|
+
const value = fixture();
|
|
69
|
+
let calls = 0;
|
|
70
|
+
await assert.rejects(maintainNamedSession({ ...value, action: 'quiesce', request: async () => {
|
|
71
|
+
if (++calls === 1)
|
|
72
|
+
return value.status;
|
|
73
|
+
throw Error('named_session_unavailable');
|
|
74
|
+
} }), /named_session_unavailable/);
|
|
75
|
+
assert.equal(calls, 2);
|
|
76
|
+
});
|
|
77
|
+
function recoveryFixture() {
|
|
78
|
+
const f = fixture(), registration = { ...f.registration, enabled: false,
|
|
79
|
+
maintenanceFence: { fenceId: f.fenceId, generation: f.generation } };
|
|
80
|
+
let current = registration, writes = 0, stateReads = 0;
|
|
81
|
+
const binding = { schema: 'dharma.local-provider-session-binding/v1',
|
|
82
|
+
...registration.identity, bindingId: registration.bindingId, owner: 'dharma_bridge', sessionId: String(f.receipt.sessionId),
|
|
83
|
+
workspaceRoot: '/fixture/repo', createdAt: new Date().toISOString(), expiresAt: new Date(Date.now() + 60000).toISOString(), maximumProviderCostCents: 25 };
|
|
84
|
+
return { ...f, registration, binding, writes: () => writes, current: () => current,
|
|
85
|
+
input: { registration, fenceId: f.fenceId, workspace: '/fixture/repo', processState: async () => { stateReads++; return 'stopped'; },
|
|
86
|
+
readRegistration: async () => current, readBinding: async () => binding,
|
|
87
|
+
saveRegistration: async (value) => { writes++; current = value; } },
|
|
88
|
+
stateReads: () => stateReads };
|
|
89
|
+
}
|
|
90
|
+
test('explicit stopped-owner recovery preserves binding and budgets and does not start a provider', async () => {
|
|
91
|
+
const f = recoveryFixture(), receipt = await recoverStoppedNamedSession(f.input);
|
|
92
|
+
assert.equal(receipt.mode, 'stopped_recovery');
|
|
93
|
+
assert.equal(receipt.state, 'restart_permitted');
|
|
94
|
+
assert.equal(receipt.interruptedWorkDisposition, 'preserved_for_verified_start');
|
|
95
|
+
assert.equal(receipt.sessionId, f.binding.sessionId);
|
|
96
|
+
assert.equal(f.writes(), 1);
|
|
97
|
+
assert.equal(f.stateReads(), 2);
|
|
98
|
+
assert.equal(f.current()?.enabled, false);
|
|
99
|
+
assert.equal(receipt.automaticRestartEnabled, false);
|
|
100
|
+
assert.equal(f.current()?.maintenanceFence?.restartPermitted, true);
|
|
101
|
+
assert.throws(() => assertNamedSessionStartupRegistration(f.registration, f.current()), /named_session_quiesced/);
|
|
102
|
+
assert.equal((await validateContract(join(import.meta.dirname, 'schemas'), 'https://schemas.dharma-ai.io/named-session-maintenance/v1', receipt)).ok, true);
|
|
103
|
+
});
|
|
104
|
+
test('unavailable live owner and unknown process state never clear a persisted fence', async () => {
|
|
105
|
+
for (const state of ['running', 'unknown']) {
|
|
106
|
+
const f = recoveryFixture();
|
|
107
|
+
await assert.rejects(recoverStoppedNamedSession({ ...f.input, processState: async () => state }), /named_session_owner_not_stopped/);
|
|
108
|
+
assert.equal(f.writes(), 0);
|
|
109
|
+
assert.equal(f.current()?.enabled, false);
|
|
110
|
+
}
|
|
111
|
+
const f = recoveryFixture();
|
|
112
|
+
let reads = 0;
|
|
113
|
+
await assert.rejects(recoverStoppedNamedSession({ ...f.input, processState: async () => ++reads === 1 ? 'stopped' : 'running' }), /named_session_owner_not_stopped/);
|
|
114
|
+
assert.equal(f.writes(), 0);
|
|
115
|
+
});
|
|
116
|
+
test('stopped recovery rejects wrong fence, foreign binding, changed disk scope and expired authority before writes', async () => {
|
|
117
|
+
for (const kind of ['fence', 'binding', 'disk', 'expired']) {
|
|
118
|
+
const f = recoveryFixture();
|
|
119
|
+
const input = { ...f.input, ...(kind === 'fence' ? { fenceId: randomUUID() } : {}),
|
|
120
|
+
...(kind === 'binding' ? { readBinding: async () => ({ ...f.binding, deviceId: randomUUID() }) } : {}),
|
|
121
|
+
...(kind === 'disk' ? { readRegistration: async () => ({ ...f.registration, maximumCostCents: 200 }) } : {}),
|
|
122
|
+
...(kind === 'expired' ? { readBinding: async () => ({ ...f.binding, expiresAt: new Date(0).toISOString() }) } : {}) };
|
|
123
|
+
await assert.rejects(recoverStoppedNamedSession(input), /named_session_maintenance_/);
|
|
124
|
+
assert.equal(f.writes(), 0);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
test('restart-permitted registration remains supervisor-disabled until a matching explicit start', async () => {
|
|
128
|
+
const f = recoveryFixture();
|
|
129
|
+
await recoverStoppedNamedSession(f.input);
|
|
130
|
+
const permitted = f.current();
|
|
131
|
+
assert.equal(permitted.enabled, false);
|
|
132
|
+
await assert.rejects(activateMaintenanceRestart({ ...f.input, registration: permitted, fenceId: randomUUID() }), /named_session_maintenance_start_unavailable/);
|
|
133
|
+
assert.equal(f.current()?.enabled, false);
|
|
134
|
+
await assert.rejects(activateMaintenanceRestart({ ...f.input, registration: permitted, processState: async () => 'running' }), /named_session_owner_not_stopped/);
|
|
135
|
+
assert.equal(f.current()?.enabled, false);
|
|
136
|
+
await activateMaintenanceRestart({ ...f.input, registration: permitted });
|
|
137
|
+
const { maintenanceFence: _fence, ...base } = f.registration;
|
|
138
|
+
assert.deepEqual(f.current(), { ...base, enabled: true });
|
|
139
|
+
assert.equal(f.writes(), 2);
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=namedSessionMaintenance.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionMaintenance.test.js","sourceRoot":"","sources":["../src/namedSessionMaintenance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ export interface NamedSessionRegistration {
|
|
|
12
12
|
maximumCostCents: number;
|
|
13
13
|
maximumTurnCostCents: number;
|
|
14
14
|
enabled: boolean;
|
|
15
|
+
maintenanceFence?: {
|
|
16
|
+
fenceId: string;
|
|
17
|
+
generation: string;
|
|
18
|
+
restartPermitted?: true;
|
|
19
|
+
};
|
|
15
20
|
}
|
|
16
21
|
export declare function namedSessionPaths(home: string, name: string): {
|
|
17
22
|
root: string;
|
|
@@ -22,7 +27,9 @@ export declare function namedSessionPaths(home: string, name: string): {
|
|
|
22
27
|
};
|
|
23
28
|
export declare function readNamedSession(home: string, name: string): Promise<NamedSessionRegistration | null>;
|
|
24
29
|
export declare function saveNamedSession(home: string, value: NamedSessionRegistration): Promise<void>;
|
|
25
|
-
export declare function namedSessionRequest(home: string, name: string, request: Record<string, unknown
|
|
30
|
+
export declare function namedSessionRequest(home: string, name: string, request: Record<string, unknown>, options?: {
|
|
31
|
+
readonly diagnostic?: boolean;
|
|
32
|
+
}): Promise<Record<string, unknown>>;
|
|
26
33
|
export declare function runNamedSessionService(input: {
|
|
27
34
|
home: string;
|
|
28
35
|
registration: NamedSessionRegistration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedSessionService.d.ts","sourceRoot":"","sources":["../src/namedSessionService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,4BAA4B,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC3H,OAAO,
|
|
1
|
+
{"version":3,"file":"namedSessionService.d.ts","sourceRoot":"","sources":["../src/namedSessionService.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,20 +2,23 @@ import { createHash, randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { chmod, lstat, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { createConnection, createServer } from 'node:net';
|
|
4
4
|
import { join, resolve } from 'node:path';
|
|
5
|
-
import { validateContract } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
5
|
+
import { canonicalize, validateContract } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
6
6
|
import { openCodexInboxSession } from './codexInboxSession.js';
|
|
7
7
|
import { assertCodexWorkPrompt, codexWorkCaptureSchemaId } from '@dharma-ai-labs/agent-fabric-provider-adapters/experimental/codex-session';
|
|
8
8
|
import { readNamedSessionNativeAudit } from './namedSessionNativeAudit.js';
|
|
9
9
|
import { composeNamedSessionRepositoryPrompt } from './namedSessionPackageGate.js';
|
|
10
10
|
import { parseNamedCodexSkillObservation } from './namedCodexSkillDiscovery.js';
|
|
11
|
+
import { NamedSessionAdmission } from './namedSessionAdmission.js';
|
|
12
|
+
import { NamedSessionTransportFailure } from './namedSessionTransportDiagnostic.js';
|
|
11
13
|
function validateRegistration(value, name) {
|
|
12
14
|
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
13
15
|
throw new Error('named_session_registration_invalid');
|
|
14
16
|
const record = value;
|
|
15
|
-
const keys = ['schema', 'name', 'bindingId', 'identity', 'maximumCostCents', 'maximumTurnCostCents', 'enabled'];
|
|
17
|
+
const keys = ['schema', 'name', 'bindingId', 'identity', 'maximumCostCents', 'maximumTurnCostCents', 'enabled', 'maintenanceFence'];
|
|
16
18
|
const ids = ['repositoryBindingId', 'workspaceId', 'endpointId', 'membershipId', 'deviceId'];
|
|
17
19
|
const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
18
20
|
const identity = record.identity;
|
|
21
|
+
const fence = record.maintenanceFence;
|
|
19
22
|
if (Object.keys(record).some(key => !keys.includes(key)) || record.schema !== 'dharma.named-session/v1'
|
|
20
23
|
|| record.name !== name || typeof record.enabled !== 'boolean'
|
|
21
24
|
|| !Number.isSafeInteger(record.maximumCostCents) || Number(record.maximumCostCents) < 1 || Number(record.maximumCostCents) > 10000
|
|
@@ -26,7 +29,12 @@ function validateRegistration(value, name) {
|
|
|
26
29
|
|| Object.keys(identity).some(key => ![...ids, 'organizationId', 'provider'].includes(key))
|
|
27
30
|
|| identity.provider !== 'codex' || typeof identity.organizationId !== 'string'
|
|
28
31
|
|| !/^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$/.test(identity.organizationId)
|
|
29
|
-
|| ids.some(key => typeof identity[key] !== 'string' || !uuid.test(identity[key]))
|
|
32
|
+
|| ids.some(key => typeof identity[key] !== 'string' || !uuid.test(identity[key]))
|
|
33
|
+
|| fence !== undefined && (!fence || typeof fence !== 'object' || Array.isArray(fence)
|
|
34
|
+
|| !['fenceId,generation', 'fenceId,generation,restartPermitted'].includes(Object.keys(fence).sort().join(',')) || record.enabled !== false
|
|
35
|
+
|| fence.restartPermitted !== undefined && fence.restartPermitted !== true
|
|
36
|
+
|| typeof fence.fenceId !== 'string' || !uuid.test(fence.fenceId)
|
|
37
|
+
|| typeof fence.generation !== 'string' || !uuid.test(fence.generation))) {
|
|
30
38
|
throw new Error('named_session_registration_invalid');
|
|
31
39
|
}
|
|
32
40
|
}
|
|
@@ -64,28 +72,44 @@ export async function saveNamedSession(home, value) {
|
|
|
64
72
|
await writeFile(temporary, `${JSON.stringify(value)}\n`, { mode: 0o600, flag: 'wx' });
|
|
65
73
|
await rename(temporary, paths.registration);
|
|
66
74
|
}
|
|
67
|
-
export async function namedSessionRequest(home, name, request) {
|
|
75
|
+
export async function namedSessionRequest(home, name, request, options) {
|
|
68
76
|
const paths = namedSessionPaths(home, name);
|
|
69
77
|
const serialized = `${JSON.stringify(request)}\n`;
|
|
70
78
|
if (Buffer.byteLength(serialized) > 20000)
|
|
71
79
|
throw new Error('named_session_request_too_large');
|
|
72
80
|
return new Promise((resolveReply, reject) => {
|
|
73
81
|
const socket = createConnection(paths.socket);
|
|
74
|
-
let bytes = Buffer.alloc(0), complete = false;
|
|
75
|
-
socket.setTimeout(request.action === 'work' ? 310_000 : 30_000);
|
|
76
|
-
const fail = () => {
|
|
77
|
-
complete
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
let bytes = Buffer.alloc(0), complete = false, connected = false;
|
|
83
|
+
socket.setTimeout(request.action === 'work' || request.action === 'quiesce' ? 310_000 : 30_000);
|
|
84
|
+
const fail = (failure) => {
|
|
85
|
+
if (!complete) {
|
|
86
|
+
complete = true;
|
|
87
|
+
reject(options?.diagnostic === true ? failure : new Error('named_session_unavailable'));
|
|
88
|
+
}
|
|
89
|
+
socket.destroy();
|
|
90
|
+
};
|
|
91
|
+
const phase = () => connected ? 'response' : 'connect';
|
|
92
|
+
socket.on('connect', () => {
|
|
93
|
+
if (complete)
|
|
94
|
+
return;
|
|
95
|
+
connected = true;
|
|
96
|
+
try {
|
|
97
|
+
socket.write(serialized);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
fail(NamedSessionTransportFailure.fromSocket('write', error));
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
socket.on('error', error => fail(NamedSessionTransportFailure.fromSocket(phase(), error)));
|
|
104
|
+
socket.on('timeout', () => fail(new NamedSessionTransportFailure(phase(), 'timeout')));
|
|
83
105
|
socket.on('close', () => { if (!complete)
|
|
84
|
-
fail(); });
|
|
106
|
+
fail(new NamedSessionTransportFailure(phase(), 'connection_closed')); });
|
|
85
107
|
socket.on('data', chunk => {
|
|
108
|
+
if (complete)
|
|
109
|
+
return;
|
|
86
110
|
bytes = Buffer.concat([bytes, chunk]);
|
|
87
111
|
if (bytes.length > 50000) {
|
|
88
|
-
fail();
|
|
112
|
+
fail(new NamedSessionTransportFailure('response', 'response_too_large'));
|
|
89
113
|
return;
|
|
90
114
|
}
|
|
91
115
|
const end = bytes.indexOf(10);
|
|
@@ -98,12 +122,14 @@ export async function namedSessionRequest(home, name, request) {
|
|
|
98
122
|
complete = true;
|
|
99
123
|
socket.end();
|
|
100
124
|
if (value.ok !== true)
|
|
101
|
-
reject(
|
|
125
|
+
reject(options?.diagnostic === true
|
|
126
|
+
? new NamedSessionTransportFailure('remote', 'remote_rejected', null, value.code)
|
|
127
|
+
: new Error(String(value.code || 'named_session_failed')));
|
|
102
128
|
else
|
|
103
129
|
resolveReply(value);
|
|
104
130
|
}
|
|
105
131
|
catch {
|
|
106
|
-
fail();
|
|
132
|
+
fail(new NamedSessionTransportFailure('decode', 'malformed_response'));
|
|
107
133
|
}
|
|
108
134
|
});
|
|
109
135
|
});
|
|
@@ -124,13 +150,16 @@ export async function runNamedSessionService(input) {
|
|
|
124
150
|
let server;
|
|
125
151
|
const connections = new Set();
|
|
126
152
|
const responses = new Set();
|
|
127
|
-
let closing = false
|
|
153
|
+
let closing = false;
|
|
154
|
+
const admission = new NamedSessionAdmission();
|
|
128
155
|
let lastObservation = { state: 'starting' };
|
|
129
156
|
let taskExports;
|
|
130
157
|
const status = () => ({ ok: true, schema: 'dharma.named-session-status/v1', name: registration.name,
|
|
131
158
|
bindingId: binding.bindingId, sessionId: binding.sessionId, ...registration.identity,
|
|
132
|
-
state: closing ? 'stopping' :
|
|
133
|
-
|
|
159
|
+
state: closing ? 'stopping' : admission.snapshot().state !== 'open' ? admission.snapshot().state
|
|
160
|
+
: admission.snapshot().pending ? 'executing' : 'running', budget: budget.status(),
|
|
161
|
+
queued: admission.snapshot().pending, admission: admission.snapshot(),
|
|
162
|
+
lastObservation, lastWork: budget.lastWork(), ...(taskExports ? { taskExports } : {}) });
|
|
134
163
|
let healthWrites = Promise.resolve();
|
|
135
164
|
const health = () => {
|
|
136
165
|
const snapshot = JSON.stringify({ ...status(), pid: process.pid, observedAt: new Date().toISOString() });
|
|
@@ -143,22 +172,35 @@ export async function runNamedSessionService(input) {
|
|
|
143
172
|
return write;
|
|
144
173
|
};
|
|
145
174
|
function enqueue(operation) {
|
|
146
|
-
if (closing
|
|
175
|
+
if (closing)
|
|
147
176
|
return Promise.reject(new Error('named_session_busy'));
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
177
|
+
return admission.enqueue(async () => {
|
|
178
|
+
if (closing)
|
|
179
|
+
throw new Error('named_session_stopped');
|
|
180
|
+
return operation();
|
|
181
|
+
}, health);
|
|
182
|
+
}
|
|
183
|
+
async function maintenanceRegistration(enabled, write, fenceId, generation) {
|
|
184
|
+
try {
|
|
185
|
+
const { maintenanceFence: _oldFence, ...base } = registration;
|
|
186
|
+
const fence = { fenceId, generation };
|
|
187
|
+
const current = await readNamedSession(input.home, registration.name);
|
|
188
|
+
if (!current)
|
|
189
|
+
throw new Error('unconfirmed');
|
|
190
|
+
const { maintenanceFence: currentFence, ...currentBase } = current;
|
|
191
|
+
if (canonicalize({ ...currentBase, enabled: base.enabled }) !== canonicalize(base)
|
|
192
|
+
|| currentFence && canonicalize(currentFence) !== canonicalize(fence))
|
|
193
|
+
throw new Error('unconfirmed');
|
|
194
|
+
const expected = enabled ? { ...base, enabled: true } : { ...base, enabled: false, maintenanceFence: fence };
|
|
195
|
+
if (write)
|
|
196
|
+
await saveNamedSession(input.home, expected);
|
|
197
|
+
const observed = await readNamedSession(input.home, registration.name);
|
|
198
|
+
if (!observed || canonicalize(observed) !== canonicalize(expected))
|
|
199
|
+
throw new Error('unconfirmed');
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
throw new Error('named_session_maintenance_persistence_unconfirmed');
|
|
203
|
+
}
|
|
162
204
|
}
|
|
163
205
|
try {
|
|
164
206
|
owner = await openCodexInboxSession({ ...input, ...registration,
|
|
@@ -216,7 +258,39 @@ export async function runNamedSessionService(input) {
|
|
|
216
258
|
const request = JSON.parse(bytes.subarray(0, end).toString('utf8'));
|
|
217
259
|
if (request.action === 'status')
|
|
218
260
|
return status();
|
|
261
|
+
if (['quiesce', 'resume', 'stop-drained'].includes(String(request.action))) {
|
|
262
|
+
if (Object.keys(request).sort().join(',') !== 'action,fenceId,generation'
|
|
263
|
+
|| typeof request.fenceId !== 'string' || typeof request.generation !== 'string'
|
|
264
|
+
|| !await owner.assertActive())
|
|
265
|
+
throw new Error('named_session_maintenance_unavailable');
|
|
266
|
+
let state;
|
|
267
|
+
if (request.action === 'quiesce') {
|
|
268
|
+
await admission.quiesce(request.fenceId, request.generation, () => maintenanceRegistration(false, true, request.fenceId, request.generation));
|
|
269
|
+
if (!await owner.assertActive())
|
|
270
|
+
throw new Error('named_session_maintenance_unavailable');
|
|
271
|
+
state = 'quiesced';
|
|
272
|
+
}
|
|
273
|
+
else if (request.action === 'resume') {
|
|
274
|
+
await admission.resume(request.fenceId, request.generation, () => maintenanceRegistration(true, true, request.fenceId, request.generation));
|
|
275
|
+
state = 'open';
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Quiescence already disabled automatic restart; verify it before irreversible shutdown.
|
|
279
|
+
await admission.stopDrained(request.fenceId, request.generation, () => maintenanceRegistration(false, false, request.fenceId, request.generation));
|
|
280
|
+
closing = true;
|
|
281
|
+
state = 'stop_requested';
|
|
282
|
+
}
|
|
283
|
+
const result = { ok: true, schema: 'dharma.named-session-maintenance/v1', receiptId: randomUUID(),
|
|
284
|
+
name: registration.name, bindingId: binding.bindingId, sessionId: binding.sessionId,
|
|
285
|
+
...registration.identity, action: request.action, fenceId: request.fenceId,
|
|
286
|
+
generation: request.generation, mode: 'live', state, pending: 0, automaticRestartEnabled: state === 'open',
|
|
287
|
+
observedAt: new Date().toISOString() };
|
|
288
|
+
await health();
|
|
289
|
+
return result;
|
|
290
|
+
}
|
|
219
291
|
if (request.action === 'stop') {
|
|
292
|
+
admission.stop();
|
|
293
|
+
await saveNamedSession(input.home, { ...registration, enabled: false });
|
|
220
294
|
closing = true;
|
|
221
295
|
return { ok: true, state: 'stop_requested' };
|
|
222
296
|
}
|
|
@@ -350,16 +424,33 @@ export async function runNamedSessionService(input) {
|
|
|
350
424
|
await health();
|
|
351
425
|
let nextExportSyncAt = 0;
|
|
352
426
|
while (!closing && !input.signal.aborted) {
|
|
353
|
-
if (
|
|
354
|
-
await
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
code: 'task_export_sync_unavailable', acceptedLearningObservation: false };
|
|
361
|
-
}
|
|
427
|
+
if (admission.snapshot().state !== 'open') {
|
|
428
|
+
await new Promise(resolveWait => {
|
|
429
|
+
const done = () => { clearTimeout(timer); input.signal.removeEventListener('abort', done); resolveWait(); };
|
|
430
|
+
const timer = setTimeout(done, 1000);
|
|
431
|
+
input.signal.addEventListener('abort', done, { once: true });
|
|
432
|
+
if (input.signal.aborted)
|
|
433
|
+
done();
|
|
362
434
|
});
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
if (input.syncTaskExports && Date.now() >= nextExportSyncAt) {
|
|
438
|
+
try {
|
|
439
|
+
await enqueue(async () => {
|
|
440
|
+
try {
|
|
441
|
+
taskExports = await input.syncTaskExports();
|
|
442
|
+
}
|
|
443
|
+
catch {
|
|
444
|
+
taskExports = { state: 'pending', pending: null, delivered: 0,
|
|
445
|
+
code: 'task_export_sync_unavailable', acceptedLearningObservation: false };
|
|
446
|
+
}
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
catch (error) {
|
|
450
|
+
if (error instanceof Error && error.message === 'named_session_quiesced')
|
|
451
|
+
continue;
|
|
452
|
+
throw error;
|
|
453
|
+
}
|
|
363
454
|
nextExportSyncAt = Date.now() + 30000;
|
|
364
455
|
await health();
|
|
365
456
|
}
|
|
@@ -370,6 +461,8 @@ export async function runNamedSessionService(input) {
|
|
|
370
461
|
catch (error) {
|
|
371
462
|
if (closing || input.signal.aborted)
|
|
372
463
|
break;
|
|
464
|
+
if (error instanceof Error && error.message === 'named_session_quiesced')
|
|
465
|
+
continue;
|
|
373
466
|
throw error;
|
|
374
467
|
}
|
|
375
468
|
lastObservation = result;
|
|
@@ -397,7 +490,7 @@ export async function runNamedSessionService(input) {
|
|
|
397
490
|
try {
|
|
398
491
|
const serverClosed = server?.listening
|
|
399
492
|
? new Promise(resolveClose => server.close(() => resolveClose())) : null;
|
|
400
|
-
await
|
|
493
|
+
await admission.settled();
|
|
401
494
|
// An accepted work failure must reach its caller before shutdown tears down the socket.
|
|
402
495
|
await Promise.allSettled([...responses]);
|
|
403
496
|
if (server) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedSessionService.js","sourceRoot":"","sources":["../src/namedSessionService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"namedSessionService.js","sourceRoot":"","sources":["../src/namedSessionService.ts"],"names":[],"mappings":"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"}
|