@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.
Files changed (48) hide show
  1. package/dist/bootstrapProcessCaller.test.js +3 -1
  2. package/dist/bootstrapProcessCaller.test.js.map +1 -1
  3. package/dist/codexBoundSession.test.js +81 -0
  4. package/dist/codexBoundSession.test.js.map +1 -1
  5. package/dist/codexInboxSession.d.ts +3 -10
  6. package/dist/codexInboxSession.d.ts.map +1 -1
  7. package/dist/codexInboxSession.js +3 -1
  8. package/dist/codexInboxSession.js.map +1 -1
  9. package/dist/codexSetupDiagnostic.d.ts.map +1 -1
  10. package/dist/codexSetupDiagnostic.js +4 -0
  11. package/dist/codexSetupDiagnostic.js.map +1 -1
  12. package/dist/codexSetupSessionCaller.test.js +81 -66
  13. package/dist/codexSetupSessionCaller.test.js.map +1 -1
  14. package/dist/cooperativeInboxSession.d.ts +2 -1
  15. package/dist/cooperativeInboxSession.d.ts.map +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +37 -27
  18. package/dist/index.js.map +1 -1
  19. package/dist/namedPeerContentAuthorization.d.ts +6 -0
  20. package/dist/namedPeerContentAuthorization.d.ts.map +1 -1
  21. package/dist/namedPeerContentAuthorization.js +35 -12
  22. package/dist/namedPeerContentAuthorization.js.map +1 -1
  23. package/dist/namedPeerContentAuthorization.test.js +29 -2
  24. package/dist/namedPeerContentAuthorization.test.js.map +1 -1
  25. package/dist/namedSessionStartup.d.ts +11 -0
  26. package/dist/namedSessionStartup.d.ts.map +1 -0
  27. package/dist/namedSessionStartup.js +44 -0
  28. package/dist/namedSessionStartup.js.map +1 -0
  29. package/dist/namedSessionStartup.test.d.ts +2 -0
  30. package/dist/namedSessionStartup.test.d.ts.map +1 -0
  31. package/dist/namedSessionStartup.test.js +122 -0
  32. package/dist/namedSessionStartup.test.js.map +1 -0
  33. package/dist/namedSessionStartupChild.d.ts +19 -0
  34. package/dist/namedSessionStartupChild.d.ts.map +1 -0
  35. package/dist/namedSessionStartupChild.js +62 -0
  36. package/dist/namedSessionStartupChild.js.map +1 -0
  37. package/dist/namedSessionStartupChild.test.d.ts +2 -0
  38. package/dist/namedSessionStartupChild.test.d.ts.map +1 -0
  39. package/dist/namedSessionStartupChild.test.js +80 -0
  40. package/dist/namedSessionStartupChild.test.js.map +1 -0
  41. package/dist/providerSessionReplyRecovery.d.ts +2 -1
  42. package/dist/providerSessionReplyRecovery.d.ts.map +1 -1
  43. package/dist/providerSessionReplyRecovery.js +3 -1
  44. package/dist/providerSessionReplyRecovery.js.map +1 -1
  45. package/dist/repositoryOnboardingCaller.test.js +36 -0
  46. package/dist/repositoryOnboardingCaller.test.js.map +1 -1
  47. package/dist/schemas/codex-setup-failure-diagnostic.schema.json +9 -0
  48. 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;AAKvE,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;CAClB,IACe,SAAS,MAAM,EAAE,MAAM,UAAU,GAAG,QAAQ,KAAG,OAAO,CAAC,OAAO,CAAC,CAoB9E"}
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 false;
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
- || containsDisallowedLocalPath(content)
17
- || referencesExcludedPath(content, policy.evidence.excludePaths, 'content')
18
- || canonicalize(redactValue(content, { classes: new Set(), redactedValues: 0,
19
- excludedPaths: 0, inputBytes: 0, outputBytes: 0 })) !== canonicalize(content))
20
- return false;
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 false;
27
- const source = validateRepositorySourceAuthorization(await input.loadCurrentSourceAuthorization(), input.scope, (input.now || (() => new Date()))());
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
- return false;
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;AAExE,oFAAoF;AACpF,uGAAuG;AACvG,MAAM,UAAU,mCAAmC,CAAC,KAKnD;IACC,OAAO,KAAK,EAAE,OAAe,EAAE,IAA2B,EAAoB,EAAE;QAC9E,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACnH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC/C,YAAY,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,CAAC,KAAK,CAAC,cAAc;mBACnD,2BAA2B,CAAC,OAAO,CAAC;mBACpC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;mBACxE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAU,EAAE,cAAc,EAAE,CAAC;oBAClF,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChG,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC;YACvD,IAAI,IAAI,KAAK,6BAA6B;gBAAE,OAAO,IAAI,CAAC;YACxD,oEAAoE;YACpE,IAAI,IAAI,KAAK,gBAAgB;gBAAE,OAAO,KAAK,CAAC;YAC5C,MAAM,MAAM,GAAG,qCAAqC,CAAC,MAAM,KAAK,CAAC,8BAA8B,EAAE,EAC/F,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,8FAA8F;YAC9F,OAAO,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=namedSessionStartup.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=namedSessionStartupChild.test.d.ts.map
@@ -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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"}