@dharma-ai-labs/agent-fabric 0.2.170 → 0.2.172
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/bootstrapProcessCaller.test.js +3 -1
- package/dist/bootstrapProcessCaller.test.js.map +1 -1
- package/dist/codexBoundSession.test.js +81 -0
- package/dist/codexBoundSession.test.js.map +1 -1
- package/dist/codexInboxSession.d.ts +3 -10
- package/dist/codexInboxSession.d.ts.map +1 -1
- package/dist/codexInboxSession.js +3 -1
- package/dist/codexInboxSession.js.map +1 -1
- package/dist/codexSetupDiagnostic.d.ts.map +1 -1
- package/dist/codexSetupDiagnostic.js +4 -0
- package/dist/codexSetupDiagnostic.js.map +1 -1
- package/dist/codexSetupSessionCaller.test.js +81 -66
- package/dist/codexSetupSessionCaller.test.js.map +1 -1
- package/dist/cooperativeInboxSession.d.ts +2 -1
- package/dist/cooperativeInboxSession.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -27
- package/dist/index.js.map +1 -1
- package/dist/namedPeerContentAuthorization.d.ts +6 -0
- package/dist/namedPeerContentAuthorization.d.ts.map +1 -1
- package/dist/namedPeerContentAuthorization.js +35 -12
- package/dist/namedPeerContentAuthorization.js.map +1 -1
- package/dist/namedPeerContentAuthorization.test.js +29 -2
- package/dist/namedPeerContentAuthorization.test.js.map +1 -1
- package/dist/namedSessionStartup.d.ts +11 -0
- package/dist/namedSessionStartup.d.ts.map +1 -0
- package/dist/namedSessionStartup.js +44 -0
- package/dist/namedSessionStartup.js.map +1 -0
- package/dist/namedSessionStartup.test.d.ts +2 -0
- package/dist/namedSessionStartup.test.d.ts.map +1 -0
- package/dist/namedSessionStartup.test.js +122 -0
- package/dist/namedSessionStartup.test.js.map +1 -0
- package/dist/namedSessionStartupChild.d.ts +19 -0
- package/dist/namedSessionStartupChild.d.ts.map +1 -0
- package/dist/namedSessionStartupChild.js +62 -0
- package/dist/namedSessionStartupChild.js.map +1 -0
- package/dist/namedSessionStartupChild.test.d.ts +2 -0
- package/dist/namedSessionStartupChild.test.d.ts.map +1 -0
- package/dist/namedSessionStartupChild.test.js +80 -0
- package/dist/namedSessionStartupChild.test.js.map +1 -0
- package/dist/providerSessionReplyRecovery.d.ts +2 -1
- package/dist/providerSessionReplyRecovery.d.ts.map +1 -1
- package/dist/providerSessionReplyRecovery.js +3 -1
- package/dist/providerSessionReplyRecovery.js.map +1 -1
- package/dist/repositoryOnboardingCaller.test.js +36 -0
- package/dist/repositoryOnboardingCaller.test.js.map +1 -1
- package/dist/schemas/codex-setup-failure-diagnostic.schema.json +9 -0
- package/package.json +1 -1
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { type OrganizationPolicy } from '@dharma-ai-labs/agent-fabric-policy';
|
|
2
2
|
import type { BoundRepositorySource } from './repositorySourceSync.js';
|
|
3
|
+
export type NamedPeerContentBlocker = 'text_contract_invalid' | 'foreign_policy' | 'private_local_path' | 'excluded_path' | 'redaction_required' | 'metadata_only' | 'source_authority_unavailable' | 'source_subtree_not_authorized' | 'authority_unavailable';
|
|
4
|
+
export declare class NamedPeerContentAuthorizationError extends Error {
|
|
5
|
+
readonly blocker: NamedPeerContentBlocker;
|
|
6
|
+
constructor(blocker: NamedPeerContentBlocker);
|
|
7
|
+
}
|
|
3
8
|
export declare function createNamedPeerContentAuthorization(input: {
|
|
4
9
|
scope: BoundRepositorySource;
|
|
5
10
|
loadCurrentPolicy(): Promise<OrganizationPolicy>;
|
|
6
11
|
loadCurrentSourceAuthorization(): Promise<unknown>;
|
|
7
12
|
now?: () => Date;
|
|
13
|
+
diagnostics?: boolean;
|
|
8
14
|
}): (content: string, kind: "question" | "answer") => Promise<boolean>;
|
|
9
15
|
//# sourceMappingURL=namedPeerContentAuthorization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedPeerContentAuthorization.d.ts","sourceRoot":"","sources":["../src/namedPeerContentAuthorization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"namedPeerContentAuthorization.d.ts","sourceRoot":"","sources":["../src/namedPeerContentAuthorization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,MAAM,MAAM,uBAAuB,GAAG,uBAAuB,GAAG,gBAAgB,GAAG,oBAAoB,GACnG,eAAe,GAAG,oBAAoB,GAAG,eAAe,GAAG,8BAA8B,GACzF,+BAA+B,GAAG,uBAAuB,CAAC;AAE9D,qBAAa,kCAAmC,SAAQ,KAAK;IAC/C,QAAQ,CAAC,OAAO,EAAE,uBAAuB;gBAAhC,OAAO,EAAE,uBAAuB;CAGtD;AAID,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjD,8BAA8B,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,IAKe,SAAS,MAAM,EAAE,MAAM,UAAU,GAAG,QAAQ,KAAG,OAAO,CAAC,OAAO,CAAC,CA0B9E"}
|
|
@@ -3,33 +3,56 @@ import { containsDisallowedLocalPath, redactValue, referencesExcludedPath } from
|
|
|
3
3
|
import { assertPolicy } from '@dharma-ai-labs/agent-fabric-policy';
|
|
4
4
|
import { validateRepositorySourceAuthorization } from './repositorySourceAuthorization.js';
|
|
5
5
|
import { providerSessionTextIsSafe } from './providerSessionChannel.js';
|
|
6
|
+
export class NamedPeerContentAuthorizationError extends Error {
|
|
7
|
+
blocker;
|
|
8
|
+
constructor(blocker) {
|
|
9
|
+
super('provider_session_channel_input');
|
|
10
|
+
this.blocker = blocker;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
6
13
|
// This authorizes bounded task-channel text, not native history or learning intake.
|
|
7
14
|
// Session ownership, signed offers, task/target scope and budgets remain the channel's responsibility.
|
|
8
15
|
export function createNamedPeerContentAuthorization(input) {
|
|
16
|
+
function deny(blocker) {
|
|
17
|
+
if (input.diagnostics)
|
|
18
|
+
throw new NamedPeerContentAuthorizationError(blocker);
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
9
21
|
return async (content, kind) => {
|
|
10
22
|
if (!['question', 'answer'].includes(kind) || !providerSessionTextIsSafe(content, kind === 'answer'))
|
|
11
|
-
return
|
|
23
|
+
return deny('text_contract_invalid');
|
|
12
24
|
try {
|
|
13
25
|
const policy = await input.loadCurrentPolicy();
|
|
14
26
|
assertPolicy(policy);
|
|
15
|
-
if (policy.organizationId !== input.scope.organizationId
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return
|
|
27
|
+
if (policy.organizationId !== input.scope.organizationId)
|
|
28
|
+
return deny('foreign_policy');
|
|
29
|
+
if (containsDisallowedLocalPath(content))
|
|
30
|
+
return deny('private_local_path');
|
|
31
|
+
if (referencesExcludedPath(content, policy.evidence.excludePaths, 'content'))
|
|
32
|
+
return deny('excluded_path');
|
|
33
|
+
if (canonicalize(redactValue(content, { classes: new Set(), redactedValues: 0,
|
|
34
|
+
excludedPaths: 0, inputBytes: 0, outputBytes: 0 })) !== canonicalize(content))
|
|
35
|
+
return deny('redaction_required');
|
|
21
36
|
const mode = policy.evidence.automaticDisclosure?.mode;
|
|
22
37
|
if (mode === 'customer_authorized_content')
|
|
23
38
|
return true;
|
|
24
39
|
// Explicit metadata-only/legacy policies are not silently upgraded.
|
|
25
40
|
if (mode !== 'local_analysis')
|
|
26
|
-
return
|
|
27
|
-
|
|
41
|
+
return deny('metadata_only');
|
|
42
|
+
let source;
|
|
43
|
+
try {
|
|
44
|
+
source = validateRepositorySourceAuthorization(await input.loadCurrentSourceAuthorization(), input.scope, (input.now || (() => new Date()))());
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return deny('source_authority_unavailable');
|
|
48
|
+
}
|
|
28
49
|
// The current signed peer contract reads '.'. Subtree approval cannot authorize that sandbox.
|
|
29
|
-
return source.policy.approvedRepositoryPaths.includes('.');
|
|
50
|
+
return source.policy.approvedRepositoryPaths.includes('.') || deny('source_subtree_not_authorized');
|
|
30
51
|
}
|
|
31
|
-
catch {
|
|
32
|
-
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof NamedPeerContentAuthorizationError)
|
|
54
|
+
throw error;
|
|
55
|
+
return deny('authority_unavailable');
|
|
33
56
|
}
|
|
34
57
|
};
|
|
35
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedPeerContentAuthorization.js","sourceRoot":"","sources":["../src/namedPeerContentAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACnI,OAAO,EAAE,YAAY,EAA2B,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,qCAAqC,EAAE,MAAM,oCAAoC,CAAC;AAE3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"namedPeerContentAuthorization.js","sourceRoot":"","sources":["../src/namedPeerContentAuthorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ function source(roots = ['.']) {
|
|
|
18
18
|
policyHash: `sha256:${createHash('sha256').update(canonicalize(policy)).digest('hex')}`,
|
|
19
19
|
confirmedAt: '2026-10-04T06:00:00Z', policy };
|
|
20
20
|
}
|
|
21
|
-
function fixture() {
|
|
21
|
+
function fixture(diagnostics = false) {
|
|
22
22
|
let current = source();
|
|
23
23
|
const policy = { schema: 'dharma.organization-policy/v2', organizationId: scope.organizationId,
|
|
24
24
|
revision: 'local-analysis-v1', evidence: { defaultMode: 'structured', registeredWorkspaceOnly: true,
|
|
@@ -27,7 +27,7 @@ function fixture() {
|
|
|
27
27
|
tasks: { defaultNetwork: 'deny', defaultGit: 'read_only', allowedCommands: {}, writePaths: [], requireLocalConfirmationFor: [] },
|
|
28
28
|
skills: { automaticInstall: true, automaticPromotionMaxRisk: 'R2', canaryPercent: 10 }, retention: {}, budgets: {} };
|
|
29
29
|
let loads = 0, unavailable = false;
|
|
30
|
-
const authorize = createNamedPeerContentAuthorization({ scope, now: () => now,
|
|
30
|
+
const authorize = createNamedPeerContentAuthorization({ scope, now: () => now, ...{ diagnostics },
|
|
31
31
|
loadCurrentPolicy: async () => policy, loadCurrentSourceAuthorization: async () => {
|
|
32
32
|
loads++;
|
|
33
33
|
if (unavailable)
|
|
@@ -136,4 +136,31 @@ test('task channel sends only after fresh source approval and cannot reuse it af
|
|
|
136
136
|
assert.equal(calls.filter(call => call.action === 'ask').length, 1);
|
|
137
137
|
assert.equal(f.policy.evidence.automaticDisclosure?.mode, 'local_analysis');
|
|
138
138
|
});
|
|
139
|
+
test('opt-in peer diagnostics expose fixed blockers without answer text or policy details', async () => {
|
|
140
|
+
const cases = [
|
|
141
|
+
['text_contract_invalid', 'api_key=abcdefgh12345678', () => { }],
|
|
142
|
+
['private_local_path', 'Read /home/user/private.txt', () => { }],
|
|
143
|
+
['excluded_path', 'Read private/customer.txt', () => { }],
|
|
144
|
+
['redaction_required', 'Read /internal/notes.txt', () => { }],
|
|
145
|
+
['foreign_policy', 'Which catalog applies?', (f) => { f.policy.organizationId = 'org_other'; }],
|
|
146
|
+
['metadata_only', 'Which catalog applies?', (f) => { f.policy.evidence.automaticDisclosure = { mode: 'metadata_only' }; }],
|
|
147
|
+
['source_subtree_not_authorized', 'Which catalog applies?', (f) => { f.setSource(source(['src'])); }],
|
|
148
|
+
['source_authority_unavailable', 'Which catalog applies?', (f) => { f.setUnavailable(); }],
|
|
149
|
+
['authority_unavailable', 'Which catalog applies?', (f) => { f.policy.revision = ''; }],
|
|
150
|
+
];
|
|
151
|
+
for (const [blocker, content, change] of cases) {
|
|
152
|
+
const f = fixture(true);
|
|
153
|
+
change(f);
|
|
154
|
+
await assert.rejects(f.authorize(content, 'answer'), error => {
|
|
155
|
+
assert.ok(error instanceof Error);
|
|
156
|
+
assert.equal(error.message, 'provider_session_channel_input');
|
|
157
|
+
assert.deepEqual(Object.keys(error), ['blocker']);
|
|
158
|
+
assert.equal(error.blocker, blocker);
|
|
159
|
+
assert.equal(JSON.stringify(error).includes(content), false);
|
|
160
|
+
assert.equal(JSON.stringify(error).includes('org_other'), false);
|
|
161
|
+
return true;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
assert.equal(await fixture(true).authorize('Coalesce retries by logical job.', 'answer'), true);
|
|
165
|
+
});
|
|
139
166
|
//# sourceMappingURL=namedPeerContentAuthorization.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namedPeerContentAuthorization.test.js","sourceRoot":"","sources":["../src/namedPeerContentAuthorization.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"namedPeerContentAuthorization.test.js","sourceRoot":"","sources":["../src/namedPeerContentAuthorization.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type NamedSessionStartupFailure } from './namedSessionStartupChild.js';
|
|
2
|
+
export declare function waitForNamedSessionStartup<T>(input: {
|
|
3
|
+
step<R>(operation: () => Promise<R>): Promise<R>;
|
|
4
|
+
assertActive(): Promise<void>;
|
|
5
|
+
observe(): Promise<T>;
|
|
6
|
+
maximumWaitMs?: number;
|
|
7
|
+
now?: () => number;
|
|
8
|
+
sleep?: (milliseconds: number) => Promise<void>;
|
|
9
|
+
readFailure?: () => NamedSessionStartupFailure | undefined;
|
|
10
|
+
}): Promise<T>;
|
|
11
|
+
//# sourceMappingURL=namedSessionStartup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartup.d.ts","sourceRoot":"","sources":["../src/namedSessionStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,0BAA0B,EAAC,MAAM,+BAA+B,CAAC;AAE5G,wBAAsB,0BAA0B,CAAC,CAAC,EAAE,KAAK,EAAE;IACzD,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,0BAA0B,GAAG,SAAS,CAAC;CAC5D,GAAG,OAAO,CAAC,CAAC,CAAC,CA+Bb"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { isNamedSessionStartupFailure } from './namedSessionStartupChild.js';
|
|
2
|
+
export async function waitForNamedSessionStartup(input) {
|
|
3
|
+
const maximumWaitMs = input.maximumWaitMs ?? 120_000;
|
|
4
|
+
if (!Number.isSafeInteger(maximumWaitMs) || maximumWaitMs < 1 || maximumWaitMs > 120_000) {
|
|
5
|
+
throw new Error('named_session_startup_failed');
|
|
6
|
+
}
|
|
7
|
+
const now = input.now ?? (() => performance.now());
|
|
8
|
+
const sleep = input.sleep ?? (milliseconds => new Promise(done => setTimeout(done, milliseconds)));
|
|
9
|
+
const deadline = now() + maximumWaitMs;
|
|
10
|
+
while (now() < deadline) {
|
|
11
|
+
await input.step(() => sleep(Math.min(250, deadline - now())));
|
|
12
|
+
if (now() >= deadline)
|
|
13
|
+
break;
|
|
14
|
+
await input.assertActive();
|
|
15
|
+
if (now() >= deadline)
|
|
16
|
+
break;
|
|
17
|
+
// Only transport observation failures are retryable; never swallow a scope refusal.
|
|
18
|
+
const result = await input.step(async () => {
|
|
19
|
+
if (now() >= deadline)
|
|
20
|
+
return { available: false };
|
|
21
|
+
const refuseFailedChild = () => {
|
|
22
|
+
const failure = input.readFailure?.();
|
|
23
|
+
if (failure !== undefined)
|
|
24
|
+
throw new Error(isNamedSessionStartupFailure(failure) ? failure : 'named_session_startup_failed');
|
|
25
|
+
};
|
|
26
|
+
refuseFailedChild();
|
|
27
|
+
let observation;
|
|
28
|
+
try {
|
|
29
|
+
observation = { available: true, value: await input.observe() };
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
observation = { available: false };
|
|
33
|
+
}
|
|
34
|
+
refuseFailedChild();
|
|
35
|
+
return observation;
|
|
36
|
+
});
|
|
37
|
+
if (now() >= deadline)
|
|
38
|
+
break;
|
|
39
|
+
if (result.available)
|
|
40
|
+
return result.value;
|
|
41
|
+
}
|
|
42
|
+
throw new Error('named_session_startup_failed');
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=namedSessionStartup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartup.js","sourceRoot":"","sources":["../src/namedSessionStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAkC,MAAM,+BAA+B,CAAC;AAE5G,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAI,KAQnD;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,OAAO,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,OAAO,CAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,aAAa,CAAC;IACvC,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,GAAG,EAAE,IAAI,QAAQ;YAAE,MAAM;QAC7B,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3B,IAAI,GAAG,EAAE,IAAI,QAAQ;YAAE,MAAM;QAC7B,oFAAoF;QACpF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACzC,IAAI,GAAG,EAAE,IAAI,QAAQ;gBAAE,OAAO,EAAC,SAAS,EAAE,KAAc,EAAC,CAAC;YAC1D,MAAM,iBAAiB,GAAG,GAAG,EAAE;gBAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtC,IAAI,OAAO,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAC/H,CAAC,CAAC;YACF,iBAAiB,EAAE,CAAC;YACpB,IAAI,WAA6D,CAAC;YAClE,IAAI,CAAC;gBAAA,WAAW,GAAG,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE,EAAC,CAAC;YAAA,CAAC;YACpE,MAAM,CAAC;gBAAA,WAAW,GAAG,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;YAAA,CAAC;YACzC,iBAAiB,EAAE,CAAC;YACpB,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,EAAE,IAAI,QAAQ;YAAE,MAAM;QAC7B,IAAI,MAAM,CAAC,SAAS;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartup.test.d.ts","sourceRoot":"","sources":["../src/namedSessionStartup.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { waitForNamedSessionStartup } from './namedSessionStartup.js';
|
|
4
|
+
function fixture(readyAt, maximumWaitMs) {
|
|
5
|
+
let time = 0, effects = 0;
|
|
6
|
+
const input = {
|
|
7
|
+
maximumWaitMs, now: () => time,
|
|
8
|
+
sleep: async (milliseconds) => { time += milliseconds; },
|
|
9
|
+
step: async (operation) => operation(),
|
|
10
|
+
assertActive: async () => { },
|
|
11
|
+
observe: async () => { effects++; if (time < readyAt)
|
|
12
|
+
throw new Error('socket_unavailable'); return { ok: true }; },
|
|
13
|
+
};
|
|
14
|
+
return { input, time: () => time, effects: () => effects, advance: (milliseconds) => { time += milliseconds; } };
|
|
15
|
+
}
|
|
16
|
+
test('published slow-start case does not fail before a 36-second retained-session startup', async () => {
|
|
17
|
+
const f = fixture(36_000);
|
|
18
|
+
assert.deepEqual(await waitForNamedSessionStartup(f.input), { ok: true });
|
|
19
|
+
assert.equal(f.time(), 36_000);
|
|
20
|
+
});
|
|
21
|
+
test('unavailable startup remains finite with no successful receipt', async () => {
|
|
22
|
+
const f = fixture(Infinity, 1000);
|
|
23
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
24
|
+
assert.equal(f.time(), 1000);
|
|
25
|
+
});
|
|
26
|
+
test('remaining approved setup lifetime is not extended to fit a slow startup', async () => {
|
|
27
|
+
const f = fixture(36_000, 25_000);
|
|
28
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
29
|
+
assert.equal(f.time(), 25_000);
|
|
30
|
+
});
|
|
31
|
+
test('normal ready startup returns without consuming the full wait allowance', async () => {
|
|
32
|
+
const f = fixture(0);
|
|
33
|
+
assert.deepEqual(await waitForNamedSessionStartup(f.input), { ok: true });
|
|
34
|
+
assert.equal(f.time(), 250);
|
|
35
|
+
assert.equal(f.effects(), 1);
|
|
36
|
+
});
|
|
37
|
+
test('caller deadline cannot be enlarged beyond the bounded startup allowance', async () => {
|
|
38
|
+
for (const maximumWaitMs of [0, -1, 120_001, 1.5, NaN, Infinity]) {
|
|
39
|
+
const f = fixture(0, maximumWaitMs);
|
|
40
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
41
|
+
assert.equal(f.effects(), 0);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
test('scope withdrawal before a probe performs no observation', async () => {
|
|
45
|
+
const f = fixture(0);
|
|
46
|
+
f.input.step = async () => { throw new Error('setup_session_scope_unavailable'); };
|
|
47
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /setup_session_scope_unavailable/);
|
|
48
|
+
assert.equal(f.effects(), 0);
|
|
49
|
+
});
|
|
50
|
+
test('scope withdrawal after a successful observation is not swallowed as transport retry', async () => {
|
|
51
|
+
const f = fixture(0);
|
|
52
|
+
let steps = 0;
|
|
53
|
+
f.input.step = async (operation) => {
|
|
54
|
+
const result = await operation();
|
|
55
|
+
if (++steps === 2)
|
|
56
|
+
throw new Error('setup_session_scope_unavailable');
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /setup_session_scope_unavailable/);
|
|
60
|
+
assert.equal(f.effects(), 1);
|
|
61
|
+
});
|
|
62
|
+
test('active-host refusal propagates before a probe', async () => {
|
|
63
|
+
const f = fixture(0);
|
|
64
|
+
f.input.assertActive = async () => { throw new Error('codex_setup_host_scope_unavailable'); };
|
|
65
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /codex_setup_host_scope_unavailable/);
|
|
66
|
+
assert.equal(f.effects(), 0);
|
|
67
|
+
});
|
|
68
|
+
test('late observation cannot establish readiness after the bounded deadline', async () => {
|
|
69
|
+
const f = fixture(0, 1000);
|
|
70
|
+
f.input.observe = async () => { f.advance(1000); return { ok: true }; };
|
|
71
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
72
|
+
});
|
|
73
|
+
test('deadline reached during the final sleep admits no extra observation', async () => {
|
|
74
|
+
const f = fixture(Infinity, 1000);
|
|
75
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
76
|
+
assert.equal(f.effects(), 3);
|
|
77
|
+
});
|
|
78
|
+
test('deadline reached during active-host assertion admits no observation', async () => {
|
|
79
|
+
const f = fixture(0, 1000);
|
|
80
|
+
f.input.assertActive = async () => { f.advance(1000); };
|
|
81
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
82
|
+
assert.equal(f.effects(), 0);
|
|
83
|
+
});
|
|
84
|
+
test('deadline reached in step preauthorization admits no observation', async () => {
|
|
85
|
+
const f = fixture(0, 1000);
|
|
86
|
+
let steps = 0;
|
|
87
|
+
f.input.step = async (operation) => {
|
|
88
|
+
if (++steps === 2)
|
|
89
|
+
f.advance(1000);
|
|
90
|
+
return operation();
|
|
91
|
+
};
|
|
92
|
+
await assert.rejects(waitForNamedSessionStartup(f.input), /named_session_startup_failed/);
|
|
93
|
+
assert.equal(f.effects(), 0);
|
|
94
|
+
});
|
|
95
|
+
test('an owned child failure is preserved rather than hidden behind a full startup timeout', async () => {
|
|
96
|
+
const f = fixture(Infinity, 1000);
|
|
97
|
+
const input = Object.assign(f.input, { readFailure: () => 'named_session_startup_setup_child_unavailable' });
|
|
98
|
+
await assert.rejects(waitForNamedSessionStartup(input), /^Error: named_session_startup_setup_child_unavailable$/);
|
|
99
|
+
assert.equal(f.time(), 250);
|
|
100
|
+
assert.equal(f.effects(), 0);
|
|
101
|
+
});
|
|
102
|
+
test('scope refusal takes priority over inspecting child diagnostics', async () => {
|
|
103
|
+
const f = fixture(Infinity, 1000);
|
|
104
|
+
let diagnosticReads = 0;
|
|
105
|
+
f.input.step = async () => { throw new Error('setup_session_scope_unavailable'); };
|
|
106
|
+
const input = Object.assign(f.input, { readFailure: () => { diagnosticReads++; return 'named_session_startup_child_exited'; } });
|
|
107
|
+
await assert.rejects(waitForNamedSessionStartup(input), /setup_session_scope_unavailable/);
|
|
108
|
+
assert.equal(diagnosticReads, 0);
|
|
109
|
+
});
|
|
110
|
+
test('a child that closes during socket observation cannot produce ready status', async () => {
|
|
111
|
+
const f = fixture(0, 1000);
|
|
112
|
+
let failed = false;
|
|
113
|
+
f.input.observe = async () => { failed = true; return { ok: true }; };
|
|
114
|
+
const input = Object.assign(f.input, { readFailure: () => failed ? 'named_session_startup_child_exited' : undefined });
|
|
115
|
+
await assert.rejects(waitForNamedSessionStartup(input), /named_session_startup_child_exited/);
|
|
116
|
+
});
|
|
117
|
+
test('an unexpected diagnostic value cannot become a secret-bearing error', async () => {
|
|
118
|
+
const f = fixture(0, 1000);
|
|
119
|
+
const input = Object.assign(f.input, { readFailure: () => 'private-secret-placeholder' });
|
|
120
|
+
await assert.rejects(waitForNamedSessionStartup(input), /^Error: named_session_startup_failed$/);
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=namedSessionStartup.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartup.test.js","sourceRoot":"","sources":["../src/namedSessionStartup.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ChildProcess } from 'node:child_process';
|
|
2
|
+
declare const classifications: {
|
|
3
|
+
readonly setup_child_unavailable: "named_session_startup_setup_child_unavailable";
|
|
4
|
+
readonly named_session_registration_invalid: "named_session_startup_registration_invalid";
|
|
5
|
+
readonly named_session_provider_authentication_required: "named_session_startup_provider_authentication_required";
|
|
6
|
+
readonly named_session_workspace_write_not_authorized: "named_session_startup_workspace_write_not_authorized";
|
|
7
|
+
readonly named_session_trust_scope_mismatch: "named_session_startup_trust_scope_mismatch";
|
|
8
|
+
readonly codex_session_sandbox_unqualified: "named_session_startup_sandbox_unqualified";
|
|
9
|
+
};
|
|
10
|
+
export type NamedSessionStartupFailure = typeof classifications[keyof typeof classifications] | 'named_session_startup_child_spawn_failed' | 'named_session_startup_child_exited' | 'named_session_startup_child_failed';
|
|
11
|
+
export declare function isNamedSessionStartupFailure(value: unknown): value is NamedSessionStartupFailure;
|
|
12
|
+
/** Observe only the freshly spawned handle. Raw stderr stays bounded in memory,
|
|
13
|
+
* never reaches logs/receipts, and is discarded when startup observation ends. */
|
|
14
|
+
export declare function observeNamedSessionStartupChild(child: ChildProcess): Readonly<{
|
|
15
|
+
readFailure: () => NamedSessionStartupFailure | undefined;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=namedSessionStartupChild.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartupChild.d.ts","sourceRoot":"","sources":["../src/namedSessionStartupChild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGrD,QAAA,MAAM,eAAe;;;;;;;CAOX,CAAC;AACX,MAAM,MAAM,0BAA0B,GAAG,OAAO,eAAe,CAAC,MAAM,OAAO,eAAe,CAAC,GACzF,0CAA0C,GAAG,oCAAoC,GACjF,oCAAoC,CAAC;AAGzC,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,0BAA0B,CAEhG;AAED;kFACkF;AAClF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,YAAY;;;GA4BlE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const classifications = {
|
|
2
|
+
setup_child_unavailable: 'named_session_startup_setup_child_unavailable',
|
|
3
|
+
named_session_registration_invalid: 'named_session_startup_registration_invalid',
|
|
4
|
+
named_session_provider_authentication_required: 'named_session_startup_provider_authentication_required',
|
|
5
|
+
named_session_workspace_write_not_authorized: 'named_session_startup_workspace_write_not_authorized',
|
|
6
|
+
named_session_trust_scope_mismatch: 'named_session_startup_trust_scope_mismatch',
|
|
7
|
+
codex_session_sandbox_unqualified: 'named_session_startup_sandbox_unqualified',
|
|
8
|
+
};
|
|
9
|
+
const codes = new Set([...Object.values(classifications), 'named_session_startup_child_spawn_failed',
|
|
10
|
+
'named_session_startup_child_exited', 'named_session_startup_child_failed']);
|
|
11
|
+
export function isNamedSessionStartupFailure(value) {
|
|
12
|
+
return typeof value === 'string' && codes.has(value);
|
|
13
|
+
}
|
|
14
|
+
/** Observe only the freshly spawned handle. Raw stderr stays bounded in memory,
|
|
15
|
+
* never reaches logs/receipts, and is discarded when startup observation ends. */
|
|
16
|
+
export function observeNamedSessionStartupChild(child) {
|
|
17
|
+
const buffer = Buffer.alloc(4096);
|
|
18
|
+
let length = 0, overflow = false, disposed = false, failure;
|
|
19
|
+
const data = (chunk) => {
|
|
20
|
+
if (disposed || overflow)
|
|
21
|
+
return;
|
|
22
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
23
|
+
if (length + bytes.length > buffer.length) {
|
|
24
|
+
overflow = true;
|
|
25
|
+
buffer.fill(0);
|
|
26
|
+
length = 0;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
bytes.copy(buffer, length);
|
|
30
|
+
length += bytes.length;
|
|
31
|
+
};
|
|
32
|
+
const error = () => { failure = 'named_session_startup_child_spawn_failed'; };
|
|
33
|
+
const close = (exit) => {
|
|
34
|
+
if (failure)
|
|
35
|
+
return;
|
|
36
|
+
failure = exit === 0 || exit === null ? 'named_session_startup_child_exited' : 'named_session_startup_child_failed';
|
|
37
|
+
if (!overflow && exit !== 0 && exit !== null) {
|
|
38
|
+
const last = buffer.subarray(0, length).toString('utf8').trim().split(/\r?\n/).at(-1);
|
|
39
|
+
if (last && Object.hasOwn(classifications, last))
|
|
40
|
+
failure = classifications[last];
|
|
41
|
+
}
|
|
42
|
+
buffer.fill(0);
|
|
43
|
+
length = 0;
|
|
44
|
+
};
|
|
45
|
+
child.stderr?.on('data', data);
|
|
46
|
+
child.on('error', error);
|
|
47
|
+
child.on('close', close);
|
|
48
|
+
return Object.freeze({ readFailure: () => failure, dispose() {
|
|
49
|
+
if (disposed)
|
|
50
|
+
return;
|
|
51
|
+
disposed = true;
|
|
52
|
+
buffer.fill(0);
|
|
53
|
+
length = 0;
|
|
54
|
+
child.stderr?.removeListener('data', data);
|
|
55
|
+
child.removeListener('error', error);
|
|
56
|
+
child.removeListener('close', close);
|
|
57
|
+
child.stderr?.resume();
|
|
58
|
+
// A detached worker's diagnostic pipe must not keep its launcher alive.
|
|
59
|
+
child.stderr?.unref?.();
|
|
60
|
+
} });
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=namedSessionStartupChild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartupChild.js","sourceRoot":"","sources":["../src/namedSessionStartupChild.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartupChild.test.d.ts","sourceRoot":"","sources":["../src/namedSessionStartupChild.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { execFile, spawn } from 'node:child_process';
|
|
3
|
+
import { EventEmitter, once } from 'node:events';
|
|
4
|
+
import { PassThrough } from 'node:stream';
|
|
5
|
+
import test from 'node:test';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import { isNamedSessionStartupFailure, observeNamedSessionStartupChild } from './namedSessionStartupChild.js';
|
|
8
|
+
function fixture() {
|
|
9
|
+
const child = Object.assign(new EventEmitter(), { stderr: new PassThrough() });
|
|
10
|
+
return { child, observed: observeNamedSessionStartupChild(child) };
|
|
11
|
+
}
|
|
12
|
+
test('real owned subprocess classifies an exact fixed startup error without exposing raw stderr', async () => {
|
|
13
|
+
const child = spawn(process.execPath, ['-e', 'process.stderr.write("setup_child_unavailable\\n");process.exitCode=2'], { stdio: ['ignore', 'ignore', 'pipe'] });
|
|
14
|
+
const observed = observeNamedSessionStartupChild(child);
|
|
15
|
+
try {
|
|
16
|
+
await once(child, 'close');
|
|
17
|
+
assert.equal(observed.readFailure(), 'named_session_startup_setup_child_unavailable');
|
|
18
|
+
assert.deepEqual(Object.keys(observed).sort(), ['dispose', 'readFailure']);
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
observed.dispose();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
for (const content of ['password=secret-placeholder', 'setup_child_unavailable secret-placeholder',
|
|
25
|
+
'x'.repeat(4097) + '\nsetup_child_unavailable', '\u0000setup_child_unavailable']) {
|
|
26
|
+
test(`private or oversized stderr is withheld (${content.length} bytes)`, () => {
|
|
27
|
+
const f = fixture();
|
|
28
|
+
f.child.stderr.write(content);
|
|
29
|
+
f.child.emit('close', 2);
|
|
30
|
+
assert.equal(f.observed.readFailure(), 'named_session_startup_child_failed');
|
|
31
|
+
assert.equal(JSON.stringify(f.observed).includes('secret-placeholder'), false);
|
|
32
|
+
f.observed.dispose();
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
test('a live child is never declared stopped from stderr alone', () => {
|
|
36
|
+
const f = fixture();
|
|
37
|
+
f.child.stderr.write('setup_child_unavailable\n');
|
|
38
|
+
assert.equal(f.observed.readFailure(), undefined);
|
|
39
|
+
f.observed.dispose();
|
|
40
|
+
});
|
|
41
|
+
test('clean exit before readiness and spawn error have distinct fixed categories', () => {
|
|
42
|
+
const a = fixture();
|
|
43
|
+
a.child.emit('close', 0);
|
|
44
|
+
assert.equal(a.observed.readFailure(), 'named_session_startup_child_exited');
|
|
45
|
+
a.observed.dispose();
|
|
46
|
+
const b = fixture();
|
|
47
|
+
b.child.emit('error', new Error('secret-placeholder'));
|
|
48
|
+
b.child.emit('close', -1);
|
|
49
|
+
assert.equal(b.observed.readFailure(), 'named_session_startup_child_spawn_failed');
|
|
50
|
+
b.observed.dispose();
|
|
51
|
+
});
|
|
52
|
+
test('disposal removes only these listeners and drains without collecting subsequent output', () => {
|
|
53
|
+
const f = fixture();
|
|
54
|
+
const sibling = () => { };
|
|
55
|
+
f.child.on('close', sibling);
|
|
56
|
+
f.observed.dispose();
|
|
57
|
+
f.observed.dispose();
|
|
58
|
+
f.child.stderr.write('setup_child_unavailable\n');
|
|
59
|
+
f.child.emit('close', 2);
|
|
60
|
+
assert.equal(f.observed.readFailure(), undefined);
|
|
61
|
+
assert.deepEqual(f.child.listeners('close'), [sibling]);
|
|
62
|
+
assert.equal(f.child.stderr.listenerCount('data'), 0);
|
|
63
|
+
});
|
|
64
|
+
test('only exact fixed diagnostic codes qualify; private strings are rejected', () => {
|
|
65
|
+
assert.equal(isNamedSessionStartupFailure('named_session_startup_child_failed'), true);
|
|
66
|
+
for (const value of ['secret-placeholder', 'named_session_startup_child_failed\nsecret', {}, null])
|
|
67
|
+
assert.equal(isNamedSessionStartupFailure(value), false);
|
|
68
|
+
});
|
|
69
|
+
test('disposing a live detached worker pipe lets the original launcher exit normally', async () => {
|
|
70
|
+
const moduleUrl = new URL('./namedSessionStartupChild.js', import.meta.url).href;
|
|
71
|
+
const source = `import {spawn} from 'node:child_process';
|
|
72
|
+
import {observeNamedSessionStartupChild} from ${JSON.stringify(moduleUrl)};
|
|
73
|
+
const child=spawn(process.execPath,['-e','setTimeout(()=>{},5000)'],{detached:true,stdio:['ignore','ignore','pipe']});
|
|
74
|
+
process.once('SIGTERM',()=>{child.kill('SIGTERM');process.exitCode=1;});
|
|
75
|
+
const observed=observeNamedSessionStartupChild(child);observed.dispose();child.unref();
|
|
76
|
+
console.log('startup_observation_disposed');`;
|
|
77
|
+
const result = await promisify(execFile)(process.execPath, ['--input-type=module', '-e', source], { timeout: 2000 });
|
|
78
|
+
assert.equal(result.stdout.trim(), 'startup_observation_disposed');
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=namedSessionStartupChild.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namedSessionStartupChild.test.js","sourceRoot":"","sources":["../src/namedSessionStartupChild.test.ts"],"names":[],"mappings":"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"}
|