feat: add Pi provider managed resources
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
|
||||
const LOCAL_API_KEY_ENV = 'PI_PROBE_LOCAL_CONTRACT_KEY';
|
||||
const LOCAL_API_KEY = 'pi-local-contract-only';
|
||||
const LOCAL_HEADER_ENV = 'PI_PROBE_LOCAL_CONTRACT_HEADER';
|
||||
const CUSTOM_HEADER = 'x-makelore-pi-probe';
|
||||
const IMAGE_BASE64 = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y9Z4N8AAAAASUVORK5CYII=';
|
||||
|
||||
@@ -227,6 +228,7 @@ export async function runLocalProviderContracts(options, projectRoot = process.c
|
||||
const scratchRoot = await mkdtemp(join(tmpdir(), 'makelore-pi-provider-contracts-'));
|
||||
const requests = [];
|
||||
const previousApiKey = process.env[LOCAL_API_KEY_ENV];
|
||||
const previousHeader = process.env[LOCAL_HEADER_ENV];
|
||||
const server = await startContractServer(requests);
|
||||
process.env[LOCAL_API_KEY_ENV] = LOCAL_API_KEY;
|
||||
try {
|
||||
@@ -243,6 +245,7 @@ export async function runLocalProviderContracts(options, projectRoot = process.c
|
||||
await writeFile(imagePath, Buffer.from(IMAGE_BASE64, 'base64'));
|
||||
const protocols = [];
|
||||
for (const protocol of MAKELore_PROVIDER_PROTOCOLS) {
|
||||
process.env[LOCAL_HEADER_ENV] = protocol;
|
||||
const protocolRoot = join(scratchRoot, protocol);
|
||||
await mkdir(protocolRoot);
|
||||
const fixturePath = join(protocolRoot, 'fixture.json');
|
||||
@@ -255,7 +258,7 @@ export async function runLocalProviderContracts(options, projectRoot = process.c
|
||||
apiProtocol: protocol,
|
||||
baseUrl,
|
||||
apiKeyEnv: LOCAL_API_KEY_ENV,
|
||||
headers: { [CUSTOM_HEADER]: protocol },
|
||||
headers: { [CUSTOM_HEADER]: `$${LOCAL_HEADER_ENV}` },
|
||||
model: { id: modelId, input: ['text', 'image'] },
|
||||
}, null, 2)}\n`);
|
||||
const qualification = await runProviderQualification(
|
||||
@@ -283,6 +286,8 @@ export async function runLocalProviderContracts(options, projectRoot = process.c
|
||||
scope: {
|
||||
network: '127.0.0.1 only',
|
||||
realProvider: false,
|
||||
realTurnVerified: false,
|
||||
realProviderDecision: 'explicitly-waived-accepted-risk',
|
||||
limitation: 'Validates Pi HTTP/SSE request contracts and worker behavior; does not qualify a real provider account.',
|
||||
},
|
||||
protocols,
|
||||
@@ -296,6 +301,8 @@ export async function runLocalProviderContracts(options, projectRoot = process.c
|
||||
} finally {
|
||||
if (previousApiKey === undefined) delete process.env[LOCAL_API_KEY_ENV];
|
||||
else process.env[LOCAL_API_KEY_ENV] = previousApiKey;
|
||||
if (previousHeader === undefined) delete process.env[LOCAL_HEADER_ENV];
|
||||
else process.env[LOCAL_HEADER_ENV] = previousHeader;
|
||||
await server.close();
|
||||
await rm(scratchRoot, { recursive: true, force: true, maxRetries: 5, retryDelay: 200 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user