@dharma-ai-labs/agent-fabric 0.2.189 → 0.2.191
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_FABRIC_ONBOARDING.md +4 -2
- package/dist/cliVersionContract.test.d.ts +2 -0
- package/dist/cliVersionContract.test.d.ts.map +1 -0
- package/dist/cliVersionContract.test.js +17 -0
- package/dist/cliVersionContract.test.js.map +1 -0
- package/dist/codexSetupLaunchReservation.d.ts +12 -0
- package/dist/codexSetupLaunchReservation.d.ts.map +1 -0
- package/dist/codexSetupLaunchReservation.js +76 -0
- package/dist/codexSetupLaunchReservation.js.map +1 -0
- package/dist/codexSetupLaunchReservation.test.d.ts +2 -0
- package/dist/codexSetupLaunchReservation.test.d.ts.map +1 -0
- package/dist/codexSetupLaunchReservation.test.js +168 -0
- package/dist/codexSetupLaunchReservation.test.js.map +1 -0
- package/dist/codexSetupNativeHost.test.js +18 -0
- package/dist/codexSetupNativeHost.test.js.map +1 -1
- package/dist/codexSetupOwnedConnection.d.ts +4 -1
- package/dist/codexSetupOwnedConnection.d.ts.map +1 -1
- package/dist/codexSetupOwnedConnection.js +16 -3
- package/dist/codexSetupOwnedConnection.js.map +1 -1
- package/dist/codexSetupOwnedConnection.test.js +14 -0
- package/dist/codexSetupOwnedConnection.test.js.map +1 -1
- package/dist/codexSetupPortalIngress.test.d.ts +2 -0
- package/dist/codexSetupPortalIngress.test.d.ts.map +1 -0
- package/dist/codexSetupPortalIngress.test.js +355 -0
- package/dist/codexSetupPortalIngress.test.js.map +1 -0
- package/dist/codexSetupPortalPreparation.d.ts +28 -0
- package/dist/codexSetupPortalPreparation.d.ts.map +1 -0
- package/dist/codexSetupPortalPreparation.js +101 -0
- package/dist/codexSetupPortalPreparation.js.map +1 -0
- package/dist/codexSetupPortalPreparation.test.d.ts +2 -0
- package/dist/codexSetupPortalPreparation.test.d.ts.map +1 -0
- package/dist/codexSetupPortalPreparation.test.js +173 -0
- package/dist/codexSetupPortalPreparation.test.js.map +1 -0
- package/dist/codexSetupPublicStdin.d.ts +6 -0
- package/dist/codexSetupPublicStdin.d.ts.map +1 -0
- package/dist/codexSetupPublicStdin.js +36 -0
- package/dist/codexSetupPublicStdin.js.map +1 -0
- package/dist/codexSetupPublicStdin.test.d.ts +2 -0
- package/dist/codexSetupPublicStdin.test.d.ts.map +1 -0
- package/dist/codexSetupPublicStdin.test.js +40 -0
- package/dist/codexSetupPublicStdin.test.js.map +1 -0
- package/dist/codexSetupUserPrompt.d.ts +2 -0
- package/dist/codexSetupUserPrompt.d.ts.map +1 -1
- package/dist/codexSetupUserPrompt.js +15 -8
- package/dist/codexSetupUserPrompt.js.map +1 -1
- package/dist/codexSetupUserPrompt.test.js +7 -0
- package/dist/codexSetupUserPrompt.test.js.map +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +187 -4
- package/dist/index.js.map +1 -1
- package/dist/onboardingContract.test.js +9 -0
- package/dist/onboardingContract.test.js.map +1 -1
- package/dist/schemas/setup-claim-request.schema.json +10 -0
- package/dist/schemas/setup-host-preparation.schema.json +51 -0
- package/dist/schemas/setup-launch-reservation.schema.json +29 -0
- package/dist/usage.js +1 -1
- package/dist/usage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
4
|
+
import { canonicalize, validateContract } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
5
|
+
import { captureCodexSetupPromptBinding, captureCodexSetupUserPrompt, capturePublicCodexSetupPrompt } from './codexSetupUserPrompt.js';
|
|
6
|
+
const fail = () => { throw new Error('codex_setup_portal_preparation_unavailable'); };
|
|
7
|
+
/** A public HTTPS receipt is presentation binding, not a host execution lease. */
|
|
8
|
+
export async function requestCodexSetupHostPreparation(input) {
|
|
9
|
+
// Capture before awaiting: no secret-bearing prose may reach the endpoint.
|
|
10
|
+
const initialUserPrompt = capturePublicCodexSetupPrompt(input.initialUserPrompt);
|
|
11
|
+
const pins = [...initialUserPrompt.replace(/\r\n/g, '\n').matchAll(/^Preparation context SHA256: ([a-f0-9]{64})\.$/gm)];
|
|
12
|
+
if (pins.length !== 1)
|
|
13
|
+
return fail();
|
|
14
|
+
const originalContextPin = pins[0][1];
|
|
15
|
+
const { origin, organizationId, setupReference, cliVersion } = input;
|
|
16
|
+
const initialUserPromptSha256 = createHash('sha256').update(initialUserPrompt, 'utf8').digest('hex');
|
|
17
|
+
const promptSha256 = createHash('sha256').update(initialUserPrompt.replace(/\r\n/g, '\n'), 'utf8').digest('hex');
|
|
18
|
+
const now = input.now ?? Date.now;
|
|
19
|
+
const signal = AbortSignal.any([input.signal, AbortSignal.timeout(15000)]);
|
|
20
|
+
let reader;
|
|
21
|
+
const cancel = () => { void reader?.cancel().catch(() => { }); };
|
|
22
|
+
try {
|
|
23
|
+
const url = new URL(origin);
|
|
24
|
+
if (url.origin !== origin || url.protocol !== 'https:' || url.username || url.password
|
|
25
|
+
|| !/^org_[A-Za-z0-9]+$/.test(organizationId)
|
|
26
|
+
|| !/^[a-f0-9]{8}-[a-f0-9]{4}-[1-8][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/.test(setupReference)
|
|
27
|
+
|| !/^\d+\.\d+\.\d+$/.test(cliVersion) || signal.aborted)
|
|
28
|
+
return fail();
|
|
29
|
+
const response = await (input.fetcher ?? fetch)(origin + '/api/v1/agent-fabric/bootstrap/setup-claim', {
|
|
30
|
+
method: 'POST', redirect: 'error', credentials: 'omit', signal,
|
|
31
|
+
headers: { 'Content-Type': 'application/json' },
|
|
32
|
+
body: JSON.stringify({ action: 'prepare_host', organizationId, setupReference, promptSha256 }),
|
|
33
|
+
});
|
|
34
|
+
if (signal.aborted || response.status !== 200 || !response.body
|
|
35
|
+
|| !response.headers.get('content-type')?.toLowerCase().startsWith('application/json')
|
|
36
|
+
|| Number(response.headers.get('content-length')) > 65536)
|
|
37
|
+
return fail();
|
|
38
|
+
reader = response.body.getReader();
|
|
39
|
+
signal.addEventListener('abort', cancel, { once: true });
|
|
40
|
+
const chunks = [];
|
|
41
|
+
let size = 0;
|
|
42
|
+
while (true) {
|
|
43
|
+
if (signal.aborted)
|
|
44
|
+
return fail();
|
|
45
|
+
const part = await reader.read();
|
|
46
|
+
if (part.done)
|
|
47
|
+
break;
|
|
48
|
+
size += part.value.byteLength;
|
|
49
|
+
if (size > 65536) {
|
|
50
|
+
await reader.cancel();
|
|
51
|
+
return fail();
|
|
52
|
+
}
|
|
53
|
+
chunks.push(part.value);
|
|
54
|
+
}
|
|
55
|
+
const value = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
56
|
+
const checked = await validateContract(resolve(import.meta.dirname, 'schemas'), 'https://schemas.dharma-ai.io/setup-host-preparation/v1', value);
|
|
57
|
+
if (!checked.ok || signal.aborted)
|
|
58
|
+
return fail();
|
|
59
|
+
const prepared = value, at = now();
|
|
60
|
+
const contextSha256 = createHash('sha256').update('dharma.setup-host-context/v1\0').update(canonicalize({
|
|
61
|
+
cliVersion: prepared.cliVersion, expiresAt: prepared.expiresAt, binding: prepared.binding, context: prepared.context
|
|
62
|
+
})).digest('hex');
|
|
63
|
+
if (contextSha256 !== originalContextPin || prepared.integrity.contextSha256 !== originalContextPin)
|
|
64
|
+
return fail();
|
|
65
|
+
const issued = Date.parse(prepared.preparedAt), expires = Date.parse(prepared.expiresAt);
|
|
66
|
+
if (prepared.context.origin !== origin || prepared.context.organizationId !== organizationId
|
|
67
|
+
|| prepared.context.setupReference !== setupReference || prepared.cliVersion !== cliVersion
|
|
68
|
+
|| prepared.promptSha256 !== promptSha256 || !Number.isFinite(at)
|
|
69
|
+
|| new Date(issued).toISOString() !== prepared.preparedAt
|
|
70
|
+
|| new Date(expires).toISOString() !== prepared.expiresAt
|
|
71
|
+
|| issued - at > 5000 || expires <= at || expires <= issued || expires - issued > 900000)
|
|
72
|
+
return fail();
|
|
73
|
+
const binding = captureCodexSetupPromptBinding(prepared.binding);
|
|
74
|
+
const intent = Object.freeze({
|
|
75
|
+
schema: 'dharma.codex-setup-intent/v1', ...prepared.context,
|
|
76
|
+
operationId: randomUUID(), hostContextId: randomUUID(),
|
|
77
|
+
issuedAt: prepared.preparedAt, expiresAt: prepared.expiresAt,
|
|
78
|
+
});
|
|
79
|
+
if (captureCodexSetupUserPrompt(initialUserPrompt, intent, binding) !== initialUserPrompt)
|
|
80
|
+
return fail();
|
|
81
|
+
// Match the claim client's bounded skew wait; never change the local clock
|
|
82
|
+
// or admit effects before the response's strict issued-at boundary.
|
|
83
|
+
if (issued > at)
|
|
84
|
+
await (input.sleep ?? ((ms, ownedSignal) => delay(ms, undefined, { signal: ownedSignal })))(issued - at, signal);
|
|
85
|
+
const currentTime = now();
|
|
86
|
+
if (signal.aborted || !Number.isFinite(currentTime) || currentTime < issued || currentTime >= expires)
|
|
87
|
+
return fail();
|
|
88
|
+
// No provider, key store, setup journal or enrollment operation is entered.
|
|
89
|
+
return Object.freeze({ effects: false, grantRedeemed: false,
|
|
90
|
+
initialUserPrompt, initialUserPromptSha256, promptSha256, portalContextSha256: originalContextPin, binding, intent,
|
|
91
|
+
requiresHostExecutionAdmission: true, requiresRecipientApproval: true });
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return fail();
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
signal.removeEventListener('abort', cancel);
|
|
98
|
+
reader?.releaseLock();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=codexSetupPortalPreparation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPortalPreparation.js","sourceRoot":"","sources":["../src/codexSetupPortalPreparation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPortalPreparation.test.d.ts","sourceRoot":"","sources":["../src/codexSetupPortalPreparation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { canonicalize } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
4
|
+
import test from 'node:test';
|
|
5
|
+
import { requestCodexSetupHostPreparation } from './codexSetupPortalPreparation.js';
|
|
6
|
+
const now = Date.parse('2030-01-01T00:00:00.000Z');
|
|
7
|
+
const reference = '11111111-1111-4111-8111-111111111111';
|
|
8
|
+
const membership = '22222222-2222-4222-8222-222222222222';
|
|
9
|
+
const binding = { recipientEmail: 'synthetic@example.test', repositoryRemoteUrl: 'https://github.com/example/synthetic.git' };
|
|
10
|
+
const fingerprint = `sha256:${'a'.repeat(64)}`;
|
|
11
|
+
const context = { origin: 'https://www.dharma-ai.io', organizationId: 'org_fixture',
|
|
12
|
+
setupReference: reference, recipientMembershipId: membership, repositoryFingerprint: fingerprint,
|
|
13
|
+
policyRevision: 'policy-v1', scopeDigest: `sha256:${'b'.repeat(64)}`, contractDigest: `sha256:${'c'.repeat(64)}` };
|
|
14
|
+
const contextHash = (value) => createHash('sha256').update('dharma.setup-host-context/v1\0').update(canonicalize({
|
|
15
|
+
cliVersion: value.cliVersion, expiresAt: value.expiresAt, binding: value.binding, context: value.context
|
|
16
|
+
})).digest('hex');
|
|
17
|
+
const originalPin = contextHash({ cliVersion: '0.2.190', expiresAt: '2030-01-01T00:15:00.000Z', binding, context });
|
|
18
|
+
const prompt = '# Dharma Agent Fabric \u2014 one-prompt source setup\n'
|
|
19
|
+
+ `Recipient: ${binding.recipientEmail}. Organization: org_fixture.\n`
|
|
20
|
+
+ `Selected repository: ${binding.repositoryRemoteUrl}. Fingerprint: ${fingerprint}.\n`
|
|
21
|
+
+ `Public setup reference: ${reference}. Fixed expiry: 2030-01-01T00:15:00.000Z.\n`
|
|
22
|
+
+ `Preparation context SHA256: ${originalPin}.\n`;
|
|
23
|
+
function fixture() {
|
|
24
|
+
let calls = 0;
|
|
25
|
+
const response = { schema: 'dharma.setup-host-preparation/v1', ok: true, effects: false,
|
|
26
|
+
grantRedeemed: false, approvalRequired: true, sourcePolicyRevalidated: true,
|
|
27
|
+
preparedAt: new Date(now).toISOString(), expiresAt: '2030-01-01T00:15:00.000Z',
|
|
28
|
+
promptSha256: createHash('sha256').update(prompt).digest('hex'), cliVersion: '0.2.190',
|
|
29
|
+
binding: { ...binding }, context: { ...context },
|
|
30
|
+
integrity: { algorithm: 'sha256', kind: 'portal-context', authenticity: 'same-origin-https', contextSha256: originalPin } };
|
|
31
|
+
const input = { origin: response.context.origin, organizationId: 'org_fixture', setupReference: reference,
|
|
32
|
+
cliVersion: '0.2.190', initialUserPrompt: prompt, signal: new AbortController().signal, now: () => now,
|
|
33
|
+
fetcher: (async (url, options) => {
|
|
34
|
+
calls++;
|
|
35
|
+
assert.equal(String(url), 'https://www.dharma-ai.io/api/v1/agent-fabric/bootstrap/setup-claim');
|
|
36
|
+
assert.equal(options?.redirect, 'error');
|
|
37
|
+
assert.deepEqual(JSON.parse(String(options?.body)), { action: 'prepare_host', organizationId: 'org_fixture',
|
|
38
|
+
setupReference: reference, promptSha256: createHash('sha256').update(prompt).digest('hex') });
|
|
39
|
+
assert.equal(options?.credentials, 'omit');
|
|
40
|
+
return new Response(JSON.stringify(response), { headers: { 'content-type': 'application/json' } });
|
|
41
|
+
}) };
|
|
42
|
+
return { response, input, get calls() { return calls; } };
|
|
43
|
+
}
|
|
44
|
+
test('public preparation obtains independent server binding without invoking a provider or enrollment', async () => {
|
|
45
|
+
const f = fixture();
|
|
46
|
+
const result = await requestCodexSetupHostPreparation(f.input);
|
|
47
|
+
assert.equal(f.calls, 1);
|
|
48
|
+
assert.deepEqual(result.binding, binding);
|
|
49
|
+
assert.equal(result.initialUserPrompt, prompt);
|
|
50
|
+
assert.equal(result.effects, false);
|
|
51
|
+
assert.equal(result.portalContextSha256, originalPin);
|
|
52
|
+
});
|
|
53
|
+
test('portal-pinned context is canonical across JSON object key order', async () => {
|
|
54
|
+
const f = fixture();
|
|
55
|
+
f.response.context = Object.fromEntries(Object.entries(f.response.context).reverse());
|
|
56
|
+
assert.equal((await requestCodexSetupHostPreparation(f.input)).portalContextSha256, originalPin);
|
|
57
|
+
});
|
|
58
|
+
test('a replayed intact context cannot extend its fixed expiry', async () => {
|
|
59
|
+
const f = fixture();
|
|
60
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input, now: () => now + 900001 }));
|
|
61
|
+
assert.equal(f.calls, 1);
|
|
62
|
+
});
|
|
63
|
+
test('credential-shaped prose is rejected before any network admission', async () => {
|
|
64
|
+
const f = fixture();
|
|
65
|
+
const canary = ['dhab', 'synthetic', 'not-a-real-grant'].join('_');
|
|
66
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input, initialUserPrompt: prompt + canary }));
|
|
67
|
+
assert.equal(f.calls, 0);
|
|
68
|
+
});
|
|
69
|
+
for (const field of ['recipientMembershipId', 'policyRevision', 'scopeDigest', 'contractDigest']) {
|
|
70
|
+
test(`recomputed response integrity cannot substitute the original portal-pinned ${field}`, async () => {
|
|
71
|
+
const f = fixture();
|
|
72
|
+
if (field === 'recipientMembershipId')
|
|
73
|
+
f.response.context[field] = reference;
|
|
74
|
+
else if (field === 'policyRevision')
|
|
75
|
+
f.response.context[field] = 'foreign-policy';
|
|
76
|
+
else
|
|
77
|
+
f.response.context[field] = 'sha256:' + 'f'.repeat(64);
|
|
78
|
+
f.response.integrity.contextSha256 = contextHash(f.response);
|
|
79
|
+
await assert.rejects(requestCodexSetupHostPreparation(f.input), /^Error: codex_setup_portal_preparation_unavailable$/);
|
|
80
|
+
assert.equal(f.calls, 1);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
for (const reason of ['missing', 'duplicate']) {
|
|
84
|
+
test(`a ${reason} original portal context pin is rejected before fetch`, async () => {
|
|
85
|
+
const f = fixture();
|
|
86
|
+
const value = reason === 'missing' ? prompt.replace(`Preparation context SHA256: ${originalPin}.\n`, '')
|
|
87
|
+
: prompt + `Preparation context SHA256: ${originalPin}.\n`;
|
|
88
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input, initialUserPrompt: value }));
|
|
89
|
+
assert.equal(f.calls, 0);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
test('bounded server clock lead waits without weakening issued-at or expiry validation', async () => {
|
|
93
|
+
const f = fixture();
|
|
94
|
+
let localNow = now, waited = 0;
|
|
95
|
+
f.response.preparedAt = new Date(now + 2208).toISOString();
|
|
96
|
+
const result = await requestCodexSetupHostPreparation({ ...f.input, now: () => localNow,
|
|
97
|
+
...{ sleep: async (ms) => { waited++; assert.equal(ms, 2208); localNow += ms; } } });
|
|
98
|
+
assert.equal(waited, 1);
|
|
99
|
+
assert.equal(result.intent.issuedAt, f.response.preparedAt);
|
|
100
|
+
assert.equal(f.calls, 1);
|
|
101
|
+
});
|
|
102
|
+
test('excessive server clock lead is rejected without sleeping or provider effects', async () => {
|
|
103
|
+
const f = fixture();
|
|
104
|
+
let waits = 0;
|
|
105
|
+
f.response.preparedAt = new Date(now + 5001).toISOString();
|
|
106
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input,
|
|
107
|
+
...{ sleep: async () => { waits++; } } }));
|
|
108
|
+
assert.equal(waits, 0);
|
|
109
|
+
assert.equal(f.calls, 1);
|
|
110
|
+
});
|
|
111
|
+
test('clock wait cancellation cannot authorize a future preparation', async () => {
|
|
112
|
+
const f = fixture(), control = new AbortController();
|
|
113
|
+
f.response.preparedAt = new Date(now + 1000).toISOString();
|
|
114
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input, signal: control.signal,
|
|
115
|
+
...{ sleep: async () => { control.abort(); } } }));
|
|
116
|
+
});
|
|
117
|
+
test('clipboard CRLF uses the same public digest while preserving actual native message bytes', async () => {
|
|
118
|
+
const f = fixture(), original = prompt.replace(/\n/g, '\r\n');
|
|
119
|
+
const result = await requestCodexSetupHostPreparation({ ...f.input, initialUserPrompt: original });
|
|
120
|
+
assert.equal(result.initialUserPrompt, original);
|
|
121
|
+
assert.equal(result.initialUserPromptSha256, createHash('sha256').update(original).digest('hex'));
|
|
122
|
+
assert.equal(result.promptSha256, createHash('sha256').update(prompt).digest('hex'));
|
|
123
|
+
});
|
|
124
|
+
for (const cause of ['origin', 'organization', 'reference', 'version', 'prompt-hash', 'recipient', 'repository', 'expired', 'effects', 'unknown']) {
|
|
125
|
+
test(`public preparation rejects ${cause} instead of accepting model-supplied binding`, async () => {
|
|
126
|
+
const f = fixture();
|
|
127
|
+
if (cause === 'origin')
|
|
128
|
+
f.response.context.origin = 'https://foreign.example';
|
|
129
|
+
if (cause === 'organization')
|
|
130
|
+
f.response.context.organizationId = 'org_foreign';
|
|
131
|
+
if (cause === 'reference')
|
|
132
|
+
f.response.context.setupReference = membership;
|
|
133
|
+
if (cause === 'version')
|
|
134
|
+
f.response.cliVersion = '0.2.191';
|
|
135
|
+
if (cause === 'prompt-hash')
|
|
136
|
+
f.response.promptSha256 = 'e'.repeat(64);
|
|
137
|
+
if (cause === 'recipient')
|
|
138
|
+
f.response.binding.recipientEmail = 'other@example.test';
|
|
139
|
+
if (cause === 'repository')
|
|
140
|
+
f.response.binding.repositoryRemoteUrl = 'https://github.com/other/source.git';
|
|
141
|
+
if (cause === 'expired')
|
|
142
|
+
f.response.expiresAt = new Date(now).toISOString();
|
|
143
|
+
if (cause === 'effects')
|
|
144
|
+
f.response.effects = true;
|
|
145
|
+
if (cause === 'unknown')
|
|
146
|
+
f.response.privateField = 'PRIVATE_CANARY';
|
|
147
|
+
await assert.rejects(requestCodexSetupHostPreparation(f.input));
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
test('a cancelled preparation makes no network request', async () => {
|
|
151
|
+
const f = fixture();
|
|
152
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input, signal: AbortSignal.abort() }));
|
|
153
|
+
assert.equal(f.calls, 0);
|
|
154
|
+
});
|
|
155
|
+
for (const cause of ['http-error', 'invalid-json', 'oversized', 'foreign-redirect', 'vendor-error']) {
|
|
156
|
+
test(`transport ${cause} is bounded, not retried and never reflects a response or vendor exception`, async () => {
|
|
157
|
+
const f = fixture();
|
|
158
|
+
let calls = 0;
|
|
159
|
+
const fetcher = (async () => {
|
|
160
|
+
calls++;
|
|
161
|
+
if (cause === 'vendor-error')
|
|
162
|
+
throw Error('PRIVATE_VENDOR_EXCEPTION');
|
|
163
|
+
if (cause === 'http-error')
|
|
164
|
+
return new Response('PRIVATE_RESPONSE', { status: 403 });
|
|
165
|
+
if (cause === 'foreign-redirect')
|
|
166
|
+
return new Response('', { status: 302, headers: { location: 'https://foreign.example' } });
|
|
167
|
+
return new Response(cause === 'invalid-json' ? 'PRIVATE_INVALID_RESPONSE' : 'x'.repeat(65537), { headers: { 'content-type': 'application/json' } });
|
|
168
|
+
});
|
|
169
|
+
await assert.rejects(requestCodexSetupHostPreparation({ ...f.input, fetcher }), error => error instanceof Error && error.message === 'codex_setup_portal_preparation_unavailable');
|
|
170
|
+
assert.equal(calls, 1);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=codexSetupPortalPreparation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPortalPreparation.test.js","sourceRoot":"","sources":["../src/codexSetupPortalPreparation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Readable } from 'node:stream';
|
|
2
|
+
/** Agent-supplied public text only; never a terminal password/grant prompt. */
|
|
3
|
+
export declare function readCodexSetupPublicStdin(stream: Readable & {
|
|
4
|
+
isTTY?: boolean;
|
|
5
|
+
}, signal: AbortSignal): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=codexSetupPublicStdin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPublicStdin.d.ts","sourceRoot":"","sources":["../src/codexSetupPublicStdin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAG1C,+EAA+E;AAC/E,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB1H"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { capturePublicCodexSetupPrompt } from './codexSetupUserPrompt.js';
|
|
2
|
+
/** Agent-supplied public text only; never a terminal password/grant prompt. */
|
|
3
|
+
export async function readCodexSetupPublicStdin(stream, signal) {
|
|
4
|
+
const fail = () => new Error('codex_setup_public_input_unavailable');
|
|
5
|
+
if (stream.isTTY || signal.aborted)
|
|
6
|
+
throw fail();
|
|
7
|
+
const deadline = AbortSignal.any([signal, AbortSignal.timeout(15000)]);
|
|
8
|
+
const cancel = () => stream.destroy(fail());
|
|
9
|
+
deadline.addEventListener('abort', cancel, { once: true });
|
|
10
|
+
const chunks = [];
|
|
11
|
+
let size = 0;
|
|
12
|
+
try {
|
|
13
|
+
for await (const chunk of stream) {
|
|
14
|
+
if (deadline.aborted)
|
|
15
|
+
throw fail();
|
|
16
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
17
|
+
size += bytes.length;
|
|
18
|
+
if (size > 32768)
|
|
19
|
+
throw fail();
|
|
20
|
+
chunks.push(bytes);
|
|
21
|
+
}
|
|
22
|
+
if (deadline.aborted)
|
|
23
|
+
throw fail();
|
|
24
|
+
const bytes = Buffer.concat(chunks), text = bytes.toString('utf8');
|
|
25
|
+
if (!Buffer.from(text, 'utf8').equals(bytes))
|
|
26
|
+
throw fail();
|
|
27
|
+
return capturePublicCodexSetupPrompt(text);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw fail();
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
deadline.removeEventListener('abort', cancel);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=codexSetupPublicStdin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPublicStdin.js","sourceRoot":"","sources":["../src/codexSetupPublicStdin.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,2BAA2B,CAAC;AAExE,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAoC,EAAE,MAAmB;IACvG,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,OAAO;gBAAE,MAAM,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,KAAK;gBAAE,MAAM,IAAI,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO;YAAE,MAAM,IAAI,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,EAAE,CAAC;QAC3D,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QAAA,MAAM,IAAI,EAAE,CAAC;IAAA,CAAC;YACf,CAAC;QAAA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAAA,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPublicStdin.test.d.ts","sourceRoot":"","sources":["../src/codexSetupPublicStdin.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { PassThrough, Readable } from 'node:stream';
|
|
3
|
+
import test from 'node:test';
|
|
4
|
+
import { readCodexSetupPublicStdin } from './codexSetupPublicStdin.js';
|
|
5
|
+
const prompt = '# Public setup\r\nOriginal text is preserved.\n';
|
|
6
|
+
test('public stdin preserves valid original bytes across chunks without echo or file transport', async () => {
|
|
7
|
+
const stream = Readable.from([Buffer.from(prompt.slice(0, 8)), Buffer.from(prompt.slice(8))]);
|
|
8
|
+
assert.equal(await readCodexSetupPublicStdin(stream, new AbortController().signal), prompt);
|
|
9
|
+
});
|
|
10
|
+
for (const reason of ['tty', 'cancelled']) {
|
|
11
|
+
test(`public stdin refuses ${reason} before reading`, async () => {
|
|
12
|
+
let reads = 0;
|
|
13
|
+
const stream = new Readable({ read() { reads++; this.push(null); } });
|
|
14
|
+
const control = new AbortController();
|
|
15
|
+
if (reason === 'tty')
|
|
16
|
+
stream.isTTY = true;
|
|
17
|
+
else
|
|
18
|
+
control.abort();
|
|
19
|
+
await assert.rejects(readCodexSetupPublicStdin(stream, control.signal), /^Error: codex_setup_public_input_unavailable$/);
|
|
20
|
+
assert.equal(reads, 0);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
for (const [reason, bytes] of [
|
|
24
|
+
['oversized', Buffer.alloc(32769, 97)], ['invalid-utf8', Buffer.from([0xc3, 0x28])],
|
|
25
|
+
['empty', Buffer.alloc(0)], ['credential', Buffer.from(['dhab', 'synthetic', 'never-real'].join('_'))],
|
|
26
|
+
]) {
|
|
27
|
+
test(`public stdin rejects ${reason} with a constant non-disclosing result`, async () => {
|
|
28
|
+
await assert.rejects(readCodexSetupPublicStdin(Readable.from([bytes]), new AbortController().signal), /^Error: codex_setup_public_input_unavailable$/);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
test('cancellation destroys only the owned waiting public input stream', async () => {
|
|
32
|
+
const stream = new PassThrough(), other = new PassThrough(), control = new AbortController();
|
|
33
|
+
const reading = readCodexSetupPublicStdin(stream, control.signal);
|
|
34
|
+
control.abort();
|
|
35
|
+
await assert.rejects(reading, /^Error: codex_setup_public_input_unavailable$/);
|
|
36
|
+
assert.equal(stream.destroyed, true);
|
|
37
|
+
assert.equal(other.destroyed, false);
|
|
38
|
+
other.destroy();
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=codexSetupPublicStdin.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSetupPublicStdin.test.js","sourceRoot":"","sources":["../src/codexSetupPublicStdin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export type CodexSetupPromptBinding = Readonly<{
|
|
|
5
5
|
}>;
|
|
6
6
|
/** Public fields captured from the independently verified recipient/selection. */
|
|
7
7
|
export declare function captureCodexSetupPromptBinding(value: unknown): CodexSetupPromptBinding;
|
|
8
|
+
/** Reject credential-bearing public prose before network or persistence. */
|
|
9
|
+
export declare function capturePublicCodexSetupPrompt(value: unknown): string;
|
|
8
10
|
/** Presentation consistency only. The original host intent and lease, never
|
|
9
11
|
* model-visible prose, remain the authority for every protected setup effect. */
|
|
10
12
|
export declare function captureCodexSetupUserPrompt(value: unknown, intent: Readonly<CodexSetupIntent>, suppliedBinding?: unknown): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codexSetupUserPrompt.d.ts","sourceRoot":"","sources":["../src/codexSetupUserPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codexSetupUserPrompt.d.ts","sourceRoot":"","sources":["../src/codexSetupUserPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAI/D,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAEtG,kFAAkF;AAClF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAmBtF;AAED,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAepE;AAED;iFACiF;AACjF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAiB7I"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { redactValue } from '@dharma-ai-labs/agent-fabric-evidence-reduction';
|
|
2
|
+
import { containsCredential } from '@dharma-ai-labs/agent-fabric-provider-adapters/experimental/codex-session';
|
|
2
3
|
/** Public fields captured from the independently verified recipient/selection. */
|
|
3
4
|
export function captureCodexSetupPromptBinding(value) {
|
|
4
5
|
const invalid = () => { throw new Error('codex_setup_public_prompt_invalid'); };
|
|
@@ -28,11 +29,8 @@ export function captureCodexSetupPromptBinding(value) {
|
|
|
28
29
|
}
|
|
29
30
|
return Object.freeze({ recipientEmail, repositoryRemoteUrl });
|
|
30
31
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
export function captureCodexSetupUserPrompt(value, intent, suppliedBinding) {
|
|
34
|
-
if (value === undefined)
|
|
35
|
-
return undefined;
|
|
32
|
+
/** Reject credential-bearing public prose before network or persistence. */
|
|
33
|
+
export function capturePublicCodexSetupPrompt(value) {
|
|
36
34
|
const invalid = () => { throw new Error('codex_setup_public_prompt_invalid'); };
|
|
37
35
|
if (typeof value !== 'string' || !value || Buffer.byteLength(value, 'utf8') > 32_768
|
|
38
36
|
|| Buffer.from(value, 'utf8').toString('utf8') !== value
|
|
@@ -43,12 +41,21 @@ export function captureCodexSetupUserPrompt(value, intent, suppliedBinding) {
|
|
|
43
41
|
inputBytes: Buffer.byteLength(value), outputBytes: Buffer.byteLength(value) };
|
|
44
42
|
redactValue(value, stats);
|
|
45
43
|
// Public setup prose includes documented paths, but never secret-bearing values.
|
|
46
|
-
if ([...stats.classes].some(name => name !== 'local_path')
|
|
44
|
+
if (containsCredential(value) || [...stats.classes].some(name => name !== 'local_path')
|
|
47
45
|
|| /\b(?:proxy[_-]?authorization|authorization|set[_-]?cookie|cookie)["']?\s*[:=]\s*["']?\S+/i.test(value)
|
|
48
46
|
|| /\b(?:gh[pousr]_|github_pat_|sk_live_|sk_test_)[A-Za-z0-9_]{12,}|\bBearer\s+[A-Za-z0-9_.+-]{8,}/i.test(value)
|
|
49
47
|
|| /\b[A-Za-z0-9_]*(?:password|passwd|secret|api_key|access_token|refresh_token|credentials?|token)(?:_[A-Za-z0-9_]+)?["']?\s*[:=]\s*["']?[^\s"',;]+/i.test(value))
|
|
50
48
|
return invalid();
|
|
51
|
-
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
/** Presentation consistency only. The original host intent and lease, never
|
|
52
|
+
* model-visible prose, remain the authority for every protected setup effect. */
|
|
53
|
+
export function captureCodexSetupUserPrompt(value, intent, suppliedBinding) {
|
|
54
|
+
if (value === undefined)
|
|
55
|
+
return undefined;
|
|
56
|
+
const prompt = capturePublicCodexSetupPrompt(value);
|
|
57
|
+
const invalid = () => { throw new Error('codex_setup_public_prompt_invalid'); };
|
|
58
|
+
const binding = captureCodexSetupPromptBinding(suppliedBinding), lines = prompt.split(/\r?\n/);
|
|
52
59
|
const only = (prefix) => {
|
|
53
60
|
const selected = lines.filter(line => line.startsWith(prefix));
|
|
54
61
|
if (selected.length !== 1)
|
|
@@ -61,6 +68,6 @@ export function captureCodexSetupUserPrompt(value, intent, suppliedBinding) {
|
|
|
61
68
|
|| only('Public setup reference: ') !== `Public setup reference: ${intent.setupReference}. Fixed expiry: ${intent.expiresAt}.`) {
|
|
62
69
|
return invalid();
|
|
63
70
|
}
|
|
64
|
-
return
|
|
71
|
+
return prompt;
|
|
65
72
|
}
|
|
66
73
|
//# sourceMappingURL=codexSetupUserPrompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codexSetupUserPrompt.js","sourceRoot":"","sources":["../src/codexSetupUserPrompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAsB,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"codexSetupUserPrompt.js","sourceRoot":"","sources":["../src/codexSetupUserPrompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,13 @@ test('credential-contaminated public text is rejected before a persistent native
|
|
|
78
78
|
assert.throws(() => captureCodexSetupUserPrompt(prompt + contaminated, intent, binding), /^Error: codex_setup_public_prompt_invalid$/);
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
|
+
test('capture rejects product bootstrap grants in otherwise valid public text', () => {
|
|
82
|
+
const synthetic = ['dhab', 'SYNTHETIC_NOT_A_REAL_GRANT_20261013'].join('_');
|
|
83
|
+
for (const contaminated of [synthetic, synthetic.toUpperCase(), `Unexpected private value: ${synthetic}`,
|
|
84
|
+
JSON.stringify({ unrelated: synthetic })]) {
|
|
85
|
+
assert.throws(() => captureCodexSetupUserPrompt(prompt + contaminated, intent, binding), /^Error: codex_setup_public_prompt_invalid$/);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
81
88
|
test('public metadata booleans are not mistaken for credential assignments', () => {
|
|
82
89
|
const publicMetadata = prompt + 'directCredentialFileRead:false; providerCredentialRead:false;';
|
|
83
90
|
assert.equal(captureCodexSetupUserPrompt(publicMetadata, intent, binding), publicMetadata);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codexSetupUserPrompt.test.js","sourceRoot":"","sources":["../src/codexSetupUserPrompt.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,2BAA2B,EAAE,8BAA8B,EAAC,MAAM,2BAA2B,CAAC;AAGtG,MAAM,MAAM,GAAqB,EAAC,MAAM,EAAE,8BAA8B;IACtE,WAAW,EAAE,sCAAsC,EAAE,cAAc,EAAE,sCAAsC;IAC3G,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,sCAAsC;IAC9F,MAAM,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW;IAC5G,WAAW,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IACnF,aAAa,EAAE,sCAAsC;IACrD,QAAQ,EAAE,0BAA0B,EAAE,SAAS,EAAE,0BAA0B,EAAC,CAAC;AAC/E,MAAM,MAAM,GAAG,wDAAwD;MACnE,oDAAoD,MAAM,CAAC,cAAc,KAAK;MAC9E,sEAAsE,MAAM,CAAC,qBAAqB,KAAK;MACvG,2BAA2B,MAAM,CAAC,cAAc,mBAAmB,MAAM,CAAC,SAAS,KAAK;MACxF,6EAA6E,CAAC;AAClF,MAAM,OAAO,GAAG,EAAC,cAAc,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,iCAAiC,EAAC,CAAC;AAEnH,IAAI,CAAC,sFAAsF,EAAE,GAAG,EAAE;IAChG,KAAK,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,sBAAsB,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,mCAAmC,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACtG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;IAC1F,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,sCAAsC,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qGAAqG,EAAE,GAAG,EAAE;IAC/G,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,uBAAuB,EAAE,MAAM,GAAG,gBAAgB;QAC/F,MAAM,GAAG,4CAA4C,EAAE,MAAM,GAAG,qBAAqB;QACrF,MAAM,GAAG,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,4CAA4C,CAAC,CAAC;IACzH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;IACxF,KAAK,MAAM,MAAM,IAAI,CAAC,aAAa,EAAE,uBAAuB,EAAE,0BAA0B,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAE,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC5H,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACnH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC;QACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACjH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;IACtG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8FAA8F,EAAE,GAAG,EAAE;IACxG,MAAM,UAAU,GAAG,MAAM,GAAG,0DAA0D,CAAC;IACvF,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IACnF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7C,gFAAgF;IAChF,iFAAiF;AACnF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4FAA4F,EAAE,GAAG,EAAE;IACtG,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAC,GAAG,OAAO,EAAE,cAAc,EAAE,EAAE,EAAC,EAAE,EAAC,GAAG,OAAO,EAAE,cAAc,EAAE,KAAK,EAAC;QACvG,EAAC,GAAG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,EAAE,EAAC,GAAG,OAAO,EAAE,mBAAmB,EAAE,gCAAgC,EAAC;QAC1H,EAAC,GAAG,OAAO,EAAE,mBAAmB,EAAE,8CAA8C,EAAC;QACjF,EAAC,GAAG,OAAO,EAAE,mBAAmB,EAAE,2CAA2C,EAAC;QAC9E,EAAC,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC,EAAE,EAAC,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAC;QACtE,EAAC,IAAI,cAAc,KAAI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAC,CAAC,EAAE,CAAC;QACxH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAAE,4CAA4C,CAAC,CAAC;IAC3G,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,EAAC,GAAG,OAAO,EAAC,EAAE,QAAQ,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACnF,QAAQ,CAAC,cAAc,GAAG,sBAAsB,CAAC;IACjD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+FAA+F,EAAE,GAAG,EAAE;IACzG,KAAK,MAAM,YAAY,IAAI,CAAC,+CAA+C,EAAE,iCAAiC;QAC5G,CAAC,IAAI,EAAE,MAAM,EAAE,6BAA6B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,mDAAmD;QAC5G,uCAAuC,EAAE,kCAAkC;QAC3E,0CAA0C,EAAE,2CAA2C,CAAC,EAAE,CAAC;QAC3F,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EACrF,4CAA4C,CAAC,CAAC;IAClD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;IAChF,MAAM,cAAc,GAAG,MAAM,GAAG,+DAA+D,CAAC;IAChG,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7F,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;IACxF,KAAK,MAAM,MAAM,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvH,+CAA+C,EAAE,wDAAwD;QACzG,6CAA6C,EAAE,mDAAmD;QAClG,mDAAmD,EAAE,uDAAuD,CAAC,EAAE,CAAC;QAChH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAC/E,4CAA4C,CAAC,CAAC;IAClD,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"codexSetupUserPrompt.test.js","sourceRoot":"","sources":["../src/codexSetupUserPrompt.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -219,6 +219,11 @@ export declare function openCodexBootstrapNativeHost(input: Omit<Parameters<type
|
|
|
219
219
|
close: () => Promise<void>;
|
|
220
220
|
settled: Promise<void>;
|
|
221
221
|
initialUserPromptSha256: string | undefined;
|
|
222
|
+
readonly verifiedCompletion: Readonly<{
|
|
223
|
+
operationId: string;
|
|
224
|
+
setupReference: string;
|
|
225
|
+
readinessReceiptId: string;
|
|
226
|
+
}> | undefined;
|
|
222
227
|
readonly diagnostics: readonly Readonly<CodexSetupFailureDiagnostic>[];
|
|
223
228
|
}>>;
|
|
224
229
|
/** Prepared controller ingress for the portal's public command, never a shell evaluator. */
|
|
@@ -232,11 +237,21 @@ export declare function openCodexBootstrapFromPortalCommand(input: Parameters<ty
|
|
|
232
237
|
close: () => Promise<void>;
|
|
233
238
|
settled: Promise<void>;
|
|
234
239
|
initialUserPromptSha256: string | undefined;
|
|
240
|
+
readonly verifiedCompletion: Readonly<{
|
|
241
|
+
operationId: string;
|
|
242
|
+
setupReference: string;
|
|
243
|
+
readinessReceiptId: string;
|
|
244
|
+
}> | undefined;
|
|
235
245
|
readonly diagnostics: readonly Readonly<CodexSetupFailureDiagnostic>[];
|
|
236
246
|
}>>;
|
|
237
247
|
/** Official native-host composition. The caller supplies its already owned
|
|
238
248
|
* transport and qualification, never a vault, executor or readiness callback. */
|
|
239
249
|
export declare function startCodexBootstrapNativeHost(input: Omit<Parameters<typeof startCodexSetupNativeHost>[0], 'openJournal' | 'execute' | 'verifyReadiness'>): Promise<Readonly<{
|
|
250
|
+
verifiedCompletion: Readonly<{
|
|
251
|
+
operationId: string;
|
|
252
|
+
setupReference: string;
|
|
253
|
+
readinessReceiptId: string;
|
|
254
|
+
}> | undefined;
|
|
240
255
|
diagnostics: readonly Readonly<CodexSetupFailureDiagnostic>[];
|
|
241
256
|
threadId: string;
|
|
242
257
|
turnId: string;
|