@tangle-network/agent-eval 0.143.0 → 0.144.1
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/CHANGELOG.md +34 -0
- package/README.md +21 -8
- package/dist/analyst/index.d.ts +82 -17
- package/dist/analyst/index.d.ts.map +1 -1
- package/dist/analyst/index.js +4 -4
- package/dist/{benchmark-command-CSddvlq7.js → benchmark-command-95Zqd1e8.js} +333 -111
- package/dist/benchmark-command-95Zqd1e8.js.map +1 -0
- package/dist/benchmarks/index.d.ts +1 -1
- package/dist/benchmarks/index.js +1 -1
- package/dist/{benchmarks-Dg0B56tK.js → benchmarks-CRT4ScEA.js} +4 -4
- package/dist/{benchmarks-Dg0B56tK.js.map → benchmarks-CRT4ScEA.js.map} +1 -1
- package/dist/campaign/index.d.ts +4 -3
- package/dist/campaign/index.js +4 -4
- package/dist/{campaign-C7ZGiZYG.js → campaign-CefP3fPS.js} +12 -10
- package/dist/campaign-CefP3fPS.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/contract/index.d.ts +1 -1
- package/dist/contract/index.js +3 -3
- package/dist/{default-registry-BupFSXSN.js → default-registry-SOyHB6qG.js} +3 -3
- package/dist/{default-registry-BupFSXSN.js.map → default-registry-SOyHB6qG.js.map} +1 -1
- package/dist/{dspy-rlm-engine-CJ4sN8Wx.js → dspy-rlm-engine-BR7TtB0o.js} +69 -31
- package/dist/dspy-rlm-engine-BR7TtB0o.js.map +1 -0
- package/dist/{eval-campaign-YdkpWWoT.js → eval-campaign-lI7wB9DH.js} +2 -2
- package/dist/{eval-campaign-YdkpWWoT.js.map → eval-campaign-lI7wB9DH.js.map} +1 -1
- package/dist/external-optimizer-contracts-CdmX2K2S.d.ts +165 -0
- package/dist/external-optimizer-contracts-CdmX2K2S.d.ts.map +1 -0
- package/dist/{index-BKjcUH13.d.ts → index-BZUe-ODI.d.ts} +41 -5
- package/dist/index-BZUe-ODI.d.ts.map +1 -0
- package/dist/{index-DY83M1WL.d.ts → index-BrpxwELi.d.ts} +9 -8
- package/dist/{index-DY83M1WL.d.ts.map → index-BrpxwELi.d.ts.map} +1 -1
- package/dist/{index-CaOjqCli.d.ts → index-DRI1DU5z.d.ts} +3 -3
- package/dist/{index-CaOjqCli.d.ts.map → index-DRI1DU5z.d.ts.map} +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +12 -11
- package/dist/index.js.map +1 -1
- package/dist/{integrity-hruKe6oe.js → integrity-DY6tIbl0.js} +48 -18
- package/dist/integrity-DY6tIbl0.js.map +1 -0
- package/dist/{llm-client-B3WXSH5Y.js → llm-client-D3EoChAU.js} +7 -7
- package/dist/llm-client-D3EoChAU.js.map +1 -0
- package/dist/openapi.json +1 -1
- package/dist/rl.js +1 -1
- package/dist/{semantic-concept-judge-DJQtFr95.js → semantic-concept-judge-l8Lb3Kqz.js} +2 -2
- package/dist/{semantic-concept-judge-DJQtFr95.js.map → semantic-concept-judge-l8Lb3Kqz.js.map} +1 -1
- package/dist/{server-Cu4M3NSO.js → server-Df00sdwz.js} +3 -3
- package/dist/{server-Cu4M3NSO.js.map → server-Df00sdwz.js.map} +1 -1
- package/dist/single-run-lock-B-cFnnNn.js +1799 -0
- package/dist/single-run-lock-B-cFnnNn.js.map +1 -0
- package/dist/{skill-usage-CRqaHi0R.d.ts → skill-usage-3vUWdZ9n.d.ts} +24 -5
- package/dist/skill-usage-3vUWdZ9n.d.ts.map +1 -0
- package/dist/{skillopt-optimization-method-Di8Xkalt.js → skillopt-optimization-method-DA5mJmFE.js} +225 -347
- package/dist/skillopt-optimization-method-DA5mJmFE.js.map +1 -0
- package/dist/{skillopt-optimization-method-CwRvi-rL.d.ts → skillopt-optimization-method-DNniakI5.d.ts} +47 -9
- package/dist/skillopt-optimization-method-DNniakI5.d.ts.map +1 -0
- package/dist/supervisor-run/index.d.ts +3 -3
- package/dist/supervisor-run/index.js +3 -3
- package/dist/{supervisor-run-BEns49Nx.js → supervisor-run-DiyQVczd.js} +301 -25
- package/dist/supervisor-run-DiyQVczd.js.map +1 -0
- package/dist/types-BjMFz88h.d.ts.map +1 -1
- package/dist/{types-Dea6tiVI.d.ts → types-yLK8gXE9.d.ts} +15 -2
- package/dist/types-yLK8gXE9.d.ts.map +1 -0
- package/dist/wire/index.js +1 -1
- package/docs/campaign-proposers.md +11 -7
- package/docs/trace-analysis.md +43 -32
- package/package.json +1 -1
- package/dist/benchmark-command-CSddvlq7.js.map +0 -1
- package/dist/campaign-C7ZGiZYG.js.map +0 -1
- package/dist/dspy-rlm-engine-CJ4sN8Wx.js.map +0 -1
- package/dist/external-optimizer-contracts-nb7c_WAR.d.ts +0 -42
- package/dist/external-optimizer-contracts-nb7c_WAR.d.ts.map +0 -1
- package/dist/index-BKjcUH13.d.ts.map +0 -1
- package/dist/integrity-hruKe6oe.js.map +0 -1
- package/dist/llm-client-B3WXSH5Y.js.map +0 -1
- package/dist/single-run-lock-Do-8vBIJ.js +0 -1049
- package/dist/single-run-lock-Do-8vBIJ.js.map +0 -1
- package/dist/skill-usage-CRqaHi0R.d.ts.map +0 -1
- package/dist/skillopt-optimization-method-CwRvi-rL.d.ts.map +0 -1
- package/dist/skillopt-optimization-method-Di8Xkalt.js.map +0 -1
- package/dist/supervisor-run-BEns49Nx.js.map +0 -1
- package/dist/types-Dea6tiVI.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"single-run-lock-Do-8vBIJ.js","names":["MAX_TIMER_DELAY_MS"],"sources":["../src/campaign/external-optimizer-contracts.ts","../src/campaign/external-optimizer-http.ts","../src/campaign/external-optimizer-model-proxy.ts","../src/campaign/external-optimizer-resources.ts","../src/campaign/external-optimizer-subprocess.ts","../src/campaign/search-ledger-errors.ts","../src/campaign/search-ledger-file.ts","../src/campaign/storage.ts","../src/campaign/single-run-lock.ts"],"sourcesContent":["import type { CustomTokenPricing } from '../cost-ledger'\nimport { costForTokenPricing } from '../cost-ledger'\n\nconst MAX_TIMER_DELAY_MS = 2_147_483_647\n\nexport interface ExternalOptimizerRunnerCommand {\n command?: string\n args?: readonly string[]\n env?: NodeJS.ProcessEnv\n}\n\nexport type ExternalOptimizerResumeMode = 'never' | 'if-compatible' | 'required'\n\nexport type ExternalTextCandidate = string | Record<string, string>\n\nexport interface ExternalTextEvaluationRequest {\n candidate: ExternalTextCandidate\n exampleId: string\n}\n\nexport interface ExternalOptimizerCallback {\n url: string\n token: string\n evaluations: () => number\n close: () => Promise<void>\n}\n\nexport interface ExternalOptimizerModelBudget {\n /** Maximum optimizer-model spend, independent of task-evaluation spend. */\n maxCostUsd: number\n /** Network attempts, including provider retries. */\n maxRequests: number\n /** Reject a request body above this byte count. */\n maxRequestBytes: number\n /** Reject a provider response above this byte count. */\n maxResponseBytes: number\n /** Reject a request asking the provider for more output tokens. */\n maxOutputTokensPerRequest: number\n /**\n * Reasoning tokens a single response may bill beyond its completion limit.\n *\n * A reasoning model bounds only the completion by `max_tokens` and bills\n * thinking on top, so a reservation sized to the completion alone is always\n * too small and the ledger refuses the real charge. Callers that route a\n * reasoning model declare its thinking budget here; the reservation covers\n * it and a response exceeding it still fails loudly. Default: 0.\n */\n maxReasoningTokensPerRequest?: number\n /** Rates used to estimate cost when the provider omits a valid `usage.cost`. */\n pricing: CustomTokenPricing\n /** Per-provider-request deadline. Default: 300,000 ms. */\n requestTimeoutMs?: number\n}\n\nexport interface ExternalOptimizerModelProxy {\n /** OpenAI-compatible base URL supplied to the optimizer process. */\n baseUrl: string\n /** Ephemeral credential supplied only to the local proxy. */\n apiKey: string\n /** Provider requests admitted during this proxy process, including failures. */\n requestAttempts: () => number\n /** Complete successful provider responses recorded during this proxy process. */\n successfulCompletions: () => number\n /** Upstream fetches repeated because the provider answered 429. */\n rateLimitRetries: () => number\n close: () => Promise<void>\n}\n\nexport function isCandidateText(value: unknown, maxChars: number): value is string {\n return typeof value === 'string' && value.trim().length > 0 && value.length <= maxChars\n}\n\nexport function isExternalTextCandidate(value: unknown): value is ExternalTextCandidate {\n if (typeof value === 'string') return value.trim().length > 0\n if (!isRecord(value)) return false\n const entries = Object.entries(value)\n return (\n entries.length > 0 &&\n entries.every(\n ([name, content]) =>\n name.trim().length > 0 && name.trim() === name && typeof content === 'string',\n )\n )\n}\n\nexport function assertJsonValue(value: unknown, label: string, seen = new Set<object>()): void {\n if (value === null || typeof value === 'string' || typeof value === 'boolean') return\n if (typeof value === 'number' && Number.isFinite(value)) return\n if (Array.isArray(value)) {\n if (seen.has(value)) throw new Error(`${label} must be JSON-serializable`)\n seen.add(value)\n for (const item of value) assertJsonValue(item, label, seen)\n seen.delete(value)\n return\n }\n if (typeof value === 'object') {\n if (seen.has(value)) throw new Error(`${label} must be JSON-serializable`)\n const prototype = Object.getPrototypeOf(value)\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(`${label} must be JSON-serializable`)\n }\n seen.add(value)\n for (const item of Object.values(value)) assertJsonValue(item, label, seen)\n seen.delete(value)\n return\n }\n throw new Error(`${label} must be JSON-serializable`)\n}\n\nexport function assertNoCredentialValues(\n value: unknown,\n path: string,\n credentialLocation = 'runner.env',\n): void {\n if (Array.isArray(value)) {\n for (const [index, item] of value.entries()) {\n assertNoCredentialValues(item, `${path}[${index}]`, credentialLocation)\n }\n return\n }\n if (!isRecord(value)) return\n for (const [key, item] of Object.entries(value)) {\n if (isCredentialKey(key)) {\n throw new Error(`${path}.${key} must be supplied through ${credentialLocation}`)\n }\n assertNoCredentialValues(item, `${path}.${key}`, credentialLocation)\n }\n}\n\nexport function removeCredentialEnvironment(\n environment: Readonly<Record<string, string | undefined>>,\n): Record<string, string> {\n const sanitized: Record<string, string> = {}\n for (const [key, value] of Object.entries(environment)) {\n if (value !== undefined && !isCredentialKey(key)) sanitized[key] = value\n }\n return sanitized\n}\n\nexport function assertExternalOptimizerModelBudget(\n value: ExternalOptimizerModelBudget,\n label: string,\n): void {\n if (!value || typeof value !== 'object') {\n throw new Error(`${label} is required`)\n }\n for (const [field, entry] of [\n ['maxRequests', value.maxRequests],\n ['maxRequestBytes', value.maxRequestBytes],\n ['maxResponseBytes', value.maxResponseBytes],\n ['maxOutputTokensPerRequest', value.maxOutputTokensPerRequest],\n ] as const) {\n if (!Number.isSafeInteger(entry) || entry <= 0) {\n throw new Error(`${label}.${field} must be a positive safe integer`)\n }\n }\n if (!Number.isFinite(value.maxCostUsd) || value.maxCostUsd <= 0) {\n throw new Error(`${label}.maxCostUsd must be positive and finite`)\n }\n if (\n value.requestTimeoutMs !== undefined &&\n (!Number.isSafeInteger(value.requestTimeoutMs) ||\n value.requestTimeoutMs <= 0 ||\n value.requestTimeoutMs > MAX_TIMER_DELAY_MS)\n ) {\n throw new Error(`${label}.requestTimeoutMs must be between 1 and ${MAX_TIMER_DELAY_MS}`)\n }\n costForTokenPricing(value.pricing, { inputTokens: 1, outputTokens: 1 })\n}\n\nexport function safePathComponent(value: string): string {\n return value.replace(/[^a-zA-Z0-9._-]/g, '_')\n}\n\nfunction isCredentialKey(key: string): boolean {\n const normalized = key\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/-/g, '_')\n .toLowerCase()\n const segments = normalized.split('_')\n return segments.some((segment) =>\n [\n 'auth',\n 'authorization',\n 'cookie',\n 'credential',\n 'credentials',\n 'key',\n 'password',\n 'secret',\n 'session',\n 'token',\n ].includes(segment),\n )\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n","import type { Server, ServerResponse } from 'node:http'\n\nexport function listenLocal(server: Server): Promise<number> {\n return new Promise((resolvePromise, reject) => {\n server.once('error', reject)\n server.listen(0, '127.0.0.1', () => {\n server.off('error', reject)\n const address = server.address()\n if (!address || typeof address === 'string') {\n reject(new Error('external optimizer callback did not bind a TCP port'))\n return\n }\n resolvePromise(address.port)\n })\n })\n}\n\nexport function closeServer(server: Server): Promise<void> {\n return new Promise((resolvePromise, reject) => {\n server.close((error) => (error ? reject(error) : resolvePromise()))\n })\n}\n\nexport function sendJson(response: ServerResponse, status: number, body: unknown): void {\n response.writeHead(status, { 'content-type': 'application/json; charset=utf-8' })\n response.end(JSON.stringify(body))\n}\n","import { randomBytes } from 'node:crypto'\nimport { createServer, type IncomingMessage, type ServerResponse } from 'node:http'\nimport type {\n CostChannel,\n CostLedgerHandle,\n CostReceiptInput,\n CustomTokenPricing,\n} from '../cost-ledger'\nimport { costForTokenPricing } from '../cost-ledger'\nimport {\n assertExternalOptimizerModelBudget,\n type ExternalOptimizerModelBudget,\n type ExternalOptimizerModelProxy,\n isRecord,\n} from './external-optimizer-contracts'\nimport { closeServer, listenLocal, sendJson } from './external-optimizer-http'\n\nconst MODEL_PROXY_PATHS = new Set(['/v1/chat/completions', '/v1/responses'])\n\n/**\n * Backoff before repeating an upstream fetch the provider answered with 429.\n * One admitted request retries at most this many times, each retry consuming\n * one budgeted request slot, before the final 429 is forwarded to the child.\n * Only HTTP 429 is retried: any other status or a transport error keeps\n * failing immediately.\n */\nconst RATE_LIMIT_RETRY_DELAYS_MS = [2_000, 8_000, 30_000] as const\n/** Uniform 0..25% added to each delay so concurrent workers do not resynchronize. */\nconst RATE_LIMIT_RETRY_JITTER_RATIO = 0.25\n\ninterface ProviderProxyResponse {\n status: number\n contentType: string\n body: Uint8Array\n receipt: CostReceiptInput\n usageComplete: boolean\n /** Set when the response violated the output or reasoning limit; forces a 502. */\n usageRejected?: string\n}\n\n/**\n * Put an OpenAI-compatible optimizer behind the shared cost ledger.\n *\n * The child process receives only a loopback URL and an ephemeral token.\n * Provider credentials stay in this process. Every request reserves its\n * conservative byte-count input bound plus the provider-enforced output cap\n * before it leaves the machine.\n */\nexport async function startExternalOptimizerModelProxy(args: {\n upstreamBaseUrl: string\n upstreamApiKey: string\n model: string\n budget: ExternalOptimizerModelBudget\n costLedger: CostLedgerHandle\n phase: string\n actor: string\n /** Cost-ledger channel. Defaults to `optimizer`. */\n channel?: CostChannel\n tags?: Record<string, string>\n initialUsage?: {\n requests: number\n costUsd: number\n }\n fetchImpl?: typeof fetch\n /** Test-only clock injection for rate-limit retry backoff. */\n sleepImpl?: (ms: number, signal: AbortSignal) => Promise<void>\n signal?: AbortSignal\n}): Promise<ExternalOptimizerModelProxy> {\n assertModelProxyConfig(args)\n args.signal?.throwIfAborted()\n const token = randomLocalToken()\n const fetchImpl = args.fetchImpl ?? fetch\n const sleepImpl = args.sleepImpl ?? abortableDelay\n let requestCount = 0\n let successfulCompletionCount = 0\n let rateLimitRetryCount = 0\n let totalRequestCount = args.initialUsage?.requests ?? 0\n let committedForBudget = args.initialUsage?.costUsd ?? 0\n let reservedForBudget = 0\n let accepting = true\n let closePromise: Promise<void> | undefined\n const activeControllers = new Set<AbortController>()\n const activeHandlers = new Set<Promise<void>>()\n\n const server = createServer((request, response) => {\n if (!accepting) {\n sendJsonIfOpen(response, 503, { error: 'external optimizer model proxy is closing' })\n return\n }\n\n const controller = new AbortController()\n const abortRequest = (): void => {\n request.destroy()\n response.destroy()\n }\n activeControllers.add(controller)\n controller.signal.addEventListener('abort', abortRequest, { once: true })\n\n let handler!: Promise<void>\n handler = handleModelProxyRequest({\n request,\n response,\n controller,\n token,\n args,\n fetchImpl,\n nextReservation: (maximumCostUsd) => {\n if (totalRequestCount >= args.budget.maxRequests) {\n return { accepted: false as const, reason: 'optimizer model request limit reached' }\n }\n if (\n committedForBudget + reservedForBudget + maximumCostUsd >\n args.budget.maxCostUsd + Number.EPSILON\n ) {\n return { accepted: false as const, reason: 'optimizer model cost limit reached' }\n }\n requestCount += 1\n totalRequestCount += 1\n reservedForBudget += maximumCostUsd\n return { accepted: true as const }\n },\n settleReservation: (maximumCostUsd, chargedCostUsd) => {\n reservedForBudget = Math.max(0, reservedForBudget - maximumCostUsd)\n committedForBudget += chargedCostUsd\n },\n recordSuccessfulCompletion: () => {\n successfulCompletionCount += 1\n },\n // A retry reuses the admitted request's cost reservation (only one\n // completion returns) but consumes one budgeted request slot, so the\n // maxRequests accounting still counts every upstream fetch.\n tryConsumeRateLimitRetry: () => {\n if (totalRequestCount >= args.budget.maxRequests) return false\n requestCount += 1\n totalRequestCount += 1\n rateLimitRetryCount += 1\n return true\n },\n sleepImpl,\n }).finally(() => {\n controller.signal.removeEventListener('abort', abortRequest)\n activeControllers.delete(controller)\n activeHandlers.delete(handler)\n })\n activeHandlers.add(handler)\n void handler.catch(() => undefined)\n })\n const port = await listenLocal(server)\n const close = (): Promise<void> => {\n closePromise ??= closeModelProxy()\n return closePromise\n }\n const onAbort = (): void => {\n void close().catch(() => undefined)\n }\n args.signal?.addEventListener('abort', onAbort, { once: true })\n if (args.signal?.aborted) onAbort()\n return {\n baseUrl: `http://127.0.0.1:${port}/v1`,\n apiKey: token,\n requestAttempts: () => requestCount,\n successfulCompletions: () => successfulCompletionCount,\n rateLimitRetries: () => rateLimitRetryCount,\n close,\n }\n\n async function closeModelProxy(): Promise<void> {\n args.signal?.removeEventListener('abort', onAbort)\n accepting = false\n const closingServer = closeServer(server)\n server.closeIdleConnections?.()\n for (const controller of activeControllers) controller.abort()\n const [serverResult] = await Promise.allSettled([\n closingServer,\n waitForActiveHandlers(activeHandlers),\n ])\n if (activeControllers.size !== 0 || activeHandlers.size !== 0) {\n throw new Error('external optimizer model proxy closed with active request work')\n }\n if (serverResult?.status === 'rejected') throw serverResult.reason\n }\n}\n\nasync function handleModelProxyRequest(args: {\n request: IncomingMessage\n response: ServerResponse\n controller: AbortController\n token: string\n args: {\n upstreamBaseUrl: string\n upstreamApiKey: string\n model: string\n budget: ExternalOptimizerModelBudget\n costLedger: CostLedgerHandle\n phase: string\n actor: string\n channel?: CostChannel\n tags?: Record<string, string>\n }\n fetchImpl: typeof fetch\n nextReservation: (maximumCostUsd: number) =>\n | { accepted: true }\n | {\n accepted: false\n reason: 'optimizer model request limit reached' | 'optimizer model cost limit reached'\n }\n settleReservation: (maximumCostUsd: number, chargedCostUsd: number) => void\n recordSuccessfulCompletion: () => void\n tryConsumeRateLimitRetry: () => boolean\n sleepImpl: (ms: number, signal: AbortSignal) => Promise<void>\n}): Promise<void> {\n const { controller, request, response } = args\n try {\n const path = request.url ? new URL(request.url, 'http://127.0.0.1').pathname : ''\n if (request.method !== 'POST' || !MODEL_PROXY_PATHS.has(path)) {\n sendJsonIfOpen(response, 404, { error: 'not found' })\n return\n }\n if (request.headers.authorization !== `Bearer ${args.token}`) {\n sendJsonIfOpen(response, 401, { error: 'unauthorized' })\n return\n }\n\n const body = await readBody(request, args.args.budget.maxRequestBytes)\n const parsed = parseModelProxyRequest(body, args.args.model, args.args.budget)\n const maximumUsage = conservativeMaximumUsage(\n body.byteLength,\n parsed.maxOutputTokens + (args.args.budget.maxReasoningTokensPerRequest ?? 0),\n args.args.budget.pricing,\n )\n const maximumCostUsd = costForTokenPricing(args.args.budget.pricing, maximumUsage)\n const reservation = args.nextReservation(maximumCostUsd)\n if (!reservation.accepted) {\n sendJsonIfOpen(response, 429, { error: reservation.reason })\n return\n }\n\n const timeout = setTimeout(\n () => controller.abort(),\n args.args.budget.requestTimeoutMs ?? 300_000,\n )\n let chargedForBudget = maximumCostUsd\n try {\n const paid = await args.args.costLedger.runPaidCall<ProviderProxyResponse>({\n channel: args.args.channel ?? 'optimizer',\n phase: args.args.phase,\n actor: args.args.actor,\n ...(args.args.tags ? { tags: args.args.tags } : {}),\n model: args.args.model,\n maximumCharge: {\n customTokenPricing: args.args.budget.pricing,\n ...maximumUsage,\n },\n execute: async () => {\n // A provider 429 is transient by contract: repeat the same upstream\n // fetch after a jittered backoff, bounded by the retry schedule and\n // the request budget. Every other status and every transport error\n // returns or throws on the first attempt.\n for (let retries = 0; ; retries += 1) {\n const forwarded = await forwardModelProxyRequest({\n fetchImpl: args.fetchImpl,\n upstreamBaseUrl: args.args.upstreamBaseUrl,\n upstreamApiKey: args.args.upstreamApiKey,\n path,\n body,\n model: args.args.model,\n pricing: args.args.budget.pricing,\n maxOutputTokens: parsed.maxOutputTokens,\n ...(args.args.budget.maxReasoningTokensPerRequest === undefined\n ? {}\n : { maxReasoningTokens: args.args.budget.maxReasoningTokensPerRequest }),\n maxResponseBytes: args.args.budget.maxResponseBytes,\n signal: controller.signal,\n })\n if (\n forwarded.status !== 429 ||\n retries >= RATE_LIMIT_RETRY_DELAYS_MS.length ||\n !args.tryConsumeRateLimitRetry()\n ) {\n return forwarded\n }\n const baseDelayMs = RATE_LIMIT_RETRY_DELAYS_MS[retries]!\n await args.sleepImpl(\n Math.round(baseDelayMs * (1 + Math.random() * RATE_LIMIT_RETRY_JITTER_RATIO)),\n controller.signal,\n )\n }\n },\n receipt: (result) => result.receipt,\n receiptFromError: () => ({\n model: args.args.model,\n inputTokens: 0,\n outputTokens: 0,\n costUnknown: true,\n usageUnknown: true,\n }),\n })\n if (!paid.succeeded) {\n chargedForBudget = paid.receipt\n ? paid.receipt.usageUnknown || paid.receipt.costUnknown\n ? maximumCostUsd\n : paid.receipt.costUsd\n : 0\n sendJsonIfOpen(\n response,\n isAbortError(paid.error)\n ? 504\n : paid.error instanceof ProviderResponseTooLargeError\n ? 502\n : 429,\n { error: paid.error.message },\n )\n return\n }\n chargedForBudget = paid.value.usageComplete ? paid.receipt.costUsd : maximumCostUsd\n // A response that violated the output or reasoning limit is rejected. A\n // response the provider merely under-reported is forwarded with its cost\n // charged at the reservation maximum, so the analysis keeps its usable\n // completion and the ledger holds an honest upper-bound charge.\n if (paid.value.usageRejected) {\n sendJsonIfOpen(response, 502, { error: paid.value.usageRejected })\n return\n }\n if (paid.value.status >= 200 && paid.value.status < 300) {\n args.recordSuccessfulCompletion()\n }\n if (response.destroyed || response.writableEnded) return\n response.writeHead(paid.value.status, {\n 'content-type': paid.value.contentType,\n 'content-length': String(paid.value.body.byteLength),\n })\n response.end(paid.value.body)\n } finally {\n clearTimeout(timeout)\n args.settleReservation(maximumCostUsd, chargedForBudget)\n }\n } catch (error) {\n const status =\n error instanceof RequestBodyTooLargeError\n ? 413\n : error instanceof Error && isAbortError(error)\n ? 503\n : 400\n sendJsonIfOpen(response, status, { error: toErrorMessage(error) })\n }\n}\n\nasync function waitForActiveHandlers(activeHandlers: Set<Promise<void>>): Promise<void> {\n while (activeHandlers.size > 0) {\n await Promise.allSettled([...activeHandlers])\n }\n}\n\nfunction sendJsonIfOpen(response: ServerResponse, status: number, body: unknown): void {\n if (response.destroyed || response.writableEnded) return\n sendJson(response, status, body)\n}\n\nasync function forwardModelProxyRequest(args: {\n fetchImpl: typeof fetch\n upstreamBaseUrl: string\n upstreamApiKey: string\n path: string\n body: Uint8Array\n model: string\n pricing: CustomTokenPricing\n maxOutputTokens: number\n /** Enforced only when the caller declared a thinking budget. */\n maxReasoningTokens?: number\n maxResponseBytes: number\n signal: AbortSignal\n}): Promise<ProviderProxyResponse> {\n const upstream = modelProxyUpstreamUrl(args.upstreamBaseUrl, args.path)\n const response = await args.fetchImpl(upstream, {\n method: 'POST',\n headers: {\n authorization: `Bearer ${args.upstreamApiKey}`,\n 'content-type': 'application/json',\n },\n body: args.body.buffer.slice(\n args.body.byteOffset,\n args.body.byteOffset + args.body.byteLength,\n ) as ArrayBuffer,\n signal: args.signal,\n redirect: 'error',\n })\n const body = await readProviderResponseBody(response, args.maxResponseBytes)\n const usage = parseProviderUsage(body)\n const successful = response.status >= 200 && response.status < 300\n const zeroUsage =\n successful &&\n usage !== undefined &&\n usage.inputTokens +\n usage.outputTokens +\n (usage.cachedTokens ?? 0) +\n (usage.cacheWriteTokens ?? 0) ===\n 0\n // `outputTokens` carries reasoning tokens as a subset, and a reasoning model\n // bounds only the completion by the requested limit. Charging the whole\n // output against that limit rejects every ordinary response such a model\n // returns, so the guard measures the completion it actually governs.\n const completionTokens =\n usage === undefined ? 0 : usage.outputTokens - (usage.reasoningTokens ?? 0)\n const reasoningTokens = usage?.reasoningTokens ?? 0\n // A response that exceeds the requested output or the declared reasoning\n // budget violated the contract and is rejected. A response whose usage the\n // provider merely omitted is forwarded with its cost flagged: the completion\n // is still usable, and refusing it would fail a case over a reporting gap.\n const usageRejected =\n successful && usage !== undefined && completionTokens > args.maxOutputTokens\n ? `optimizer model provider reported ${completionTokens} completion tokens, exceeding requested limit ${args.maxOutputTokens}`\n : successful &&\n args.maxReasoningTokens !== undefined &&\n reasoningTokens > args.maxReasoningTokens\n ? `optimizer model provider reported ${reasoningTokens} reasoning tokens, exceeding the declared budget ${args.maxReasoningTokens}`\n : undefined\n return {\n status: response.status,\n contentType: response.headers.get('content-type') ?? 'application/json',\n body,\n receipt:\n usage && !zeroUsage\n ? {\n model: args.model,\n ...usage,\n ...(usage.actualCostUsd === undefined ? { customTokenPricing: args.pricing } : {}),\n }\n : {\n model: args.model,\n inputTokens: 0,\n outputTokens: 0,\n costUnknown: true,\n usageUnknown: true,\n },\n usageComplete: usage !== undefined && !zeroUsage,\n ...(usageRejected ? { usageRejected } : {}),\n }\n}\n\nfunction parseModelProxyRequest(\n body: Uint8Array,\n expectedModel: string,\n budget: ExternalOptimizerModelBudget,\n): { maxOutputTokens: number } {\n let value: unknown\n try {\n value = JSON.parse(Buffer.from(body).toString('utf8'))\n } catch {\n throw new Error('optimizer model request must be valid JSON')\n }\n if (!isRecord(value)) throw new Error('optimizer model request must be a JSON object')\n if (value.model !== expectedModel) {\n throw new Error(`optimizer model request must use configured model '${expectedModel}'`)\n }\n if (value.stream !== undefined && value.stream !== false) {\n throw new Error('streaming optimizer model requests are not supported')\n }\n for (const field of ['n', 'best_of', 'candidate_count', 'num_candidates'] as const) {\n if (value[field] !== undefined && value[field] !== 1) {\n throw new Error(`optimizer model request ${field} must be 1 when supplied`)\n }\n }\n const suppliedMaximums = [\n value.max_output_tokens,\n value.max_completion_tokens,\n value.max_tokens,\n ].filter((maximum) => maximum !== undefined)\n if (\n suppliedMaximums.length === 0 ||\n suppliedMaximums.some((maximum) => !Number.isSafeInteger(maximum) || (maximum as number) <= 0)\n ) {\n throw new Error('optimizer model request requires a positive output-token limit')\n }\n const maxOutputTokens = Math.max(...(suppliedMaximums as number[]))\n if (maxOutputTokens > budget.maxOutputTokensPerRequest) {\n throw new Error('optimizer model request exceeds maxOutputTokensPerRequest')\n }\n return { maxOutputTokens }\n}\n\n/**\n * Resolve the upstream URL the way an OpenAI-compatible client does.\n *\n * This proxy exposes `/v1/...` to its child for client compatibility. Whether\n * that prefix belongs upstream depends on the caller's base URL: a base that\n * already names a version segment (`/v1`, `/api/coding/paas/v4`) receives only\n * the endpoint, and a base without one receives the whole versioned path.\n * Forwarding the prefix unconditionally produced `/v4/v1/chat/completions`,\n * which providers answer with 404.\n */\nfunction modelProxyUpstreamUrl(baseUrl: string, requestPath: string): string {\n const upstream = new URL(baseUrl)\n const basePath = upstream.pathname.replace(/\\/+$/, '')\n const lastSegment = basePath.split('/').at(-1) ?? ''\n const baseNamesVersion = /^v\\d+/.test(lastSegment)\n const suffix = baseNamesVersion ? requestPath.replace(/^\\/v1(?=\\/)/, '') : requestPath\n upstream.pathname = `${basePath}${suffix}`\n return upstream.toString()\n}\n\nfunction parseProviderUsage(\n body: Uint8Array,\n):\n | Omit<CostReceiptInput, 'model' | 'customTokenPricing' | 'costUnknown' | 'usageUnknown'>\n | undefined {\n let value: unknown\n try {\n value = JSON.parse(Buffer.from(body).toString('utf8'))\n } catch {\n return undefined\n }\n if (!isRecord(value) || !isRecord(value.usage)) return undefined\n const usage = value.usage\n const totalInputTokens = usage.input_tokens ?? usage.prompt_tokens\n const outputTokens = usage.output_tokens ?? usage.completion_tokens\n if (\n !Number.isSafeInteger(totalInputTokens) ||\n (totalInputTokens as number) < 0 ||\n !Number.isSafeInteger(outputTokens) ||\n (outputTokens as number) < 0\n ) {\n return undefined\n }\n const inputDetails = isRecord(usage.input_tokens_details)\n ? usage.input_tokens_details\n : isRecord(usage.prompt_tokens_details)\n ? usage.prompt_tokens_details\n : {}\n const outputDetails = isRecord(usage.output_tokens_details)\n ? usage.output_tokens_details\n : isRecord(usage.completion_tokens_details)\n ? usage.completion_tokens_details\n : {}\n const cachedTokens = optionalTokenCount(inputDetails, [\n 'cached_tokens',\n 'cache_read_tokens',\n 'cache_read_input_tokens',\n ])\n const cacheWriteTokens = optionalTokenCount(inputDetails, [\n 'cache_write_tokens',\n 'cache_creation_tokens',\n 'cache_creation_input_tokens',\n ])\n const reasoningTokens = optionalTokenCount(outputDetails, ['reasoning_tokens'])\n const actualCostUsd =\n typeof usage.cost === 'number' && Number.isFinite(usage.cost) && usage.cost >= 0\n ? usage.cost\n : undefined\n if (\n cachedTokens === INVALID_TOKEN_COUNT ||\n cacheWriteTokens === INVALID_TOKEN_COUNT ||\n reasoningTokens === INVALID_TOKEN_COUNT\n ) {\n return undefined\n }\n const classifiedInputTokens = (cachedTokens ?? 0) + (cacheWriteTokens ?? 0)\n if (\n classifiedInputTokens > (totalInputTokens as number) ||\n (reasoningTokens ?? 0) > (outputTokens as number)\n ) {\n return undefined\n }\n return {\n inputTokens: (totalInputTokens as number) - classifiedInputTokens,\n outputTokens: outputTokens as number,\n ...(cachedTokens === undefined ? {} : { cachedTokens }),\n ...(cacheWriteTokens === undefined ? {} : { cacheWriteTokens }),\n ...(reasoningTokens === undefined ? {} : { reasoningTokens }),\n ...(actualCostUsd === undefined ? {} : { actualCostUsd }),\n }\n}\n\nconst INVALID_TOKEN_COUNT = Symbol('invalid-token-count')\n\nfunction optionalTokenCount(\n details: Record<string, unknown>,\n fields: readonly string[],\n): number | undefined | typeof INVALID_TOKEN_COUNT {\n let found: number | undefined\n for (const field of fields) {\n const value = details[field]\n if (value === undefined || value === null) continue\n if (!Number.isSafeInteger(value) || (value as number) < 0) return INVALID_TOKEN_COUNT\n if (found !== undefined && found !== value) return INVALID_TOKEN_COUNT\n found = value as number\n }\n return found\n}\n\nfunction conservativeMaximumUsage(\n inputTokenUpperBound: number,\n outputTokenUpperBound: number,\n pricing: CustomTokenPricing,\n): Pick<CostReceiptInput, 'inputTokens' | 'outputTokens' | 'cachedTokens' | 'cacheWriteTokens'> {\n const inputRates = [\n pricing.inputUsdPerMillion,\n pricing.cachedInputUsdPerMillion ?? pricing.inputUsdPerMillion,\n pricing.cacheWriteUsdPerMillion ?? pricing.inputUsdPerMillion,\n ]\n const mostExpensiveInputClass = inputRates.indexOf(Math.max(...inputRates))\n return {\n inputTokens: mostExpensiveInputClass === 0 ? inputTokenUpperBound : 0,\n ...(mostExpensiveInputClass === 1 ? { cachedTokens: inputTokenUpperBound } : {}),\n ...(mostExpensiveInputClass === 2 ? { cacheWriteTokens: inputTokenUpperBound } : {}),\n outputTokens: outputTokenUpperBound,\n }\n}\n\nasync function readProviderResponseBody(response: Response, maxBytes: number): Promise<Uint8Array> {\n const declaredLength = response.headers.get('content-length')\n if (declaredLength !== null) {\n const parsedLength = Number(declaredLength)\n if (Number.isFinite(parsedLength) && parsedLength > maxBytes) {\n throw new ProviderResponseTooLargeError()\n }\n }\n if (!response.body) return new Uint8Array()\n\n const reader = response.body.getReader()\n const chunks: Uint8Array[] = []\n let totalBytes = 0\n try {\n while (true) {\n const next = await reader.read()\n if (next.done) break\n totalBytes += next.value.byteLength\n if (totalBytes > maxBytes) {\n await reader.cancel()\n throw new ProviderResponseTooLargeError()\n }\n chunks.push(next.value)\n }\n } finally {\n reader.releaseLock()\n }\n\n const body = new Uint8Array(totalBytes)\n let offset = 0\n for (const chunk of chunks) {\n body.set(chunk, offset)\n offset += chunk.byteLength\n }\n return body\n}\n\nfunction assertModelProxyConfig(args: {\n upstreamBaseUrl: string\n upstreamApiKey: string\n model: string\n budget: ExternalOptimizerModelBudget\n phase: string\n actor: string\n tags?: Record<string, string>\n initialUsage?: {\n requests: number\n costUsd: number\n }\n}): void {\n for (const [label, value] of [\n ['upstreamBaseUrl', args.upstreamBaseUrl],\n ['upstreamApiKey', args.upstreamApiKey],\n ['model', args.model],\n ['phase', args.phase],\n ['actor', args.actor],\n ] as const) {\n if (typeof value !== 'string' || !value.trim() || value.trim() !== value) {\n throw new Error(`external optimizer model proxy: ${label} must be trimmed and non-empty`)\n }\n }\n let parsed: URL\n try {\n parsed = new URL(args.upstreamBaseUrl)\n } catch {\n throw new Error('external optimizer model proxy: upstreamBaseUrl must be an HTTP(S) URL')\n }\n if (\n (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') ||\n parsed.username ||\n parsed.password ||\n parsed.search ||\n parsed.hash\n ) {\n throw new Error(\n 'external optimizer model proxy: upstreamBaseUrl must be an HTTP(S) URL without credentials, query, or fragment',\n )\n }\n assertExternalOptimizerModelBudget(args.budget, 'external optimizer model proxy: budget')\n if (args.tags !== undefined) {\n for (const [key, value] of Object.entries(args.tags)) {\n if (!key.trim() || key.trim() !== key || !value.trim() || value.trim() !== value) {\n throw new Error('external optimizer model proxy: tags must be trimmed and non-empty')\n }\n }\n }\n if (args.initialUsage !== undefined) {\n if (\n !Number.isSafeInteger(args.initialUsage.requests) ||\n args.initialUsage.requests < 0 ||\n !Number.isFinite(args.initialUsage.costUsd) ||\n args.initialUsage.costUsd < 0\n ) {\n throw new Error(\n 'external optimizer model proxy: initialUsage must contain non-negative requests and cost',\n )\n }\n if (\n args.initialUsage.requests > args.budget.maxRequests ||\n args.initialUsage.costUsd > args.budget.maxCostUsd + Number.EPSILON\n ) {\n throw new Error('external optimizer model proxy: initialUsage exceeds the configured budget')\n }\n }\n}\n\nclass RequestBodyTooLargeError extends Error {}\n\nclass ProviderResponseTooLargeError extends Error {\n constructor() {\n super('optimizer model response exceeds maxResponseBytes')\n }\n}\n\nfunction readBody(request: IncomingMessage, maximumBytes: number): Promise<Uint8Array> {\n return new Promise((resolvePromise, reject) => {\n let size = 0\n let tooLarge = false\n const chunks: Buffer[] = []\n request.on('data', (chunk: Buffer) => {\n if (tooLarge) return\n size += chunk.byteLength\n if (size > maximumBytes) {\n tooLarge = true\n chunks.length = 0\n return\n }\n chunks.push(chunk)\n })\n request.on('error', reject)\n request.on('end', () => {\n if (tooLarge) {\n reject(new RequestBodyTooLargeError('optimizer model request body too large'))\n return\n }\n resolvePromise(new Uint8Array(Buffer.concat(chunks)))\n })\n })\n}\n\nfunction randomLocalToken(): string {\n return randomBytes(32).toString('hex')\n}\n\nfunction abortableDelay(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n const abortError = (): Error =>\n signal.reason instanceof Error\n ? signal.reason\n : new Error('optimizer model retry backoff aborted')\n if (signal.aborted) {\n reject(abortError())\n return\n }\n const onAbort = (): void => {\n clearTimeout(timer)\n reject(abortError())\n }\n const timer = setTimeout(() => {\n signal.removeEventListener('abort', onAbort)\n resolve()\n }, ms)\n signal.addEventListener('abort', onAbort, { once: true })\n })\n}\n\nfunction isAbortError(error: Error): boolean {\n return error.name === 'AbortError' || error.message.toLowerCase().includes('abort')\n}\n\nfunction toErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n","import type {\n ExternalOptimizerCallback,\n ExternalOptimizerModelProxy,\n} from './external-optimizer-contracts'\n\nexport async function runWithCleanup<T>(args: {\n label: string\n run: () => Promise<T>\n cleanup: () => Promise<void>\n}): Promise<T> {\n let value: T | undefined\n let operationError: Error | undefined\n try {\n value = await args.run()\n } catch (cause) {\n operationError = toError(cause)\n }\n\n let cleanupError: Error | undefined\n try {\n await args.cleanup()\n } catch (cause) {\n cleanupError = toError(cause)\n }\n\n if (operationError && cleanupError) {\n throw new AggregateError(\n [operationError, cleanupError],\n `${operationError.message}; ${args.label} cleanup failed: ${cleanupError.message}`,\n )\n }\n if (operationError) throw operationError\n if (cleanupError) {\n throw new Error(`${args.label} cleanup failed: ${cleanupError.message}`, {\n cause: cleanupError,\n })\n }\n return value as T\n}\n\nexport async function closeExternalOptimizerResources(args: {\n label: string\n callback: ExternalOptimizerCallback\n modelProxy?: ExternalOptimizerModelProxy\n}): Promise<void> {\n const results = await Promise.allSettled([\n ...(args.modelProxy ? [args.modelProxy.close()] : []),\n args.callback.close(),\n ])\n const errors = results.flatMap((result) => (result.status === 'rejected' ? [result.reason] : []))\n if (errors.length > 0) {\n throw new AggregateError(errors, `${args.label}: failed to close optimizer resources`)\n }\n}\n\nfunction toError(cause: unknown): Error {\n return cause instanceof Error ? cause : new Error(String(cause))\n}\n","import { type ChildProcess, spawn } from 'node:child_process'\nimport { lstat, mkdtemp, open, rm, writeFile } from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport { isAbsolute, join, resolve } from 'node:path'\nimport { type ExternalOptimizerRunnerCommand, isRecord } from './external-optimizer-contracts'\nimport { runWithCleanup } from './external-optimizer-resources'\n\nconst MAX_PROCESS_OUTPUT_CHARS = 64_000\nconst MAX_PROCESS_INPUT_BYTES = 64 * 1024 * 1024\nconst MAX_PROCESS_RESULT_BYTES = 4 * 1024 * 1024\nconst PROCESS_TERMINATION_GRACE_MS = 5_000\nconst PROCESS_TERMINATION_POLL_MS = 25\nconst PROCESS_KILL_WAIT_MS = 1_000\nconst MAX_TIMER_DELAY_MS = 2_147_483_647\nconst PROCESS_OUTPUT_HEAD_CHARS = MAX_PROCESS_OUTPUT_CHARS / 2\nconst PROCESS_OUTPUT_TAIL_CHARS = MAX_PROCESS_OUTPUT_CHARS - PROCESS_OUTPUT_HEAD_CHARS\n\ninterface ProcessOutputCapture {\n full: string | undefined\n head: string\n tail: string\n totalChars: number\n}\n\nexport async function runExternalOptimizerProcess<TOutput>(args: {\n label: string\n tempPrefix: string\n module: string\n input: unknown\n runner?: ExternalOptimizerRunnerCommand\n timeoutMs: number\n signal?: AbortSignal\n}): Promise<TOutput> {\n if (\n !Number.isSafeInteger(args.timeoutMs) ||\n args.timeoutMs <= 0 ||\n args.timeoutMs > MAX_TIMER_DELAY_MS\n ) {\n throw new Error(`${args.label} timeoutMs must be between 1 and ${MAX_TIMER_DELAY_MS}`)\n }\n if (process.platform === 'win32') {\n throw new Error(\n `${args.label} requires POSIX process-group cleanup; run the optimizer through WSL or Linux`,\n )\n }\n throwIfAborted(args.signal, args.label)\n const dir = await mkdtemp(join(tmpdir(), args.tempPrefix))\n const inputPath = join(dir, 'input.json')\n const outputPath = join(dir, 'output.json')\n return runWithCleanup({\n label: `${args.label} temporary directory`,\n run: async () => {\n const serializedInput = JSON.stringify(args.input)\n if (serializedInput === undefined) {\n throw new Error(`${args.label} input must be JSON-serializable`)\n }\n const inputJson = `${serializedInput}\\n`\n const inputBytes = Buffer.byteLength(inputJson)\n if (inputBytes > MAX_PROCESS_INPUT_BYTES) {\n throw new Error(\n `${args.label} input exceeds ${MAX_PROCESS_INPUT_BYTES} bytes (${inputBytes})`,\n )\n }\n await writeFile(inputPath, inputJson)\n const command = resolveRunnerCommand(args.runner?.command ?? 'python')\n const commandArgs = [\n ...(args.runner?.args ?? ['-m', args.module]),\n '--input',\n inputPath,\n '--output',\n outputPath,\n ]\n await runProcess({\n label: args.label,\n command,\n args: commandArgs,\n cwd: dir,\n env: args.runner?.env,\n timeoutMs: args.timeoutMs,\n signal: args.signal,\n })\n throwIfAborted(args.signal, args.label)\n const raw = JSON.parse(\n await readBoundedTextFile(outputPath, MAX_PROCESS_RESULT_BYTES, `${args.label} output`),\n ) as unknown\n throwIfAborted(args.signal, args.label)\n if (!isRecord(raw)) throw new Error(`${args.label} output must be a JSON object`)\n return raw as TOutput\n },\n cleanup: () => rm(dir, { recursive: true, force: true }),\n })\n}\n\nfunction resolveRunnerCommand(command: string): string {\n if (isAbsolute(command) || (!command.includes('/') && !command.includes('\\\\'))) return command\n return resolve(command)\n}\n\nasync function readBoundedTextFile(path: string, maxBytes: number, label: string): Promise<string> {\n const entry = await lstat(path)\n if (!entry.isFile()) throw new Error(`${label} must be a regular file`)\n const file = await open(path, 'r')\n try {\n const buffer = Buffer.allocUnsafe(maxBytes + 1)\n let bytesRead = 0\n while (bytesRead < buffer.byteLength) {\n const chunk = await file.read(buffer, bytesRead, buffer.byteLength - bytesRead, bytesRead)\n if (chunk.bytesRead === 0) break\n bytesRead += chunk.bytesRead\n }\n if (bytesRead > maxBytes) {\n throw new Error(`${label} exceeds ${maxBytes} bytes`)\n }\n return buffer.subarray(0, bytesRead).toString('utf8')\n } finally {\n await file.close()\n }\n}\n\nfunction runProcess(args: {\n label: string\n command: string\n args: string[]\n cwd: string | undefined\n env: NodeJS.ProcessEnv | undefined\n timeoutMs: number\n signal: AbortSignal | undefined\n}): Promise<void> {\n throwIfAborted(args.signal, args.label)\n return new Promise((resolvePromise, reject) => {\n const child = spawn(args.command, args.args, {\n cwd: args.cwd,\n env: { ...safeProcessEnvironment(), ...args.env },\n stdio: ['ignore', 'pipe', 'pipe'],\n detached: process.platform !== 'win32',\n windowsHide: true,\n })\n const stdout = createProcessOutputCapture()\n const stderr = createProcessOutputCapture()\n let settled = false\n let timeout: NodeJS.Timeout | undefined\n const onAbort = () => finish(abortReason(args.signal!, args.label))\n const finish = (error?: Error) => {\n if (settled) return\n settled = true\n if (timeout) clearTimeout(timeout)\n args.signal?.removeEventListener('abort', onAbort)\n void terminateProcessTree(child).then(\n () => {\n if (error) reject(error)\n else resolvePromise()\n },\n (cleanupError: unknown) => {\n if (error) {\n const cleanup =\n cleanupError instanceof Error ? cleanupError : new Error(String(cleanupError))\n reject(\n new AggregateError(\n [error, cleanup],\n `${error.message}; ${args.label} process cleanup failed: ${cleanup.message}`,\n ),\n )\n return\n }\n reject(\n new Error(\n `${args.label} process cleanup failed: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}`,\n ),\n )\n },\n )\n }\n timeout = setTimeout(() => {\n finish(new Error(`${args.label} exceeded ${args.timeoutMs}ms`))\n }, args.timeoutMs)\n args.signal?.addEventListener('abort', onAbort, { once: true })\n if (args.signal?.aborted) onAbort()\n child.stdout.on('data', (chunk: Buffer) => {\n appendProcessOutput(stdout, chunk)\n })\n child.stderr.on('data', (chunk: Buffer) => {\n appendProcessOutput(stderr, chunk)\n })\n child.on('error', (error) => {\n finish(new Error(`${args.label} could not start: ${error.message}`))\n })\n child.on('close', (code) => {\n if (code === 0) {\n finish()\n return\n }\n finish(\n new Error(\n `${args.label} exited ${String(code)}. stderr=${summarizeProcessOutput(stderr)} stdout=${summarizeProcessOutput(stdout)}`,\n ),\n )\n })\n })\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined, label: string): void {\n if (signal?.aborted) throw abortReason(signal, label)\n}\n\nfunction abortReason(signal: AbortSignal, label: string): Error {\n return signal.reason instanceof Error\n ? signal.reason\n : new Error(`${label} aborted`, { cause: signal.reason })\n}\n\nfunction safeProcessEnvironment(): NodeJS.ProcessEnv {\n const allowed = [\n 'PATH',\n 'HOME',\n 'USER',\n 'LOGNAME',\n 'SHELL',\n 'TMPDIR',\n 'TMP',\n 'TEMP',\n 'LANG',\n 'LANGUAGE',\n 'LC_ALL',\n 'VIRTUAL_ENV',\n 'PYTHONPATH',\n 'SYSTEMROOT',\n 'COMSPEC',\n 'PATHEXT',\n 'WINDIR',\n ] as const\n return Object.fromEntries(\n allowed.flatMap((name) => {\n const value = process.env[name]\n return value === undefined ? [] : [[name, value]]\n }),\n )\n}\n\nasync function terminateProcessTree(child: ChildProcess): Promise<void> {\n const pid = child.pid\n if (!pid) return\n if (process.platform === 'win32') {\n throw new Error('native Windows process-tree cleanup is unsupported')\n }\n\n if (!signalProcessGroup(pid, 'SIGTERM')) return\n if (await waitForProcessGroupExit(pid, PROCESS_TERMINATION_GRACE_MS)) return\n if (!signalProcessGroup(pid, 'SIGKILL')) return\n if (await waitForProcessGroupExit(pid, PROCESS_KILL_WAIT_MS)) return\n throw new Error(`process group ${pid} remained alive after SIGKILL`)\n}\n\nfunction signalProcessGroup(pid: number, signal: NodeJS.Signals): boolean {\n try {\n process.kill(-pid, signal)\n return true\n } catch (error) {\n if (isMissingProcessError(error)) return false\n throw error\n }\n}\n\nasync function waitForProcessGroupExit(pid: number, timeoutMs: number): Promise<boolean> {\n const deadline = Date.now() + timeoutMs\n while (processGroupExists(pid)) {\n const remainingMs = deadline - Date.now()\n if (remainingMs <= 0) return false\n await new Promise((resolve) =>\n setTimeout(resolve, Math.min(PROCESS_TERMINATION_POLL_MS, remainingMs)),\n )\n }\n return true\n}\n\nfunction processGroupExists(pid: number): boolean {\n try {\n process.kill(-pid, 0)\n return true\n } catch (error) {\n if (isMissingProcessError(error)) return false\n throw error\n }\n}\n\nfunction isMissingProcessError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code?: unknown }).code === 'ESRCH'\n )\n}\n\nfunction createProcessOutputCapture(): ProcessOutputCapture {\n return { full: '', head: '', tail: '', totalChars: 0 }\n}\n\nfunction appendProcessOutput(capture: ProcessOutputCapture, chunk: Buffer): void {\n const text = chunk.toString()\n capture.totalChars += text.length\n if (capture.full !== undefined) {\n const combined = `${capture.full}${text}`\n if (combined.length <= MAX_PROCESS_OUTPUT_CHARS) {\n capture.full = combined\n return\n }\n capture.head = combined.slice(0, PROCESS_OUTPUT_HEAD_CHARS)\n capture.tail = combined.slice(-PROCESS_OUTPUT_TAIL_CHARS)\n capture.full = undefined\n return\n }\n capture.tail = `${capture.tail}${text}`.slice(-PROCESS_OUTPUT_TAIL_CHARS)\n}\n\nfunction summarizeProcessOutput(capture: ProcessOutputCapture, max = 4_000): string {\n const raw =\n capture.full ??\n `${capture.head}\\n...[${capture.totalChars - capture.head.length - capture.tail.length} chars omitted]...\\n${capture.tail}`\n const compact = raw.trim().replace(/\\s+/g, ' ')\n if (compact.length <= max) return compact\n const headChars = Math.floor(max / 3)\n const tailChars = max - headChars\n return `${compact.slice(0, headChars)}...[${compact.length - max} chars omitted]...${compact.slice(-tailChars)}`\n}\n","import { ValidationError } from '../errors'\n\n/** Base error for invalid search-ledger input or operations. */\nexport class SearchLedgerError extends ValidationError {}\n\n/** Error raised when durable search-ledger data fails an integrity check. */\nexport class SearchLedgerIntegrityError extends SearchLedgerError {}\n\n/** Error raised when an event identifier is reused with different content. */\nexport class SearchLedgerConflictError extends SearchLedgerError {}\n","/** Campaign binding of the generic journal file layer to search-ledger errors. */\n\nimport {\n appendLedgerLine,\n type FileLockResult,\n type LedgerFileContext,\n tryWithLedgerFileLock,\n withLedgerFileLock,\n} from '../ledger-core'\nimport { SearchLedgerIntegrityError } from './search-ledger-errors'\n\nexport const SEARCH_LEDGER_FILE_CONTEXT: LedgerFileContext = {\n subject: 'search ledger',\n integrityError: (message, options) => new SearchLedgerIntegrityError(message, options),\n}\n\nexport function appendSearchLedgerLine(path: string, line: string): void {\n appendLedgerLine(path, line, SEARCH_LEDGER_FILE_CONTEXT)\n}\n\nexport function withSearchLedgerFileLock<T>(ledgerPath: string, run: () => T): T {\n return withLedgerFileLock(ledgerPath, SEARCH_LEDGER_FILE_CONTEXT, run)\n}\n\nexport type { FileLockResult }\n\nexport function tryWithSearchLedgerFileLock<T>(\n ledgerPath: string,\n run: () => T,\n): FileLockResult<T> {\n return tryWithLedgerFileLock(ledgerPath, SEARCH_LEDGER_FILE_CONTEXT, run)\n}\n","import { createRequire } from 'node:module'\nimport { join } from 'node:path'\nimport { CostLedger } from '../cost-ledger'\nimport { appendSearchLedgerLine, tryWithSearchLedgerFileLock } from './search-ledger-file'\n\n/**\n * `CampaignStorage` — the filesystem seam `runCampaign` writes through\n * (run/cell dirs, the resumability cache, per-cell artifacts, trace spans).\n *\n * The default (`fsCampaignStorage`) is the Node filesystem — identical\n * behavior to the inline `node:fs` calls it replaces, so existing CLI\n * consumers are unaffected. `inMemoryCampaignStorage` keeps everything in a\n * `Map`, so the substrate runs in environments WITHOUT a filesystem\n * (Cloudflare Workers, Deno Deploy, other edge runtimes) — the campaign\n * still produces its `CampaignResult` (cells + aggregates) in memory;\n * artifacts/traces simply aren't persisted to disk.\n *\n * Paths are opaque keys to the in-memory adapter — it does not parse them,\n * so the same `join(...)`-built paths work unchanged across both adapters.\n */\nexport interface CampaignStorage {\n /** Ensure a directory exists (recursive). No-op for in-memory. */\n ensureDir(dir: string): void\n /** Does this path exist (as a written file or an ensured dir)? */\n exists(path: string): boolean\n /** Read a UTF-8 file; `undefined` when missing or unreadable. */\n read(path: string): string | undefined\n /** Write a file (string or bytes). Parent dir is assumed ensured. */\n write(path: string, content: string | Uint8Array): void\n /** Append only when the current UTF-8 byte length matches `expectedBytes`.\n * Returns the new length, or undefined when another writer won. */\n append(path: string, content: string, expectedBytes: number): number | undefined\n}\n\n/** Node-filesystem storage — the default. Lazily requires `node:fs` so the\n * module imports cleanly in non-Node runtimes (where the caller passes\n * `inMemoryCampaignStorage` instead and never constructs this).\n *\n * `createRequire(import.meta.url)` is the ESM-native lazy require — a bare\n * `require` is a ReferenceError under `\"type\": \"module\"`, which is exactly\n * the shape this package publishes. */\nexport function fsCampaignStorage(): CampaignStorage {\n const nodeRequire = createRequire(import.meta.url)\n const { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } = nodeRequire(\n 'node:fs',\n ) as typeof import('node:fs')\n return {\n ensureDir(dir) {\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n },\n exists(path) {\n return existsSync(path)\n },\n read(path) {\n try {\n return readFileSync(path, 'utf8')\n } catch {\n return undefined\n }\n },\n write(path, content) {\n writeFileSync(path, content as Uint8Array)\n },\n append(path, content, expectedBytes) {\n const result = tryWithSearchLedgerFileLock(path, () => {\n let actualBytes = 0\n try {\n actualBytes = statSync(path).size\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error\n }\n if (actualBytes !== expectedBytes) return undefined\n appendSearchLedgerLine(path, content)\n return expectedBytes + Buffer.byteLength(content)\n })\n return result.acquired ? result.value : undefined\n },\n }\n}\n\n/** In-memory storage for filesystem-less runtimes. Artifacts + trace spans\n * live in a `Map` for the duration of the run; the `CampaignResult` is\n * fully populated, but nothing is persisted to disk. */\nexport function inMemoryCampaignStorage(): CampaignStorage {\n const files = new Map<string, string | Uint8Array>()\n const dirs = new Set<string>()\n return {\n ensureDir(dir) {\n dirs.add(dir)\n },\n exists(path) {\n return files.has(path) || dirs.has(path)\n },\n read(path) {\n const value = files.get(path)\n if (value === undefined) return undefined\n return typeof value === 'string' ? value : new TextDecoder().decode(value)\n },\n write(path, content) {\n files.set(path, content)\n },\n append(path, content, expectedBytes) {\n const current = files.get(path)\n const currentText =\n current === undefined\n ? ''\n : typeof current === 'string'\n ? current\n : new TextDecoder().decode(current)\n const currentBytes = new TextEncoder().encode(currentText).byteLength\n if (currentBytes !== expectedBytes) return undefined\n files.set(path, `${currentText}${content}`)\n return currentBytes + new TextEncoder().encode(content).byteLength\n },\n }\n}\n\n/** Open the durable spend account stored beside a logical run. */\nexport function createRunCostLedger(input: {\n storage: CampaignStorage\n runDir: string\n costCeilingUsd?: number\n /** Set false for read-only inspection that must not create the run directory. */\n ensureRunDir?: boolean\n}): CostLedger {\n const path = join(input.runDir, 'cost-ledger.jsonl')\n if (input.ensureRunDir ?? true) input.storage.ensureDir(input.runDir)\n return new CostLedger({\n costCeilingUsd: input.costCeilingUsd,\n persistence: {\n read: () => {\n const stored = input.storage.read(path)\n if (stored === undefined && input.storage.exists(path)) {\n throw new Error(`CostLedger: cannot read existing event log '${path}'`)\n }\n const events = stored ?? ''\n return {\n revision: String(new TextEncoder().encode(events).byteLength),\n events,\n }\n },\n append: (expectedRevision, event) => {\n const expectedBytes = Number(expectedRevision)\n if (!Number.isSafeInteger(expectedBytes) || expectedBytes < 0) {\n throw new Error(`CostLedger: invalid storage revision '${expectedRevision}'`)\n }\n const next = input.storage.append(path, event, expectedBytes)\n return next === undefined ? undefined : String(next)\n },\n },\n })\n}\n","/**\n * Single-run lock for evaluations that share one mutable environment.\n *\n * Two concurrent runs against a shared stateful gym silently corrupt each\n * other: each resets/mutates environment state mid-cell of the other, and\n * every score from both becomes garbage that LOOKS like worker variance\n * (agent-lab R357 burned hours on flip-flopping scores before tracing them\n * to exactly this). The fix is a pid lockfile: refuse to start while a live\n * holder exists, reclaim stale locks whose pid is gone, release only if the\n * lock is still ours.\n *\n * `alsoCheck` exists because independent runners can guard the same shared\n * resource with differently named lockfiles; a runner must respect all of\n * them even though it writes only its own.\n */\n\nimport {\n type AtomicFileLockUnavailable,\n probeAtomicFileLock,\n tryAcquireAtomicFileLock,\n} from '../ledger-core/atomic-file-lock'\n\nexport interface SingleRunLockOptions {\n /** Lockfile this runner writes (and checks). */\n readonly lockPath: string\n /** Other runners' lockfiles guarding the same resource; checked, never written. */\n readonly alsoCheck?: readonly string[]\n /** Install a process 'exit' hook that releases the lock. Default true. */\n readonly releaseOnExit?: boolean\n /** Owner pid recorded in the lockfile metadata. Default process.pid. */\n readonly pid?: number\n}\n\nexport interface SingleRunLock {\n /** Remove the lockfile if this process still owns it. Idempotent. */\n release(): void\n}\n\nfunction assertAvailable(path: string): void {\n const unavailable = probeAtomicFileLock({ lockPath: path })\n if (unavailable) throw unavailableError(path, unavailable)\n}\n\nfunction unavailableError(path: string, unavailable: AtomicFileLockUnavailable): Error {\n if (unavailable.reason === 'recovery') {\n return new Error(\n `single-run lock recovery is already in progress (${path}); refusing a concurrent run`,\n )\n }\n return new Error(\n `single-run lock held by live pid ${unavailable.holder.pid} (${path}); refusing a concurrent run on the shared resource`,\n )\n}\n\n/**\n * Acquire the lock or throw naming the live holder. A stale lock (holder pid\n * no longer running) is reclaimed by one contender. An interrupted reclaim\n * leaves a marker that fails closed instead of admitting overlapping runs.\n */\nexport function acquireSingleRunLock(opts: SingleRunLockOptions): SingleRunLock {\n const pid = opts.pid ?? process.pid\n if (!Number.isSafeInteger(pid) || pid <= 0)\n throw new Error('single-run lock pid must be a positive integer')\n for (const path of opts.alsoCheck ?? []) assertAvailable(path)\n const acquisition = tryAcquireAtomicFileLock({\n lockPath: opts.lockPath,\n pid,\n })\n if (!acquisition.acquired) throw unavailableError(opts.lockPath, acquisition)\n const releaseOnExit = opts.releaseOnExit ?? true\n let released = false\n const release = (): void => {\n if (released) return\n released = true\n if (releaseOnExit) process.off('exit', release)\n try {\n acquisition.lock.release()\n } catch {\n // release is best-effort; a leftover stale lock is reclaimed on next acquire\n }\n }\n try {\n for (const path of opts.alsoCheck ?? []) assertAvailable(path)\n } catch (error) {\n release()\n throw error\n }\n if (releaseOnExit) process.on('exit', release)\n return { release }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-usage-CRqaHi0R.d.ts","names":[],"sources":["../src/run-score.ts","../src/run-critic.ts","../src/semantic-concept-judge.ts","../src/analyst/define.ts","../src/analyst/dspy-rlm-engine.ts","../src/analyst/finding-subject.ts","../src/analyst/findings-store.ts","../src/analyst/kinds/control-integrity.ts","../src/analyst/kinds/failure-mode.ts","../src/analyst/kinds/improvement.ts","../src/analyst/kinds/knowledge-gap.ts","../src/analyst/kinds/knowledge-poisoning.ts","../src/analyst/kinds/index.ts","../src/analyst/kinds/skill-usage.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skillopt-optimization-method-CwRvi-rL.d.ts","names":[],"sources":["../src/llm-judge.ts","../src/reference-equivalence-judge.ts","../src/campaign/auto-pr.ts","../src/campaign/coverage.ts","../src/campaign/storage.ts","../src/campaign/run-campaign.ts","../src/campaign/presets/compare-optimization-methods.ts","../src/campaign/external-text-evaluation.ts","../src/campaign/external-text-optimization-contract.ts","../src/campaign/external-text-optimization.ts","../src/campaign/gates/compose.ts","../src/canary.ts","../src/red-team.ts","../src/campaign/gates/default-production-gate.ts","../src/campaign/gates/heldout-gate.ts","../src/campaign/gates/power-preflight.ts","../src/pareto.ts","../src/campaign/gates/promotion-policy.ts","../src/campaign/optimizer-model.ts","../src/campaign/gepa-optimization-method.ts","../src/campaign/presets/run-eval.ts","../src/campaign/presets/run-optimization.ts","../src/campaign/presets/run-improvement-loop.ts","../src/campaign/provenance.ts","../src/campaign/skillopt-optimization-method.ts"],"mappings":"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"}
|