// From example-04-session-payments.ts
async function runMultiStepSession(serverUrl: string) {
// Step 1: First request — pays with MPP
const r1 = await fetch(`${serverUrl}/agent/step`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-PAYMENT': 'stub_payment_accepted', // stub mode for testing
},
body: JSON.stringify({ step: 'search', query: 'latest AI papers' }),
});
const step1 = await r1.json();
const sessionId = step1.sessionId;
const vaultId = step1.vaultId;
console.log('Session created:', sessionId);
console.log('Vault created:', vaultId);
// Step 2: Reuses session — no payment
const r2 = await fetch(`${serverUrl}/agent/step`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-PRUDRA-SESSION-ID': sessionId,
},
body: JSON.stringify({ step: 'summarise', query: 'latest AI papers' }),
});
const step2 = await r2.json();
console.log('Same vault:', step2.vaultId === vaultId); // true
// Step 3: Seal the session vault
const r3 = await fetch(`${serverUrl}/agent/finish`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-PRUDRA-SESSION-ID': sessionId,
},
body: JSON.stringify({}),
});
const finish = await r3.json();
console.log('Session complete:', finish.status);
console.log('All documents:', finish.documents.length); // 2
}