@stackbone/sdk 0.1.0-alpha.3 → 0.1.0-alpha.4

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/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../libs/sdk/src/config.ts","../../../libs/validators/src/lib/agents/contract.ts","../../../libs/sdk/src/result.ts","../../../libs/sdk/src/contract/contract-handshake.ts","../../../libs/sdk/src/contract/capability-registry.ts","../../../libs/sdk/src/contract/module-gate.ts","../../../libs/sdk/src/lib/http-client.ts","../../../libs/sdk/src/surfaces/agent-local/database/lazy-client.ts","../../../libs/sdk/src/surfaces/agent-local/database/shared-handle.ts","../../../libs/sdk/src/surfaces/agent-local/database/database.ts","../../../libs/sdk/src/surfaces/agent-local/rag/chunker.ts","../../../libs/sdk/src/surfaces/agent-local/rag/embedder.ts","../../../libs/sdk/src/errors/codes.ts","../../../libs/sdk/src/surfaces/agent-local/rag/errors.ts","../../../libs/sdk/src/surfaces/agent-local/rag/jobs.ts","../../../libs/sdk/src/surfaces/agent-local/rag/parser.ts","../../../libs/sdk/src/surfaces/agent-local/rag/sql.ts","../../../libs/sdk/src/surfaces/agent-local/rag/pipeline.ts","../../../libs/sdk/src/surfaces/agent-local/rag/rag.ts","../../../libs/sdk/src/surfaces/control-plane/approval/tool.ts","../../../libs/sdk/src/surfaces/control-plane/approval/verify.ts","../../../libs/sdk/src/surfaces/control-plane/approval/approval.ts","../../../libs/sdk/src/surfaces/control-plane/config/config.ts","../../../libs/sdk/src/surfaces/control-plane/secrets/secrets.ts","../../../libs/sdk/src/surfaces/external/ai/ai.ts","../../../libs/sdk/src/observability/aggregate-run-cost.ts","../../../libs/sdk/package.json","../../../libs/sdk/src/observability/logger.ts","../../../libs/sdk/src/observability/run-steps-exporter.ts","../../../libs/sdk/src/surfaces/external/observability/observability.ts","../../../libs/sdk/src/surfaces/external/storage/storage.ts","../../../libs/sdk/src/surfaces/pending/connections/connections.ts","../../../libs/sdk/src/surfaces/pending/events/events.ts","../../../libs/sdk/src/surfaces/pending/memory/memory.ts","../../../libs/sdk/src/surfaces/pending/prompts/prompts.ts","../../../libs/sdk/src/surfaces/pending/queues/queues.ts","../../../libs/sdk/src/client.ts","../../../libs/sdk/src/runtime/define-agent.ts","../../../libs/sdk/src/runtime/logger.ts","../../../libs/sdk/src/runtime/invoke-envelope.ts","../../../libs/sdk/src/runtime/schema-introspection.ts"],"names":["resolveConfig","config","env","process","Object","freeze","stackboneApiUrl","agentJwt","installationId","approvalSigningKey","agentId","databaseUrl","openrouterKey","openrouterBaseUrl","s3AccessKeyId","s3","accessKeyId","s3SecretAccessKey","secretAccessKey","s3Endpoint","endpoint","s3Bucket","bucket","s3Region","region","otelExporterOtlpEndpoint","otel","exporterOtlpEndpoint","requireContract","contractTtlMs","parseTtlMs","debug","ragEmbeddingModel","rag","embeddingModel","protocolRequired","raw","undefined","n","Number","parseInt","isFinite","MIN_SUPPORTED_CONTRACT_VERSION","CAPABILITIES","MODULE_CAPABILITIES","database","queues","events","secrets","approval","storage","ai","contractBuildNameSchema","z","enum","contractResponseSchema","object","version","number","int","min","minSupported","capabilities","array","build","name","string","requireVersion","contract","data","error","code","message","meta","detected","required","requireCapability","capability","versionCheck","includes","available","ok","err","notImplemented","scope","CONTRACT_PATH","createContractStore","resolved","cache","Map","lastResolved","debugLogged","Set","ttl","get","baseUrl","options","trim","reason","key","normaliseBaseUrl","now","Date","existing","expiresAt","promise","delete","fetchImpl","fetch","globalThis","bind","performHandshake","POSITIVE_INFINITY","set","result","maybeLogDebug","peek","cached","gatingEnabled","url","response","method","cause","Error","String","status","body","cancel","payload","json","issues","parsed","safeParse","success","URL","protocol","toLowerCase","host","replace","has","add","console","warn","length","assertCapability","module","createModuleGate","store","warnedKeys","warningsFor","handshake","resolveContract","agentFloor","gateError","warningsByStore","WeakMap","warnings","RETRYABLE_STATUS","IDEMPOTENT_METHODS","HttpClient","timeout","retryCount","retryDelay","path","request","post","put","patch","req","responseSchema","errorMapping","resolveApiUrl","querystring","buildQuerystring","params","arrayParams","buildUrl","canRetry","toUpperCase","idempotent","maxAttempts","requestHeaders","Headers","headers","jwt","resolveAgentJwt","resolveInstallationId","serializeBody","lastError","attempt","sleepWithSignal","computeBackoff","signal","composeSignal","_rawBody","_callerSignal","_params","_arrayParams","_idempotent","_headers","passthrough","init","codeForStatus","statusText","parseResponse","sdkErr","mapFetchError","base","Math","pow","jitter","random","round","endsWith","value","entries","searchParams","append","toString","out","invalidCode","prefix","field","values","Array","isArray","some","v","join","FormData","ArrayBuffer","isView","JSON","stringify","validateOrFail","contentType","text","e","domainMeta","schema","validation","override","overrides","domainSuffix","transportSuffix","timeoutMs","callerSignal","aborted","controller","AbortController","timer","setTimeout","abort","onCallerAbort","addEventListener","once","clearTimeout","removeEventListener","validateStringArray","errorCode","ms","Promise","resolve","reject","onAbort","createDrizzleClient","connectionString","sql","postgres","drizzle","cachedHandle","cachedUrl","getDatabaseHandle","DatabaseNotConfiguredError","DATABASE_NOT_CONFIGURED_MESSAGE","POOL_TERMINATED_ERROR_CODES","isPoolTerminatedError","runWithColdStartRetry","firstAttempt","retryAttempt","stderr","write","withColdStartRetry","gate","assertGate","GateBlockedError","sdkError","createRetriableQueryBuilder","seed","rootCall","buildProxy","steps","target","run","replayChain","Proxy","_t","then","catch","cb","finally","kind","apply","_this","args","last","next","slice","current","step","parent","fn","TypeError","retriable","DatabaseModule","_gate","_databaseUrl","query","select","h","insert","update","execute","transaction","shared","DEFAULT_SIZE","DEFAULT_OVERLAP","RECURSIVE_SEPARATORS","SENTENCE_BOUNDARY","chunk","size","overlap","strategy","trimmed","pieces","splitBySentence","splitRecursive","mergePieces","sepIdx","idx","sep","splitByLength","parts","split","part","push","i","filter","s","bufParts","bufLen","flush","closed","piece","candidateLen","seedText","tail","trimStart","DEFAULT_BATCH_SIZE","DEFAULT_CONCURRENCY","Embedder","_ai","_model","_batchSize","_concurrency","batchSize","isInteger","model","concurrency","embedOne","embedAll","first","texts","batches","cursor","worker","batchIndex","batch","embeddings","create","input","isUnsupportedModelError","offset","forEach","item","j","embedding","errors","all","from","firstError","find","SDK_ERROR_CODE_PREFIXES","memory","http","observability","SDK_ERROR_CODES_STANDALONE","ALL_CODES","reasons","isSdkErrorCode","PG_UNDEFINED_TABLE","RAG_SCHEMA_MISSING_HINT","isTaggedError","toRagError","fallbackCode","hint","createSqlJobWriter","start","collection","totalChunks","collectionId","ensureCollection","inserted","processedChunks","row","jobId","id","progress","currentDocument","complete","fail","isCancelled","rows","PDF_MIME_TYPES","PDF_MAGIC","parse","mime","sniffMime","bytes","toUint8Array","resolveKind","extractText","mergePages","TextDecoder","decode","startsWith","looksLikePdf","Uint8Array","Blob","arrayBuffer","type","every","b","DEFAULT_NAMESPACE","META_KEY_DIMENSIONS","META_KEY_DISTANCE","schemaVerifiedDimensions","ensureSchema","dimensions","stored","received","begin","tx","unsafe","buildChunkTableDDL","CHUNK_INDEXES_DDL","reset","clearDocument","docId","namespace","ingestDocument","placeholders","map","_","flatMap","chunkIdx","content","formatVector","metadata","deleteByIds","ids","count","deleteByFilter","filterClause","keys","retrieve","embStr","contentColumn","includeContent","metadataColumn","includeMetadata","topK","DEFAULT_TOP_K","RagPipeline","_sqlProvider","_embedder","_jobWriter","_progressBatchSize","deps","sqlProvider","embedder","jobWriter","progressBatchSize","max","ingest","validateIngest","chunks","isAutoEmbedIngest","embedded","expected","c","onProgress","writer","started","source","needsBatching","Boolean","processed","cancelled","ordinal","mapped","idList","deleted","deleteWhere","resolveQueryEmbedding","retrieveRows","hit","score","isAutoEmbedRetrieve","hasEmbedder","dims","DEFAULT_RAG_EMBEDDING_MODEL","RagModule","_testSqlOverride","_testJobWriterFactory","_resolved","_getDatabase","_getAi","testDeps","jobWriterFactory","gateResult","resolveIngestModel","withPipeline","buildEmbedderForIngest","pipeline","ingestAsync","writerFactory","channel","createProgressChannel","requestWithHook","event","countChunks","close","facadeWriter","withPreallocatedJob","r","iterable","resolveRetrieveModel","buildEmbedderForRetrieve","resetSchema","chunkText","parseInput","$client","buffer","pending","done","Symbol","asyncIterator","shift","getAi","createApprovalTool","facade","spec","description","parameters","openaiSpec","function","invoke","resolveGate","needsApproval","requestOpts","toRequest","requested","topic","approvalId","tool","SIGNATURE_HEADER","DEFAULT_TOLERANCE_SECONDS","HEX_RE","verifyCallback","signingKey","resolveSigningKey","header","parseHeader","tolerance","toleranceSeconds","deltaSeconds","timestamp","FUTURE_DRIFT_TOLERANCE_SECONDS","rawBody","readRawBody","computeHmac","constantTimeEqual","signature","decision","isDecision","eqIdx","indexOf","test","ENCODER","TextEncoder","secret","crypto","subtle","importKey","encode","hash","sign","Buffer","a","mismatch","charCodeAt","DECISION_STATUSES","APPROVAL_ERROR_MAPPING","ApprovalFacade","_http","validateRequest","encodeURIComponent","list","limit","verify","onDecide","configResponseSchema","unknown","configBatchResponseSchema","record","ConfigFacade","getMany","invalid","secretResponseSchema","secretsBatchResponseSchema","SecretsFacade","names","AiModule","_openai","_chat","_embeddings","_images","_models","clientOverride","chat","completions","ChatCompletionsNamespace","EmbeddingsNamespace","images","ImagesNamespace","models","ModelsNamespace","apiKey","resolveApiKey","missingKeyError","OpenAI","baseURL","resolveBaseUrl","defaultHeaders","STACKBONE_DEFAULT_HEADERS","_getClient","wrapCall","client","generate","messages","role","prompt","modalities","imageConfig","image_config","completion","extractImages","created","clientResult","Authorization","mapApiError","OPENROUTER_DEFAULT_BASE_URL","OPENROUTER_KEY_MISSING_MESSAGE","getClient","DATA_URL_RE","choices","rawImages","img","image_url","match","exec","mimeType","b64Json","APIError","APIUserAbortError","APIConnectionTimeoutError","APIConnectionError","SQL","aggregateRunCost","runId","costEstimatedUsd","cost_estimated_usd","num","LOG_LEVELS","trace","info","fatal","DEFAULT_INTERVAL_MS","DEFAULT_HTTP_TIMEOUT_MS","createPlatformLogger","otelEndpoint","mode","baseBindings","run_id","destination","OtlpHttpDestination","resourceAttributes","httpTimeoutMs","flushBatchSize","flushIntervalMs","JsonlFileDestination","runsDir","defaultRunsDir","appendFileImpl","mkdirImpl","buildLogger","opts","writeAt","level","msgOrObj","msg","time","levelNumber","assign","child","bindings","appendFile","mkdir","inFlight","dirReady","p","d","recursive","line","dirname","armTimer","drained","splice","disarmTimer","unref","records","buildOtlpLogsBody","resp","SDK_SCOPE","resourceLogs","resource","attributes","toOtlpAttributes","scopeLogs","logRecords","toOtlpLogRecord","rest","timeUnixNano","severityNumber","severityText","stringValue","toOtlpAttributesFromUnknown","SEVERITY_TEXT_BY_LEVEL","fromEntries","attrs","intValue","doubleValue","boolValue","homedir","RUN_STEP_TYPES","STEP_TYPE_ATTRIBUTE","RUN_ID_ATTRIBUTE","NAME_PREFIX_MAP","RunStepsSpanProcessor","stepIdBySpanId","intervalMs","resolveStepType","newId","ownsSql","defaultStepTypeResolver","randomUUID","onStart","span","spanId","spanContext","onEnd","buildRow","forceFlush","shutdown","end","stepId","readString","parentSpanId","parentSpanContext","parentStepId","startedAt","formatHrTime","startTime","finishedAt","endTime","durationMs","hrTimeToMs","duration","diffHrTime","isError","parent_step_id","serialisablePayload","started_at","finished_at","duration_ms","writeBatch","ensureSql","mod","default","explicit","pattern","hr","toISOString","seconds","nanos","floor","ObservabilityModule","_processor","_loggers","_sql","_sqlResolved","spanProcessor","merged","logger","closeLogger","closeRun","resolveSql","DEFAULT_SIGNED_URL_TTL_SECONDS","StorageModule","_s3","StorageBucket","settings","S3_CREDENTIALS_MISSING_MESSAGE","S3_BUCKET_MISSING_MESSAGE","AGENT_ID_MISSING_MESSAGE","S3Client","forcePathStyle","credentials","bucketName","resolveSettings","upload","fullKey","send","PutObjectCommand","Bucket","Key","Body","ContentType","Metadata","etag","stripEtag","ETag","toStorageError","download","GetObjectCommand","transformToByteArray","basePrefix","ListObjectsV2Command","Prefix","MaxKeys","ContinuationToken","stripPrefix","objects","Contents","itemKey","obj","Size","LastModified","lastModified","nextCursor","IsTruncated","NextContinuationToken","remove","DeleteObjectCommand","getPublicUrl","encodeS3Key","getSignedUploadUrl","signUrl","getSignedDownloadUrl","failureMessage","buildCommand","expiresIn","getSignedUrl","normalisedKey","aws","$metadata","httpStatusCode","$fault","ConnectionsFacade","EventsFacade","emit","_name","_payload","MemoryModule","_content","_request","search","_query","_options","_memoryId","deleteAll","history","endSession","_sessionId","PromptsFacade","compile","_variables","QueuesModule","publish","StackboneClient","_database","_storage","_rag","_observability","_approval","_secrets","_config","_queues","_memory","_events","_prompts","_connections","_httpClient","_contractStore","prompts","connections","createClient","KNOWN_TOP_LEVEL_KEYS","KNOWN_INVOKE_KEYS","INVOKE_TIMEOUT_HARD_CAP_MS","defineAgent","topLevelKeys","unknownTopLevel","invokeKeys","unknownInvoke","RangeError","writeLine","stream","ts","createStructuredLogger","stdout","extra","RESERVED_ERROR_CODES","INVOCATION_ID_HEADER","RUN_ID_HEADER","invokeRequestSchema","invocationId","isReservedErrorCode","isObject","getDef","node","internal","_zod","def","walk","half","acc","construct","checks","check","checkDef","inDef","outDef","shape","option","items","lazyKey","visitedLazy","getter","analyzeAgentSchemas","pair","WeakSet","output","inputJson","toJSONSchema","unrepresentable","outputJson","schemas"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Optional overrides accepted by `createClient`. All fields are optional;\n * the resolver applies the precedence rule (`config.xxx` first, env var\n * fallback) and produces a fully typed `ResolvedConfig` so downstream\n * modules never have to know the env-var names or the order of precedence.\n */\nexport interface ClientConfig {\n /** Ed25519 JWT signed by the control plane. Falls back to `STACKBONE_AGENT_JWT`. */\n agentJwt?: string;\n /** Stackbone control plane base URL used by the facade HttpClient. Falls back to `STACKBONE_API_URL`. */\n stackboneApiUrl?: string;\n /** Stable agent identifier injected at provisioning. Falls back to `STACKBONE_AGENT_ID`. Used as the multi-tenant key prefix in `client.storage`. */\n agentId?: string;\n /**\n * Postgres connection string consumed by `client.rag` and the platform\n * observability exporter. Falls back to `STACKBONE_POSTGRES_URL` — the same\n * env var `client.database` reads, so a single connection string covers\n * every SDK consumer that talks to the agent's Postgres.\n */\n databaseUrl?: string;\n openrouterKey?: string;\n openrouterBaseUrl?: string;\n qstashToken?: string;\n qstashCurrentSigningKey?: string;\n qstashNextSigningKey?: string;\n llamaParseApiKey?: string;\n /** mem0 API key for the long-term memory backend (`client.memory`). Falls back to `MEM0_API_KEY`. */\n mem0ApiKey?: string;\n /** mem0 API base URL. Falls back to `MEM0_BASE_URL` (defaults to mem0 cloud when unset). */\n mem0BaseUrl?: string;\n /** HMAC key the control plane uses to sign approval-decision callbacks. Falls back to `STACKBONE_APPROVAL_SIGNING_KEY`. */\n approvalSigningKey?: string;\n /**\n * Identifies the install the agent runs inside. Sent as the\n * `X-Stackbone-Installation-Id` header when the SDK talks to the control\n * plane. Falls back to `STACKBONE_INSTALLATION_ID`.\n * TODO(studio-v1): remove once `STACKBONE_AGENT_JWT` carries the install id\n * and `apps/api` derives it from the bearer instead of an explicit header.\n */\n installationId?: string;\n s3?: {\n /** Falls back to `STACKBONE_S3_ACCESS_KEY`. */\n accessKeyId?: string;\n /** Falls back to `STACKBONE_S3_SECRET_KEY`. */\n secretAccessKey?: string;\n /** Falls back to `STACKBONE_S3_ENDPOINT`. */\n endpoint?: string;\n /** Physical R2/S3 bucket scoped to the agent. Falls back to `STACKBONE_S3_BUCKET`. */\n bucket?: string;\n /** AWS region. Falls back to `STACKBONE_S3_REGION`, defaults to `'auto'` (R2/MinIO). */\n region?: string;\n };\n otel?: {\n exporterOtlpEndpoint?: string;\n resourceAttributes?: string;\n };\n /**\n * RAG-related defaults parsed from `agent.yaml.rag` by the CLI/orchestrator\n * and forwarded here. The SDK never reads `agent.yaml` itself — keeping\n * filesystem ownership in the CLI. Defaults follow ADR\n * `2026-05-10-rag-consolidation-on-client-database` (D2/D6).\n */\n rag?: {\n /**\n * Embedding model used by `client.rag.ingest`/`retrieve` when the caller\n * omits `model`. Defaults to `openai/text-embedding-3-small`.\n */\n embeddingModel?: string;\n };\n /**\n * Creator-side floor on the negotiated Stackbone Agent Protocol contract\n * version. Sourced from `agent.yaml.protocol.required` by the\n * CLI/orchestrator (the SDK never reads `agent.yaml` itself). When set and\n * the datapath's negotiated `contract.version` is below this value, every\n * gated module call returns `SdkError('contract_version_unsupported',\n * { detected, required })` — independent of per-module capability gating.\n * When omitted, the SDK uses `MIN_SUPPORTED_CONTRACT_VERSION` as the\n * implicit floor (i.e. behaviour matches slice F5).\n */\n protocolRequired?: number;\n}\n\n/**\n * Fully-resolved, typed snapshot the SDK consumes. The resolver is the **only**\n * place in the library that touches `process.env`; every downstream module\n * reads from typed fields here instead of consulting the environment itself.\n *\n * Precedence rule: `config.xxx` (passed to `createClient`) wins over\n * `process.env['XXX']`. Required env vars surface as `string | undefined` —\n * the resolver never throws when a var is missing; whether a missing value\n * is fatal is a per-surface decision (some error at construction, others\n * lazily on first use).\n *\n * Construction is a snapshot. Tests that mutated `process.env` between\n * `createClient()` and the first module access used to observe the new value\n * through the old `env` channel; they now pass overrides via `createClient`\n * or rebuild a new `ResolvedConfig` after mutating `process.env`. Snapshot\n * semantics make the SDK easier to reason about — one read, one source.\n *\n * Note: there is intentionally no `env` channel. Reading\n * `resolved.env['SOMETHING']` is a type error. Adding a new env-driven\n * setting means adding a typed field here and resolving it in\n * `resolveConfig`.\n */\nexport interface ResolvedConfig {\n /** The frozen creator-supplied options (untouched, for debug introspection). */\n readonly config: Readonly<ClientConfig>;\n\n // ----- Control plane -----\n /** Resolved from `config.stackboneApiUrl` ?? `STACKBONE_API_URL`. */\n readonly stackboneApiUrl: string | undefined;\n /** Resolved from `config.agentJwt` ?? `STACKBONE_AGENT_JWT`. */\n readonly agentJwt: string | undefined;\n /** Resolved from `config.installationId` ?? `STACKBONE_INSTALLATION_ID`. */\n readonly installationId: string | undefined;\n /** Resolved from `config.approvalSigningKey` ?? `STACKBONE_APPROVAL_SIGNING_KEY`. */\n readonly approvalSigningKey: string | undefined;\n\n // ----- Agent identity / Postgres -----\n /** Resolved from `config.agentId` ?? `STACKBONE_AGENT_ID`. */\n readonly agentId: string | undefined;\n /** Resolved from `config.databaseUrl` ?? `STACKBONE_POSTGRES_URL`. Shared by `client.database`, `client.rag` and `client.observability`. */\n readonly databaseUrl: string | undefined;\n\n // ----- OpenRouter (client.ai) -----\n /** Resolved from `config.openrouterKey` ?? `OPENROUTER_API_KEY`. */\n readonly openrouterKey: string | undefined;\n /** Resolved from `config.openrouterBaseUrl` ?? `OPENROUTER_BASE_URL`. `undefined` means use the OpenRouter default. */\n readonly openrouterBaseUrl: string | undefined;\n\n // ----- S3 / R2 / MinIO (client.storage) -----\n /** Resolved from `config.s3.accessKeyId` ?? `STACKBONE_S3_ACCESS_KEY`. */\n readonly s3AccessKeyId: string | undefined;\n /** Resolved from `config.s3.secretAccessKey` ?? `STACKBONE_S3_SECRET_KEY`. */\n readonly s3SecretAccessKey: string | undefined;\n /** Resolved from `config.s3.endpoint` ?? `STACKBONE_S3_ENDPOINT`. */\n readonly s3Endpoint: string | undefined;\n /** Resolved from `config.s3.bucket` ?? `STACKBONE_S3_BUCKET`. */\n readonly s3Bucket: string | undefined;\n /** Resolved from `config.s3.region` ?? `STACKBONE_S3_REGION` ?? `'auto'`. Always defined. */\n readonly s3Region: string;\n\n // ----- OpenTelemetry -----\n /** Resolved from `config.otel.exporterOtlpEndpoint` ?? `OTEL_EXPORTER_OTLP_ENDPOINT`. */\n readonly otelExporterOtlpEndpoint: string | undefined;\n\n // ----- Contract handshake / runtime knobs -----\n /**\n * `true` unless `STACKBONE_REQUIRE_CONTRACT=0` is set. Consulted by the\n * contract gate to decide whether a `capability_unavailable` /\n * `contract_version_unsupported` error becomes a hard failure or a logged\n * warning (escape-hatch path).\n */\n readonly requireContract: boolean;\n /**\n * Parsed `STACKBONE_CONTRACT_TTL_MS`. `undefined` (default) means cached\n * handshakes never expire within the process lifetime; a positive integer\n * caps the cache entry's `expiresAt`.\n */\n readonly contractTtlMs: number | undefined;\n /**\n * `true` only when `STACKBONE_DEBUG=1` is set. Consulted by the handshake\n * to emit a one-shot debug line per (store, baseUrl) tuple after a\n * successful negotiation.\n */\n readonly debug: boolean;\n\n // ----- RAG defaults -----\n /**\n * Embedding model parsed by the CLI from `agent.yaml.rag.embeddingModel`\n * and forwarded as `config.rag.embeddingModel`. Same value, surfaced\n * directly so consumers don't reach through the nested object.\n */\n readonly ragEmbeddingModel: string | undefined;\n\n // ----- Protocol negotiation -----\n /**\n * Forwarded from `config.protocolRequired`. The CLI sources it from\n * `agent.yaml.protocol.required`; there is no env-var fallback today.\n */\n readonly protocolRequired: number | undefined;\n}\n\n/**\n * Single seam in the SDK for reading `process.env`. Every downstream module\n * accepts a `ResolvedConfig` and reads typed fields off it — they MUST NOT\n * touch `process.env` directly. Adding a new env-driven setting means\n * extending `ResolvedConfig` and resolving it here.\n *\n * The result is a snapshot, not a live view: mutating `process.env` after\n * this returns will not change the resolved values. Callers that need to\n * pick up env-var rotation must build a new `ResolvedConfig` (most easily\n * by constructing a new `StackboneClient`).\n */\nexport function resolveConfig(config: ClientConfig): ResolvedConfig {\n const env = process.env;\n return Object.freeze({\n config: Object.freeze({ ...config }),\n\n // Control plane.\n stackboneApiUrl: config.stackboneApiUrl ?? env['STACKBONE_API_URL'],\n agentJwt: config.agentJwt ?? env['STACKBONE_AGENT_JWT'],\n installationId: config.installationId ?? env['STACKBONE_INSTALLATION_ID'],\n approvalSigningKey: config.approvalSigningKey ?? env['STACKBONE_APPROVAL_SIGNING_KEY'],\n\n // Agent identity / Postgres.\n agentId: config.agentId ?? env['STACKBONE_AGENT_ID'],\n databaseUrl: config.databaseUrl ?? env['STACKBONE_POSTGRES_URL'],\n\n // OpenRouter.\n openrouterKey: config.openrouterKey ?? env['OPENROUTER_API_KEY'],\n openrouterBaseUrl: config.openrouterBaseUrl ?? env['OPENROUTER_BASE_URL'],\n\n // S3 / R2 / MinIO.\n s3AccessKeyId: config.s3?.accessKeyId ?? env['STACKBONE_S3_ACCESS_KEY'],\n s3SecretAccessKey: config.s3?.secretAccessKey ?? env['STACKBONE_S3_SECRET_KEY'],\n s3Endpoint: config.s3?.endpoint ?? env['STACKBONE_S3_ENDPOINT'],\n s3Bucket: config.s3?.bucket ?? env['STACKBONE_S3_BUCKET'],\n s3Region: config.s3?.region ?? env['STACKBONE_S3_REGION'] ?? 'auto',\n\n // OpenTelemetry.\n otelExporterOtlpEndpoint:\n config.otel?.exporterOtlpEndpoint ?? env['OTEL_EXPORTER_OTLP_ENDPOINT'],\n\n // Contract handshake / runtime knobs (env-only today).\n requireContract: env['STACKBONE_REQUIRE_CONTRACT'] !== '0',\n contractTtlMs: parseTtlMs(env['STACKBONE_CONTRACT_TTL_MS']),\n debug: env['STACKBONE_DEBUG'] === '1',\n\n // RAG defaults.\n ragEmbeddingModel: config.rag?.embeddingModel,\n\n // Protocol negotiation.\n protocolRequired: config.protocolRequired,\n });\n}\n\n/**\n * Parses `STACKBONE_CONTRACT_TTL_MS` once at resolve time. Anything missing,\n * empty, non-numeric or non-positive collapses to `undefined` (the\n * \"cache forever within the process\" default consumers expect).\n */\nfunction parseTtlMs(raw: string | undefined): number | undefined {\n if (raw === undefined || raw === '') return undefined;\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n <= 0) return undefined;\n return n;\n}\n","import { z } from 'zod';\n\n// --- Stackbone Agent Protocol (Studio handshake) --------------------------------\n// Normative spec: docs/arquitectura/specs/stackbone-agent-protocol-v1.md.\n// Both the Hono emulator (libs/agent-emulator/) and apps/api expose\n// `GET /api/contract` returning this exact shape so the Studio UI can detect\n// version drift between the backend it is talking to and its own minimum\n// supported version. Bumps are documented in\n// docs/arquitectura/specs/stackbone-agent-protocol-changelog.md.\n\n/**\n * Monotonically increasing integer that identifies the wire-level revision of\n * the Stackbone Agent Protocol the backend (cloud `apps/api` or local\n * emulator) currently speaks. Append-only history (the only source of truth —\n * the markdown changelog mirrors this list manually):\n *\n * - v1 (initial): handshake shape frozen, `capabilities` reserved but empty.\n * - v9 (RAG consolidation, ADR 2026-05-10): client.database hosts the RAG\n * pipeline; older agents are pinned out of the RAG explorer via\n * `MIN_SUPPORTED_RAG_EXPLORER_CONTRACT_VERSION`.\n * - v10 (#23, this PR): `capabilities` becomes a populated, gated set. The\n * SDK now refuses module calls when their required capability is missing\n * from the handshake. No older datapaths are dropped (`MIN_SUPPORTED`\n * stays at 1) — the gating is purely additive on `capabilities`.\n *\n * Bumping this constant is a breaking simultaneous change: the SDK and Studio\n * upgrade in lockstep. There is no per-request negotiation.\n */\nexport const STACKBONE_CONTRACT_VERSION = 10 as const;\n\n/**\n * Floor of the protocol version range the SDK and Studio still execute\n * against. Bumped only when we deliberately want to break older datapaths;\n * additive changes (new capabilities, new endpoints) MUST NOT raise this.\n *\n * Today (v10) the floor stays at v1 because v10 is purely additive: it gates\n * new behaviour on `capabilities` membership without dropping any older wire\n * format. The first time we delete or rename an existing endpoint we raise\n * this together with `STACKBONE_CONTRACT_VERSION` in the same release.\n */\nexport const MIN_SUPPORTED_CONTRACT_VERSION = 1 as const;\n\n// RAG-explorer-specific gate. ADR `2026-05-10-rag-consolidation-on-client-database`\n// §D7: Studio hides the RAG explorer (and refuses to fetch `/api/rag/*`)\n// when the negotiated `contract.version` is below this number. The agent\n// shell (`MIN_SUPPORTED_CONTRACT_VERSION`) stays at the lower floor so the\n// rest of Studio keeps working against older agents.\nexport const MIN_SUPPORTED_RAG_EXPLORER_CONTRACT_VERSION = 9 as const;\n\n/**\n * Full set of dot-namespaced capability identifiers the Stackbone Agent\n * Protocol recognises. The array doubles as the runtime allowlist for the\n * `Capability` enum used by `contractResponseSchema` and as the source of\n * truth for `MODULE_CAPABILITIES` below.\n *\n * Membership is intentionally additive — adding an entry does NOT bump\n * `STACKBONE_CONTRACT_VERSION` (per spec §3.2), but removing or renaming\n * one is a breaking change and DOES.\n */\nexport const CAPABILITIES = [\n 'database.postgres_direct',\n 'database.drizzle',\n 'rag.basic',\n 'rag.async_ingest',\n 'queues.pgmq',\n 'events.bus',\n 'secrets.read_write',\n 'config.read_write',\n 'approval.fire_and_forget',\n 'storage.s3',\n 'ai.openrouter',\n] as const satisfies readonly string[];\n\n/**\n * Compile-time alias: any capability identifier the wire schema accepts.\n * Consumers (SDK modules, Studio guards) MUST type capability arguments as\n * `Capability` so the compiler refuses unknown literals; the runtime check\n * lives in `contractResponseSchema` via `z.enum(CAPABILITIES)`.\n */\nexport type Capability = (typeof CAPABILITIES)[number];\n\n/**\n * Maps every SDK module identifier (`client.<module>`) to the single\n * `Capability` its surface depends on for the MVP. The SDK's gating layer\n * looks up the required capability here — adding a module means adding a\n * row, and changing a module's required capability (e.g. `database` moving\n * from `postgres_direct` to `drizzle` once #29 lands) is the only reason to\n * edit this map.\n */\nexport const MODULE_CAPABILITIES = {\n database: 'database.postgres_direct',\n rag: 'rag.basic',\n queues: 'queues.pgmq',\n events: 'events.bus',\n secrets: 'secrets.read_write',\n config: 'config.read_write',\n approval: 'approval.fire_and_forget',\n storage: 'storage.s3',\n ai: 'ai.openrouter',\n} as const satisfies Record<string, Capability>;\n\n// Identifies which backend served the handshake. Both values are surfaced in\n// the response body so support can diagnose drift between local and cloud\n// without an extra hop.\nexport const contractBuildNameSchema = z.enum(['stackbone-cli', 'stackbone-api']);\nexport type ContractBuildName = z.infer<typeof contractBuildNameSchema>;\n\nexport const contractResponseSchema = z.object({\n version: z.number().int().min(1),\n minSupported: z.number().int().min(1),\n // `z.enum(CAPABILITIES)` rejects any string outside the union at runtime,\n // mirroring the compile-time guarantee of the `Capability` type.\n capabilities: z.array(z.enum(CAPABILITIES)),\n build: z.object({\n name: contractBuildNameSchema,\n version: z.string().min(1),\n }),\n});\nexport type ContractResponse = z.infer<typeof contractResponseSchema>;\n\n/**\n * Error envelope returned by the contract gating helpers below. Structurally\n * compatible with `SdkError` from `@stackbone/sdk` (`{ code, message, meta? }`)\n * — kept local because `libs/validators` is a leaf package and must not\n * depend on the SDK. The SDK widens these errors back into `SdkError` when\n * propagating them to user code.\n */\nexport interface ContractCheckError {\n code: 'contract_version_unsupported' | 'capability_unavailable';\n message: string;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result mirroring the `{ data, error }` envelope every other\n * SDK method returns. Narrowing on `error` refines `data` to the success\n * payload (here: `void`).\n */\nexport type ContractCheckResult =\n | { data: undefined; error: null }\n | { data: null; error: ContractCheckError };\n\n/**\n * Validates that the negotiated `contract.version` is at or above the\n * version the SDK still executes against. Pure, table-driven, never throws.\n *\n * Used by Studio's boot-time guard (`/api/contract` → if drift, render the\n * upgrade banner instead of the protected screen) and by every gated SDK\n * module before it dispatches its first call.\n */\nexport function requireVersion(contract: ContractResponse): ContractCheckResult {\n if (contract.version < MIN_SUPPORTED_CONTRACT_VERSION) {\n return {\n data: null,\n error: {\n code: 'contract_version_unsupported',\n message: `Stackbone Agent Protocol version ${contract.version} is below the minimum supported (${MIN_SUPPORTED_CONTRACT_VERSION}). Upgrade the CLI or the control plane.`,\n meta: {\n detected: contract.version,\n required: MIN_SUPPORTED_CONTRACT_VERSION,\n },\n },\n };\n }\n return { data: undefined, error: null };\n}\n\n/**\n * Validates that the negotiated contract both (a) meets the version floor\n * and (b) advertises the requested capability. Returns\n * `contract_version_unsupported` first if the version check fails so the SDK\n * never falls through to a misleading \"capability missing\" message when the\n * actual problem is a stale datapath. Pure, never throws.\n */\nexport function requireCapability(\n capability: Capability,\n contract: ContractResponse,\n): ContractCheckResult {\n const versionCheck = requireVersion(contract);\n if (versionCheck.error) {\n return versionCheck;\n }\n if (!contract.capabilities.includes(capability)) {\n return {\n data: null,\n error: {\n code: 'capability_unavailable',\n message: `Capability \"${capability}\" is not advertised by the negotiated Stackbone Agent Protocol contract.`,\n meta: {\n capability,\n available: contract.capabilities,\n },\n },\n };\n }\n return { data: undefined, error: null };\n}\n","import { type SdkErrorCode } from './errors/codes';\n\n/**\n * Uniform error envelope returned by every SDK method. `cause` and `meta` are\n * optional escape hatches so wrappers can attach upstream errors / context\n * without breaking the public shape.\n *\n * `code` is typed against the catalog declared in `errors/codes.ts` — the\n * compiler refuses any literal that isn't part of the documented inventory.\n * Adding a new code is a single-file edit there; ALL throw sites then update\n * automatically through the union.\n */\nexport interface SdkError {\n code: SdkErrorCode;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result the entire SDK returns. Narrowing on `result.error`\n * automatically refines `result.data` to `T`.\n */\nexport type Result<T> = { data: T; error: null } | { data: null; error: SdkError };\n\nexport function ok<T>(data: T): Result<T> {\n return { data, error: null };\n}\n\nexport function err<T = never>(error: SdkError): Result<T> {\n return { data: null, error };\n}\n\nexport function notImplemented<T = never>(scope: string): Result<T> {\n return {\n data: null,\n error: {\n code: 'not_implemented',\n message: `${scope} is not implemented yet`,\n },\n };\n}\n\nexport type { SdkErrorCode } from './errors/codes';\n","import { type ContractResponse, contractResponseSchema } from '@stackbone/validators';\n\nimport { type ResolvedConfig, resolveConfig } from '../config';\nimport { err, ok, type Result } from '../result';\n\n/**\n * Optional injection seam for tests. Production callers rely on the global\n * `fetch` implementation; specs hand in a `vi.fn()` so we can assert\n * single-flight, cache hits and error mapping without real HTTP.\n */\nexport interface ContractHandshakeOptions {\n fetch?: typeof fetch;\n /** Test-only clock override consulted by the TTL eviction path. */\n now?: () => number;\n}\n\n/**\n * Per-client handshake store. Each `StackboneClient` owns one instance and\n * passes it (via `createModuleGate`) to every surface that gates, so two\n * clients constructed in the same process do NOT share cache state.\n *\n * Shape stays narrow on purpose: surfaces only need `get()`; the synchronous\n * `peek()` is consumed by `client.contract`; `gatingEnabled()` is the\n * `STACKBONE_REQUIRE_CONTRACT` escape-hatch read consulted by the gate.\n *\n * Cache, single-flight, TTL eviction and debug-log bookkeeping all live on\n * the instance — no module-level Maps, no `__resetForTests` helpers — so\n * specs start clean simply by constructing a fresh store.\n */\nexport interface ContractStore {\n /**\n * Resolves the contract for `baseUrl`. Single-flight per normalised baseUrl;\n * caches the resolved Result (including errors) until the TTL (if set)\n * elapses.\n */\n get(\n baseUrl: string | undefined,\n options?: ContractHandshakeOptions,\n ): Promise<Result<ContractResponse>>;\n\n /**\n * Synchronous read-only accessor consulted by `client.contract`. Returns\n * the most recently resolved successful `ContractResponse` for the given\n * baseUrl, or `null` if no successful handshake has resolved yet.\n */\n peek(baseUrl: string | undefined): ContractResponse | null;\n\n /**\n * Mirrors `resolved.requireContract` — `false` only when the creator opted\n * out (i.e. `STACKBONE_REQUIRE_CONTRACT=0` at resolve time). Kept on the\n * store so the module-gate consults a single seam instead of reaching back\n * into the resolver.\n */\n gatingEnabled(): boolean;\n}\n\ninterface CacheEntry {\n /**\n * Single-flight: the in-flight Promise is what gets cached, so two\n * concurrent first-callers share one fetch.\n */\n promise: Promise<Result<ContractResponse>>;\n /** Wall-clock millis at which the entry should be evicted. `Infinity` when no TTL is configured. */\n expiresAt: number;\n}\n\nconst CONTRACT_PATH = '/api/contract';\n\n/**\n * Builds a fresh `ContractStore`. The factory is the SDK-internal contract\n * — `createClient()` instantiates one per client (passing its\n * `ResolvedConfig`) and threads it through `createModuleGate(...)` to every\n * gated surface. Tests that drive a handshake without a full client\n * construct a store the same way; the resolver call below defaults to an\n * empty config (i.e. it still reads `process.env` once at store\n * construction, mirroring the old behaviour for ad-hoc test stores).\n *\n * The store reads the runtime knobs (`requireContract`, `contractTtlMs`,\n * `debug`) from `resolved` exactly once and caches them on the closure —\n * mirroring the snapshot semantics of `ResolvedConfig` itself.\n */\nexport function createContractStore(resolved: ResolvedConfig = resolveConfig({})): ContractStore {\n const cache = new Map<string, CacheEntry>();\n const lastResolved = new Map<string, Result<ContractResponse>>();\n const debugLogged = new Set<string>();\n const ttl = resolved.contractTtlMs;\n const debug = resolved.debug;\n const requireContract = resolved.requireContract;\n\n async function get(\n baseUrl: string | undefined,\n options: ContractHandshakeOptions = {},\n ): Promise<Result<ContractResponse>> {\n if (!baseUrl || baseUrl.trim() === '') {\n // The base URL may not have been resolvable when the client was built\n // (e.g. tests rebuild the client after setting `STACKBONE_API_URL`).\n // Returning a fresh synchronous error each time avoids freezing the\n // empty state.\n return err({\n code: 'contract_unreachable',\n message:\n 'STACKBONE_API_URL is not set — cannot perform the Stackbone Agent Protocol handshake.',\n meta: { reason: 'no_base_url' },\n });\n }\n\n const key = normaliseBaseUrl(baseUrl);\n const now = options.now ?? Date.now;\n\n const existing = cache.get(key);\n if (existing && existing.expiresAt > now()) {\n return existing.promise;\n }\n\n if (existing) {\n // Lazy eviction: TTL elapsed since the last resolution.\n cache.delete(key);\n }\n\n const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n const promise = performHandshake(key, fetchImpl);\n const expiresAt = ttl === undefined ? Number.POSITIVE_INFINITY : now() + ttl;\n cache.set(key, { promise, expiresAt });\n\n const result = await promise;\n lastResolved.set(key, result);\n if (!result.error && debug) {\n maybeLogDebug(debugLogged, key, result.data);\n }\n return result;\n }\n\n function peek(baseUrl: string | undefined): ContractResponse | null {\n if (!baseUrl || baseUrl.trim() === '') return null;\n const key = normaliseBaseUrl(baseUrl);\n const cached = lastResolved.get(key);\n if (!cached || cached.error) return null;\n return cached.data;\n }\n\n function gatingEnabled(): boolean {\n return requireContract;\n }\n\n return { get, peek, gatingEnabled };\n}\n\nasync function performHandshake(\n baseUrl: string,\n fetchImpl: typeof fetch,\n): Promise<Result<ContractResponse>> {\n const url = `${baseUrl}${CONTRACT_PATH}`;\n let response: Response;\n try {\n response = await fetchImpl(url, { method: 'GET' });\n } catch (cause) {\n return err({\n code: 'contract_unreachable',\n message: `Failed to reach ${url}: ${cause instanceof Error ? cause.message : String(cause)}`,\n cause,\n meta: { baseUrl },\n });\n }\n\n if (response.status === 404) {\n await response.body?.cancel();\n return err({\n code: 'contract_unreachable',\n message: `${url} responded 404 — the datapath is not Stackbone-shaped.`,\n meta: { baseUrl, reason: 'endpoint_missing' },\n });\n }\n\n if (response.status >= 500) {\n await response.body?.cancel();\n return err({\n code: 'contract_unreachable',\n message: `${url} responded ${response.status} — the datapath errored serving the contract.`,\n meta: { baseUrl, reason: 'datapath_error', status: response.status },\n });\n }\n\n let payload: unknown;\n try {\n payload = await response.json();\n } catch (cause) {\n return err({\n code: 'contract_malformed',\n message: `${url} returned a body that is not valid JSON.`,\n cause,\n meta: { baseUrl, issues: [] },\n });\n }\n\n const parsed = contractResponseSchema.safeParse(payload);\n if (!parsed.success) {\n return err({\n code: 'contract_malformed',\n message: `${url} returned a payload that does not match the contract schema.`,\n meta: { baseUrl, issues: parsed.error.issues },\n });\n }\n\n return ok(parsed.data);\n}\n\n/**\n * Normalises a baseUrl so the cache key collapses cosmetic differences:\n * lowercases the URL parser's `origin` (scheme + host + port) and drops a\n * trailing slash. Path components are intentionally ignored — the SDK only\n * accepts an _origin_ baseUrl today.\n *\n * Falls back to a string-level normalisation if `URL` rejects the input.\n */\nfunction normaliseBaseUrl(baseUrl: string): string {\n try {\n const parsed = new URL(baseUrl);\n return `${parsed.protocol.toLowerCase()}//${parsed.host.toLowerCase()}`;\n } catch {\n return baseUrl.trim().toLowerCase().replace(/\\/+$/, '');\n }\n}\n\n/**\n * Per-(store, baseUrl) one-shot debug warning. The caller has already\n * decided debug logging is on (via `resolved.debug`) — this helper only\n * dedupes so each baseUrl logs at most once per store lifetime.\n */\nfunction maybeLogDebug(debugLogged: Set<string>, key: string, contract: ContractResponse): void {\n if (debugLogged.has(key)) return;\n debugLogged.add(key);\n console.warn(\n `[stackbone] contract handshake ok: baseUrl=${key} version=${contract.version} capabilities=${contract.capabilities.length}`,\n );\n}\n","import {\n type ContractResponse,\n MODULE_CAPABILITIES,\n requireCapability,\n} from '@stackbone/validators';\n\nimport { err, type Result } from '../result';\n\n/**\n * Gating membership rule (Option B from the SDK audit):\n *\n * A surface gates iff `MODULE_CAPABILITIES` (in `@stackbone/validators`)\n * advertises a row for its module id.\n *\n * `MODULE_CAPABILITIES` is the single source of truth — `ModuleId =\n * keyof typeof MODULE_CAPABILITIES`, so the compiler refuses calls to\n * `createModuleGate(...)` for any module not in the table. Adding a new\n * surface to gating means:\n *\n * 1. Declare its required `Capability` in `CAPABILITIES`.\n * 2. Add the `<module>: '<capability>'` row to `MODULE_CAPABILITIES`.\n * 3. Wire `createModuleGate('<module>', resolved, store)` in the surface\n * constructor (or in `client.ts` if the surface is exposed on\n * `client.X`).\n *\n * The four surfaces currently outside the gate map document the reason in\n * their own file (see `pending/memory/memory.ts`, `pending/connections/\n * connections.ts`, `pending/prompts/prompts.ts`, `external/observability/\n * observability.ts`). Today none of them need a wire-level protocol\n * capability — the runtime either does not yet exist, talks to a non-\n * Stackbone partner, or stays local (JSONL) — so they intentionally do\n * NOT consult the gate. When that changes, the criterion above kicks in.\n */\nexport type ModuleId = keyof typeof MODULE_CAPABILITIES;\n\n/**\n * Pure, table-driven gate. Looks up the module's required capability in the\n * shared `MODULE_CAPABILITIES` map, then delegates the actual version +\n * capability check to `requireCapability` from `@stackbone/validators`.\n *\n * Consumed by `createModuleGate` (slices #4/#5); intentionally not surfaced\n * from `libs/sdk/src/index.ts` (the SDK's only public contract surface\n * remains `client.contract`).\n */\nexport function assertCapability(module: ModuleId, contract: ContractResponse): Result<undefined> {\n const capability = MODULE_CAPABILITIES[module];\n const result = requireCapability(capability, contract);\n if (result.error) {\n // `ContractCheckError` is structurally compatible with `SdkError`\n // (`{ code, message, meta? }`), so the widening is just a type cast.\n return err(result.error);\n }\n return { data: undefined, error: null };\n}\n","import { type ContractResponse, MODULE_CAPABILITIES } from '@stackbone/validators';\n\nimport { type ResolvedConfig } from '../config';\nimport { err, ok, type Result } from '../result';\n\nimport { assertCapability, type ModuleId } from './capability-registry';\nimport {\n type ContractHandshakeOptions,\n type ContractStore,\n createContractStore,\n} from './contract-handshake';\n\n/**\n * Async predicate every gated SDK module awaits before forwarding to its\n * underlying implementation. Returns ok when the negotiated contract clears\n * the module's gate (or the escape hatch suppresses a gating error); returns\n * an error envelope otherwise — the caller propagates it back as the public\n * `Result<T>` of the method.\n *\n * Test seam — every gated module exposes an optional `gate` constructor\n * argument that defaults to `createModuleGate(<id>, resolved, store)`. Specs\n * inject a stub returning a synthetic `Result<undefined>` to exercise the\n * gating paths (ok / `contract_version_unsupported` / `capability_unavailable`\n * / `contract_unreachable`) without driving a real handshake.\n */\nexport type ModuleGate = () => Promise<Result<undefined>>;\n\n/**\n * Options accepted by `createModuleGate`. `fetch`/`now` only flow through to\n * the default `store.get(...)` resolver and are ignored when\n * `resolveContract` is supplied.\n *\n * `resolveContract` is the unit-test seam: lets a spec hand back a synthetic\n * (or even schema-invalid) `Result<ContractResponse>` without going through\n * the wire-level Zod parse — that is how the \"version below the SDK floor\"\n * path is tested even though the wire schema enforces `version >= 1`.\n */\nexport interface ModuleGateOptions extends ContractHandshakeOptions {\n resolveContract?: () => Promise<Result<ContractResponse>>;\n}\n\n/**\n * Builds the lazy contract-gate every facade method consults before\n * forwarding to the underlying call. The returned function:\n *\n * 1. Resolves the configured baseUrl from `resolved` (config first, then\n * `STACKBONE_API_URL`).\n * 2. Awaits the contract — by default `store.get(baseUrl)`\n * (single-flight, cached per baseUrl, lazy on first invocation). Tests\n * inject `resolveContract` to bypass the wire schema.\n * 3. On `contract_unreachable` / `contract_malformed`, returns the error.\n * These are reachability failures and remain hard errors regardless of\n * `STACKBONE_REQUIRE_CONTRACT` — the agent literally cannot tell what it\n * is talking to.\n * 4. On a successfully resolved contract, runs `assertCapability(module, c)`.\n * If it errors and `STACKBONE_REQUIRE_CONTRACT=0`, logs a single warning\n * per (store, baseUrl, capability) tuple to stderr and returns ok so the\n * underlying call proceeds. Otherwise returns the error.\n *\n * `store` is the per-client handshake cache. `createClient()` instantiates\n * one with `createContractStore()` and threads it into every gated surface\n * via this factory; two `StackboneClient` instances do NOT share cache\n * state.\n *\n * When omitted (used by callers building a one-off gate outside a client —\n * notably the integration spec) we allocate a fresh store; that store has\n * the same lifetime as the gate itself.\n */\nexport function createModuleGate(\n module: ModuleId,\n resolved: ResolvedConfig,\n store: ContractStore = createContractStore(resolved),\n options: ModuleGateOptions = {},\n): ModuleGate {\n /**\n * Per-store suppression-warning bookkeeping. The escape-hatch warning is\n * a property of the (store, baseUrl, capability) tuple — keeping the Set\n * on the store means two clients can each warn once without stepping on\n * each other, and a fresh store (e.g. a new test) starts with no\n * suppression history.\n */\n const warnedKeys = warningsFor(store);\n\n return async () => {\n const baseUrl = resolved.stackboneApiUrl;\n const handshake = options.resolveContract\n ? await options.resolveContract()\n : await store.get(baseUrl, options);\n if (handshake.error) {\n // Reachability failures cannot be suppressed — we don't know what the\n // datapath is, so refusing the call is the only safe answer.\n return err(handshake.error);\n }\n\n // Agent-side floor (F6): when the creator declared `agent.yaml.protocol.required`,\n // the SDK enforces it BEFORE the per-module capability check. This way the\n // creator's declared minimum wins over a misleading `capability_unavailable`\n // when the datapath happens to advertise the capability under an older\n // protocol version the agent does not support.\n const agentFloor = resolved.protocolRequired;\n const gateError =\n agentFloor !== undefined && handshake.data.version < agentFloor\n ? ({\n code: 'contract_version_unsupported',\n message: `Stackbone Agent Protocol version ${handshake.data.version} is below the minimum required by this agent (${agentFloor}). Upgrade the datapath or lower agent.yaml.protocol.required.`,\n meta: { detected: handshake.data.version, required: agentFloor },\n } as const)\n : assertCapability(module, handshake.data).error;\n\n if (gateError === null) {\n return ok(undefined);\n }\n\n if (store.gatingEnabled()) {\n return err(gateError);\n }\n\n // STACKBONE_REQUIRE_CONTRACT=0 — escape hatch. We still ran the\n // handshake (so `client.contract` is populated) and we still computed\n // the gate; we just don't propagate the error and we warn loudly enough\n // that the creator notices in dev. We always reference the module's\n // required capability (via `MODULE_CAPABILITIES`) so the warning is\n // identical for both `contract_version_unsupported` (no `capability` in\n // meta) and `capability_unavailable` paths.\n const capability = MODULE_CAPABILITIES[module];\n const key = `${baseUrl ?? ''}::${capability}`;\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n console.warn(\n `[stackbone] STACKBONE_REQUIRE_CONTRACT=0 — suppressing ${gateError.code} for ${capability}; ` +\n `the underlying ${module} call may fail downstream.`,\n );\n }\n return ok(undefined);\n };\n}\n\n/**\n * Per-store map of suppression-warning Sets, keyed by store identity. Two\n * gates pinned to the same store share their warning bookkeeping (so a\n * single client warns once per capability regardless of how many gated\n * surfaces fire); two stores get independent Sets, which is the property\n * that lets specs start clean by constructing a fresh store.\n *\n * `WeakMap` so the Set is collected together with its store when the\n * client goes out of scope.\n */\nconst warningsByStore = new WeakMap<ContractStore, Set<string>>();\n\nfunction warningsFor(store: ContractStore): Set<string> {\n let warnings = warningsByStore.get(store);\n if (!warnings) {\n warnings = new Set<string>();\n warningsByStore.set(store, warnings);\n }\n return warnings;\n}\n","import { type ResolvedConfig } from '../config';\nimport { type SdkErrorCode, type SdkErrorPrefix } from '../errors/codes';\nimport { err, ok, type Result, type SdkError } from '../result';\n\n/** Subset of `RequestInit['body']` we serialize without modification. */\ntype SerializedBody = NonNullable<RequestInit['body']>;\n\n/**\n * Per-status overrides facades attach when an HTTP status carries a\n * non-canonical meaning for the endpoint — e.g. a `POST` whose `409` means\n * \"already exists\" instead of the default \"conflict\". Keys are HTTP statuses,\n * values are domain codes the transport should surface verbatim (no prefix\n * concatenation — the override is the final code).\n *\n * The value is typed against the catalog (`SdkErrorCode`) so an endpoint\n * cannot smuggle a wire code that isn't in the documented inventory.\n */\nexport type ErrorOverrides = Record<number, SdkErrorCode>;\n\n/**\n * Tells the transport how to remap HTTP status codes onto the surface's\n * domain code prefix. `404 → '<prefix>_not_found'`, `401 → '<prefix>_unauthorized'`,\n * etc. Endpoint-specific overrides win over the canonical mapping.\n *\n * `prefix` is constrained to `SdkErrorPrefix` (the catalog's prefix tuple) so\n * an unknown surface name doesn't compile — keeps the wire codes the\n * transport emits inside the typed inventory.\n */\nexport interface ErrorMapping {\n /** Prefix concatenated with `_not_found`, `_unauthorized`, …. Required for any domain remap. */\n prefix: SdkErrorPrefix;\n /** Per-status final code that overrides the canonical mapping. */\n overrides?: ErrorOverrides;\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body' | 'signal'> {\n /** Scalar query params. `undefined` values are dropped, others get coerced via `String()`. */\n params?: Record<string, string | number | boolean | undefined>;\n /**\n * Repeated string-array params validated and serialised by the transport.\n * Empty arrays / blank elements reject upstream with `<prefix>_invalid_request`\n * (falls back to `http_invalid_request` when no `errorMapping` is set). Each\n * array is joined with `,` to match the canonical control-plane shape.\n */\n arrayParams?: Record<string, readonly string[]>;\n body?: SerializedBody | Record<string, unknown> | unknown[] | null;\n signal?: AbortSignal;\n /** Allow retrying non-idempotent requests (POST, PATCH). Off by default to prevent duplicate writes. */\n idempotent?: boolean;\n}\n\n/**\n * Shape every facade method ideally collapses into: \"POST to /path with this\n * body, validate against this schema, surface errors as `<prefix>_*`\". The\n * transport handles validation, HTTP→domain remapping, querystring assembly\n * and the `Result` envelope so facades stay tiny orchestrators.\n *\n * `arrayParams` keys default to `errorMapping.prefix` for the validation\n * error code (e.g. an empty `names: []` becomes `secrets_invalid_request`).\n */\nexport interface TransportRequest<T> extends RequestOptions {\n method: string;\n path: string;\n /**\n * Zod schema (or any object with a `.safeParse()` method) the parsed body\n * must validate against. On failure the transport surfaces\n * `<prefix>_invalid_response` (or `http_invalid_response` if no prefix is\n * configured) with the schema issues attached to `meta.issues`.\n */\n responseSchema?: ResponseSchema<T>;\n /** HTTP→domain remapping. Omit to let `http_*` codes flow through unchanged. */\n errorMapping?: ErrorMapping;\n}\n\n/**\n * Minimal contract the transport needs from a schema — `safeParse`. Compatible\n * with Zod (`z.object(…).safeParse(value)`) and any hand-rolled validator that\n * follows the same shape. Avoids leaking Zod's full surface into the transport\n * signature.\n */\nexport interface ResponseSchema<T> {\n safeParse(\n input: unknown,\n ): { success: true; data: T } | { success: false; error: { issues: unknown } };\n}\n\nexport interface HttpClientOptions {\n /** Default 30_000. Set to 0 to disable. */\n timeout?: number;\n /** Default 3. Set to 0 to disable. */\n retryCount?: number;\n /** Initial backoff in ms; doubles each attempt with ±15% jitter. Default 500. */\n retryDelay?: number;\n /** Override the global fetch (useful for tests). */\n fetch?: typeof fetch;\n}\n\nconst RETRYABLE_STATUS = new Set([500, 502, 503, 504]);\nconst IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS']);\n\n/**\n * Shared HTTP client used by every facade that talks to the Stackbone\n * control plane. Wraps `fetch` with timeout, exponential backoff with jitter,\n * idempotent-only retries, response validation (Zod-compatible schemas) and\n * a uniform `Result` envelope so facades never throw at the SDK boundary.\n *\n * Each facade tells the transport its error prefix (`'secrets'`, `'config'`,\n * `'approval'`) so 404/401/403/429/5xx remap to surface-specific codes —\n * `secrets_not_found`, `approval_unauthorized`, etc. Endpoint-specific\n * remaps (e.g. `409 → 'secrets_already_exists'`) flow through\n * `errorMapping.overrides`. Transport-level failures (network, timeout,\n * parse) keep the `http_*` prefix the README contract documents.\n *\n * Reads `STACKBONE_API_URL` and `STACKBONE_AGENT_JWT` lazily on every request so\n * env-var rotation is picked up without restarting the client.\n */\nexport class HttpClient {\n private readonly timeout: number;\n private readonly retryCount: number;\n private readonly retryDelay: number;\n private readonly fetchImpl: typeof fetch;\n\n constructor(\n private readonly resolved: ResolvedConfig,\n options: HttpClientOptions = {},\n ) {\n this.timeout = options.timeout ?? 30_000;\n this.retryCount = options.retryCount ?? 3;\n this.retryDelay = options.retryDelay ?? 500;\n this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n /**\n * Convenience for `request({ method: 'GET', path, ... })`. Kept so legacy\n * callers (tests, pending facades) keep compiling — the deep work happens\n * in `request()`.\n */\n get<T>(path: string, options?: RequestOptions): Promise<Result<T>> {\n return this.request<T>({ method: 'GET', path, ...options });\n }\n\n post<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'POST',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n put<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'PUT',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n patch<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'PATCH',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<Result<T>> {\n return this.request<T>({ method: 'DELETE', path, ...options });\n }\n\n /**\n * The transport entry point every facade should target. Handles base-URL\n * resolution, header injection, body/querystring serialisation, retry +\n * timeout, response validation and HTTP→domain error remapping.\n */\n async request<T>(req: TransportRequest<T>): Promise<Result<T>> {\n const { method, path, responseSchema, errorMapping, ...options } = req;\n const baseUrl = resolveApiUrl(this.resolved);\n if (!baseUrl) {\n return err({\n code: 'stackbone_api_url_missing',\n message:\n 'Cannot reach the Stackbone control plane — set `STACKBONE_API_URL` in the container or pass `stackboneApiUrl` to `createClient({...})`.',\n });\n }\n\n const querystring = buildQuerystring(options.params, options.arrayParams, errorMapping);\n if (querystring.error) return err(querystring.error);\n\n const url = buildUrl(baseUrl, path, querystring.data);\n const canRetry = IDEMPOTENT_METHODS.has(method.toUpperCase()) || options.idempotent === true;\n const maxAttempts = canRetry ? this.retryCount : 0;\n\n const requestHeaders = new Headers(options.headers);\n const jwt = resolveAgentJwt(this.resolved);\n if (jwt && !requestHeaders.has('Authorization')) {\n requestHeaders.set('Authorization', `Bearer ${jwt}`);\n }\n const installationId = resolveInstallationId(this.resolved);\n if (installationId && !requestHeaders.has('X-Stackbone-Installation-Id')) {\n requestHeaders.set('X-Stackbone-Installation-Id', installationId);\n }\n const body = serializeBody(method, options.body, requestHeaders);\n\n let lastError: SdkError | null = null;\n\n for (let attempt = 0; attempt <= maxAttempts; attempt++) {\n if (attempt > 0) {\n try {\n await sleepWithSignal(this.computeBackoff(attempt), options.signal);\n } catch {\n return err({ code: 'http_aborted', message: 'Request aborted by caller' });\n }\n }\n\n const { signal, cancel } = composeSignal(this.timeout, options.signal);\n const {\n body: _rawBody,\n signal: _callerSignal,\n params: _params,\n arrayParams: _arrayParams,\n idempotent: _idempotent,\n headers: _headers,\n ...passthrough\n } = options;\n const init: RequestInit = {\n ...passthrough,\n method,\n headers: requestHeaders,\n };\n if (body !== undefined) init.body = body;\n if (signal) init.signal = signal;\n\n try {\n const response = await this.fetchImpl(url, init);\n cancel();\n\n if (RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {\n await response.body?.cancel();\n lastError = {\n code: codeForStatus(response.status, errorMapping),\n message: `Server error: ${response.status} ${response.statusText}`,\n meta: { status: response.status },\n };\n continue;\n }\n\n return await parseResponse<T>(response, responseSchema, errorMapping);\n } catch (raw) {\n cancel();\n const sdkErr = mapFetchError(raw, this.timeout, options.signal);\n if (sdkErr.code === 'http_aborted' || sdkErr.code === 'http_timeout') {\n // Caller cancelled or timeout consumed all attempts — surface immediately.\n return err(sdkErr);\n }\n if (attempt < maxAttempts) {\n lastError = sdkErr;\n continue;\n }\n return err(sdkErr);\n }\n }\n\n return err(\n lastError ?? {\n code: 'http_request_failed',\n message: 'Request failed after all retry attempts',\n },\n );\n }\n\n private computeBackoff(attempt: number): number {\n const base = this.retryDelay * Math.pow(2, attempt - 1);\n const jitter = base * (0.85 + Math.random() * 0.3);\n return Math.round(jitter);\n }\n}\n\nfunction resolveApiUrl(resolved: ResolvedConfig): string | undefined {\n return resolved.stackboneApiUrl;\n}\n\nfunction resolveAgentJwt(resolved: ResolvedConfig): string | undefined {\n return resolved.agentJwt;\n}\n\nfunction resolveInstallationId(resolved: ResolvedConfig): string | undefined {\n return resolved.installationId;\n}\n\nfunction buildUrl(baseUrl: string, path: string, params: Record<string, string>): string {\n const url = new URL(path, baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.append(key, value);\n }\n return url.toString();\n}\n\n/**\n * Merges scalar `params` and validated `arrayParams` into a flat\n * `Record<string, string>` the URL builder can consume. Empty / blank-element\n * arrays short-circuit with `<prefix>_invalid_request` (or\n * `http_invalid_request` when no prefix is configured) — that is the\n * \"validate request shape\" job the transport now owns end-to-end.\n */\nfunction buildQuerystring(\n params: Record<string, string | number | boolean | undefined> | undefined,\n arrayParams: Record<string, readonly string[]> | undefined,\n errorMapping: ErrorMapping | undefined,\n): Result<Record<string, string>> {\n const out: Record<string, string> = {};\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n out[key] = String(value);\n }\n }\n\n if (arrayParams) {\n const invalidCode: SdkErrorCode = errorMapping?.prefix\n ? (`${errorMapping.prefix}_invalid_request` as SdkErrorCode)\n : 'http_invalid_request';\n for (const [field, values] of Object.entries(arrayParams)) {\n if (!Array.isArray(values) || values.length === 0) {\n return err({\n code: invalidCode,\n message: `\\`${field}\\` must be a non-empty array.`,\n });\n }\n if (values.some((v) => typeof v !== 'string' || !v.trim())) {\n return err({\n code: invalidCode,\n message: `\\`${field}[*]\\` must be non-empty strings.`,\n });\n }\n out[field] = values.join(',');\n }\n }\n\n return ok(out);\n}\n\nfunction serializeBody(\n method: string,\n body: RequestOptions['body'] | undefined,\n headers: Headers,\n): SerializedBody | undefined {\n if (body === undefined || body === null) return undefined;\n if (method === 'GET' || method === 'HEAD') return undefined;\n if (typeof FormData !== 'undefined' && body instanceof FormData) return body;\n if (typeof body === 'string' || body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n return body as SerializedBody;\n }\n if (!headers.has('Content-Type')) {\n headers.set('Content-Type', 'application/json;charset=UTF-8');\n }\n return JSON.stringify(body);\n}\n\nasync function parseResponse<T>(\n response: Response,\n responseSchema: ResponseSchema<T> | undefined,\n errorMapping: ErrorMapping | undefined,\n): Promise<Result<T>> {\n if (response.status === 204) {\n if (!responseSchema) return ok(undefined as T);\n // A schema on a 204 means the caller expects a body — `undefined`\n // won't validate. Run it through `safeParse` so the contract is\n // explicit instead of silently coercing.\n return validateOrFail<T>(undefined, responseSchema, errorMapping, { status: 204 });\n }\n\n const contentType = response.headers.get('content-type');\n let parsed: unknown;\n try {\n parsed = contentType?.includes('json') ? await response.json() : await response.text();\n } catch (e) {\n return err({\n code: 'http_parse_error',\n message: `Failed to parse response body: ${e instanceof Error ? e.message : String(e)}`,\n cause: e,\n meta: { status: response.status },\n });\n }\n\n if (!response.ok) {\n const message =\n parsed &&\n typeof parsed === 'object' &&\n 'message' in parsed &&\n typeof parsed.message === 'string'\n ? parsed.message\n : `Request failed: ${response.statusText}`;\n return err({\n code: codeForStatus(response.status, errorMapping),\n message,\n meta: domainMeta(response.status, parsed, errorMapping),\n });\n }\n\n if (!responseSchema) return ok(parsed as T);\n return validateOrFail<T>(parsed, responseSchema, errorMapping, { status: response.status });\n}\n\nfunction validateOrFail<T>(\n parsed: unknown,\n schema: ResponseSchema<T>,\n errorMapping: ErrorMapping | undefined,\n meta: Record<string, unknown>,\n): Result<T> {\n const validation = schema.safeParse(parsed);\n if (validation.success) return ok(validation.data);\n const code: SdkErrorCode = errorMapping?.prefix\n ? (`${errorMapping.prefix}_invalid_response` as SdkErrorCode)\n : 'http_invalid_response';\n return err({\n code,\n message: 'Response body did not match the expected shape.',\n meta: { ...meta, issues: validation.error.issues },\n });\n}\n\n/**\n * Canonical HTTP→domain mapping. With no `errorMapping` the transport keeps\n * the README-documented `http_*` codes; with a mapping it concatenates the\n * prefix and applies endpoint-specific overrides (`409 →\n * 'secrets_already_exists'`).\n *\n * Domain mapping (prefix set): 401 → `<prefix>_unauthorized`, 403 → forbidden,\n * 404 → not_found, 408 → timeout, 429 → rate_limited, 5xx → unavailable,\n * 4xx generic → invalid_request.\n *\n * Transport mapping (no prefix): keeps the existing `http_unauthorized`,\n * `http_forbidden`, `http_not_found`, `http_timeout`, `http_rate_limited`,\n * `http_server_error` for 5xx, `http_client_error` for generic 4xx — the\n * shape the README has been advertising since alpha.0.\n */\n/**\n * Domain-suffix mapping. Each surface that gets `<prefix>_<reason>` emits a\n * fixed inventory of `<reason>` strings; the catalog declares them per\n * prefix. The tuple here is the exhaustive set the transport produces — the\n * exhaustiveness test in `http-client.spec.ts` asserts every emitted code is\n * still in `SDK_ERROR_CODES`.\n */\nconst DOMAIN_REASONS = [\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'timeout',\n 'rate_limited',\n 'unavailable',\n 'invalid_request',\n 'invalid_response',\n] as const;\ntype DomainReason = (typeof DOMAIN_REASONS)[number];\n\nconst TRANSPORT_REASONS = [\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'client_error',\n 'request_failed',\n 'invalid_request',\n 'invalid_response',\n 'aborted',\n 'network_error',\n 'parse_error',\n] as const;\ntype TransportReason = (typeof TRANSPORT_REASONS)[number];\n\n/**\n * Maps `(status, errorMapping)` to the wire-level code surfaced on the\n * `Result.error.code`. The return type is `SdkErrorCode` so callers (the\n * retry-loop bookkeeper, `parseResponse`, the contract test) can't compose\n * a code that isn't in the catalog by accident.\n *\n * Internally the function builds the `<prefix>_<reason>` string from two\n * typed tuples (`SdkErrorPrefix` × `DomainReason` | `TransportReason`); the\n * compiler accepts the concatenation as `SdkErrorCode` because every\n * combination it can produce is listed in `errors/codes.ts`.\n */\nfunction codeForStatus(status: number, errorMapping: ErrorMapping | undefined): SdkErrorCode {\n const override = errorMapping?.overrides?.[status];\n if (override) return override;\n\n if (errorMapping?.prefix) {\n return `${errorMapping.prefix}_${domainSuffix(status)}` as SdkErrorCode;\n }\n return `http_${transportSuffix(status)}` as const;\n}\n\nfunction domainSuffix(status: number): DomainReason {\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limited';\n if (status >= 500) return 'unavailable';\n if (status >= 400) return 'invalid_request';\n return 'invalid_request';\n}\n\nfunction transportSuffix(status: number): TransportReason {\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limited';\n if (status >= 500) return 'server_error';\n if (status >= 400) return 'client_error';\n return 'request_failed';\n}\n\n/**\n * @internal — exposed solely for the contract test that asserts the SDK\n * error catalog is exhaustive over every `<prefix>_<reason>` HttpClient can\n * emit. Not re-exported from the library barrel.\n */\nexport const __HTTP_CLIENT_ERROR_REASONS_FOR_TESTING = {\n DOMAIN_REASONS,\n TRANSPORT_REASONS,\n} as const;\n\n/**\n * Carries the raw status / body through every error meta payload, regardless\n * of remapping. This keeps the escape hatches the README promised: callers\n * can still pattern-match on `meta.status` even after the code is remapped\n * to the surface-specific prefix.\n */\nfunction domainMeta(\n status: number,\n parsed: unknown,\n errorMapping: ErrorMapping | undefined,\n): Record<string, unknown> {\n const meta: Record<string, unknown> = { status, body: parsed };\n if (errorMapping?.prefix) meta['prefix'] = errorMapping.prefix;\n return meta;\n}\n\nfunction mapFetchError(\n raw: unknown,\n timeoutMs: number,\n callerSignal: AbortSignal | undefined,\n): SdkError {\n if (\n raw &&\n typeof raw === 'object' &&\n 'name' in raw &&\n (raw as { name: string }).name === 'AbortError'\n ) {\n if (callerSignal?.aborted) {\n return { code: 'http_aborted', message: 'Request aborted by caller', cause: raw };\n }\n return {\n code: 'http_timeout',\n message: `Request timed out after ${timeoutMs}ms`,\n cause: raw,\n };\n }\n return {\n code: 'http_network_error',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n };\n}\n\n/**\n * Composes the SDK's timeout signal with the caller's signal so either can\n * abort the in-flight request. `cancel()` clears the timeout when the\n * request settles to avoid keeping a dangling timer alive.\n */\nfunction composeSignal(\n timeoutMs: number,\n callerSignal: AbortSignal | undefined,\n): { signal: AbortSignal | undefined; cancel: () => void } {\n if (timeoutMs <= 0 && !callerSignal) return { signal: undefined, cancel: () => undefined };\n const controller = new AbortController();\n let timer: ReturnType<typeof setTimeout> | undefined;\n if (timeoutMs > 0) {\n timer = setTimeout(() => controller.abort(), timeoutMs);\n }\n let onCallerAbort: (() => void) | undefined;\n if (callerSignal) {\n if (callerSignal.aborted) {\n controller.abort(callerSignal.reason);\n } else {\n onCallerAbort = () => controller.abort(callerSignal.reason);\n callerSignal.addEventListener('abort', onCallerAbort, { once: true });\n }\n }\n return {\n signal: controller.signal,\n cancel: () => {\n if (timer !== undefined) clearTimeout(timer);\n if (onCallerAbort && callerSignal) callerSignal.removeEventListener('abort', onCallerAbort);\n },\n };\n}\n\n/**\n * Pre-flight guard facades use BEFORE consulting the contract gate. Mirrors\n * the validation `request()` runs on `arrayParams`, but lives at the facade\n * layer so an empty/malformed batch never triggers a contract handshake.\n * Returns `null` when the input is valid so callers can `if (invalid)`\n * short-circuit cleanly.\n */\nexport function validateStringArray(\n values: unknown,\n field: string,\n errorCode: SdkErrorCode,\n): Result<never> | null {\n if (!Array.isArray(values) || values.length === 0) {\n return err({ code: errorCode, message: `\\`${field}\\` must be a non-empty array.` });\n }\n if (values.some((v) => typeof v !== 'string' || !v.trim())) {\n return err({ code: errorCode, message: `\\`${field}[*]\\` must be non-empty strings.` });\n }\n return null;\n}\n\nasync function sleepWithSignal(ms: number, signal: AbortSignal | undefined): Promise<void> {\n if (signal?.aborted) throw signal.reason ?? new Error('aborted');\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n if (signal && onAbort) signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n const onAbort = signal\n ? () => {\n clearTimeout(timer);\n reject(signal.reason ?? new Error('aborted'));\n }\n : undefined;\n if (signal && onAbort) signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n","import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js';\nimport postgres, { type Sql } from 'postgres';\n\n/**\n * Public surface a creator can use through `client.database`. We pin it to the\n * `postgres-js` Drizzle wrapper because that is the only driver `@stackbone/sdk`\n * ships and the only one `STACKBONE_POSTGRES_URL` is contracted to point at.\n *\n * Re-exporting Drizzle's own type instead of inventing a structural alias keeps\n * the surface 1:1 with what `drizzle-orm` documents and what `@stackbone/sdk/db`\n * re-exports — so types flow end to end without translation.\n */\nexport type DrizzleClient = PostgresJsDatabase<Record<string, never>> & { $client: Sql };\n\n/**\n * Default factory used by `DatabaseModule`. Spied on in tests via\n * `vi.spyOn(lazyClient, 'createDrizzleClient')` to assert the proxy stays lazy\n * and to swap the real connection out for a fake builder. Tweaking the\n * `postgres()` options here (pool size, prepare flag, etc.) keeps that surface\n * in one place — for now we let the postgres-js defaults stand.\n *\n * Cold-start reconnect: after a Fly Machines `auto_stop_machines=suspend` the\n * pool's sockets may be dead. The first query then surfaces a postgres-js\n * `CONNECTION_TERMINATED`/`CONNECTION_ENDED`/`ECONNRESET`. `client.database`\n * traps that case in `internal.ts` (see `runWithColdStartRetry`), invalidates\n * the cached handle, calls `createDrizzleClient` again to rebuild the pool\n * against `STACKBONE_POSTGRES_URL`, and replays the query exactly once.\n */\nexport function createDrizzleClient(connectionString: string): DrizzleClient {\n const sql = postgres(connectionString);\n // `drizzle(sql)` returns `PostgresJsDatabase & { $client: Sql }`; the cast\n // pins the public alias so internal sibling modules (e.g. `client.rag`) can\n // reach the underlying postgres-js `Sql` via `handle.$client` and share the\n // same pool instead of opening their own.\n return drizzle(sql) as DrizzleClient;\n}\n","import { type ModuleGate } from '../../../contract/module-gate';\nimport { type SdkErrorCode } from '../../../errors/codes';\nimport { type SdkError } from '../../../result';\n\nimport { createDrizzleClient, type DrizzleClient } from './lazy-client';\n\n/**\n * Implementation of the **shared-handles pattern** for the agent's\n * Postgres pool. Cross-surface consumers (RAG today, memory / queues\n * tomorrow) do NOT import from this file — they reach the shared handle\n * through the canonical public accessor `database.shared()` on the live\n * `client.database` surface, which delegates here. See the SDK README +\n * CHANGELOG for the pattern itself.\n *\n * This file is intentionally NOT re-exported from `libs/sdk/src/index.ts`\n * nor from `libs/sdk/src/db/index.ts`. It also has no sibling-relative\n * importers anymore — that was the old escape hatch and the source of\n * the friction P4 removed. The one in-repo importer outside this folder\n * is the test seam `__resetDatabaseHandleForTesting`.\n *\n * Single-pool invariant: an agent process opens at most one `postgres()`\n * pool against the resolved `databaseUrl`. The first reader (whichever\n * side calls `database.shared()` / `database.raw()` / a query-builder verb\n * first) builds the pool; every subsequent caller reuses it. Checked by\n * `nx test sdk` via `shared-handle.spec.ts` which asserts\n * `createDrizzleClient` is invoked exactly once across many callers.\n *\n * Connection string ownership: `DatabaseModule` reads\n * `ResolvedConfig.databaseUrl` (resolved exactly once when the client was\n * built) and passes it in through `getDatabaseHandle(url)`. The first call\n * pins that URL on the module-level cache; subsequent callers (including\n * the cold-start retry path) reuse it. The resolver is the single seam\n * that reads `process.env['STACKBONE_POSTGRES_URL']`.\n */\nlet cachedHandle: DrizzleClient | null = null;\nlet cachedUrl: string | undefined;\n\n/**\n * Implementation detail of `DatabaseModule.shared()` — returns the\n * process-wide Drizzle handle bound to the resolved `databaseUrl`. The\n * first call constructs the underlying `postgres()` pool; subsequent\n * calls return the same Drizzle instance — and therefore reuse the same\n * pool.\n *\n * `connectionString` is the resolved URL the caller already pulled from\n * `ResolvedConfig.databaseUrl`. Passing `undefined` (no explicit value\n * and no cached URL from a previous call) raises\n * `SdkError('database_not_configured')`, matching the public\n * `client.database` setup-bug shape. Cross-surface consumers should call\n * `client.database.shared()` instead of importing this function directly.\n */\nexport function getDatabaseHandle(connectionString?: string): DrizzleClient {\n if (cachedHandle) return cachedHandle;\n const url = connectionString ?? cachedUrl;\n if (!url) {\n throw new DatabaseNotConfiguredError();\n }\n cachedUrl = url;\n cachedHandle = createDrizzleClient(url);\n return cachedHandle;\n}\n\nconst DATABASE_NOT_CONFIGURED_MESSAGE =\n 'Cannot reach the agent database — set `STACKBONE_POSTGRES_URL` in the container or run `stackbone dev` to spin up a local emulator.';\n\n/**\n * Mirrors `DatabaseModule`'s setup-bug error so internal callers see the same\n * `code`/`message` contract as the public `client.database` surface.\n */\nclass DatabaseNotConfiguredError extends Error implements SdkError {\n readonly code = 'database_not_configured';\n\n constructor() {\n super(DATABASE_NOT_CONFIGURED_MESSAGE);\n this.name = 'DatabaseNotConfiguredError';\n }\n}\n\n/**\n * Test-only reset hook for the process-wide singleton. Imported by spec\n * files in this folder and by `rag/shared-pool.spec.ts` to clear the\n * cache between tests; it is intentionally not re-exported from\n * `libs/sdk/src/index.ts` nor `libs/sdk/src/db/index.ts` (same as\n * everything else in this implementation file). The name is loud on\n * purpose so a production caller would have to mean it.\n */\nexport function __resetDatabaseHandleForTesting(): void {\n cachedHandle = null;\n cachedUrl = undefined;\n}\n\n// postgres-js connection codes raised when the underlying socket died (Fly\n// Machines suspended us between queries). SQLSTATE-shaped application errors\n// are excluded — rebuilding the pool only fixes broken sockets.\nconst POOL_TERMINATED_ERROR_CODES = new Set([\n 'CONNECTION_ENDED',\n 'CONNECTION_CLOSED',\n 'CONNECTION_DESTROYED',\n 'CONNECTION_TERMINATED',\n 'ECONNRESET',\n]);\n\nfunction isPoolTerminatedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n const code = (error as { code?: unknown }).code;\n return typeof code === 'string' && POOL_TERMINATED_ERROR_CODES.has(code);\n}\n\n// Runs `firstAttempt`; on a postgres-js connection-terminated rejection,\n// rebuilds the singleton pool once and runs `retryAttempt` against the fresh\n// handle. Non-pool errors pass through. If retry also fails, surfaces the\n// original error verbatim — single retry, no looping. One stderr line per\n// retry so operators see cold-start frequency in production.\nasync function runWithColdStartRetry<T>(\n firstAttempt: () => Promise<T> | T,\n retryAttempt: () => Promise<T> | T,\n): Promise<T> {\n try {\n return await firstAttempt();\n } catch (error) {\n if (!isPoolTerminatedError(error)) throw error;\n process.stderr.write(\n `[stackbone/sdk] database cold-start reconnect: rebuilding pool after ${\n (error as { code?: string }).code ?? 'unknown'\n }\\n`,\n );\n cachedHandle = null;\n try {\n return await retryAttempt();\n } catch {\n throw error;\n }\n }\n}\n\n// Thunk-shaped wrapper consumed by `client.database.transaction(...)` and\n// any future internal caller that does not flow through the chainable proxy.\n// `gate` is awaited before the first attempt; on failure, the gate's\n// `SdkError` is thrown as an `Error & { code, message, meta? }` so the\n// surface matches the synchronous `DatabaseNotConfiguredError` and the rest\n// of the SDK's `database` API (which throws on misuse rather than returning\n// `Result`).\nexport function withColdStartRetry<T>(\n attempt: () => Promise<T> | T,\n gate?: ModuleGate,\n): Promise<T> {\n if (!gate) return runWithColdStartRetry(attempt, attempt);\n return (async () => {\n await assertGate(gate);\n return runWithColdStartRetry(attempt, attempt);\n })();\n}\n\n/**\n * Awaits `gate()` and throws an `Error & SdkError` when the contract handshake\n * blocks the call. Mirrors the shape of `DatabaseNotConfiguredError` so the\n * `client.database` surface stays consistent: setup-bug and gating errors\n * both throw a tagged `Error` with `code` / `message` / `meta`.\n */\nasync function assertGate(gate: ModuleGate): Promise<void> {\n const result = await gate();\n if (result.error === null) return;\n throw new GateBlockedError(result.error);\n}\n\nclass GateBlockedError extends Error implements SdkError {\n readonly code: SdkErrorCode;\n readonly meta?: Record<string, unknown>;\n override readonly cause?: unknown;\n\n constructor(sdkError: SdkError) {\n super(sdkError.message);\n this.name = 'GateBlockedError';\n this.code = sdkError.code;\n if (sdkError.meta) this.meta = sdkError.meta;\n if (sdkError.cause !== undefined) this.cause = sdkError.cause;\n }\n}\n\n// Chainable thenable proxy over a Drizzle query builder. `db.select().from(t)`\n// records the chain; only the terminal `then`/`catch`/`finally` triggers\n// execution. `seed` is the builder primed by the initial `handle.select(...)`\n// call so happy-path spies fire once; on retry we discard `seed`, rebuild the\n// pool, ask `rootCall` for a fresh builder, and replay the chain.\ntype ChainStep = { kind: 'call'; key: string; args: unknown[] } | { kind: 'get'; key: string };\n\nexport function createRetriableQueryBuilder(\n seed: unknown,\n rootCall: (handle: DrizzleClient) => unknown,\n gate?: ModuleGate,\n): unknown {\n return buildProxy([], seed, rootCall, gate);\n}\n\nfunction buildProxy(\n steps: ChainStep[],\n seed: unknown,\n rootCall: (handle: DrizzleClient) => unknown,\n gate: ModuleGate | undefined,\n): unknown {\n const target = function () {\n /* proxy traps every operation */\n };\n const run = async (): Promise<unknown> => {\n if (gate) await assertGate(gate);\n return runWithColdStartRetry(\n () => replayChain(seed, steps),\n () => replayChain(rootCall(getDatabaseHandle()), steps),\n );\n };\n return new Proxy(target, {\n get(_t, key) {\n if (key === 'then') {\n return (resolve: (v: unknown) => unknown, reject?: (e: unknown) => unknown) =>\n run().then(resolve, reject);\n }\n if (key === 'catch') {\n return (reject: (e: unknown) => unknown) => run().catch(reject);\n }\n if (key === 'finally') {\n return (cb: () => void) => run().finally(cb);\n }\n return buildProxy([...steps, { kind: 'get', key: String(key) }], seed, rootCall, gate);\n },\n apply(_t, _this, args) {\n // Previous step was the property access that produced this callable;\n // promote it from `get` to `call` carrying the args so replay invokes\n // the right method on the rebuilt handle.\n const last = steps[steps.length - 1];\n if (!last || last.kind !== 'get') {\n return buildProxy([...steps, { kind: 'call', key: '', args }], seed, rootCall, gate);\n }\n const next: ChainStep[] = [...steps.slice(0, -1), { kind: 'call', key: last.key, args }];\n return buildProxy(next, seed, rootCall, gate);\n },\n });\n}\n\nfunction replayChain(seed: unknown, steps: ChainStep[]): unknown {\n let current: unknown = seed;\n for (const step of steps) {\n if (current === null || current === undefined) return current;\n if (step.kind === 'get') {\n current = (current as Record<string, unknown>)[step.key];\n continue;\n }\n const parent = current as Record<string, unknown>;\n const fn = parent[step.key];\n if (typeof fn !== 'function') {\n throw new TypeError(\n `[stackbone/sdk] cold-start retry could not replay \"${step.key}\": not a function on the rebuilt handle`,\n );\n }\n current = (fn as (...a: unknown[]) => unknown).apply(parent, step.args);\n }\n return current;\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\n\nimport { type DrizzleClient } from './lazy-client';\nimport {\n createRetriableQueryBuilder,\n getDatabaseHandle,\n withColdStartRetry,\n} from './shared-handle';\n\n// Tiny helper: prime the singleton handle with `rootCall(handle)`, hand the\n// resulting builder + factory to the proxy. Keeps the per-verb declarations\n// short and consistent. When a `gate` is provided, it is awaited at the\n// terminal `await` of the chainable proxy and throws a tagged\n// `GateBlockedError` (carrying `code` / `message` / `meta`) when the\n// negotiated contract refuses the call. The connection URL was resolved\n// once at `resolveConfig` time and is threaded down to the singleton on\n// first call; the retry path inside `createRetriableQueryBuilder` reuses\n// the URL already cached on the singleton.\nfunction retriable(\n rootCall: (handle: DrizzleClient) => unknown,\n databaseUrl: string | undefined,\n gate?: ModuleGate,\n): unknown {\n return createRetriableQueryBuilder(rootCall(getDatabaseHandle(databaseUrl)), rootCall, gate);\n}\n\n/**\n * `client.database` is a lazy wrapper over a `drizzle()` instance bound to\n * the resolved `databaseUrl` (config first, then `STACKBONE_POSTGRES_URL`\n * at `resolveConfig` time). The underlying postgres-js connection and the\n * Drizzle facade are constructed on the first method call so partner SDKs\n * only pay the cost when the agent actually touches the database.\n *\n * Native Drizzle methods (`select`, `insert`, `update`, `delete`, `transaction`,\n * `execute`) are exposed verbatim — we explicitly avoid wrapping them in a\n * Result envelope here. Drizzle already throws on misuse and returns typed rows\n * on success; mirroring its API keeps the contract identical to what the\n * `@stackbone/sdk/db` re-exports document, so creators write idiomatic Drizzle.\n *\n * Missing `STACKBONE_POSTGRES_URL` raises `SdkError('database_not_configured')`\n * with an actionable hint that points to `stackbone dev`. This is a creator\n * setup bug, not something the agent's code can recover from at runtime.\n *\n * Methods are declared with their full Drizzle generic signatures (rather than\n * `(...args) => Drizzle[k](...args)` arrow properties) so the inferred row\n * types from `pgTable(...)` flow end-to-end into the caller, which is the\n * promise the `@stackbone/sdk/db` re-export makes.\n *\n * The actual `postgres()` pool and the Drizzle handle are owned by the\n * module-internal singleton in `./shared-handle.ts`. The shared handle is\n * exposed to other SDK surfaces (RAG today, memory / queues tomorrow)\n * through the `shared()` method below — the **canonical accessor** of\n * the SDK's shared-handles pattern. Same instance every call → one pool\n * per agent process. See `shared-handle.spec.ts` for the invariant.\n */\nexport class DatabaseModule {\n private readonly _gate: ModuleGate | undefined;\n private readonly _databaseUrl: string | undefined;\n\n // The connection URL is resolved exactly once at `resolveConfig` time and\n // threaded down to `getDatabaseHandle` on first access; the singleton\n // caches it for the cold-start retry path. The resolver is the single\n // seam that touches `process.env` for this value.\n constructor(\n resolved: ResolvedConfig,\n /**\n * Test seam — see `ModuleGate`. Defaults to the lazy contract gate.\n * The gate is awaited at the terminal `await` of every Drizzle chain\n * (`select/insert/update/delete/execute/transaction`); when it returns\n * an error, a tagged `GateBlockedError` is thrown so callers see the\n * same `Error & { code, message, meta }` surface as the existing\n * `database_not_configured` setup-bug.\n */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('database', resolved);\n this._databaseUrl = resolved.databaseUrl;\n }\n\n /**\n * Escape hatch — returns Drizzle's relational query builder verbatim. The\n * contract gate does NOT fire here because the surface is a synchronous\n * accessor; the user can still bypass the gate via `client.database.raw()`\n * for the same reason. Audit: `query` and `raw()` are intentionally\n * ungated escape hatches; the standard `select/insert/update/delete/\n * execute/transaction` path is fully gated.\n */\n get query(): DrizzleClient['query'] {\n return getDatabaseHandle(this._databaseUrl).query;\n }\n\n // Each query-builder verb invokes Drizzle eagerly (handle construction is\n // observable to tests) and wraps the result in a chainable thenable proxy.\n // Intermediate hops (`from`, `where`, ...) are recorded; only the terminal\n // `await` runs the chain, so a stale pool after a Fly Machines suspend\n // rebuilds and replays the chain exactly once via `createRetriableQueryBuilder`.\n // The contract gate is awaited at the same terminal step.\n select: DrizzleClient['select'] = ((...args: Parameters<DrizzleClient['select']>) =>\n retriable((h) => h.select(...args), this._databaseUrl, this._gate)) as DrizzleClient['select'];\n\n insert: DrizzleClient['insert'] = ((...args: Parameters<DrizzleClient['insert']>) =>\n retriable((h) => h.insert(...args), this._databaseUrl, this._gate)) as DrizzleClient['insert'];\n\n update: DrizzleClient['update'] = ((...args: Parameters<DrizzleClient['update']>) =>\n retriable((h) => h.update(...args), this._databaseUrl, this._gate)) as DrizzleClient['update'];\n\n delete: DrizzleClient['delete'] = ((...args: Parameters<DrizzleClient['delete']>) =>\n retriable((h) => h.delete(...args), this._databaseUrl, this._gate)) as DrizzleClient['delete'];\n\n // `execute()` returns Drizzle's `PgRaw` thenable for raw SQL — same\n // chainable proxy treatment as the query-builder verbs above.\n execute: DrizzleClient['execute'] = ((...args: Parameters<DrizzleClient['execute']>) =>\n retriable(\n (h) => h.execute(...args),\n this._databaseUrl,\n this._gate,\n )) as DrizzleClient['execute'];\n\n // `transaction()` takes a creator-supplied callback and returns a promise,\n // so it goes through the thunk-shaped wrapper. Any cold start mid-tx\n // rebuilds and replays the whole transaction; postgres-js will not commit\n // a half-baked tx. The contract gate fires before the first attempt.\n transaction: DrizzleClient['transaction'] = ((\n ...args: Parameters<DrizzleClient['transaction']>\n ) =>\n withColdStartRetry(\n () => getDatabaseHandle(this._databaseUrl).transaction(...args),\n this._gate,\n )) as DrizzleClient['transaction'];\n\n /**\n * Canonical accessor for the **shared-handles pattern**. Returns the\n * process-wide Drizzle handle backing `client.database`. Cross-surface\n * SDK consumers (RAG today, memory / queues tomorrow) call this — never\n * the implementation-detail singleton in `./shared-handle.ts` — to\n * ensure they share the one `postgres()` pool the agent process owns\n * against `STACKBONE_POSTGRES_URL`.\n *\n * Contract: same input → same instance. Calling `shared()` twice in the\n * same process returns the same reference; the underlying postgres-js\n * `Sql` is reachable as `shared().$client` for callers (e.g. RAG) that\n * need the template-tag function instead of the Drizzle facade.\n *\n * Like `raw()`, this is a synchronous accessor and intentionally does\n * NOT consult the contract gate — surfaces that gate behaviour gate it\n * at their own call sites (`pipeline.ingest`, etc.), not at handle\n * acquisition. Configuration errors (`database_not_configured`) throw\n * with the same tagged `Error` shape every other `client.database`\n * surface uses.\n */\n shared(): DrizzleClient {\n return getDatabaseHandle(this._databaseUrl);\n }\n\n /**\n * Escape hatch for **creator** callers that want the raw Drizzle handle\n * (e.g. to pass it to a library that expects `PostgresJsDatabase`).\n * Functionally identical to `shared()` — both return the same singleton\n * and trigger the same lazy initialisation — but kept under a distinct\n * name because the audiences differ: `shared()` is consumed by other\n * SDK surfaces and documents the cross-surface contract; `raw()` is\n * documented as the creator's escape hatch out of the structured\n * `select/insert/...` surface. Reading either intentionally does NOT\n * consult the contract gate; the caller is opting out of the SDK's\n * structured surface.\n */\n raw(): DrizzleClient {\n return this.shared();\n }\n}\n","export type ChunkStrategy = 'recursive' | 'sentence';\n\nexport interface ChunkOptions {\n /** Splitter algorithm. Default `recursive`. */\n strategy?: ChunkStrategy;\n /** Target characters per chunk. Default 512. */\n size?: number;\n /** Characters of overlap between consecutive chunks. Default 64. */\n overlap?: number;\n}\n\nconst DEFAULT_SIZE = 512;\nconst DEFAULT_OVERLAP = 64;\n\nconst RECURSIVE_SEPARATORS = ['\\n\\n', '\\n', ' ', ''] as const;\n\nconst SENTENCE_BOUNDARY = /(?<=[.!?])\\s+(?=[A-ZÀ-ſ])/g;\n\nexport function chunk(text: string, options: ChunkOptions = {}): string[] {\n const size = options.size ?? DEFAULT_SIZE;\n const overlap = options.overlap ?? DEFAULT_OVERLAP;\n const strategy = options.strategy ?? 'recursive';\n\n if (size <= 0) throw new Error('chunk: `size` must be > 0');\n if (overlap < 0) throw new Error('chunk: `overlap` must be >= 0');\n if (overlap >= size) throw new Error('chunk: `overlap` must be < `size`');\n\n const trimmed = text.trim();\n if (!trimmed) return [];\n\n const pieces = strategy === 'sentence' ? splitBySentence(trimmed) : splitRecursive(trimmed, size);\n return mergePieces(pieces, size, overlap);\n}\n\n/**\n * `sepIdx` skips separators that have already failed for the parent fragment —\n * once `\\n\\n` produced no split, the recursive call on each part doesn't need\n * to retry it.\n */\nfunction splitRecursive(text: string, size: number, sepIdx = 0): string[] {\n if (text.length <= size) return [text];\n for (let idx = sepIdx; idx < RECURSIVE_SEPARATORS.length; idx++) {\n const sep = RECURSIVE_SEPARATORS[idx] as string;\n if (sep === '') return splitByLength(text, size);\n const parts = text.split(sep);\n if (parts.length === 1) continue;\n const out: string[] = [];\n for (const part of parts) {\n if (!part) continue;\n if (part.length <= size) out.push(part);\n else out.push(...splitRecursive(part, size, idx + 1));\n }\n return out;\n }\n return splitByLength(text, size);\n}\n\nfunction splitByLength(text: string, size: number): string[] {\n const out: string[] = [];\n for (let i = 0; i < text.length; i += size) out.push(text.slice(i, i + size));\n return out;\n}\n\nfunction splitBySentence(text: string): string[] {\n return text.split(SENTENCE_BOUNDARY).filter((s) => s.trim().length > 0);\n}\n\n/**\n * Greedy pack into chunks up to `size`, carrying the trailing `overlap`\n * characters of the previous chunk into the next. Avoids O(n²) string\n * concatenation by buffering parts and joining once per chunk.\n */\nfunction mergePieces(pieces: string[], size: number, overlap: number): string[] {\n const out: string[] = [];\n let bufParts: string[] = [];\n let bufLen = 0;\n\n const flush = (): string => {\n const closed = bufParts.join(' ');\n out.push(closed);\n bufParts = [];\n bufLen = 0;\n return closed;\n };\n\n const seed = (text: string): void => {\n bufParts = [text];\n bufLen = text.length;\n };\n\n for (const piece of pieces) {\n if (!piece) continue;\n if (piece.length > size) {\n if (bufLen > 0) flush();\n for (const slice of splitByLength(piece, size)) out.push(slice);\n continue;\n }\n const candidateLen = bufLen === 0 ? piece.length : bufLen + 1 + piece.length;\n if (candidateLen <= size) {\n bufParts.push(piece);\n bufLen = candidateLen;\n continue;\n }\n const closed = flush();\n if (overlap > 0) {\n const seedText = `${tail(closed, overlap)} ${piece}`.trimStart();\n if (seedText.length > size) {\n for (const slice of splitByLength(seedText, size)) out.push(slice);\n } else {\n seed(seedText);\n }\n } else {\n seed(piece);\n }\n }\n if (bufLen > 0) flush();\n return out;\n}\n\nfunction tail(text: string, n: number): string {\n return text.length <= n ? text : text.slice(text.length - n);\n}\n","import { err, ok, type Result, type SdkError } from '../../../result';\nimport { type AiModule } from '../../external/ai/ai';\n\nconst DEFAULT_BATCH_SIZE = 128;\nconst DEFAULT_CONCURRENCY = 4;\n\nexport interface EmbedderOptions {\n ai: AiModule;\n model: string;\n batchSize?: number;\n /** Maximum parallel batches in flight. Default 4. */\n concurrency?: number;\n}\n\n/**\n * `Embedder` — thin adapter around `client.ai.embeddings.create(...)` that\n * batches calls up to the model's batch limit, runs a bounded number of\n * batches concurrently, and maps provider errors into the canonical\n * `rag_embedding_failed` `SdkError` shape consumed by `RagPipeline`.\n *\n * The class is decoupled from postgres and from `client.rag` so the ingestion\n * pipeline can be unit-tested with a deterministic fake `Embedder` that\n * returns fixed vectors per input string.\n */\nexport class Embedder {\n private readonly _ai: AiModule;\n private readonly _model: string;\n private readonly _batchSize: number;\n private readonly _concurrency: number;\n\n constructor(options: EmbedderOptions) {\n const batchSize = options.batchSize ?? DEFAULT_BATCH_SIZE;\n if (!Number.isInteger(batchSize) || batchSize <= 0) {\n throw new Error('Embedder: `batchSize` must be a positive integer.');\n }\n this._ai = options.ai;\n this._model = options.model;\n this._batchSize = batchSize;\n this._concurrency = options.concurrency ?? DEFAULT_CONCURRENCY;\n }\n\n get model(): string {\n return this._model;\n }\n\n async embedOne(text: string): Promise<Result<number[]>> {\n const result = await this.embedAll([text]);\n if (result.error) return err(result.error);\n const first = result.data[0];\n if (!first) {\n return err({\n code: 'rag_embedding_failed',\n message: 'Embedding API returned no vector for the input text.',\n });\n }\n return ok(first);\n }\n\n async embedAll(texts: string[]): Promise<Result<number[][]>> {\n if (texts.length === 0) return ok([]);\n\n const batches: string[][] = [];\n for (let i = 0; i < texts.length; i += this._batchSize) {\n batches.push(texts.slice(i, i + this._batchSize));\n }\n\n const out: number[][] = new Array(texts.length);\n let cursor = 0;\n\n const worker = async (): Promise<SdkError | null> => {\n while (cursor < batches.length) {\n const batchIndex = cursor++;\n const batch = batches[batchIndex] as string[];\n const result = await this._ai.embeddings.create({ model: this._model, input: batch });\n if (result.error) {\n const meta = { ...(result.error.meta ?? {}), batchIndex, model: this._model };\n if (isUnsupportedModelError(result.error)) {\n return {\n code: 'rag_embedding_model_unsupported',\n message: `Embedding model \\`${this._model}\\` is not available through the configured AI client: ${result.error.message}`,\n cause: result.error,\n meta,\n };\n }\n return {\n code: 'rag_embedding_failed',\n message: `Embedding batch ${batchIndex} failed: ${result.error.message}`,\n cause: result.error,\n meta,\n };\n }\n const offset = batchIndex * this._batchSize;\n result.data.data.forEach((item, j) => {\n out[offset + j] = item.embedding;\n });\n }\n return null;\n };\n\n const errors = await Promise.all(\n Array.from({ length: Math.min(this._concurrency, batches.length) }, () => worker()),\n );\n const firstError = errors.find((e) => e !== null);\n if (firstError) return err(firstError);\n return ok(out);\n }\n}\n\n/**\n * Detects underlying `client.ai` errors that mean \"the embedding model is not\n * available through the configured AI client\" — typically OpenRouter 404 for\n * an unknown model id, or a 400/422 validation error rejecting the model\n * field. The pipeline maps these to the canonical\n * `rag_embedding_model_unsupported` error so creators get an actionable hint\n * instead of a raw provider error. ADR `2026-05-10-rag-consolidation-on-client-database` §D2.\n */\nfunction isUnsupportedModelError(error: SdkError): boolean {\n const status = (error.meta as { status?: number } | undefined)?.status;\n if (status === 404) return true;\n if (error.code === 'ai_validation_error') return true;\n return false;\n}\n","/**\n * The single source of truth for every `code` an `SdkError` may carry on the\n * `Result` envelope returned from a public SDK method. The README contract\n * (and every creator who pattern-matches on `result.error.code`) is driven by\n * this catalog — adding a new code means editing this file, and **only** this\n * file. The compiler then refuses to ship any `SdkError({ code: '<unknown>' })`\n * downstream.\n *\n * Shape:\n * - `SDK_ERROR_CODE_PREFIXES` declares each prefix family and the suffixes\n * it owns. `<prefix>` + `_<reason>` is the wire-level code.\n * - `SDK_ERROR_CODES_STANDALONE` declares the freestanding codes that don't\n * follow the `<prefix>_<reason>` rule (`not_implemented`, the various\n * `*_missing` setup-bug codes, the `capability_*` / `contract_*` shapes).\n * - `SdkErrorCode` is the union projected from both. Pass it to `err({...})`\n * and the constructor rejects any literal that isn't in this catalog.\n *\n * Stability contract: the wire-level shape of every code in this catalog is\n * part of the README's public error table. Codes are added behind a minor;\n * codes are removed behind a major and the CHANGELOG. Spelling tweaks (even\n * typos) wait for a major — fix the catalog and the call site together.\n */\n\n/**\n * Prefix families. Each entry maps a `<prefix>` to the tuple of `<reason>`\n * suffixes the SDK can emit under it. Two-step structure (object of tuples)\n * is what powers the typed projection at the bottom of this file: the\n * `as const` makes both the prefix names and the suffix strings into literal\n * types so `SdkErrorCode` collapses to a finite string union.\n */\nexport const SDK_ERROR_CODE_PREFIXES = {\n /**\n * `client.ai` — wraps the OpenAI SDK pointed at OpenRouter. Status codes\n * come from `codeForStatus` in `ai.ts` plus the fetch-error mapper.\n */\n ai: [\n 'aborted',\n 'credits_exhausted',\n 'forbidden',\n 'moderation_blocked',\n 'network_error',\n 'no_image_generated',\n 'provider_error',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'validation_error',\n ],\n\n /**\n * `client.storage` — wraps `@aws-sdk/client-s3` against R2/MinIO. Most\n * failures collapse into `s3_error` with the AWS metadata on `meta`; the\n * specific codes below are the early validation paths.\n */\n s3: [\n 'bucket_missing',\n 'credentials_missing',\n 'empty_response',\n 'error',\n 'invalid_argument',\n 'invalid_key',\n ],\n\n /**\n * `client.rag` — the agent-local retrieval pipeline. `invalid_request` is\n * the validation rail; the rest map specific Postgres / embedder failures\n * the README documents.\n */\n rag: [\n 'dim_mismatch',\n 'embedding_failed',\n 'embedding_model_unsupported',\n 'error',\n 'ingest_cancelled',\n 'invalid_request',\n 'job_insert_failed',\n 'jobs_error',\n 'schema_missing',\n ],\n\n /**\n * `client.approval` — control-plane facade plus the HMAC verify helper.\n * The transport-driven codes (`unauthorized`, `forbidden`, ...) come from\n * `HttpClient`'s status→domain remap with `prefix: 'approval'`; the\n * verify-specific codes (`invalid_signature`, etc.) are emitted locally.\n */\n approval: [\n 'forbidden',\n 'invalid_payload',\n 'invalid_request',\n 'invalid_response',\n 'invalid_signature',\n 'not_found',\n 'rate_limited',\n 'signature_expired',\n 'signing_key_missing',\n 'timeout',\n 'tool_execute_failed',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.secrets` — control-plane facade. Almost entirely transport-\n * driven (HttpClient remap with `prefix: 'secrets'`); the local codes are\n * the request-shape rail.\n */\n secrets: [\n 'already_exists',\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'not_found',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.config` — symmetric to `secrets`, points at `/api/config`.\n */\n config: [\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'not_found',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.memory` — reserved. The README documents the prefix; today the\n * pending surface returns `not_implemented` for every method so no\n * `memory_*` codes are emitted yet. Kept as an empty bucket so the\n * catalog matches the README table verbatim.\n */\n memory: [] as readonly string[],\n\n /**\n * Transport-level error family — `HttpClient` emits these when no\n * facade-specific `errorMapping.prefix` is configured, or when the\n * failure is pre-/post-HTTP (DNS, abort, body parse).\n */\n http: [\n 'aborted',\n 'client_error',\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'network_error',\n 'not_found',\n 'parse_error',\n 'rate_limited',\n 'request_failed',\n 'server_error',\n 'timeout',\n 'unauthorized',\n ],\n\n /**\n * `client.database` (and its cross-surface consumers) — the setup-bug\n * surface stays under one prefix so creators can pattern-match on\n * `database_*` regardless of whether the failure came from the database\n * module, RAG, or the observability run-cost hook.\n */\n database: ['not_configured'],\n\n /**\n * `client.observability` — only the run-cost rollup emits a domain code\n * today; everything else either returns ok or surfaces through the\n * `database_*` family above.\n */\n observability: ['close_run_failed'],\n\n /**\n * Contract handshake / gating family — emitted by the per-client\n * `ContractStore` and consumed by every gated facade as a hard error.\n * Documented for creators in the gating section of the SDK ADRs.\n */\n contract: ['malformed', 'unreachable', 'version_unsupported'],\n\n /**\n * Capability gating family — the single code is the table-driven block\n * the gate returns when the negotiated contract lacks the required\n * capability. The shape lives in `@stackbone/validators`; the SDK widens\n * it into `SdkError` verbatim.\n */\n capability: ['unavailable'],\n} as const satisfies Record<string, readonly string[]>;\n\n/**\n * Freestanding codes — they don't follow the `<prefix>_<reason>` rule, so\n * they live as full literals here. Two families:\n *\n * - `not_implemented` for the pending surfaces' stubbed methods.\n * - `*_missing` for the setup-bug rail every facade checks before its\n * first network call (`STACKBONE_API_URL`, `STACKBONE_AGENT_ID`,\n * `OPENROUTER_API_KEY`, `STACKBONE_POSTGRES_URL`).\n */\nexport const SDK_ERROR_CODES_STANDALONE = [\n 'agent_id_missing',\n 'database_url_missing',\n 'not_implemented',\n 'openrouter_key_missing',\n 'stackbone_api_url_missing',\n] as const;\n\n/**\n * Type-level projection: `<prefix>_<reason>` for every entry of\n * `SDK_ERROR_CODE_PREFIXES`, plus the standalone codes. The trick is the\n * second mapped-tuple step: `(typeof SDK_ERROR_CODE_PREFIXES)[P][number]`\n * collapses the tuple to the union of its suffixes, then template-string\n * inference builds the full code.\n */\ntype Prefix = keyof typeof SDK_ERROR_CODE_PREFIXES;\n\ntype PrefixedCode<P extends Prefix = Prefix> = {\n [K in P]: `${K}_${(typeof SDK_ERROR_CODE_PREFIXES)[K][number]}`;\n}[P];\n\nexport type SdkErrorCode = PrefixedCode | (typeof SDK_ERROR_CODES_STANDALONE)[number];\n\n/**\n * Runtime mirror of `SdkErrorCode`. Powers the exhaustiveness check the\n * contract test uses to confirm every code emitted by `HttpClient` (and\n * every catalog suffix the SDK declares) is reachable from a `Set`-level\n * lookup. The order of construction is deliberate: the catalog above is the\n * declaration surface; this `Set` is a derived shape, not a parallel list.\n */\n// Built as a `Set<string>` so the type-guard below can call `has()` with an\n// untyped wire string; the public export narrows to `ReadonlySet<SdkErrorCode>`\n// so callers outside this file can't accidentally `has()` something arbitrary\n// and have it type-check.\nconst ALL_CODES = new Set<string>(SDK_ERROR_CODES_STANDALONE);\nfor (const [prefix, reasons] of Object.entries(SDK_ERROR_CODE_PREFIXES)) {\n for (const reason of reasons) {\n ALL_CODES.add(`${prefix}_${reason}`);\n }\n}\n\nexport const SDK_ERROR_CODES: ReadonlySet<SdkErrorCode> = ALL_CODES as ReadonlySet<SdkErrorCode>;\n\n/**\n * Type guard for callers that receive a raw string from the wire (e.g. a\n * decoded JSON body) and want to narrow it to the catalog. Returns false\n * for any unknown code so the caller can decide whether to re-throw,\n * fall back, or surface the raw string.\n */\nexport function isSdkErrorCode(code: string): code is SdkErrorCode {\n return ALL_CODES.has(code);\n}\n\n/**\n * Prefix names exposed as a tuple for the `errorMapping.prefix` slot on\n * `HttpClient.request`. Statically tying the transport's prefix to the\n * catalog keeps `<prefix>_<reason>` emissions inside `SdkErrorCode` —\n * adding a new prefix means adding it here AND a `<prefix>_invalid_request`\n * / `<prefix>_invalid_response` / standard status-mapped suffix to the\n * catalog above.\n */\nexport type SdkErrorPrefix = Prefix;\n","import { isSdkErrorCode, type SdkErrorCode } from '../../../errors/codes';\nimport { type SdkError } from '../../../result';\n\n// Postgres error code for `relation does not exist`. When the canonical RAG\n// schema (feature 30) is missing the CLI hasn't run its migrations, so we\n// surface an actionable hint instead of a raw Postgres error.\nexport const PG_UNDEFINED_TABLE = '42P01';\n\nexport const RAG_SCHEMA_MISSING_HINT =\n 'run `stackbone db migrate add-rag` and `stackbone db migrate up`';\n\nexport function isTaggedError(\n cause: unknown,\n): cause is Error & { code?: string; meta?: Record<string, unknown> } {\n return cause instanceof Error;\n}\n\n/**\n * Maps an arbitrary thrown value into the SDK error envelope used by every\n * RAG entrypoint. Special-cases `42P01` so missing schema flows through as\n * `rag_schema_missing` with the canonical hint regardless of whether the\n * caller is the pipeline, the facade or the jobs writer.\n *\n * `fallbackCode` is constrained to `SdkErrorCode`, so every call site has to\n * choose from the catalog — typos no longer compile. The same constraint\n * applies to `cause.code`: when the upstream error already carries a\n * catalog code (e.g. `'rag_dim_mismatch'` thrown from `sql.ts`), the helper\n * surfaces it verbatim; anything else collapses into `fallbackCode` so a\n * raw upstream string can never leak past the SDK boundary.\n */\nexport function toRagError(\n cause: unknown,\n message: string,\n fallbackCode: SdkErrorCode = 'rag_error',\n): SdkError {\n if (isTaggedError(cause) && cause.code === PG_UNDEFINED_TABLE) {\n return {\n code: 'rag_schema_missing',\n message: `RAG tables are not installed — ${RAG_SCHEMA_MISSING_HINT}.`,\n cause,\n meta: { hint: RAG_SCHEMA_MISSING_HINT },\n };\n }\n if (isTaggedError(cause)) {\n const code: SdkErrorCode =\n cause.code !== undefined && isSdkErrorCode(cause.code) ? cause.code : fallbackCode;\n const error: SdkError = {\n code,\n message: `${message}: ${cause.message}`,\n cause,\n };\n if (cause.meta) error.meta = cause.meta;\n return error;\n }\n return { code: fallbackCode, message, cause };\n}\n","// F07 — `stackbone_rag_jobs` writer + streaming progress events.\n//\n// `RagPipeline` is intentionally agnostic about *where* job lifecycle goes:\n// it calls into an `IngestJobWriter` whenever one is supplied, and the\n// concrete implementation in `RagModule` plugs the writer that talks to the\n// canonical `stackbone_rag_jobs` table via the shared `client.database`\n// pool. Tests pass an in-memory writer that records the event sequence and\n// can simulate cancellation between batches.\n//\n// Event shape is locked by ADR `2026-05-10-rag-consolidation-on-client-database` §D9.\n\nimport { type Sql } from 'postgres';\n\nimport { err, ok, type Result } from '../../../result';\n\nimport { toRagError } from './errors';\n\nexport type RagIngestProgress =\n | { type: 'started'; jobId: string; totalChunks: number }\n | {\n type: 'progress';\n jobId: string;\n processedChunks: number;\n totalChunks: number;\n currentDocument?: { source: string; ordinal: number };\n }\n | { type: 'completed'; jobId: string; totalChunks: number }\n | { type: 'failed'; jobId: string; error: string };\n\nexport interface IngestJobStartArgs {\n collection: string;\n source: string;\n totalChunks: number;\n}\n\nexport interface IngestJobProgressArgs {\n jobId: string;\n processedChunks: number;\n totalChunks: number;\n currentDocument?: { source: string; ordinal: number };\n}\n\nexport interface IngestJobCompleteArgs {\n jobId: string;\n totalChunks: number;\n}\n\nexport interface IngestJobFailArgs {\n jobId: string;\n error: string;\n}\n\nexport interface IngestJobWriter {\n /**\n * Allocates a `stackbone_rag_jobs` row in `running` state and returns its\n * id. Caller is expected to surface this id to the user before any\n * progress event fires so a `client.rag.ingestAsync` consumer can\n * immediately address the job (e.g. `POST /api/rag/jobs/:jobId/cancel`).\n */\n start(args: IngestJobStartArgs): Promise<Result<{ jobId: string }>>;\n /** Idempotent — last write wins on `progress` jsonb. */\n progress(args: IngestJobProgressArgs): Promise<void>;\n /** Marks the row terminal (status='succeeded'). */\n complete(args: IngestJobCompleteArgs): Promise<void>;\n /** Marks the row terminal (status='failed') and stores the error message. */\n fail(args: IngestJobFailArgs): Promise<void>;\n /**\n * Polled between chunk batches. Returning `true` makes the pipeline abort\n * with `rag_ingest_cancelled`, leaving the row in whatever terminal state\n * the writer transitions it to next (typically `cancelled`).\n */\n isCancelled(args: { jobId: string }): Promise<boolean>;\n}\n\ninterface CollectionRow {\n id: string;\n}\n\ninterface JobRow {\n id: string;\n status: 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';\n}\n\n/**\n * Writer bound to the shared `client.database` pool. Resolves the\n * `stackbone_rag_collections.id` for the requested collection name (creating\n * the row on the fly so an `ingestAsync` against a brand-new collection\n * doesn't 404 on the FK). Cancellation is observed by re-reading the row's\n * status — the `/api/rag/jobs/:jobId/cancel` handler from F06 flips it to\n * `cancelled` from outside the pipeline.\n */\nexport function createSqlJobWriter(sql: Sql): IngestJobWriter {\n return {\n async start({ collection, totalChunks }): Promise<Result<{ jobId: string }>> {\n try {\n const collectionId = await ensureCollection(sql, collection);\n const inserted = await sql<JobRow[]>`\n INSERT INTO stackbone_rag_jobs (collection_id, status, progress)\n VALUES (${collectionId}, 'running', ${sql.json({ totalChunks, processedChunks: 0 })})\n RETURNING id, status\n `;\n const row = inserted[0];\n if (!row) {\n return err({\n code: 'rag_job_insert_failed',\n message: 'Job row insert returned no rows.',\n });\n }\n return ok({ jobId: row.id });\n } catch (cause) {\n return err(toRagError(cause, 'Job start failed', 'rag_jobs_error'));\n }\n },\n async progress({ jobId, processedChunks, totalChunks, currentDocument }): Promise<void> {\n const payload = currentDocument\n ? { totalChunks, processedChunks, currentDocument }\n : { totalChunks, processedChunks };\n await sql`\n UPDATE stackbone_rag_jobs\n SET progress = ${sql.json(payload)}, updated_at = now()\n WHERE id = ${jobId}\n `;\n },\n async complete({ jobId, totalChunks }): Promise<void> {\n await sql`\n UPDATE stackbone_rag_jobs\n SET status = 'succeeded',\n progress = ${sql.json({ totalChunks, processedChunks: totalChunks })},\n updated_at = now()\n WHERE id = ${jobId} AND status NOT IN ('cancelled', 'succeeded', 'failed')\n `;\n },\n async fail({ jobId, error }): Promise<void> {\n await sql`\n UPDATE stackbone_rag_jobs\n SET status = 'failed', error = ${error}, updated_at = now()\n WHERE id = ${jobId} AND status NOT IN ('cancelled', 'succeeded', 'failed')\n `;\n },\n async isCancelled({ jobId }): Promise<boolean> {\n const rows = await sql<Pick<JobRow, 'status'>[]>`\n SELECT status FROM stackbone_rag_jobs WHERE id = ${jobId} LIMIT 1\n `;\n return rows[0]?.status === 'cancelled';\n },\n };\n}\n\n// One round-trip: ON CONFLICT DO UPDATE always returns the id whether the row\n// was inserted or already existed.\nasync function ensureCollection(sql: Sql, name: string): Promise<string> {\n const inserted = await sql<CollectionRow[]>`\n INSERT INTO stackbone_rag_collections (name) VALUES (${name})\n ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name\n RETURNING id\n `;\n const row = inserted[0];\n if (!row) {\n throw new Error(`stackbone_rag_collections upsert returned no row for ${name}`);\n }\n return row.id;\n}\n","import { extractText } from 'unpdf';\n\nexport interface ParseOptions {\n /** MIME type override. If omitted, the parser sniffs the input (Blob.type or PDF magic bytes). */\n mime?: string;\n}\n\nexport type ParseInput = Blob | string | Uint8Array | ArrayBuffer;\n\nconst PDF_MIME_TYPES = new Set(['application/pdf', 'application/x-pdf']);\nconst PDF_MAGIC = [0x25, 0x50, 0x44, 0x46];\n\n/**\n * Markdown is returned verbatim — no HTML rendering, no frontmatter stripping.\n * PDFs are flattened to one string with newlines between pages (no OCR).\n */\nexport async function parse(input: ParseInput, options: ParseOptions = {}): Promise<string> {\n if (typeof input === 'string') return input;\n\n const mime = (options.mime ?? sniffMime(input))?.toLowerCase();\n const bytes = await toUint8Array(input);\n const kind = resolveKind(mime, bytes);\n\n switch (kind) {\n case 'pdf': {\n const { text } = await extractText(bytes, { mergePages: true });\n return text;\n }\n case 'text':\n return new TextDecoder().decode(bytes);\n case 'unsupported':\n throw new Error(\n `parse: unsupported MIME type \\`${mime}\\`. Supported: text/*, application/pdf.`,\n );\n }\n}\n\nfunction resolveKind(mime: string | undefined, bytes: Uint8Array): 'pdf' | 'text' | 'unsupported' {\n if (mime) {\n if (PDF_MIME_TYPES.has(mime)) return 'pdf';\n if (mime.startsWith('text/')) return 'text';\n return 'unsupported';\n }\n return looksLikePdf(bytes) ? 'pdf' : 'text';\n}\n\nasync function toUint8Array(input: Exclude<ParseInput, string>): Promise<Uint8Array> {\n if (input instanceof Uint8Array) return input;\n if (input instanceof Blob) return new Uint8Array(await input.arrayBuffer());\n return new Uint8Array(input);\n}\n\nfunction sniffMime(input: Exclude<ParseInput, string>): string | undefined {\n if (input instanceof Blob && input.type) return input.type;\n return undefined;\n}\n\nfunction looksLikePdf(bytes: Uint8Array): boolean {\n if (bytes.length < PDF_MAGIC.length) return false;\n return PDF_MAGIC.every((b, i) => bytes[i] === b);\n}\n","import type { Sql } from 'postgres';\n\nimport { type SdkErrorCode } from '../../../errors/codes';\n\nexport const DEFAULT_NAMESPACE = 'default';\nexport const META_KEY_DIMENSIONS = 'dimensions';\nexport const META_KEY_DISTANCE = 'distance';\n\nexport interface IngestRow {\n docId: string;\n chunkIdx: number;\n namespace: string;\n content: string;\n embedding: number[];\n metadata: Record<string, unknown>;\n}\n\nexport interface RetrieveRow {\n docId: string;\n chunkIdx: number;\n content: string | null;\n metadata: Record<string, unknown> | null;\n score: number;\n}\n\n// Caches the dimensions confirmed against `_rag_meta` per `Sql` instance so\n// the hot path of repeated `ingest` calls skips the meta SELECT after the\n// first verification. Keyed by Sql so disjoint pools stay independent.\nconst schemaVerifiedDimensions = new WeakMap<Sql, number>();\n\n/**\n * Idempotent. On the first call provisions extension + tables + indexes; on\n * subsequent calls it short-circuits after verifying stored dimensions match.\n * Throws an Error tagged with `code = 'rag_dim_mismatch'` so callers can map\n * it to the SDK error envelope.\n */\nexport async function ensureSchema(sql: Sql, dimensions: number): Promise<void> {\n if (!Number.isInteger(dimensions) || dimensions <= 0 || dimensions > 8192) {\n throw new Error(\n `rag.ensureSchema: invalid dimensions ${dimensions}. Must be a positive integer <= 8192.`,\n );\n }\n\n if (schemaVerifiedDimensions.get(sql) === dimensions) return;\n\n const existing = await sql<{ value: number }[]>`\n SELECT value::int AS value FROM _rag_meta WHERE key = ${META_KEY_DIMENSIONS}\n `.catch(() => [] as { value: number }[]);\n\n if (existing.length > 0 && existing[0]) {\n const stored = existing[0].value;\n if (stored !== dimensions) {\n const error = new Error(\n `Embedding dimensions mismatch: collection was provisioned with ${stored} dims but received ${dimensions}. ` +\n `Call \\`stackbone.rag.reset()\\` to recreate the collection with the new dimensions.`,\n ) as Error & { code: SdkErrorCode; meta: Record<string, unknown> };\n error.code = 'rag_dim_mismatch';\n error.meta = { stored, received: dimensions };\n throw error;\n }\n schemaVerifiedDimensions.set(sql, dimensions);\n return;\n }\n\n await sql.begin(async (tx) => {\n await tx`CREATE EXTENSION IF NOT EXISTS vector`;\n await tx`\n CREATE TABLE IF NOT EXISTS _rag_meta (\n key TEXT PRIMARY KEY,\n value JSONB NOT NULL\n )\n `;\n await tx.unsafe(buildChunkTableDDL(dimensions));\n await tx.unsafe(CHUNK_INDEXES_DDL);\n await tx`\n INSERT INTO _rag_meta (key, value) VALUES\n (${META_KEY_DIMENSIONS}, ${tx.json(dimensions)}),\n (${META_KEY_DISTANCE}, ${tx.json('cosine')})\n ON CONFLICT (key) DO NOTHING\n `;\n });\n schemaVerifiedDimensions.set(sql, dimensions);\n}\n\nexport async function reset(sql: Sql): Promise<void> {\n await sql.begin(async (tx) => {\n await tx`DROP TABLE IF EXISTS rag_chunks`;\n await tx`DROP TABLE IF EXISTS _rag_meta`;\n });\n schemaVerifiedDimensions.delete(sql);\n}\n\n/**\n * Removes every chunk of a document. Callers that batch their ingest must\n * invoke this once before the loop so intermediate slices aren't wiped by\n * subsequent batches.\n */\nexport async function clearDocument(sql: Sql, docId: string, namespace: string): Promise<void> {\n await sql`\n DELETE FROM rag_chunks\n WHERE namespace = ${namespace} AND doc_id = ${docId}\n `;\n}\n\n/**\n * Inserts a contiguous batch of chunks in a single round-trip via multi-row\n * VALUES. Does NOT delete pre-existing rows — call `clearDocument` first when\n * replacing a document's chunks.\n */\nexport async function ingestDocument(sql: Sql, rows: IngestRow[]): Promise<number> {\n if (rows.length === 0) return 0;\n const placeholders = rows\n .map((_, i) => {\n const base = i * 6;\n return `($${base + 1}, $${base + 2}, $${base + 3}, $${base + 4}, $${base + 5}::vector, $${base + 6}::jsonb)`;\n })\n .join(',');\n const params = rows.flatMap((row) => [\n row.docId,\n row.chunkIdx,\n row.namespace,\n row.content,\n formatVector(row.embedding),\n JSON.stringify(row.metadata),\n ]);\n await sql.unsafe(\n `INSERT INTO rag_chunks (doc_id, chunk_idx, namespace, content, embedding, metadata) VALUES ${placeholders}`,\n params,\n );\n return rows.length;\n}\n\nexport async function deleteByIds(sql: Sql, ids: string[], namespace: string): Promise<number> {\n if (ids.length === 0) return 0;\n const result = await sql`\n DELETE FROM rag_chunks\n WHERE namespace = ${namespace} AND doc_id = ANY(${ids})\n `;\n return result.count ?? 0;\n}\n\nexport async function deleteByFilter(\n sql: Sql,\n filter: Record<string, unknown>,\n namespace: string,\n): Promise<number> {\n const filterClause =\n Object.keys(filter).length > 0 ? sql`AND metadata @> ${sql.json(filter as never)}` : sql``;\n const result = await sql`\n DELETE FROM rag_chunks\n WHERE namespace = ${namespace} ${filterClause}\n `;\n return result.count ?? 0;\n}\n\nexport interface RetrieveParams {\n embedding: number[];\n topK: number;\n filter?: Record<string, unknown>;\n namespace: string;\n includeContent: boolean;\n includeMetadata: boolean;\n}\n\nexport async function retrieve(sql: Sql, params: RetrieveParams): Promise<RetrieveRow[]> {\n const embStr = formatVector(params.embedding);\n const filterClause =\n params.filter && Object.keys(params.filter).length > 0\n ? sql`AND metadata @> ${sql.json(params.filter as never)}`\n : sql``;\n const contentColumn = params.includeContent ? sql`content` : sql`NULL AS content`;\n const metadataColumn = params.includeMetadata ? sql`metadata` : sql`NULL AS metadata`;\n return sql<RetrieveRow[]>`\n SELECT\n doc_id AS \"docId\",\n chunk_idx AS \"chunkIdx\",\n ${contentColumn},\n ${metadataColumn},\n 1 - (embedding <=> ${embStr}::vector) AS score\n FROM rag_chunks\n WHERE namespace = ${params.namespace} ${filterClause}\n ORDER BY embedding <=> ${embStr}::vector\n LIMIT ${params.topK}\n `;\n}\n\nfunction formatVector(embedding: number[]): string {\n return `[${embedding.join(',')}]`;\n}\n\nfunction buildChunkTableDDL(dimensions: number): string {\n return `\n CREATE TABLE IF NOT EXISTS rag_chunks (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n doc_id TEXT NOT NULL,\n chunk_idx INT NOT NULL,\n namespace TEXT NOT NULL DEFAULT 'default',\n content TEXT NOT NULL,\n embedding VECTOR(${dimensions}) NOT NULL,\n metadata JSONB NOT NULL DEFAULT '{}'::jsonb,\n created_at TIMESTAMPTZ NOT NULL DEFAULT now(),\n UNIQUE (namespace, doc_id, chunk_idx)\n )\n `;\n}\n\nconst CHUNK_INDEXES_DDL = `\n CREATE INDEX IF NOT EXISTS rag_chunks_namespace_idx ON rag_chunks (namespace);\n CREATE INDEX IF NOT EXISTS rag_chunks_doc_idx ON rag_chunks (namespace, doc_id);\n CREATE INDEX IF NOT EXISTS rag_chunks_metadata_idx ON rag_chunks USING gin (metadata);\n CREATE INDEX IF NOT EXISTS rag_chunks_embedding_idx ON rag_chunks USING hnsw (embedding vector_cosine_ops);\n`;\n","import { type Sql } from 'postgres';\n\nimport { err, ok, type Result } from '../../../result';\n\nimport { type Embedder } from './embedder';\nimport { toRagError } from './errors';\nimport { type IngestJobWriter, type RagIngestProgress } from './jobs';\nimport {\n clearDocument,\n DEFAULT_NAMESPACE,\n deleteByFilter,\n deleteByIds,\n ensureSchema,\n ingestDocument,\n retrieve as retrieveRows,\n} from './sql';\n\nexport interface IngestChunk {\n content: string;\n embedding: number[];\n}\n\ninterface IngestRequestBase {\n /** Document identifier — re-ingesting with the same `id` replaces all its chunks atomically. */\n id: string;\n metadata?: Record<string, unknown>;\n /** Logical namespace for separation. Default `'default'`. */\n namespace?: string;\n /**\n * Canonical collection name used by the `stackbone_rag_jobs` writer (F07)\n * to bind the row to a `stackbone_rag_collections` parent. Optional for\n * back-compat with pre-F07 callers — when absent, no job row is written\n * and progress is delivered only via `onProgress` (if any).\n */\n collection?: string;\n /**\n * Optional sink for streaming progress events. Fired in addition to (and\n * before) the matching `IngestJobWriter` call so synchronous `ingest`\n * consumers can observe progress without paying the SQL writer cost.\n */\n onProgress?: (event: RagIngestProgress) => void | Promise<void>;\n}\n\nexport interface IngestRequestPrecomputed extends IngestRequestBase {\n chunks: IngestChunk[];\n}\n\nexport interface IngestRequestAutoEmbed extends IngestRequestBase {\n chunks: string[];\n /** Embedding model id. When set, the pipeline calls the configured Embedder. */\n model: string;\n /**\n * Items per embeddings request. Consumed by the facade when it builds the\n * `Embedder`; ignored by the pipeline itself (the embedder is fully\n * configured at construction time).\n */\n batchSize?: number;\n}\n\nexport type IngestRequest = IngestRequestPrecomputed | IngestRequestAutoEmbed;\n\nexport interface IngestResponse {\n id: string;\n chunks: number;\n}\n\nexport interface DeleteOptions {\n namespace?: string;\n}\n\nexport interface DeleteResponse {\n deleted: number;\n}\n\ninterface RetrieveRequestBase {\n topK?: number;\n filter?: Record<string, unknown>;\n namespace?: string;\n includeContent?: boolean;\n includeMetadata?: boolean;\n}\n\nexport interface RetrieveRequestPrecomputed extends RetrieveRequestBase {\n embedding: number[];\n}\n\nexport interface RetrieveRequestAutoEmbed extends RetrieveRequestBase {\n text: string;\n /** Must match the model used at ingest time. */\n model: string;\n}\n\nexport type RetrieveRequest = RetrieveRequestPrecomputed | RetrieveRequestAutoEmbed;\n\nexport interface RetrieveHit {\n id: string;\n chunkIdx: number;\n content?: string;\n metadata?: Record<string, unknown>;\n score: number;\n}\n\nconst DEFAULT_TOP_K = 5;\n\nexport interface RagPipelineDeps {\n /**\n * Provides the postgres-js `Sql` to bind queries to. Called lazily, after\n * input validation and any auto-embed step, so that callers whose request\n * is rejected upstream never trigger a pool build.\n *\n * Pass `() => ok($client)` of the shared Drizzle handle for normal\n * operation, or a thunk that yields a transaction-bound `Sql` from\n * `client.database.transaction(...)` to enrol RAG writes in the caller's\n * transaction. May return a `Result.err` (e.g. `database_not_configured`)\n * which the pipeline forwards verbatim.\n */\n sqlProvider: () => Result<Sql>;\n /**\n * Optional embedder for auto-embed ingest/retrieve. Required when callers\n * pass a `model` to `ingest`/`retrieve`; precomputed-vector calls work\n * without one.\n */\n embedder?: Embedder;\n /**\n * Optional `stackbone_rag_jobs` writer. When present, every `ingest`\n * call allocates a job row, emits `started`/`progress`/`completed`/`failed`\n * events through it, and polls `isCancelled` between chunk batches. The\n * facade wires this with the shared `client.database` pool for\n * `ingestAsync`; sync `ingest` callers may also opt in. ADR §D9 locks\n * the event shape.\n */\n jobWriter?: IngestJobWriter;\n /**\n * How many persisted chunks to accumulate before firing a `progress`\n * event and re-checking cancellation. Default `1` so small ingests still\n * surface granular feedback; large ingests can raise this to amortise\n * writer overhead. Always emits at least one event per request.\n */\n progressBatchSize?: number;\n}\n\n/**\n * `RagPipeline` — owns the parse → chunk → embed → persist flow for a single\n * RAG operation. The `client.rag` facade builds one bound to the shared\n * `client.database` pool; integration tests build one bound to a dockerized\n * Postgres with a deterministic fake `Embedder`.\n *\n * The pipeline is a deep module: its public surface (`ingest`, `retrieve`,\n * `delete`, `deleteWhere`) is small and stable; everything underneath\n * (validation, batching, transaction shape, error mapping) is implementation\n * detail.\n */\nexport class RagPipeline {\n private readonly _sqlProvider: () => Result<Sql>;\n private readonly _embedder: Embedder | undefined;\n private readonly _jobWriter: IngestJobWriter | undefined;\n private readonly _progressBatchSize: number | undefined;\n\n constructor(deps: RagPipelineDeps) {\n this._sqlProvider = deps.sqlProvider;\n this._embedder = deps.embedder;\n this._jobWriter = deps.jobWriter;\n this._progressBatchSize =\n deps.progressBatchSize !== undefined ? Math.max(1, deps.progressBatchSize) : undefined;\n }\n\n async ingest(request: IngestRequest): Promise<Result<IngestResponse>> {\n const validation = validateIngest(request, this._embedder !== undefined);\n if (validation.error) return err(validation.error);\n\n const namespace = request.namespace ?? DEFAULT_NAMESPACE;\n const metadata = request.metadata ?? {};\n\n let chunks: IngestChunk[];\n if (isAutoEmbedIngest(request)) {\n // Validation above guarantees the embedder is present.\n const embedded = await (this._embedder as Embedder).embedAll(request.chunks);\n if (embedded.error) return err(embedded.error);\n if (embedded.data.length !== request.chunks.length) {\n return err({\n code: 'rag_embedding_failed',\n message: `Embedding API returned ${embedded.data.length} vectors for ${request.chunks.length} chunks.`,\n meta: { expected: request.chunks.length, received: embedded.data.length },\n });\n }\n chunks = request.chunks.map((content, i) => ({\n content,\n embedding: embedded.data[i] as number[],\n }));\n } else {\n chunks = request.chunks;\n }\n\n const dimensions = chunks[0]?.embedding.length ?? 0;\n const rows = chunks.map((c, idx) => ({\n docId: request.id,\n chunkIdx: idx,\n namespace,\n content: c.content,\n embedding: c.embedding,\n metadata,\n }));\n\n const sql = this._sqlProvider();\n if (sql.error) return err(sql.error);\n\n const totalChunks = rows.length;\n const onProgress = request.onProgress;\n const writer = this._jobWriter;\n let jobId: string | null = null;\n\n if (writer && request.collection) {\n const started = await writer.start({\n collection: request.collection,\n source: request.id,\n totalChunks,\n });\n if (started.error) return err(started.error);\n jobId = started.data.jobId;\n }\n\n await onProgress?.({ type: 'started', jobId: jobId ?? request.id, totalChunks });\n\n try {\n await ensureSchema(sql.data, dimensions);\n // When neither a job writer nor an onProgress hook is configured, keep\n // the original single-INSERT behaviour for back-compat with pre-F07\n // callers (sql-level row-count assertions in `pipeline.spec.ts`).\n const needsBatching = Boolean(writer || onProgress);\n const batchSize = this._progressBatchSize ?? (needsBatching ? 1 : rows.length || 1);\n // Replace the document's chunks atomically: clear up-front so subsequent\n // slices don't wipe the rows the previous slice just inserted.\n await clearDocument(sql.data, request.id, namespace);\n let processed = 0;\n for (let offset = 0; offset < rows.length; offset += batchSize) {\n if (writer && jobId) {\n const cancelled = await writer.isCancelled({ jobId });\n if (cancelled) {\n return err({\n code: 'rag_ingest_cancelled',\n message: `Ingest job ${jobId} was cancelled after ${processed}/${totalChunks} chunks.`,\n meta: { jobId, processedChunks: processed, totalChunks },\n });\n }\n }\n const slice = rows.slice(offset, offset + batchSize);\n await ingestDocument(sql.data, slice);\n processed += slice.length;\n const currentDocument = { source: request.id, ordinal: processed - 1 };\n await onProgress?.({\n type: 'progress',\n jobId: jobId ?? request.id,\n processedChunks: processed,\n totalChunks,\n currentDocument,\n });\n if (writer && jobId) {\n await writer.progress({\n jobId,\n processedChunks: processed,\n totalChunks,\n currentDocument,\n });\n }\n }\n await onProgress?.({ type: 'completed', jobId: jobId ?? request.id, totalChunks });\n if (writer && jobId) await writer.complete({ jobId, totalChunks });\n return ok({ id: request.id, chunks: rows.length });\n } catch (cause) {\n const mapped = toRagError(cause, 'Ingest failed');\n await onProgress?.({ type: 'failed', jobId: jobId ?? request.id, error: mapped.message });\n if (writer && jobId) await writer.fail({ jobId, error: mapped.message });\n return err(mapped);\n }\n }\n\n async delete(ids: string | string[], options?: DeleteOptions): Promise<Result<DeleteResponse>> {\n const namespace = options?.namespace ?? DEFAULT_NAMESPACE;\n const idList = Array.isArray(ids) ? ids : [ids];\n if (idList.length === 0) return ok({ deleted: 0 });\n const sql = this._sqlProvider();\n if (sql.error) return err(sql.error);\n try {\n const deleted = await deleteByIds(sql.data, idList, namespace);\n return ok({ deleted });\n } catch (cause) {\n return err(toRagError(cause, 'Delete failed'));\n }\n }\n\n async deleteWhere(\n filter: Record<string, unknown>,\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse>> {\n const namespace = options?.namespace ?? DEFAULT_NAMESPACE;\n const sql = this._sqlProvider();\n if (sql.error) return err(sql.error);\n try {\n const deleted = await deleteByFilter(sql.data, filter, namespace);\n return ok({ deleted });\n } catch (cause) {\n return err(toRagError(cause, 'Delete by filter failed'));\n }\n }\n\n async retrieve(request: RetrieveRequest): Promise<Result<RetrieveHit[]>> {\n const resolved = await this.resolveQueryEmbedding(request);\n if (resolved.error) return err(resolved.error);\n\n const includeContent = request.includeContent ?? true;\n const includeMetadata = request.includeMetadata ?? true;\n\n const params: Parameters<typeof retrieveRows>[1] = {\n embedding: resolved.data,\n topK: request.topK ?? DEFAULT_TOP_K,\n namespace: request.namespace ?? DEFAULT_NAMESPACE,\n includeContent,\n includeMetadata,\n };\n if (request.filter) params.filter = request.filter;\n\n const sql = this._sqlProvider();\n if (sql.error) return err(sql.error);\n\n try {\n const rows = await retrieveRows(sql.data, params);\n return ok(\n rows.map((row) => {\n const hit: RetrieveHit = {\n id: row.docId,\n chunkIdx: row.chunkIdx,\n score: Number(row.score),\n };\n if (includeContent && row.content !== null) hit.content = row.content;\n if (includeMetadata && row.metadata !== null) hit.metadata = row.metadata;\n return hit;\n }),\n );\n } catch (cause) {\n return err(toRagError(cause, 'Retrieve failed'));\n }\n }\n\n private async resolveQueryEmbedding(request: RetrieveRequest): Promise<Result<number[]>> {\n if (isAutoEmbedRetrieve(request)) {\n if (!request.text) {\n return err({ code: 'rag_invalid_request', message: '`text` is required.' });\n }\n if (!this._embedder) {\n return err({\n code: 'rag_invalid_request',\n message: '`model` was supplied but no Embedder is configured on the pipeline.',\n });\n }\n const embedded = await this._embedder.embedOne(request.text);\n if (embedded.error) return err(embedded.error);\n return ok(embedded.data);\n }\n if (!Array.isArray(request.embedding) || request.embedding.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: '`embedding` is required and must be a non-empty array.',\n });\n }\n return ok(request.embedding);\n }\n}\n\nexport function isAutoEmbedIngest(request: IngestRequest): request is IngestRequestAutoEmbed {\n return 'model' in request && typeof request.model === 'string';\n}\n\nexport function isAutoEmbedRetrieve(request: RetrieveRequest): request is RetrieveRequestAutoEmbed {\n return 'model' in request && typeof request.model === 'string';\n}\n\nfunction validateIngest(request: IngestRequest, hasEmbedder: boolean): Result<true> {\n if (!request.id) return err({ code: 'rag_invalid_request', message: '`id` is required.' });\n if (!Array.isArray(request.chunks) || request.chunks.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: '`chunks` must contain at least one item.',\n });\n }\n if (isAutoEmbedIngest(request)) {\n if (!hasEmbedder) {\n return err({\n code: 'rag_invalid_request',\n message: '`model` was supplied but no Embedder is configured on the pipeline.',\n });\n }\n for (let i = 0; i < request.chunks.length; i++) {\n const c = request.chunks[i];\n if (typeof c !== 'string' || c.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}] must be a non-empty string when \\`model\\` is provided.`,\n });\n }\n }\n return ok(true);\n }\n const dims = request.chunks[0]?.embedding.length ?? 0;\n if (dims === 0) {\n return err({\n code: 'rag_invalid_request',\n message:\n 'First chunk has no embedding — pass `model` to auto-embed or include precomputed embeddings.',\n });\n }\n for (let i = 0; i < request.chunks.length; i++) {\n const c = request.chunks[i];\n if (!c || !c.content || !Array.isArray(c.embedding) || c.embedding.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}] must include non-empty content and embedding.`,\n });\n }\n if (c.embedding.length !== dims) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}].embedding has ${c.embedding.length} dims but chunks[0] has ${dims}.`,\n });\n }\n }\n return ok(true);\n}\n","import { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { err, ok, type Result } from '../../../result';\nimport { type AiModule } from '../../external/ai/ai';\nimport { type DatabaseModule } from '../database/database';\n\nimport { chunk as chunkText, type ChunkOptions } from './chunker';\nimport { Embedder } from './embedder';\nimport { isTaggedError, toRagError } from './errors';\nimport { createSqlJobWriter, type IngestJobWriter, type RagIngestProgress } from './jobs';\nimport { parse as parseInput, type ParseInput, type ParseOptions } from './parser';\nimport {\n type DeleteOptions,\n type DeleteResponse,\n type IngestRequest,\n type IngestRequestAutoEmbed,\n type IngestResponse,\n isAutoEmbedIngest,\n isAutoEmbedRetrieve,\n RagPipeline,\n type RetrieveHit,\n type RetrieveRequest,\n type RetrieveRequestAutoEmbed,\n} from './pipeline';\nimport { reset as resetSchema } from './sql';\n\nexport type {\n DeleteOptions,\n DeleteResponse,\n IngestChunk,\n IngestRequest,\n IngestRequestAutoEmbed,\n IngestRequestPrecomputed,\n IngestResponse,\n RetrieveHit,\n RetrieveRequest,\n RetrieveRequestAutoEmbed,\n RetrieveRequestPrecomputed,\n} from './pipeline';\nexport type { RagIngestProgress } from './jobs';\n\n/**\n * Handle returned by `client.rag.ingestAsync`. The job id is allocated\n * synchronously against `stackbone_rag_jobs` so the caller can track / cancel\n * the work via the `/api/rag/jobs/:jobId/*` surface; `events` is a streaming\n * channel of progress events (ADR §D9 shape); `result` settles when the\n * pipeline finishes (or fails / is cancelled).\n */\nexport interface IngestAsyncHandle {\n jobId: string;\n events: AsyncIterable<RagIngestProgress>;\n result: Promise<Result<IngestResponse>>;\n}\n\nconst DEFAULT_BATCH_SIZE = 128;\n\n/**\n * Default embedding model when neither the call site nor the resolved\n * `ClientConfig.rag.embeddingModel` (parsed by the CLI from `agent.yaml.rag`)\n * specifies one. Frozen by ADR `2026-05-10-rag-consolidation-on-client-database`\n * §D2 — kept in sync with `DEFAULT_RAG_EMBEDDING_MODEL` in `@stackbone/validators`.\n */\nexport const DEFAULT_RAG_EMBEDDING_MODEL = 'openai/text-embedding-3-small';\n\n/**\n * `client.rag` — `pgvector`-backed retrieval. Two shapes per write/read:\n * pass `model` to let the SDK embed for you; pass embeddings precomputed for\n * provider/dimension/batching control.\n *\n * Implementation note: `RagModule` is a thin facade over `RagPipeline`. The\n * pipeline owns parse → chunk → embed → persist; the facade resolves the\n * shared `client.database` pool, builds an `Embedder` on demand, and maps\n * configuration errors. See ADR `2026-05-10-rag-consolidation-on-client-database`.\n *\n * Connection ownership: this module never opens its own postgres pool. It\n * reaches the underlying `postgres-js` `Sql` through the **shared-handles\n * pattern** — `client.database.shared().$client` — so an agent that\n * touches both surfaces still opens exactly one connection pool against\n * `STACKBONE_POSTGRES_URL`. RAG is the canonical first cross-surface\n * consumer; memory and queues will adopt the same accessor when they\n * land.\n *\n * Schema readiness: starting with feature 30, the canonical schema is\n * installed by the CLI (`stackbone db migrate add-rag` + `migrate up`). When\n * an operation hits `42P01 relation does not exist`, the pipeline returns\n * `SdkError('rag_schema_missing')` with an actionable hint.\n */\n/**\n * Test-only seams accepted by `RagModule`. Production callers leave these\n * unset — they are injected by `ingest-async.spec.ts` to substitute the\n * shared-pool lookup and the SQL-backed job writer.\n */\nexport interface RagModuleTestDeps {\n /**\n * Replaces the `client.database.shared().$client` lookup used by\n * `ingestAsync`. Tests can plug a fake `Sql` here without standing up\n * the database surface.\n */\n sqlProvider?: () => Result<Sql>;\n /** Builds an `IngestJobWriter` from the resolved SQL. Defaults to `createSqlJobWriter`. */\n jobWriterFactory?: (sql: Sql) => IngestJobWriter;\n}\n\nexport class RagModule {\n private readonly _gate: ModuleGate;\n private readonly _testSqlOverride?: () => Result<Sql>;\n private readonly _testJobWriterFactory?: (sql: Sql) => IngestJobWriter;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. RAG calls `getDatabase().shared()`\n * to reach the process-wide Drizzle handle (and its `$client` Sql) via\n * the shared-handles pattern — never reaches into a sibling module's\n * implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n /**\n * Lazy accessor for `client.ai`. RAG calls `getAi()` for the embeddings\n * namespace; the `Embedder` adapter reaches the shared OpenAI client\n * through the same `client.ai.embeddings.create` public surface, so\n * RAG never instantiates a parallel `OpenAI` client.\n */\n private readonly _getAi: () => AiModule,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n testDeps?: RagModuleTestDeps,\n ) {\n this._gate = gate ?? createModuleGate('rag', _resolved);\n if (testDeps?.sqlProvider) this._testSqlOverride = testDeps.sqlProvider;\n if (testDeps?.jobWriterFactory) this._testJobWriterFactory = testDeps.jobWriterFactory;\n }\n\n async ingest(request: IngestRequest): Promise<Result<IngestResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = resolveIngestModel(request, this._resolved);\n return this.withPipeline(buildEmbedderForIngest(resolved, this._getAi), (pipeline) =>\n pipeline.ingest(resolved),\n );\n }\n\n /**\n * Asynchronous ingest. Allocates a `stackbone_rag_jobs` row, returns the\n * job id immediately, and exposes both an `AsyncIterable` of streaming\n * progress events and the final `Result` so callers can `await` either\n * surface — typical webhook handlers consume `events` and ignore `result`,\n * tests `await result` directly. Cancellation is observed by flipping the\n * row's status (e.g. via `POST /api/rag/jobs/:jobId/cancel`); the worker\n * polls between chunk batches and bails out with `rag_ingest_cancelled`.\n *\n * Connection ownership: the `IngestJobWriter` is bound to the same SQL\n * pulled off the shared `client.database.shared()` handle, so a single\n * agent that issues `ingestAsync` and `client.database.select` in\n * flight still opens exactly one pool against\n * `STACKBONE_POSTGRES_URL`.\n */\n async ingestAsync(request: IngestRequest): Promise<Result<IngestAsyncHandle>> {\n if (!request.collection) {\n return err({\n code: 'rag_invalid_request',\n message: '`collection` is required for ingestAsync.',\n });\n }\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const sql = this._testSqlOverride ? this._testSqlOverride() : this.sql();\n if (sql.error) return err(sql.error);\n\n const writerFactory = this._testJobWriterFactory ?? createSqlJobWriter;\n const writer: IngestJobWriter = writerFactory(sql.data);\n const channel = createProgressChannel();\n const resolved = resolveIngestModel(request, this._resolved);\n const requestWithHook: IngestRequest = {\n ...resolved,\n onProgress: (event) => channel.push(event),\n } as IngestRequest;\n\n // Allocate the job row up-front so the caller has a stable id before we\n // hand back the handle. The pipeline will reuse the same writer (and\n // therefore the same row) when `request.collection` is set.\n const started = await writer.start({\n collection: request.collection,\n source: request.id,\n totalChunks: countChunks(resolved),\n });\n if (started.error) {\n channel.close();\n return err(started.error);\n }\n const jobId = started.data.jobId;\n const facadeWriter = withPreallocatedJob(writer, jobId);\n\n const embedder = buildEmbedderForIngest(resolved, this._getAi);\n const pipeline = new RagPipeline({\n sqlProvider: () => sql,\n ...(embedder && { embedder }),\n jobWriter: facadeWriter,\n });\n\n const result = pipeline\n .ingest(requestWithHook)\n .then((r) => {\n channel.close();\n return r;\n })\n .catch((cause: unknown) => {\n channel.close();\n return err<IngestResponse>(toRagError(cause, 'Ingest failed'));\n });\n\n return ok({ jobId, events: channel.iterable, result });\n }\n\n async delete(ids: string | string[], options?: DeleteOptions): Promise<Result<DeleteResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this.withPipeline(null, (pipeline) => pipeline.delete(ids, options));\n }\n\n async deleteWhere(\n filter: Record<string, unknown>,\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this.withPipeline(null, (pipeline) => pipeline.deleteWhere(filter, options));\n }\n\n async retrieve(request: RetrieveRequest): Promise<Result<RetrieveHit[]>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = resolveRetrieveModel(request, this._resolved);\n return this.withPipeline(buildEmbedderForRetrieve(resolved, this._getAi), (pipeline) =>\n pipeline.retrieve(resolved),\n );\n }\n\n /**\n * Drops the legacy ad-hoc RAG schema. Kept for backwards compatibility with\n * pre-feature-30 agents whose tables were provisioned by `ensureSchema` on\n * first call. The canonical RAG schema (feature 30) is owned by the CLI and\n * removed via `stackbone db migrate` flows, not by this method.\n */\n async reset(): Promise<Result<void>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n await resetSchema(sql.data);\n return ok(undefined);\n } catch (cause) {\n return err(toRagError(cause, 'Reset failed'));\n }\n }\n\n /**\n * Pure helper — exposed verbatim from the chunker. No DB, no AI, no\n * datapath traffic, so it is intentionally NOT gated.\n */\n chunk(text: string, options?: ChunkOptions): string[] {\n return chunkText(text, options);\n }\n\n /**\n * Pure helper — exposed verbatim from the parser. No DB, no AI, no\n * datapath traffic, so it is intentionally NOT gated.\n */\n parse(input: ParseInput, options?: ParseOptions): Promise<string> {\n return parseInput(input, options);\n }\n\n /**\n * Resolves the postgres-js `Sql` to use for this operation. Goes through\n * the **shared-handles pattern** — `client.database.shared().$client` —\n * to pull the postgres-js template-tag function off the same Drizzle\n * handle the rest of the SDK uses. Single pool per agent process.\n * Future cross-module transaction propagation plugs a tx-bound `Sql`\n * into the pipeline at the same call site, replacing the pool-bound\n * one without touching the rest of RAG.\n *\n * Configuration errors (`STACKBONE_POSTGRES_URL` unset) flow up as a\n * `Result.err` with the same `database_not_configured` shape\n * `client.database` raises, instead of throwing through the public\n * surface.\n */\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n if (isTaggedError(cause) && cause.code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: cause.message,\n cause,\n });\n }\n return err(toRagError(cause, 'Database handle unavailable'));\n }\n }\n\n private async withPipeline<T>(\n embedder: Embedder | null,\n run: (pipeline: RagPipeline) => Promise<Result<T>>,\n ): Promise<Result<T>> {\n const pipeline = new RagPipeline({\n sqlProvider: () => this.sql(),\n ...(embedder && { embedder }),\n });\n return run(pipeline);\n }\n}\n\nfunction countChunks(request: IngestRequest): number {\n return Array.isArray(request.chunks) ? request.chunks.length : 0;\n}\n\n/**\n * Wraps an `IngestJobWriter` so the pipeline reuses an already-allocated job\n * row instead of inserting a new one. The facade pre-allocates so it can hand\n * the `jobId` back to the caller before launching the pipeline.\n */\nfunction withPreallocatedJob(writer: IngestJobWriter, jobId: string): IngestJobWriter {\n return {\n async start() {\n return ok({ jobId });\n },\n progress: writer.progress.bind(writer),\n complete: writer.complete.bind(writer),\n fail: writer.fail.bind(writer),\n isCancelled: writer.isCancelled.bind(writer),\n };\n}\n\ninterface ProgressChannel {\n push(event: RagIngestProgress): void;\n close(): void;\n iterable: AsyncIterable<RagIngestProgress>;\n}\n\n/**\n * Tiny single-consumer pull-channel. Buffers events when the consumer hasn't\n * started iterating yet (typical for `ingestAsync` callers that grab the\n * handle and `for await` later), and resolves a pending `next()` promise\n * synchronously when an event arrives mid-iteration.\n */\nfunction createProgressChannel(): ProgressChannel {\n const buffer: RagIngestProgress[] = [];\n let pending: ((value: IteratorResult<RagIngestProgress>) => void) | null = null;\n let closed = false;\n return {\n push(event) {\n if (pending) {\n const resolve = pending;\n pending = null;\n resolve({ value: event, done: false });\n return;\n }\n buffer.push(event);\n },\n close() {\n closed = true;\n if (pending) {\n const resolve = pending;\n pending = null;\n resolve({ value: undefined as never, done: true });\n }\n },\n iterable: {\n [Symbol.asyncIterator]() {\n return {\n next(): Promise<IteratorResult<RagIngestProgress>> {\n if (buffer.length > 0) {\n return Promise.resolve({ value: buffer.shift() as RagIngestProgress, done: false });\n }\n if (closed) return Promise.resolve({ value: undefined as never, done: true });\n return new Promise((resolve) => {\n pending = resolve;\n });\n },\n };\n },\n },\n };\n}\n\nfunction buildEmbedderForIngest(request: IngestRequest, getAi: () => AiModule): Embedder | null {\n if (!isAutoEmbedIngest(request)) return null;\n return new Embedder({\n ai: getAi(),\n model: request.model,\n batchSize: request.batchSize ?? DEFAULT_BATCH_SIZE,\n });\n}\n\nfunction buildEmbedderForRetrieve(\n request: RetrieveRequest,\n getAi: () => AiModule,\n): Embedder | null {\n if (!isAutoEmbedRetrieve(request)) return null;\n return new Embedder({ ai: getAi(), model: request.model });\n}\n\n/**\n * Inject the configured embedding model when the caller supplied string\n * chunks but omitted `model`. Precomputed-embedding requests are passed\n * through untouched. Source of the default: `agent.yaml.rag.embeddingModel`\n * (parsed by the CLI into `ResolvedConfig.config.rag.embeddingModel`),\n * falling back to the ADR-frozen `DEFAULT_RAG_EMBEDDING_MODEL`.\n */\nfunction resolveIngestModel(request: IngestRequest, resolved: ResolvedConfig): IngestRequest {\n if (isAutoEmbedIngest(request)) return request;\n if (!Array.isArray(request.chunks) || request.chunks.length === 0) return request;\n if (typeof request.chunks[0] !== 'string') return request;\n const model = resolved.ragEmbeddingModel ?? DEFAULT_RAG_EMBEDDING_MODEL;\n return { ...(request as unknown as IngestRequestAutoEmbed), model };\n}\n\nfunction resolveRetrieveModel(request: RetrieveRequest, resolved: ResolvedConfig): RetrieveRequest {\n if (isAutoEmbedRetrieve(request)) return request;\n if (typeof (request as unknown as RetrieveRequestAutoEmbed).text !== 'string') return request;\n const model = resolved.ragEmbeddingModel ?? DEFAULT_RAG_EMBEDDING_MODEL;\n return { ...(request as unknown as RetrieveRequestAutoEmbed), model };\n}\n","import { err, ok, type Result } from '../../../result';\n\nimport { type ApprovalFacade, type ApprovalRequestOptions } from './approval';\n\nexport interface ApprovalToolSpec<I, O> {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n needsApproval?: boolean | ((input: I) => boolean | Promise<boolean>);\n /**\n * Maps the LLM input to the approval request fields. `topic` and `payload`\n * default to the tool name and the raw input respectively when omitted;\n * `onDecide` must always be supplied so the control plane knows where to\n * deliver the eventual decision.\n */\n toRequest: (\n input: I,\n ) => Omit<ApprovalRequestOptions<I>, 'payload' | 'topic'> &\n Partial<Pick<ApprovalRequestOptions<I>, 'payload' | 'topic'>>;\n execute: (input: I) => Promise<O> | O;\n}\n\nexport interface OpenAIToolSpec {\n type: 'function';\n function: {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n };\n}\n\nexport type ToolInvokeResult<O> =\n | { status: 'pending'; approvalId: string; expiresAt: string }\n | { status: 'ok'; result: O };\n\nexport interface ApprovalTool<I, O> {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n openaiSpec(): OpenAIToolSpec;\n invoke(input: I): Promise<Result<ToolInvokeResult<O>>>;\n}\n\nexport function createApprovalTool<I, O>(\n facade: ApprovalFacade,\n spec: ApprovalToolSpec<I, O>,\n): ApprovalTool<I, O> {\n return {\n name: spec.name,\n description: spec.description,\n parameters: spec.parameters,\n openaiSpec(): OpenAIToolSpec {\n return {\n type: 'function',\n function: {\n name: spec.name,\n description: spec.description,\n parameters: spec.parameters,\n },\n };\n },\n async invoke(input: I): Promise<Result<ToolInvokeResult<O>>> {\n if (await resolveGate(spec.needsApproval, input)) {\n const requestOpts = spec.toRequest(input);\n const requested = await facade.request<I>({\n ...requestOpts,\n topic: requestOpts.topic ?? `tool:${spec.name}`,\n payload: requestOpts.payload ?? input,\n });\n if (requested.error) return requested;\n return ok({\n status: 'pending',\n approvalId: requested.data.approvalId,\n expiresAt: requested.data.expiresAt,\n });\n }\n try {\n return ok({ status: 'ok', result: await spec.execute(input) });\n } catch (raw) {\n return err({\n code: 'approval_tool_execute_failed',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n meta: { tool: spec.name },\n });\n }\n },\n };\n}\n\nasync function resolveGate<I>(\n needsApproval: ApprovalToolSpec<I, unknown>['needsApproval'],\n input: I,\n): Promise<boolean> {\n if (needsApproval === undefined || needsApproval === false) return false;\n if (needsApproval === true) return true;\n return Boolean(await needsApproval(input));\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\n\nimport { DECISION_STATUSES, type Decision, type DecisionStatus } from './approval';\n\nexport interface VerifyOptions {\n /** Override the signing key resolved from `STACKBONE_APPROVAL_SIGNING_KEY` / `approvalSigningKey`. */\n signingKey?: string;\n /** Reject signatures whose timestamp is older than this (seconds). Default 300. */\n toleranceSeconds?: number;\n /** Inject a clock for tests. Defaults to `Date.now`. */\n now?: () => number;\n}\n\nconst SIGNATURE_HEADER = 'stackbone-signature';\nconst DEFAULT_TOLERANCE_SECONDS = 300;\nconst FUTURE_DRIFT_TOLERANCE_SECONDS = 30;\nconst HEX_RE = /^[0-9a-f]+$/i;\n\n/**\n * Header format follows the Stripe-style convention used elsewhere in\n * the platform: `t=<unix>,v1=<hex>`. HMAC-SHA256 is computed over\n * `${timestamp}.${rawBody}` with the agent's approval signing key. We\n * compare the digest in constant time and reject timestamps outside\n * `toleranceSeconds` to bound replay risk.\n */\nexport async function verifyCallback<T = unknown>(\n request: Request,\n resolved: ResolvedConfig,\n options: VerifyOptions = {},\n): Promise<Result<Decision<T>>> {\n const signingKey = resolveSigningKey(resolved, options.signingKey);\n if (!signingKey) {\n return err({\n code: 'approval_signing_key_missing',\n message:\n 'Cannot verify callback — set `STACKBONE_APPROVAL_SIGNING_KEY` in the container or pass `approvalSigningKey` to `createClient({...})`.',\n });\n }\n\n const header = request.headers.get(SIGNATURE_HEADER);\n if (!header) {\n return err({\n code: 'approval_invalid_signature',\n message: `Missing ${SIGNATURE_HEADER} header.`,\n });\n }\n\n const parsed = parseHeader(header);\n if (!parsed) {\n return err({\n code: 'approval_invalid_signature',\n message: 'Malformed signature header. Expected `t=<unix>,v1=<hex>`.',\n });\n }\n\n // Use a signed delta so we reject far-future timestamps (replay) while\n // still allowing the small positive clock drift typical between hosts.\n const tolerance = options.toleranceSeconds ?? DEFAULT_TOLERANCE_SECONDS;\n const now = (options.now ?? Date.now)();\n const deltaSeconds = now / 1000 - parsed.timestamp;\n if (deltaSeconds > tolerance || deltaSeconds < -FUTURE_DRIFT_TOLERANCE_SECONDS) {\n return err({\n code: 'approval_signature_expired',\n message: `Signature timestamp is outside the ${tolerance}s tolerance window.`,\n meta: { deltaSeconds, toleranceSeconds: tolerance },\n });\n }\n\n const rawBody = await readRawBody(request);\n const expected = await computeHmac(signingKey, `${parsed.timestamp}.${rawBody}`);\n if (!constantTimeEqual(expected, parsed.signature)) {\n return err({\n code: 'approval_invalid_signature',\n message: 'Signature does not match the request body.',\n });\n }\n\n let decision: Decision<T>;\n try {\n decision = JSON.parse(rawBody) as Decision<T>;\n } catch (e) {\n return err({\n code: 'approval_invalid_payload',\n message: `Callback body is not valid JSON: ${e instanceof Error ? e.message : String(e)}`,\n cause: e,\n });\n }\n\n if (!isDecision(decision)) {\n return err({\n code: 'approval_invalid_payload',\n message: 'Callback body is not a Decision<T> object.',\n });\n }\n\n return ok(decision);\n}\n\nfunction resolveSigningKey(resolved: ResolvedConfig, override?: string): string | undefined {\n return override ?? resolved.approvalSigningKey;\n}\n\nfunction parseHeader(header: string): { timestamp: number; signature: string } | null {\n let timestamp: number | undefined;\n let signature: string | undefined;\n for (const part of header.split(',')) {\n const eqIdx = part.indexOf('=');\n if (eqIdx === -1) continue;\n const key = part.slice(0, eqIdx).trim();\n const value = part.slice(eqIdx + 1).trim();\n if (!value) continue;\n if (key === 't') {\n const parsed = Number.parseInt(value, 10);\n if (Number.isFinite(parsed)) timestamp = parsed;\n } else if (key === 'v1') {\n if (HEX_RE.test(value)) signature = value.toLowerCase();\n }\n }\n if (timestamp === undefined || signature === undefined) return null;\n return { timestamp, signature };\n}\n\n/** `request.text()` consumes the body; clone upstream if you need to re-read it. */\nasync function readRawBody(request: Request): Promise<string> {\n return request.text();\n}\n\nconst ENCODER = new TextEncoder();\n\n/** @internal — exposed so the test suite can sign fixtures without forking the algorithm. */\nexport async function computeHmac(secret: string, message: string): Promise<string> {\n const key = await crypto.subtle.importKey(\n 'raw',\n ENCODER.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n const signature = await crypto.subtle.sign('HMAC', key, ENCODER.encode(message));\n return Buffer.from(new Uint8Array(signature)).toString('hex');\n}\n\nfunction constantTimeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\nfunction isDecision(value: unknown): value is Decision<unknown> {\n if (!value || typeof value !== 'object') return false;\n const status = (value as { status?: unknown }).status;\n return DECISION_STATUSES.includes(status as DecisionStatus);\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type HttpClient, type TransportRequest } from '../../../lib/http-client';\nimport { err, type Result } from '../../../result';\n\nimport { createApprovalTool, type ApprovalToolSpec, type ApprovalTool } from './tool';\nimport { verifyCallback, type VerifyOptions } from './verify';\n\nexport type ApprovalTopic = string;\n\nexport const DECISION_STATUSES = ['approved', 'rejected', 'timed_out', 'cancelled'] as const;\nexport type DecisionStatus = (typeof DECISION_STATUSES)[number];\nexport type ApprovalStatus = 'pending' | DecisionStatus;\n\nexport type Decision<T = unknown> =\n | {\n status: 'approved' | 'rejected';\n payload: T;\n approver: ApproverInfo;\n decidedAt: string;\n reason?: string;\n }\n | { status: 'timed_out'; decidedAt: string }\n | { status: 'cancelled'; decidedAt: string; reason?: string };\n\nexport interface ApproverInfo {\n id: string;\n email: string;\n name?: string;\n}\n\nexport interface ApprovalRequestOptions<T = unknown> {\n topic: ApprovalTopic;\n payload: T;\n title?: string;\n description?: string;\n /** Path on the agent the control plane will POST the decision to (resolved against the agent's public URL server-side). */\n onDecide: string;\n /** ISO 8601 duration (`'24h'`) or milliseconds. Default 24h. */\n timeout?: string | number;\n onTimeout?: 'reject' | 'approve' | 'ignore';\n approver?: string;\n /** Same `(topic, idempotencyKey)` returns the same `approvalId` instead of creating a new one. */\n idempotencyKey?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ApprovalRequest {\n approvalId: string;\n status: 'pending';\n callbackUrl: string;\n expiresAt: string;\n}\n\nexport interface ApprovalRecord<T = unknown> {\n approvalId: string;\n topic: ApprovalTopic;\n status: ApprovalStatus;\n payload: T;\n decision?: Decision<T>;\n createdAt: string;\n expiresAt: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ApprovalListOptions {\n status?: ApprovalStatus;\n topic?: ApprovalTopic;\n cursor?: string;\n /** 1..100. Default 50. */\n limit?: number;\n}\n\nexport interface ApprovalListResult<T = unknown> {\n items: ApprovalRecord<T>[];\n nextCursor?: string;\n}\n\n/**\n * Approval requests carry arbitrary creator-defined payloads, so the\n * transport's response validation has to stay permissive — we only enforce\n * the envelope, not the inner `payload`. Callers narrow `<T>` after the fact.\n */\nconst APPROVAL_ERROR_MAPPING = { prefix: 'approval' } as const;\n\nexport class ApprovalFacade {\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('approval', _resolved);\n }\n\n async request<T = unknown>(options: ApprovalRequestOptions<T>): Promise<Result<ApprovalRequest>> {\n const validation = validateRequest(options);\n if (validation) return validation;\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this._http.request<ApprovalRequest>({\n method: 'POST',\n path: '/api/approvals',\n body: { ...options },\n errorMapping: APPROVAL_ERROR_MAPPING,\n });\n }\n\n async cancel(approvalId: string, reason?: string): Promise<Result<void>> {\n if (!approvalId) {\n return err({ code: 'approval_invalid_request', message: '`approvalId` is required.' });\n }\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const req: TransportRequest<void> = {\n method: 'POST',\n path: `/api/approvals/${encodeURIComponent(approvalId)}/cancel`,\n errorMapping: APPROVAL_ERROR_MAPPING,\n };\n if (reason) req.body = { reason };\n return this._http.request<void>(req);\n }\n\n async get<T = unknown>(approvalId: string): Promise<Result<ApprovalRecord<T>>> {\n if (!approvalId) {\n return err({ code: 'approval_invalid_request', message: '`approvalId` is required.' });\n }\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this._http.request<ApprovalRecord<T>>({\n method: 'GET',\n path: `/api/approvals/${encodeURIComponent(approvalId)}`,\n errorMapping: APPROVAL_ERROR_MAPPING,\n });\n }\n\n async list<T = unknown>(\n options: ApprovalListOptions = {},\n ): Promise<Result<ApprovalListResult<T>>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this._http.request<ApprovalListResult<T>>({\n method: 'GET',\n path: '/api/approvals',\n params: {\n status: options.status,\n topic: options.topic,\n cursor: options.cursor,\n limit: options.limit,\n },\n errorMapping: APPROVAL_ERROR_MAPPING,\n });\n }\n\n /**\n * Local crypto verification — does not touch the datapath, so it is NOT\n * gated by the contract handshake. Auditing rule: a method gates iff it\n * issues an HTTP request to the configured baseUrl.\n */\n verify<T = unknown>(request: Request, options?: VerifyOptions): Promise<Result<Decision<T>>> {\n return verifyCallback<T>(request, this._resolved, options);\n }\n\n /**\n * Pure factory — returns an `ApprovalTool` whose `invoke()` ultimately\n * calls back into `ApprovalFacade.request`, so the gate fires there. Not\n * gated here.\n */\n tool<I, O>(spec: ApprovalToolSpec<I, O>): ApprovalTool<I, O> {\n return createApprovalTool(this, spec);\n }\n}\n\nfunction validateRequest(options: ApprovalRequestOptions): Result<ApprovalRequest> | null {\n if (!options.topic?.trim()) {\n return err({ code: 'approval_invalid_request', message: '`topic` is required.' });\n }\n if (!options.onDecide?.trim()) {\n return err({ code: 'approval_invalid_request', message: '`onDecide` is required.' });\n }\n return null;\n}\n\nexport type { VerifyOptions } from './verify';\nexport type { ApprovalToolSpec, ApprovalTool } from './tool';\n","import { z } from 'zod';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type HttpClient, validateStringArray } from '../../../lib/http-client';\nimport { err, ok, type Result } from '../../../result';\n\n/**\n * `value` is `unknown` because config entries are arbitrary JSON the\n * orchestrator-provided UI persists. The facade tightens the return type to\n * the caller's `<T>` after the schema validates the envelope.\n */\nconst configResponseSchema = z.object({ value: z.unknown() });\nconst configBatchResponseSchema = z.object({ values: z.record(z.string(), z.unknown()) });\n\nexport class ConfigFacade {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('config', resolved);\n }\n\n async get<T = unknown>(key: string): Promise<Result<T>> {\n if (!key.trim()) {\n return err({ code: 'config_invalid_request', message: '`key` is required.' });\n }\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const result = await this._http.request({\n method: 'GET',\n path: `/api/config/${encodeURIComponent(key)}`,\n responseSchema: configResponseSchema,\n errorMapping: { prefix: 'config' },\n });\n if (result.error) {\n if (result.error.code === 'config_not_found') {\n return err({\n code: 'config_not_found',\n message: `Config key \\`${key}\\` is not set for this agent.`,\n meta: { key },\n });\n }\n return result;\n }\n return ok(result.data.value as T);\n }\n\n /**\n * Keys absent from the agent's config come back as omissions in the\n * response — the returned map only contains entries the control plane\n * actually has, so callers must access fields with `?.` (the return type\n * is `Partial<T>`).\n */\n async getMany<T extends Record<string, unknown> = Record<string, unknown>>(\n keys: string[],\n ): Promise<Result<Partial<T>>> {\n // Input-shape validation runs BEFORE the gate so an empty/malformed batch\n // never triggers a contract handshake. The transport repeats this check\n // for defence in depth.\n const invalid = validateStringArray(keys, 'keys', 'config_invalid_request');\n if (invalid) return invalid;\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const result = await this._http.request({\n method: 'GET',\n path: '/api/config',\n arrayParams: { keys },\n responseSchema: configBatchResponseSchema,\n errorMapping: { prefix: 'config' },\n });\n if (result.error) return result;\n return ok(result.data.values as Partial<T>);\n }\n}\n","import { z } from 'zod';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type HttpClient, validateStringArray } from '../../../lib/http-client';\nimport { err, ok, type Result } from '../../../result';\n\nconst secretResponseSchema = z.object({ value: z.string() });\nconst secretsBatchResponseSchema = z.object({ values: z.record(z.string(), z.string()) });\n\nexport class SecretsFacade {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('secrets', resolved);\n }\n\n async get(name: string): Promise<Result<string>> {\n if (!name.trim()) {\n return err({ code: 'secrets_invalid_request', message: '`name` is required.' });\n }\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const result = await this._http.request({\n method: 'GET',\n path: `/api/secrets/${encodeURIComponent(name)}`,\n responseSchema: secretResponseSchema,\n errorMapping: { prefix: 'secrets' },\n });\n if (result.error) {\n if (result.error.code === 'secrets_not_found') {\n return err({\n code: 'secrets_not_found',\n message: `Secret \\`${name}\\` is not registered for this organization.`,\n meta: { name },\n });\n }\n return result;\n }\n return ok(result.data.value);\n }\n\n /**\n * Names absent from the organization come back as omissions in the response —\n * the returned map only contains entries the control plane actually has.\n * Callers that need \"all-or-nothing\" semantics should diff the keys.\n */\n async getMany(names: string[]): Promise<Result<Record<string, string>>> {\n // Input-shape validation runs BEFORE the gate so an empty/malformed batch\n // never triggers a contract handshake. The transport repeats this check\n // for defence in depth.\n const invalid = validateStringArray(names, 'names', 'secrets_invalid_request');\n if (invalid) return invalid;\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const result = await this._http.request({\n method: 'GET',\n path: '/api/secrets',\n arrayParams: { names },\n responseSchema: secretsBatchResponseSchema,\n errorMapping: { prefix: 'secrets' },\n });\n if (result.error) return result;\n return ok(result.data.values);\n }\n}\n","import OpenAI from 'openai';\nimport type {\n ChatCompletion,\n ChatCompletionChunk,\n ChatCompletionCreateParamsNonStreaming,\n ChatCompletionCreateParamsStreaming,\n CreateEmbeddingResponse,\n EmbeddingCreateParams,\n} from 'openai/resources';\nimport type { Stream } from 'openai/streaming';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type SdkErrorCode } from '../../../errors/codes';\nimport { err, ok, type Result, type SdkError } from '../../../result';\n\n/**\n * Public surface behind `client.ai`. Wraps the official `openai` SDK with a\n * `baseURL` override pointing to OpenRouter, so 300+ models are reachable\n * with a single, OpenAI-compatible API.\n *\n * Lazy: the underlying `OpenAI` client is built on the first method call\n * (or the first time a sub-namespace is touched) so env vars mutated after\n * `createClient()` are still picked up — same pattern as `DatabaseModule`.\n *\n * Error model: every method returns `Result<T>`. Upstream `APIError`s are\n * mapped to `SdkError` with stable `ai_*` codes. For streaming, the\n * `Result` envelope only covers connection establishment; once the stream\n * is open, mid-flight errors propagate through the iterator — callers must\n * wrap their `for await` loop in `try/catch`. Aborts via `signal.abort()`\n * surface as `ai_aborted` in non-streaming requests; in streaming, the\n * iterator simply terminates (the upstream SDK swallows the abort).\n *\n * Test override: pass `clientOverride` to inject a pre-built `OpenAI`\n * instance (or a stand-in) instead of letting the module build one. The\n * override flows to all four namespaces — `models.list()` included —\n * and to the cross-surface `shared()` accessor.\n *\n * Shared-handles pattern: `shared(): Result<OpenAI>` is the canonical\n * accessor cross-surface SDK consumers (RAG today, memory tomorrow) use\n * to reach the single OpenRouter client. Same instance every call; one\n * credential, one base URL, one retry policy, one error shape. See\n * README + CHANGELOG.\n */\nexport class AiModule {\n private _openai: OpenAI | null = null;\n private _chat: { completions: ChatCompletionsNamespace } | null = null;\n private _embeddings: EmbeddingsNamespace | null = null;\n private _images: ImagesNamespace | null = null;\n private _models: ModelsNamespace | null = null;\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n clientOverride?: OpenAI,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n if (clientOverride) this._openai = clientOverride;\n this._gate = gate ?? createModuleGate('ai', _resolved);\n }\n\n get chat(): { completions: ChatCompletionsNamespace } {\n this._chat ??= {\n completions: new ChatCompletionsNamespace(() => this.shared(), this._gate),\n };\n return this._chat;\n }\n\n get embeddings(): EmbeddingsNamespace {\n this._embeddings ??= new EmbeddingsNamespace(() => this.shared(), this._gate);\n return this._embeddings;\n }\n\n get images(): ImagesNamespace {\n this._images ??= new ImagesNamespace(() => this.shared(), this._gate);\n return this._images;\n }\n\n get models(): ModelsNamespace {\n this._models ??= new ModelsNamespace(() => this.shared(), this._gate);\n return this._models;\n }\n\n /**\n * Canonical accessor for the **shared-handles pattern** on the AI\n * surface. Returns the lazily-constructed OpenRouter-flavoured `OpenAI`\n * client backing `client.ai`. Cross-surface SDK consumers (RAG today,\n * memory tomorrow) call this — never instantiate a parallel `OpenAI`\n * client — to keep credential resolution, base-URL routing, retry /\n * timeout policy, and token accounting on a single instance.\n *\n * Contract: same input → same instance. Calling `shared()` twice in\n * the same process (with the same `ResolvedConfig`) returns the same\n * reference. The Result envelope surfaces `openrouter_key_missing`\n * when `OPENROUTER_API_KEY` is unset, matching the rest of the\n * `client.ai.*` API; the gate is intentionally NOT consulted here\n * (surfaces that gate behaviour gate it at their own call sites).\n *\n * The constructor's `clientOverride` flows through this accessor too,\n * so tests that inject a fake `OpenAI` see consistent behaviour across\n * `chat / embeddings / images / models` and any cross-surface\n * consumer.\n */\n shared(): Result<OpenAI> {\n if (this._openai) return ok(this._openai);\n const apiKey = resolveApiKey(this._resolved);\n if (!apiKey) return missingKeyError();\n this._openai = new OpenAI({\n apiKey,\n baseURL: resolveBaseUrl(this._resolved),\n defaultHeaders: STACKBONE_DEFAULT_HEADERS,\n });\n return ok(this._openai);\n }\n}\n\nclass ChatCompletionsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n create(\n params: ChatCompletionCreateParamsStreaming,\n options?: RequestOptions,\n ): Promise<Result<Stream<ChatCompletionChunk>>>;\n create(\n params: ChatCompletionCreateParamsNonStreaming,\n options?: RequestOptions,\n ): Promise<Result<ChatCompletion>>;\n async create(\n params: ChatCompletionCreateParamsNonStreaming | ChatCompletionCreateParamsStreaming,\n options?: RequestOptions,\n ): Promise<Result<ChatCompletion | Stream<ChatCompletionChunk>>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return wrapCall(this._getClient, params.model, (client) =>\n client.chat.completions.create(params, { signal: options?.signal }),\n );\n }\n}\n\nclass EmbeddingsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n async create(\n params: EmbeddingCreateParams,\n options?: RequestOptions,\n ): Promise<Result<CreateEmbeddingResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const model = typeof params.model === 'string' ? params.model : undefined;\n return wrapCall(this._getClient, model, (client) =>\n client.embeddings.create(params, { signal: options?.signal }),\n );\n }\n}\n\nexport interface ImageGenerateParams {\n model: string;\n prompt: string;\n /** Forwarded to OpenRouter as `image_config`. Use for aspect ratio, size, etc. */\n imageConfig?: Record<string, unknown>;\n}\n\nexport interface ImagesResponse {\n created: number;\n data: GeneratedImage[];\n}\n\nexport interface GeneratedImage {\n /** Original `data:image/...;base64,...` URL as returned by OpenRouter. */\n url: string;\n /** Base64 payload extracted from the data URL. */\n b64Json?: string;\n /** MIME type parsed from the data URL prefix. */\n mimeType?: string;\n}\n\nclass ImagesNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n /**\n * OpenRouter does not implement the OpenAI `/v1/images/generations`\n * endpoint. Image models are reached via `/v1/chat/completions` with\n * `modalities: ['image']`, and the resulting image is returned as a\n * non-standard `message.images[]` array of base64 data URLs. This method\n * encapsulates that quirk and surfaces an OpenAI-shaped response so\n * agent code does not need to know.\n *\n * If the model does not return any images (wrong model, content policy,\n * etc.) this returns an `ai_no_image_generated` error rather than an\n * empty success — surfacing the failure to the caller instead of\n * silently producing zero images.\n */\n async generate(\n params: ImageGenerateParams,\n options?: RequestOptions,\n ): Promise<Result<ImagesResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const body: OpenRouterImageRequest = {\n model: params.model,\n messages: [{ role: 'user', content: params.prompt }],\n modalities: ['image', 'text'],\n ...(params.imageConfig ? { image_config: params.imageConfig } : {}),\n };\n const completion = await wrapCall(this._getClient, params.model, (client) =>\n client.chat.completions.create(body as ChatCompletionCreateParamsNonStreaming, {\n signal: options?.signal,\n }),\n );\n if (completion.error) return completion;\n const data = extractImages(completion.data);\n if (data.length === 0) {\n return err({\n code: 'ai_no_image_generated',\n message: `Model ${params.model} did not return any images. Make sure the model supports image output via OpenRouter.`,\n meta: { model: params.model },\n });\n }\n return ok({ created: completion.data.created, data });\n }\n}\n\nexport interface OpenRouterModel {\n id: string;\n name?: string;\n description?: string;\n context_length?: number;\n pricing?: Record<string, unknown>;\n architecture?: Record<string, unknown>;\n supported_parameters?: string[];\n}\n\nexport interface ModelsListResponse {\n data: OpenRouterModel[];\n}\n\nclass ModelsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n /**\n * Calls `GET ${baseURL}/models` directly with `fetch` — the upstream\n * `openai.models.list()` parses the response into OpenAI's `Model` type\n * which discards OpenRouter-specific fields (`pricing`, `context_length`,\n * `supported_parameters`, `architecture`). Going through `fetch` keeps\n * the full payload.\n *\n * Reuses the cached `OpenAI` instance (built lazily by `AiModule`) so\n * the resolved `apiKey` and `baseURL` are consistent with the rest of\n * the namespaces — and any `clientOverride` injected for tests applies\n * here too.\n */\n async list(options?: RequestOptions): Promise<Result<ModelsListResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const clientResult = this._getClient();\n if (clientResult.error) return clientResult;\n const { apiKey, baseURL } = clientResult.data;\n const baseUrl = baseURL.replace(/\\/+$/, '');\n const init: RequestInit = {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n ...STACKBONE_DEFAULT_HEADERS,\n },\n };\n if (options?.signal) init.signal = options.signal;\n try {\n const response = await fetch(`${baseUrl}/models`, init);\n if (!response.ok) {\n const body = (await response.json().catch(() => ({}))) as {\n error?: { message?: string };\n };\n return err({\n code: codeForStatus(response.status),\n message: body.error?.message ?? `HTTP ${response.status}`,\n meta: { status: response.status },\n });\n }\n const json = (await response.json()) as ModelsListResponse;\n return ok(json);\n } catch (raw) {\n return err(mapApiError(raw));\n }\n }\n}\n\ninterface RequestOptions {\n signal?: AbortSignal;\n}\n\ninterface OpenRouterImageRequest {\n model: string;\n messages: ChatCompletionCreateParamsNonStreaming['messages'];\n modalities: ('text' | 'audio' | 'image')[];\n image_config?: Record<string, unknown>;\n}\n\nconst STACKBONE_DEFAULT_HEADERS = {\n 'HTTP-Referer': 'https://stackbone.ai',\n 'X-Title': 'Stackbone Agent Platform',\n} as const;\n\nconst OPENROUTER_DEFAULT_BASE_URL = 'https://openrouter.ai/api/v1';\n\nconst OPENROUTER_KEY_MISSING_MESSAGE =\n 'Cannot reach OpenRouter — set `OPENROUTER_API_KEY` in the container or pass `openrouterKey` to `createClient({...})`.';\n\nfunction missingKeyError<T = never>(): Result<T> {\n return err({\n code: 'openrouter_key_missing',\n message: OPENROUTER_KEY_MISSING_MESSAGE,\n });\n}\n\nfunction resolveApiKey(resolved: ResolvedConfig): string | undefined {\n return resolved.openrouterKey;\n}\n\nfunction resolveBaseUrl(resolved: ResolvedConfig): string {\n return resolved.openrouterBaseUrl ?? OPENROUTER_DEFAULT_BASE_URL;\n}\n\nasync function wrapCall<T>(\n getClient: () => Result<OpenAI>,\n model: string | undefined,\n fn: (client: OpenAI) => Promise<T>,\n): Promise<Result<T>> {\n const clientResult = getClient();\n if (clientResult.error) return clientResult;\n try {\n return ok(await fn(clientResult.data));\n } catch (raw) {\n return err(mapApiError(raw, model));\n }\n}\n\ninterface OpenRouterImageItem {\n type?: string;\n image_url?: { url?: string };\n}\n\nconst DATA_URL_RE = /^data:(image\\/[a-zA-Z0-9.+-]+);base64,(.*)$/;\n\nfunction extractImages(completion: ChatCompletion): GeneratedImage[] {\n const message = completion.choices[0]?.message as\n | (ChatCompletion['choices'][number]['message'] & {\n images?: OpenRouterImageItem[];\n })\n | undefined;\n const rawImages = message?.images ?? [];\n const out: GeneratedImage[] = [];\n for (const img of rawImages) {\n const url = img?.image_url?.url;\n if (!url) continue;\n const match = DATA_URL_RE.exec(url);\n if (match && match[1] && match[2]) {\n out.push({ url, mimeType: match[1], b64Json: match[2] });\n } else {\n out.push({ url });\n }\n }\n return out;\n}\n\n/**\n * OpenRouter HTTP statuses surface as `ai_*` codes from the catalog. This is\n * the `ai` surface's local equivalent of the `<prefix>_<reason>` mapping\n * `HttpClient` runs for the control-plane facades — `client.ai` talks to\n * OpenRouter directly via the upstream OpenAI SDK, so the transport is not\n * involved, but the wire-level shape stays inside the same catalog.\n */\nfunction codeForStatus(status: number): SdkErrorCode {\n if (status === 401) return 'ai_unauthorized';\n if (status === 402) return 'ai_credits_exhausted';\n if (status === 403) return 'ai_forbidden';\n if (status === 408) return 'ai_timeout';\n if (status === 422 || status === 400) return 'ai_validation_error';\n if (status === 429) return 'ai_rate_limited';\n if (status === 451) return 'ai_moderation_blocked';\n return 'ai_provider_error';\n}\n\nfunction mapApiError(raw: unknown, model?: string): SdkError {\n if (raw instanceof OpenAI.APIError) {\n const meta: Record<string, unknown> = { status: raw.status };\n if (model) meta['model'] = model;\n if (raw.code != null) meta['openrouterCode'] = raw.code;\n if (raw.type != null) meta['openrouterType'] = raw.type;\n\n if (raw instanceof OpenAI.APIUserAbortError) {\n return { code: 'ai_aborted', message: raw.message, cause: raw, meta };\n }\n if (raw instanceof OpenAI.APIConnectionTimeoutError) {\n return { code: 'ai_timeout', message: raw.message, cause: raw, meta };\n }\n if (raw instanceof OpenAI.APIConnectionError) {\n return { code: 'ai_network_error', message: raw.message, cause: raw, meta };\n }\n return {\n code: raw.status != null ? codeForStatus(raw.status) : 'ai_provider_error',\n message: raw.message,\n cause: raw,\n meta,\n };\n }\n return {\n code: 'ai_network_error',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n };\n}\n","import type { PostgresLike } from './run-steps-exporter';\n\n// Spans without a `cost_usd` attribute (unknown model / OpenRouter response\n// without the cost header) contribute 0 — observability is best-effort and\n// must not fail the run on missing telemetry.\n\nexport interface AggregateRunCostOptions {\n sql: PostgresLike;\n}\n\nexport interface AggregateRunCostResult {\n costEstimatedUsd: number;\n}\n\ninterface AggregatedRow {\n cost_estimated_usd: string | number | null;\n}\n\nconst SQL = `WITH llm_costs AS (\n SELECT COALESCE(SUM((payload->>'cost_usd')::numeric), 0) AS total\n FROM stackbone_platform.run_steps\n WHERE run_id = $1::uuid\n AND type = 'llm_call'\n )\n UPDATE stackbone_platform.runs\n SET cost_estimated_usd = (SELECT total FROM llm_costs)\n WHERE id = $1::uuid\n RETURNING cost_estimated_usd`;\n\nexport async function aggregateRunCost(\n runId: string,\n options: AggregateRunCostOptions,\n): Promise<AggregateRunCostResult> {\n const result = (await options.sql.unsafe(SQL, [runId])) as AggregatedRow[];\n const row = result[0];\n if (!row) {\n return { costEstimatedUsd: 0 };\n }\n // postgres-js returns numerics as strings to preserve precision; coerce\n // to a Number on the way out so callers don't need to know.\n const raw = row.cost_estimated_usd;\n if (raw === null || raw === undefined) return { costEstimatedUsd: 0 };\n const num = typeof raw === 'string' ? Number(raw) : raw;\n return { costEstimatedUsd: Number.isFinite(num) ? num : 0 };\n}\n","{\n \"name\": \"@stackbone/sdk\",\n \"version\": \"0.1.0-alpha.2\",\n \"license\": \"UNLICENSED\",\n \"description\": \"Official TypeScript SDK for Stackbone — the marketplace and managed runtime for containerized AI agents.\",\n \"type\": \"module\",\n \"sideEffects\": false,\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n },\n \"./db\": {\n \"import\": {\n \"types\": \"./dist/db/index.d.ts\",\n \"default\": \"./dist/db/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/db/index.d.cts\",\n \"default\": \"./dist/db/index.cjs\"\n }\n },\n \"./db/testing\": {\n \"import\": {\n \"types\": \"./dist/db/testing/index.d.ts\",\n \"default\": \"./dist/db/testing/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/db/testing/index.d.cts\",\n \"default\": \"./dist/db/testing/index.cjs\"\n }\n },\n \"./observability\": {\n \"import\": {\n \"types\": \"./dist/observability/index.d.ts\",\n \"default\": \"./dist/observability/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/observability/index.d.cts\",\n \"default\": \"./dist/observability/index.cjs\"\n }\n },\n \"./queues/types\": {\n \"import\": {\n \"types\": \"./dist/queues/types.d.ts\",\n \"default\": \"./dist/queues/types.js\"\n },\n \"require\": {\n \"types\": \"./dist/queues/types.d.cts\",\n \"default\": \"./dist/queues/types.cjs\"\n }\n },\n \"./rag/migrations\": {\n \"import\": {\n \"types\": \"./dist/rag/migrations/index.d.ts\",\n \"default\": \"./dist/rag/migrations/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/rag/migrations/index.d.cts\",\n \"default\": \"./dist/rag/migrations/index.cjs\"\n }\n },\n \"./rag/schema\": {\n \"import\": {\n \"types\": \"./dist/rag/schema.d.ts\",\n \"default\": \"./dist/rag/schema.js\"\n },\n \"require\": {\n \"types\": \"./dist/rag/schema.d.cts\",\n \"default\": \"./dist/rag/schema.cjs\"\n }\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"engines\": {\n \"node\": \">=24\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/stackbone/stackbone.git\",\n \"directory\": \"libs/sdk\"\n },\n \"homepage\": \"https://stackbone.ai\",\n \"bugs\": {\n \"url\": \"https://github.com/stackbone/stackbone/issues\"\n },\n \"keywords\": [\n \"stackbone\",\n \"ai-agents\",\n \"agent-sdk\",\n \"containerized-agents\",\n \"openrouter\",\n \"rag\",\n \"pgvector\",\n \"drizzle\",\n \"openai\",\n \"postgres\"\n ],\n \"dependencies\": {\n \"@aws-sdk/client-s3\": \"^3.1038.0\",\n \"@aws-sdk/s3-request-presigner\": \"^3.1038.0\",\n \"@stackbone/validators\": \"workspace:*\",\n \"@testcontainers/postgresql\": \"^11.14.0\",\n \"drizzle-orm\": \"0.45.2\",\n \"openai\": \"^4.104.0\",\n \"postgres\": \"3.4.9\",\n \"unpdf\": \"^0.12.1\",\n \"zod\": \"*\"\n }\n}\n","import { appendFile, mkdir } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { dirname, resolve } from 'node:path';\n\nimport { version as SDK_VERSION } from '../../package.json';\n\n// Numeric levels match Pino so JSONL files produced in local mode work with\n// `pino-pretty` and other Pino-aware tooling without translation.\nexport const LOG_LEVELS = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60,\n} as const;\n\nexport type LogLevelName = keyof typeof LOG_LEVELS;\nexport type LogLevelNumber = (typeof LOG_LEVELS)[LogLevelName];\n\nexport interface LogRecord {\n /** Pino-style numeric level. */\n level: LogLevelNumber;\n /** Epoch milliseconds. Pino uses `time` as a number. */\n time: number;\n msg: string;\n run_id: string;\n trace_id?: string;\n installation_id?: string;\n agent_id?: string;\n [key: string]: unknown;\n}\n\nexport interface PlatformLoggerOptions {\n runId: string;\n installationId?: string | undefined;\n agentId?: string | undefined;\n /**\n * When set (cloud), logs are batched and POSTed to `<endpoint>/v1/logs` as\n * OTLP/HTTP/JSON. When unset (local), logs are appended to\n * `<runsDir>/<runId>.jsonl`. Falls back to `OTEL_EXPORTER_OTLP_ENDPOINT`.\n */\n otelEndpoint?: string | undefined;\n /** Local-only: directory where JSONL files live. Defaults to `~/.stackbone/dev/runs`. */\n runsDir?: string | undefined;\n /** Cloud-only: extra OTel resource attributes to send with every batch. */\n resourceAttributes?: Record<string, string> | undefined;\n /** Cloud-only: HTTP timeout per OTLP POST in ms. Defaults to 5_000. */\n httpTimeoutMs?: number | undefined;\n /** Flush trigger by buffer size. Defaults to 50. */\n flushBatchSize?: number | undefined;\n /** Flush trigger by elapsed time (ms). Defaults to 1_000. */\n flushIntervalMs?: number | undefined;\n /** Test seam — fetch implementation. Defaults to global `fetch`. */\n fetchImpl?: typeof fetch | undefined;\n /** Test seam — `fs.appendFile`-shaped sink the local destination uses. */\n appendFileImpl?: ((path: string, data: string) => Promise<void>) | undefined;\n /** Test seam — `fs.mkdir`-shaped helper the local destination uses. */\n mkdirImpl?: ((path: string) => Promise<void>) | undefined;\n /** Test seam — clock for `time` field. Defaults to `Date.now`. */\n now?: (() => number) | undefined;\n /** Override mode resolution (skips the env detection). */\n mode?: PlatformLoggerMode | undefined;\n}\n\nexport type PlatformLoggerMode = 'local' | 'cloud';\n\nexport interface PinoLike {\n trace(msgOrObj: unknown, msg?: string): void;\n debug(msgOrObj: unknown, msg?: string): void;\n info(msgOrObj: unknown, msg?: string): void;\n warn(msgOrObj: unknown, msg?: string): void;\n error(msgOrObj: unknown, msg?: string): void;\n fatal(msgOrObj: unknown, msg?: string): void;\n}\n\nexport interface PlatformLogger extends PinoLike {\n readonly mode: PlatformLoggerMode;\n /** Bind extra fields and return a child logger sharing the same destination. */\n child(bindings: Record<string, unknown>): PlatformLogger;\n /** Force-flush pending writes (close file handle or POST OTLP batch). */\n flush(): Promise<void>;\n /** Stop accepting writes and release resources. */\n close(): Promise<void>;\n}\n\ninterface Destination {\n write(record: LogRecord): void;\n flush(): Promise<void>;\n close(): Promise<void>;\n}\n\nconst DEFAULT_BATCH_SIZE = 50;\nconst DEFAULT_INTERVAL_MS = 1_000;\nconst DEFAULT_HTTP_TIMEOUT_MS = 5_000;\n\n/**\n * Creates a Pino-aligned logger that writes JSONL to disk in local mode and\n * batches OTLP/HTTP/JSON log records to an OTel collector in cloud mode. Mode\n * is resolved from `OTEL_EXPORTER_OTLP_ENDPOINT` or the explicit override.\n */\nexport function createPlatformLogger(options: PlatformLoggerOptions): PlatformLogger {\n // The resolver is the single seam that reads `OTEL_EXPORTER_OTLP_ENDPOINT`\n // — callers building a logger through `client.observability.logger(...)`\n // already get the value plumbed in from `ResolvedConfig`. The `undefined`\n // here means \"no `otelEndpoint` ⇒ local JSONL mode\" (matches the docstring).\n const otelEndpoint = options.otelEndpoint ?? undefined;\n const mode: PlatformLoggerMode = options.mode ?? (otelEndpoint ? 'cloud' : 'local');\n\n const baseBindings: Record<string, unknown> = { run_id: options.runId };\n if (options.installationId !== undefined)\n baseBindings['installation_id'] = options.installationId;\n if (options.agentId !== undefined) baseBindings['agent_id'] = options.agentId;\n\n const destination: Destination =\n mode === 'cloud'\n ? new OtlpHttpDestination({\n endpoint: otelEndpoint ?? '',\n resourceAttributes: options.resourceAttributes ?? {},\n httpTimeoutMs: options.httpTimeoutMs ?? DEFAULT_HTTP_TIMEOUT_MS,\n flushBatchSize: options.flushBatchSize ?? DEFAULT_BATCH_SIZE,\n flushIntervalMs: options.flushIntervalMs ?? DEFAULT_INTERVAL_MS,\n ...(options.fetchImpl !== undefined ? { fetchImpl: options.fetchImpl } : {}),\n })\n : new JsonlFileDestination({\n runId: options.runId,\n runsDir: options.runsDir ?? defaultRunsDir(),\n ...(options.appendFileImpl !== undefined\n ? { appendFileImpl: options.appendFileImpl }\n : {}),\n ...(options.mkdirImpl !== undefined ? { mkdirImpl: options.mkdirImpl } : {}),\n });\n\n const now = options.now ?? Date.now;\n return buildLogger({ destination, baseBindings, mode, now });\n}\n\ninterface LoggerBuildOptions {\n destination: Destination;\n baseBindings: Record<string, unknown>;\n mode: PlatformLoggerMode;\n now: () => number;\n}\n\nfunction buildLogger(opts: LoggerBuildOptions): PlatformLogger {\n const writeAt = (level: LogLevelName, msgOrObj: unknown, msg?: string): void => {\n const time = opts.now();\n const levelNumber = LOG_LEVELS[level];\n const record: LogRecord = {\n level: levelNumber,\n time,\n msg: '',\n run_id: String(opts.baseBindings['run_id'] ?? ''),\n ...opts.baseBindings,\n };\n if (typeof msgOrObj === 'string') {\n record.msg = msgOrObj;\n } else if (msgOrObj && typeof msgOrObj === 'object') {\n Object.assign(record, msgOrObj);\n if (typeof msg === 'string') record.msg = msg;\n else if (typeof record.msg !== 'string') record.msg = '';\n }\n opts.destination.write(record);\n };\n\n const child = (bindings: Record<string, unknown>): PlatformLogger =>\n buildLogger({ ...opts, baseBindings: { ...opts.baseBindings, ...bindings } });\n\n return {\n mode: opts.mode,\n trace: (msgOrObj, msg) => writeAt('trace', msgOrObj, msg),\n debug: (msgOrObj, msg) => writeAt('debug', msgOrObj, msg),\n info: (msgOrObj, msg) => writeAt('info', msgOrObj, msg),\n warn: (msgOrObj, msg) => writeAt('warn', msgOrObj, msg),\n error: (msgOrObj, msg) => writeAt('error', msgOrObj, msg),\n fatal: (msgOrObj, msg) => writeAt('fatal', msgOrObj, msg),\n child,\n flush: () => opts.destination.flush(),\n close: () => opts.destination.close(),\n };\n}\n\ninterface JsonlFileDestinationOptions {\n runId: string;\n runsDir: string;\n appendFileImpl?: (path: string, data: string) => Promise<void>;\n mkdirImpl?: (path: string) => Promise<void>;\n}\n\nclass JsonlFileDestination implements Destination {\n private readonly path: string;\n private readonly appendFile: (path: string, data: string) => Promise<void>;\n private readonly mkdir: (path: string) => Promise<void>;\n private inFlight: Promise<void> = Promise.resolve();\n private dirReady = false;\n\n constructor(opts: JsonlFileDestinationOptions) {\n this.path = resolve(opts.runsDir, `${opts.runId}.jsonl`);\n this.appendFile = opts.appendFileImpl ?? ((p, d) => appendFile(p, d, 'utf8'));\n this.mkdir =\n opts.mkdirImpl ??\n (async (p) => {\n await mkdir(p, { recursive: true });\n });\n }\n\n write(record: LogRecord): void {\n const line = `${JSON.stringify(record)}\\n`;\n this.inFlight = this.inFlight.then(async () => {\n if (!this.dirReady) {\n await this.mkdir(dirname(this.path));\n this.dirReady = true;\n }\n try {\n await this.appendFile(this.path, line);\n } catch (error) {\n process.stderr.write(\n `[stackbone/sdk] PlatformLogger JSONL write failed: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n }\n });\n }\n\n async flush(): Promise<void> {\n await this.inFlight;\n }\n\n async close(): Promise<void> {\n await this.flush();\n }\n}\n\ninterface OtlpHttpDestinationOptions {\n endpoint: string;\n resourceAttributes: Record<string, string>;\n httpTimeoutMs: number;\n flushBatchSize: number;\n flushIntervalMs: number;\n fetchImpl?: typeof fetch;\n}\n\n// OTLP/HTTP/JSON spec: OpenTelemetry Logs Data Model §B.1. Failures log to\n// stderr — telemetry must never block agent execution.\nclass OtlpHttpDestination implements Destination {\n private readonly url: string;\n private readonly resourceAttributes: Record<string, string>;\n private readonly httpTimeoutMs: number;\n private readonly flushBatchSize: number;\n private readonly flushIntervalMs: number;\n private readonly fetchImpl: typeof fetch;\n private buffer: LogRecord[] = [];\n private timer: NodeJS.Timeout | null = null;\n private inFlight: Promise<void> = Promise.resolve();\n private closed = false;\n\n constructor(opts: OtlpHttpDestinationOptions) {\n this.url = `${opts.endpoint.replace(/\\/+$/, '')}/v1/logs`;\n this.resourceAttributes = opts.resourceAttributes;\n this.httpTimeoutMs = opts.httpTimeoutMs;\n this.flushBatchSize = opts.flushBatchSize;\n this.flushIntervalMs = opts.flushIntervalMs;\n this.fetchImpl = opts.fetchImpl ?? fetch;\n }\n\n write(record: LogRecord): void {\n if (this.closed) return;\n this.buffer.push(record);\n if (this.buffer.length >= this.flushBatchSize) {\n void this.flush();\n } else {\n this.armTimer();\n }\n }\n\n async flush(): Promise<void> {\n await this.inFlight;\n if (this.buffer.length === 0) return;\n const drained = this.buffer.splice(0, this.buffer.length);\n this.disarmTimer();\n this.inFlight = this.post(drained).catch((error) => {\n process.stderr.write(\n `[stackbone/sdk] PlatformLogger OTLP POST failed: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n });\n await this.inFlight;\n }\n\n async close(): Promise<void> {\n this.closed = true;\n await this.flush();\n }\n\n private armTimer(): void {\n if (this.timer) return;\n this.timer = setTimeout(() => {\n this.timer = null;\n void this.flush();\n }, this.flushIntervalMs);\n this.timer.unref?.();\n }\n\n private disarmTimer(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n private async post(records: LogRecord[]): Promise<void> {\n const body = JSON.stringify(buildOtlpLogsBody(records, this.resourceAttributes));\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.httpTimeoutMs);\n try {\n const resp = await this.fetchImpl(this.url, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body,\n signal: controller.signal,\n });\n if (!resp.ok) {\n const text = await resp.text().catch(() => '');\n throw new Error(`HTTP ${resp.status}${text ? `: ${text.slice(0, 200)}` : ''}`);\n }\n } finally {\n clearTimeout(timeout);\n }\n }\n}\n\ninterface OtlpKeyValue {\n key: string;\n value:\n | { stringValue: string }\n | { intValue: string }\n | { doubleValue: number }\n | { boolValue: boolean };\n}\n\ninterface OtlpResource {\n attributes: OtlpKeyValue[];\n}\n\ninterface OtlpLogRecord {\n timeUnixNano: string;\n severityNumber: number;\n severityText: string;\n body: { stringValue: string };\n attributes: OtlpKeyValue[];\n}\n\ninterface OtlpLogsBody {\n resourceLogs: Array<{\n resource: OtlpResource;\n scopeLogs: Array<{\n scope: { name: string; version: string };\n logRecords: OtlpLogRecord[];\n }>;\n }>;\n}\n\nconst SDK_SCOPE = { name: '@stackbone/sdk', version: SDK_VERSION };\n\nfunction buildOtlpLogsBody(\n records: LogRecord[],\n resourceAttributes: Record<string, string>,\n): OtlpLogsBody {\n return {\n resourceLogs: [\n {\n resource: { attributes: toOtlpAttributes(resourceAttributes) },\n scopeLogs: [\n {\n scope: SDK_SCOPE,\n logRecords: records.map(toOtlpLogRecord),\n },\n ],\n },\n ],\n };\n}\n\nfunction toOtlpLogRecord(record: LogRecord): OtlpLogRecord {\n const { level, time, msg, ...rest } = record;\n return {\n timeUnixNano: `${time * 1_000_000}`,\n severityNumber: level,\n severityText: severityText(level),\n body: { stringValue: msg },\n attributes: toOtlpAttributesFromUnknown(rest),\n };\n}\n\nconst SEVERITY_TEXT_BY_LEVEL: Record<number, string> = Object.fromEntries(\n Object.entries(LOG_LEVELS).map(([name, value]) => [value, name.toUpperCase()]),\n);\n\nfunction severityText(level: number): string {\n return SEVERITY_TEXT_BY_LEVEL[level] ?? 'INFO';\n}\n\nfunction toOtlpAttributes(attrs: Record<string, string>): OtlpKeyValue[] {\n return Object.entries(attrs).map(([key, value]) => ({\n key,\n value: { stringValue: value },\n }));\n}\n\nfunction toOtlpAttributesFromUnknown(attrs: Record<string, unknown>): OtlpKeyValue[] {\n const out: OtlpKeyValue[] = [];\n for (const [key, value] of Object.entries(attrs)) {\n if (value === null || value === undefined) continue;\n if (typeof value === 'string') {\n out.push({ key, value: { stringValue: value } });\n } else if (typeof value === 'number') {\n if (Number.isInteger(value)) out.push({ key, value: { intValue: String(value) } });\n else out.push({ key, value: { doubleValue: value } });\n } else if (typeof value === 'boolean') {\n out.push({ key, value: { boolValue: value } });\n } else {\n out.push({ key, value: { stringValue: JSON.stringify(value) } });\n }\n }\n return out;\n}\n\nexport function defaultRunsDir(): string {\n return resolve(homedir(), '.stackbone', 'dev', 'runs');\n}\n","import { randomUUID } from 'node:crypto';\n\n// Canonical step types stored in `stackbone_platform.run_steps.type`. The list\n// has to stay in sync with the CHECK constraint in\n// `libs/platform-schema/src/migrations/0001_runs.sql`. Exported so agents\n// can discover the closed set without reaching into the migration file.\nexport const RUN_STEP_TYPES = [\n 'agent',\n 'llm_call',\n 'db_query',\n 'http_fetch',\n 'queue_publish',\n 'hitl_pause',\n 'tool_call',\n 'rag_query',\n 'storage_op',\n] as const;\nexport type RunStepType = (typeof RUN_STEP_TYPES)[number];\n\n// Span attribute we read first to pin a step type explicitly. When absent,\n// the resolver falls back to a span.name prefix mapping.\nexport const STEP_TYPE_ATTRIBUTE = 'stackbone.step.type';\n\n// Span attribute that carries the active run id. The processor drops spans\n// without it because `stackbone_platform.run_steps.run_id` is NOT NULL — there\n// is no useful row we could write otherwise.\nexport const RUN_ID_ATTRIBUTE = 'stackbone.run.id';\n\nconst NAME_PREFIX_MAP: ReadonlyArray<readonly [RegExp, RunStepType]> = [\n [/^stackbone\\.ai\\./, 'llm_call'],\n [/^stackbone\\.db\\./, 'db_query'],\n [/^stackbone\\.http\\./, 'http_fetch'],\n [/^stackbone\\.queues\\./, 'queue_publish'],\n [/^stackbone\\.approval\\./, 'hitl_pause'],\n [/^stackbone\\.tool\\./, 'tool_call'],\n [/^stackbone\\.rag\\./, 'rag_query'],\n [/^stackbone\\.storage\\./, 'storage_op'],\n];\n\n/**\n * Minimal duck-typed view of an OpenTelemetry `ReadableSpan`. We mirror the\n * shape the OTel SDK exposes on `@opentelemetry/sdk-trace-base` rather than\n * importing the package so `@stackbone/sdk` doesn't pull the OTel runtime into\n * every agent that doesn't enable Studio. Agents wire the processor with\n * `provider.addSpanProcessor(new RunStepsSpanProcessor(...))` and the\n * structural match satisfies TypeScript.\n */\nexport interface SpanContextLike {\n spanId: string;\n traceId: string;\n}\n\nexport interface ReadableSpanLike {\n spanContext(): SpanContextLike;\n parentSpanContext?: SpanContextLike | undefined;\n parentSpanId?: string | undefined;\n name: string;\n attributes: Record<string, unknown>;\n status?: { code: number; message?: string } | undefined;\n startTime?: [number, number] | undefined;\n endTime?: [number, number] | undefined;\n duration?: [number, number] | undefined;\n}\n\nexport interface PostgresLike {\n unsafe(query: string, params?: unknown[]): Promise<unknown>;\n end?(): Promise<void>;\n}\n\nexport interface RunStepsSpanProcessorOptions {\n /**\n * Postgres connection string of the install (local emulator at :5433 in\n * dev, Neon TCP/HTTP URL in cloud). Falls back to `DATABASE_URL`.\n */\n connectionString?: string | undefined;\n /** Flush trigger by buffer size. Defaults to 50. */\n flushBatchSize?: number | undefined;\n /** Flush trigger by elapsed time (ms). Defaults to 500. */\n flushIntervalMs?: number | undefined;\n /** Override how a span maps to a step type. */\n resolveStepType?: ((span: ReadableSpanLike) => RunStepType) | undefined;\n /** Test seam — inject a postgres-js-compatible client. */\n sql?: PostgresLike | undefined;\n /** Test seam — deterministic UUID generator. */\n newId?: (() => string) | undefined;\n}\n\ninterface BufferedRow {\n id: string;\n run_id: string;\n parent_step_id: string | null;\n type: RunStepType;\n name: string;\n status: 'ok' | 'error';\n payload: Record<string, unknown>;\n error: { message: string } | null;\n started_at: string;\n finished_at: string;\n duration_ms: number;\n}\n\nconst DEFAULT_BATCH_SIZE = 50;\nconst DEFAULT_INTERVAL_MS = 500;\n\n/**\n * Materialises every OTel span produced by the agent into a row of\n * `stackbone_platform.run_steps`. Designed to coexist with the OTLP exporter:\n * cloud builds register both processors so Postgres feeds Studio (paridad\n * con local) and Tempo feeds Platform Ops with retention/aggregation. If a\n * write fails the processor logs to stderr and keeps accepting spans —\n * observability is never load-bearing for agent execution.\n *\n * Spec: docs/arquitectura/specs/stackbone-agent-protocol-v1.md §6.3\n * ADR: docs/arquitectura/decisiones/2026-05-03-stackbone-studio-datapath-y-scope-mvp.md §D9\n */\nexport class RunStepsSpanProcessor {\n private readonly buffer: BufferedRow[] = [];\n private readonly stepIdBySpanId = new Map<string, string>();\n private readonly batchSize: number;\n private readonly intervalMs: number;\n private readonly resolveStepType: (span: ReadableSpanLike) => RunStepType;\n private readonly newId: () => string;\n private readonly connectionString: string | undefined;\n private readonly ownsSql: boolean;\n private sql: PostgresLike | null;\n private timer: NodeJS.Timeout | null = null;\n private inFlight: Promise<void> | null = null;\n\n constructor(options: RunStepsSpanProcessorOptions = {}) {\n this.batchSize = options.flushBatchSize ?? DEFAULT_BATCH_SIZE;\n this.intervalMs = options.flushIntervalMs ?? DEFAULT_INTERVAL_MS;\n this.resolveStepType = options.resolveStepType ?? defaultStepTypeResolver;\n this.newId = options.newId ?? randomUUID;\n // The resolver owns reading `STACKBONE_POSTGRES_URL` — callers\n // building the processor through `client.observability.spanProcessor()`\n // already get the value plumbed in from `ResolvedConfig`. Direct\n // constructions on the `@stackbone/sdk/observability` subpath must\n // supply `connectionString` themselves.\n this.connectionString = options.connectionString;\n if (options.sql) {\n this.sql = options.sql;\n this.ownsSql = false;\n } else {\n this.sql = null;\n this.ownsSql = true;\n }\n }\n\n // OTel calls onStart for the parent before any child, and onEnd for\n // children before the parent. Reserving the UUID up-front lets the child's\n // onEnd resolve `parent_step_id` synchronously — the alternative (looking\n // up the parent at write time) would race the buffer flush.\n onStart(span: ReadableSpanLike): void {\n const spanId = span.spanContext().spanId;\n if (!this.stepIdBySpanId.has(spanId)) {\n this.stepIdBySpanId.set(spanId, this.newId());\n }\n }\n\n onEnd(span: ReadableSpanLike): void {\n const row = this.buildRow(span);\n if (!row) return;\n this.buffer.push(row);\n if (this.buffer.length >= this.batchSize) {\n void this.flush();\n } else {\n this.armTimer();\n }\n }\n\n async forceFlush(): Promise<void> {\n await this.flush();\n }\n\n async shutdown(): Promise<void> {\n this.disarmTimer();\n await this.flush();\n if (this.ownsSql && this.sql?.end) {\n await this.sql.end().catch(() => undefined);\n }\n }\n\n private buildRow(span: ReadableSpanLike): BufferedRow | null {\n const spanId = span.spanContext().spanId;\n // Always release the reservation from `onStart`, even when we drop the\n // row for lack of `run_id` — otherwise spans the SDK never persists\n // accumulate in the map.\n const stepId = this.stepIdBySpanId.get(spanId) ?? this.newId();\n this.stepIdBySpanId.delete(spanId);\n\n const runId = readString(span.attributes[RUN_ID_ATTRIBUTE]);\n if (!runId) return null;\n\n const parentSpanId = span.parentSpanContext?.spanId ?? span.parentSpanId ?? null;\n // Parents end after children, so the parent's UUID is still in the map\n // when the child's onEnd runs. Once the parent ends and gets removed the\n // child rows already reference it via `parent_step_id`.\n const parentStepId = parentSpanId ? (this.stepIdBySpanId.get(parentSpanId) ?? null) : null;\n\n const startedAt = formatHrTime(span.startTime);\n const finishedAt = formatHrTime(span.endTime ?? span.startTime);\n const durationMs = hrTimeToMs(span.duration ?? diffHrTime(span.endTime, span.startTime));\n\n const isError = span.status?.code === 2;\n\n return {\n id: stepId,\n run_id: runId,\n parent_step_id: parentStepId,\n type: this.resolveStepType(span),\n name: span.name,\n status: isError ? 'error' : 'ok',\n payload: serialisablePayload(span.attributes),\n error: isError ? { message: span.status?.message ?? 'span ended with ERROR status' } : null,\n started_at: startedAt,\n finished_at: finishedAt,\n duration_ms: durationMs,\n };\n }\n\n private armTimer(): void {\n if (this.timer) return;\n this.timer = setTimeout(() => {\n this.timer = null;\n void this.flush();\n }, this.intervalMs);\n // Don't keep the Node process alive just for the flush timer.\n this.timer.unref?.();\n }\n\n private disarmTimer(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n private async flush(): Promise<void> {\n if (this.inFlight) {\n await this.inFlight;\n }\n if (this.buffer.length === 0) return;\n const drained = this.buffer.splice(0, this.buffer.length);\n this.disarmTimer();\n this.inFlight = this.writeBatch(drained).finally(() => {\n this.inFlight = null;\n });\n await this.inFlight;\n }\n\n private async ensureSql(): Promise<PostgresLike | null> {\n if (this.sql) return this.sql;\n if (!this.connectionString) return null;\n // Lazy import — agents that never enable Studio don't pay the cost of\n // wiring a Postgres connection at boot.\n const mod = (await import('postgres')) as { default: (url: string) => PostgresLike };\n this.sql = mod.default(this.connectionString);\n return this.sql;\n }\n\n private async writeBatch(rows: BufferedRow[]): Promise<void> {\n try {\n const sql = await this.ensureSql();\n if (!sql) {\n process.stderr.write(\n '[stackbone/sdk] RunStepsSpanProcessor dropped batch: no DATABASE_URL configured.\\n',\n );\n return;\n }\n const placeholders: string[] = [];\n const params: unknown[] = [];\n for (const row of rows) {\n const base = params.length;\n placeholders.push(\n `($${base + 1}::uuid, $${base + 2}::uuid, $${base + 3}::uuid, $${base + 4}, $${base + 5}, $${base + 6}, $${base + 7}::jsonb, $${base + 8}::jsonb, $${base + 9}::timestamptz, $${base + 10}::timestamptz, $${base + 11}::int)`,\n );\n params.push(\n row.id,\n row.run_id,\n row.parent_step_id,\n row.type,\n row.name,\n row.status,\n JSON.stringify(row.payload),\n row.error ? JSON.stringify(row.error) : null,\n row.started_at,\n row.finished_at,\n row.duration_ms,\n );\n }\n const text = `INSERT INTO stackbone_platform.run_steps (\n id, run_id, parent_step_id, type, name, status, payload, error,\n started_at, finished_at, duration_ms\n ) VALUES ${placeholders.join(', ')}`;\n await sql.unsafe(text, params);\n } catch (error) {\n process.stderr.write(\n `[stackbone/sdk] RunStepsSpanProcessor write failed: ${error instanceof Error ? error.message : String(error)}\\n`,\n );\n }\n }\n}\n\nconst defaultStepTypeResolver = (span: ReadableSpanLike): RunStepType => {\n const explicit = readString(span.attributes[STEP_TYPE_ATTRIBUTE]);\n if (explicit && (RUN_STEP_TYPES as readonly string[]).includes(explicit)) {\n return explicit as RunStepType;\n }\n for (const [pattern, type] of NAME_PREFIX_MAP) {\n if (pattern.test(span.name)) return type;\n }\n return 'agent';\n};\n\nconst readString = (value: unknown): string | undefined =>\n typeof value === 'string' && value.length > 0 ? value : undefined;\n\nconst formatHrTime = (hr?: [number, number]): string =>\n new Date(hr ? hrTimeToMs(hr) : Date.now()).toISOString();\n\nconst hrTimeToMs = (hr?: [number, number]): number => {\n if (!hr) return 0;\n const [seconds, nanos] = hr;\n return seconds * 1_000 + Math.floor(nanos / 1_000_000);\n};\n\nconst diffHrTime = (\n end?: [number, number],\n start?: [number, number],\n): [number, number] | undefined => {\n if (!end || !start) return undefined;\n const seconds = end[0] - start[0];\n const nanos = end[1] - start[1];\n return [seconds, nanos];\n};\n\nconst serialisablePayload = (attributes: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(attributes)) {\n if (key === RUN_ID_ATTRIBUTE) continue;\n if (key === STEP_TYPE_ATTRIBUTE) continue;\n out[key] = value;\n }\n return out;\n};\n","import { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport {\n aggregateRunCost,\n type AggregateRunCostResult,\n} from '../../../observability/aggregate-run-cost';\nimport {\n createPlatformLogger,\n type PlatformLogger,\n type PlatformLoggerOptions,\n} from '../../../observability/logger';\nimport {\n RunStepsSpanProcessor,\n type RunStepsSpanProcessorOptions,\n type PostgresLike,\n} from '../../../observability/run-steps-exporter';\n\n/**\n * `client.observability` — span processor + per-run JSONL/OTLP logger +\n * run-cost rollup. Local mode writes JSONL to `~/.stackbone/dev/runs/`; cloud\n * mode forwards OTLP/HTTP to the collector.\n *\n * Contract gating: not gated. Local writes touch the filesystem (no\n * Stackbone wire surface) and cloud writes go to OpenTelemetry, not the\n * Stackbone Agent Protocol — so there is no `Capability` to assert against.\n * No entry in `MODULE_CAPABILITIES` per the rule documented in\n * `contract/capability-registry.ts`.\n */\nexport class ObservabilityModule {\n private _processor?: RunStepsSpanProcessor;\n private readonly _loggers = new Map<string, PlatformLogger>();\n private _sql: PostgresLike | null = null;\n private _sqlResolved = false;\n\n constructor(private readonly _resolved: ResolvedConfig) {}\n\n /**\n * Singleton SpanProcessor that the agent registers in its OTel\n * TracerProvider. Coexists with the OTLP exporter — cloud builds wire\n * both so Postgres feeds Studio (paridad con local) and Tempo feeds\n * Platform Ops.\n */\n spanProcessor(options: RunStepsSpanProcessorOptions = {}): RunStepsSpanProcessor {\n if (!this._processor) {\n const merged: RunStepsSpanProcessorOptions = {\n ...options,\n connectionString: options.connectionString ?? this._resolved.databaseUrl,\n };\n this._processor = new RunStepsSpanProcessor(merged);\n }\n return this._processor;\n }\n\n async flush(): Promise<Result<void>> {\n if (this._processor) {\n await this._processor.forceFlush();\n }\n for (const logger of this._loggers.values()) {\n await logger.flush();\n }\n if (this._sql) {\n await this._sql.end?.();\n this._sql = null;\n this._sqlResolved = false;\n }\n return ok(undefined);\n }\n\n /**\n * Per-run structured logger. In local mode (no `OTEL_EXPORTER_OTLP_ENDPOINT`)\n * appends JSONL to `~/.stackbone/dev/runs/<runId>.jsonl`; in cloud mode batches\n * OTLP/HTTP/JSON log records to the collector. Cached by `runId` so the\n * file handle / buffered timer stays stable across repeated calls inside\n * the same run.\n */\n logger(options: { runId: string } & Partial<PlatformLoggerOptions>): PlatformLogger {\n const cached = this._loggers.get(options.runId);\n if (cached) return cached;\n const logger = createPlatformLogger({\n ...options,\n runId: options.runId,\n installationId: options.installationId ?? this._resolved.installationId,\n agentId: options.agentId ?? this._resolved.agentId,\n otelEndpoint: options.otelEndpoint ?? this._resolved.otelExporterOtlpEndpoint,\n });\n this._loggers.set(options.runId, logger);\n return logger;\n }\n\n /** Closes the per-run logger (flushes the JSONL file or the OTLP buffer). */\n async closeLogger(runId: string): Promise<void> {\n const logger = this._loggers.get(runId);\n if (!logger) return;\n this._loggers.delete(runId);\n await logger.close();\n }\n\n /**\n * Hook the agent calls when a run finishes. Sums `cost_usd` from every\n * `llm_call` span of the run and writes the total to\n * `stackbone_platform.runs.cost_estimated_usd`. Errors are folded into the\n * Result envelope so the agent's run cleanup never aborts on a flaky\n * Postgres call — the cost is decorative metadata, not load-bearing.\n */\n async closeRun(runId: string): Promise<Result<AggregateRunCostResult>> {\n const sql = await this.resolveSql();\n if (!sql) {\n return err({\n code: 'database_url_missing',\n message:\n 'Cannot reach the agent Postgres — set `STACKBONE_POSTGRES_URL` in the container or pass `databaseUrl` to `createClient({...})`.',\n });\n }\n try {\n const result = await aggregateRunCost(runId, { sql });\n return ok(result);\n } catch (error) {\n return err({\n code: 'observability_close_run_failed',\n message: error instanceof Error ? error.message : String(error),\n cause: error,\n });\n }\n }\n\n // Lazy-imported postgres-js client, cached for the lifetime of the module\n // and torn down in `flush()`. Lazy so agents that never opt in to Studio\n // don't pay the dep cost.\n private async resolveSql(): Promise<PostgresLike | null> {\n if (this._sqlResolved) return this._sql;\n const connectionString = this._resolved.databaseUrl;\n if (!connectionString) {\n this._sqlResolved = true;\n return null;\n }\n const mod = (await import('postgres')) as { default: (url: string) => PostgresLike };\n this._sql = mod.default(connectionString);\n this._sqlResolved = true;\n return this._sql;\n }\n}\n","import {\n DeleteObjectCommand,\n GetObjectCommand,\n ListObjectsV2Command,\n PutObjectCommand,\n S3Client,\n type ListObjectsV2CommandOutput,\n} from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { err, ok, type Result, type SdkError } from '../../../result';\n\nexport interface StorageObject {\n key: string;\n size: number;\n lastModified?: Date;\n etag?: string;\n}\n\nexport interface UploadOptions {\n contentType?: string;\n metadata?: Record<string, string>;\n}\n\nexport interface ListOptions {\n prefix?: string;\n /** Maximum number of objects to return per page. Must be > 0. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface SignedUrlOptions {\n /** Seconds until the URL expires. Defaults to 3600 (1h). */\n expiresIn?: number;\n /** Only honoured by `getSignedUploadUrl` — pinned into the signature so the uploader must send a matching `Content-Type`. */\n contentType?: string;\n}\n\nexport interface SignedUrl {\n url: string;\n expiresAt: Date;\n}\n\nexport type StorageBody = Blob | Uint8Array | string;\n\ninterface S3Settings {\n client: S3Client;\n endpoint: string;\n bucket: string;\n agentId: string;\n}\n\ninterface ResolvedKey extends S3Settings {\n /** Multi-tenant key sent to S3 — `${agentId}/${bucketName}/${userKey}`. */\n fullKey: string;\n}\n\nconst DEFAULT_SIGNED_URL_TTL_SECONDS = 3600;\n\n/**\n * Public surface behind `client.storage`. Wraps `@aws-sdk/client-s3` against\n * R2 (prod) or MinIO (dev). Exposes a bucket-scoped API via `from(bucket)`.\n *\n * Multi-tenancy: every key is prefixed with `agentId/bucket/` before hitting\n * S3. Credentials are scoped to the agent's physical bucket (env `S3_BUCKET`),\n * and the `bucket` argument is a logical namespace the agent uses to organise\n * its own objects. The full prefixed key is an internal detail — public\n * methods accept and return the user-facing key (without prefix). Metadata\n * tracking in `_storage_objects` (Neon) is out-of-scope for this iteration.\n *\n * Memory note: `download()` materialises the whole object as a `Blob` in\n * memory. For agents that need to stream large objects, prefer\n * `getSignedDownloadUrl()` and `fetch()` the URL directly to consume the\n * stream incrementally.\n */\nexport class StorageModule {\n private _s3: S3Client | null = null;\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('storage', _resolved);\n }\n\n from(bucket: string): StorageBucket {\n return new StorageBucket(bucket, () => this.settings(), this._gate);\n }\n\n private settings(): Result<S3Settings> {\n const accessKeyId = this._resolved.s3AccessKeyId;\n const secretAccessKey = this._resolved.s3SecretAccessKey;\n const endpoint = this._resolved.s3Endpoint;\n const bucket = this._resolved.s3Bucket;\n const agentId = this._resolved.agentId;\n const region = this._resolved.s3Region;\n\n if (!accessKeyId || !secretAccessKey || !endpoint) {\n return err({\n code: 's3_credentials_missing',\n message: S3_CREDENTIALS_MISSING_MESSAGE,\n });\n }\n if (!bucket) {\n return err({ code: 's3_bucket_missing', message: S3_BUCKET_MISSING_MESSAGE });\n }\n if (!agentId) {\n return err({ code: 'agent_id_missing', message: AGENT_ID_MISSING_MESSAGE });\n }\n\n this._s3 ??= new S3Client({\n endpoint,\n region,\n forcePathStyle: true,\n credentials: { accessKeyId, secretAccessKey },\n });\n return ok({ client: this._s3, endpoint, bucket, agentId });\n }\n}\n\nexport class StorageBucket {\n constructor(\n private readonly bucketName: string,\n private readonly resolveSettings: () => Result<S3Settings>,\n private readonly gate: ModuleGate,\n ) {}\n\n async upload(\n key: string,\n body: StorageBody,\n options?: UploadOptions,\n ): Promise<Result<{ key: string; etag?: string }>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n const response = await client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: fullKey,\n Body: body,\n ContentType: options?.contentType,\n Metadata: options?.metadata,\n }),\n );\n const etag = stripEtag(response.ETag);\n return ok(etag === undefined ? { key } : { key, etag });\n } catch (cause) {\n return err(toStorageError('Upload failed', cause));\n }\n }\n\n async download(key: string): Promise<Result<Blob>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n const response = await client.send(new GetObjectCommand({ Bucket: bucket, Key: fullKey }));\n const body = response.Body;\n if (!body) {\n return err({\n code: 's3_empty_response',\n message: `S3 returned an empty body for ${fullKey}`,\n });\n }\n const bytes = await body.transformToByteArray();\n return ok(new Blob([bytes], { type: response.ContentType ?? 'application/octet-stream' }));\n } catch (cause) {\n return err(toStorageError('Download failed', cause));\n }\n }\n\n async list(\n options?: ListOptions,\n ): Promise<Result<{ objects: readonly StorageObject[]; nextCursor?: string }>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(options?.prefix ?? '');\n if (resolved.error) return err(resolved.error);\n const { client, bucket, agentId, fullKey: basePrefix } = resolved.data;\n const limit = options?.limit;\n if (limit !== undefined && limit <= 0) {\n return err({\n code: 's3_invalid_argument',\n message: '`limit` must be a positive integer',\n });\n }\n try {\n const response: ListObjectsV2CommandOutput = await client.send(\n new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: basePrefix,\n ...(limit !== undefined ? { MaxKeys: limit } : {}),\n ...(options?.cursor ? { ContinuationToken: options.cursor } : {}),\n }),\n );\n const stripPrefix = `${agentId}/${this.bucketName}/`;\n const objects: StorageObject[] = (response.Contents ?? []).map((item) => {\n const itemKey = item.Key?.startsWith(stripPrefix)\n ? item.Key.slice(stripPrefix.length)\n : (item.Key ?? '');\n const obj: StorageObject = { key: itemKey, size: item.Size ?? 0 };\n if (item.LastModified) obj.lastModified = item.LastModified;\n const etag = stripEtag(item.ETag);\n if (etag) obj.etag = etag;\n return obj;\n });\n const nextCursor =\n response.IsTruncated && response.NextContinuationToken\n ? response.NextContinuationToken\n : undefined;\n return ok(nextCursor === undefined ? { objects } : { objects, nextCursor });\n } catch (cause) {\n return err(toStorageError('List failed', cause));\n }\n }\n\n async remove(key: string): Promise<Result<{ key: string }>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n await client.send(new DeleteObjectCommand({ Bucket: bucket, Key: fullKey }));\n return ok({ key });\n } catch (cause) {\n return err(toStorageError('Delete failed', cause));\n }\n }\n\n /**\n * Returns the canonical S3-style URL for an object. Pure URL-builder — no\n * S3 round-trip — so this method intentionally bypasses the contract gate.\n * Whether the URL is publicly fetchable depends on the bucket policy; for\n * private buckets, use `getSignedDownloadUrl` instead.\n */\n getPublicUrl(key: string): Result<string> {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { endpoint, bucket, fullKey } = resolved.data;\n const base = endpoint.replace(/\\/+$/, '');\n return ok(`${base}/${bucket}/${encodeS3Key(fullKey)}`);\n }\n\n async getSignedUploadUrl(key: string, options?: SignedUrlOptions): Promise<Result<SignedUrl>> {\n return this.signUrl(\n key,\n options,\n 'Signing upload URL failed',\n ({ bucket, fullKey }) =>\n new PutObjectCommand({ Bucket: bucket, Key: fullKey, ContentType: options?.contentType }),\n );\n }\n\n async getSignedDownloadUrl(key: string, options?: SignedUrlOptions): Promise<Result<SignedUrl>> {\n return this.signUrl(\n key,\n options,\n 'Signing download URL failed',\n ({ bucket, fullKey }) => new GetObjectCommand({ Bucket: bucket, Key: fullKey }),\n );\n }\n\n private async signUrl(\n key: string,\n options: SignedUrlOptions | undefined,\n failureMessage: string,\n buildCommand: (args: {\n bucket: string;\n fullKey: string;\n }) => PutObjectCommand | GetObjectCommand,\n ): Promise<Result<SignedUrl>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n const expiresIn = options?.expiresIn ?? DEFAULT_SIGNED_URL_TTL_SECONDS;\n try {\n const url = await getSignedUrl(client, buildCommand({ bucket, fullKey }), { expiresIn });\n return ok({ url, expiresAt: new Date(Date.now() + expiresIn * 1000) });\n } catch (cause) {\n return err(toStorageError(failureMessage, cause));\n }\n }\n\n /**\n * Resolves S3 settings, validates the user key, and prefixes it with\n * `${agentId}/${bucketName}/`. Rejects path-traversal segments (`..`) so a\n * caller-controlled key cannot escape the agent's namespace.\n */\n private resolve(key: string): Result<ResolvedKey> {\n const settings = this.resolveSettings();\n if (settings.error) return err(settings.error);\n const normalisedKey = key.replace(/^\\/+/, '');\n if (/(^|\\/)\\.\\.(\\/|$)/.test(normalisedKey)) {\n return err({\n code: 's3_invalid_key',\n message: `Invalid storage key: path traversal segments are not allowed (received \"${key}\")`,\n });\n }\n const { agentId } = settings.data;\n const fullKey = normalisedKey\n ? `${agentId}/${this.bucketName}/${normalisedKey}`\n : `${agentId}/${this.bucketName}/`;\n return ok({ ...settings.data, fullKey });\n }\n}\n\nconst S3_CREDENTIALS_MISSING_MESSAGE =\n 'Cannot reach object storage — set `STACKBONE_S3_ACCESS_KEY`, `STACKBONE_S3_SECRET_KEY`, and `STACKBONE_S3_ENDPOINT` in the container or pass `s3` to `createClient({...})`.';\nconst S3_BUCKET_MISSING_MESSAGE =\n 'No storage bucket configured — set `STACKBONE_S3_BUCKET` in the container or pass `s3.bucket` to `createClient({...})`.';\nconst AGENT_ID_MISSING_MESSAGE =\n 'No agent identity configured — set `STACKBONE_AGENT_ID` in the container or pass `agentId` to `createClient({...})`.';\n\nfunction stripEtag(etag: string | undefined): string | undefined {\n return etag?.replace(/^\"|\"$/g, '');\n}\n\nfunction encodeS3Key(key: string): string {\n return key.split('/').map(encodeURIComponent).join('/');\n}\n\ninterface AwsServiceErrorShape {\n $metadata?: { httpStatusCode?: number };\n $fault?: 'client' | 'server';\n}\n\nfunction toStorageError(message: string, cause: unknown): SdkError {\n if (cause instanceof Error) {\n const aws = cause as Error & AwsServiceErrorShape;\n const meta: Record<string, unknown> = { name: aws.name };\n if (aws.$metadata?.httpStatusCode !== undefined) {\n meta['httpStatusCode'] = aws.$metadata.httpStatusCode;\n }\n if (aws.$fault) meta['fault'] = aws.$fault;\n return {\n code: 's3_error',\n message: `${message}: ${cause.message}`,\n cause,\n meta,\n };\n }\n return { code: 's3_error', message, cause };\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { type HttpClient } from '../../../lib/http-client';\nimport { notImplemented, type Result } from '../../../result';\n\n/**\n * OAuth connections (Notion, GDrive, Slack…).\n *\n * Contract gating: not gated. The OAuth surface targets third-party\n * providers, not the Stackbone Agent Protocol, so there is no entry in\n * `MODULE_CAPABILITIES` (see `contract/capability-registry.ts`). When the\n * runtime lands and a Stackbone-mediated capability shows up (e.g. control\n * plane OAuth broker), we add the row and wire the gate.\n */\nexport class ConnectionsFacade {\n constructor(_resolved: ResolvedConfig, _http: HttpClient) {\n // Constructor signature accepts ResolvedConfig and HttpClient for parity\n // with the gated facades. Runtime is not built yet (see class header).\n }\n\n async list(): Promise<Result<readonly never[]>> {\n return notImplemented('connections.list');\n }\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type HttpClient } from '../../../lib/http-client';\nimport { err, notImplemented, type Result } from '../../../result';\n\n/** Emit events to the organization event bus. */\nexport class EventsFacade {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('events', resolved);\n }\n\n async emit(_name: string, _payload: unknown): Promise<Result<void>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return notImplemented('events.emit');\n }\n}\n","import type { ChatCompletionMessageParam } from 'openai/resources';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { notImplemented, type Result } from '../../../result';\n\n/**\n * Where a memory lives. Default `'user'`. `'session'` is short-lived and\n * collapsed (or dropped) by `endSession()`; `'agent'` is shared across every\n * user of the agent.\n */\nexport type MemoryScope = 'user' | 'session' | 'agent';\n\n/**\n * Either raw text or an OpenAI-shaped conversation. The future mem0 backend\n * accepts both: strings ingest verbatim, message arrays are summarised into\n * one or more facts.\n */\nexport type MemoryContent = string | ChatCompletionMessageParam[];\n\nexport interface AddMemoryRequest {\n userId: string;\n /** Conversation/session bucket. Required when `scope: 'session'`. */\n sessionId?: string;\n /** Default `'user'`. */\n scope?: MemoryScope;\n metadata?: Record<string, unknown>;\n}\n\nexport interface MemoryItem {\n id: string;\n content: string;\n userId: string;\n sessionId?: string;\n scope: MemoryScope;\n metadata?: Record<string, unknown>;\n /** ISO 8601 UTC timestamp. */\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface SearchMemoryOptions {\n userId?: string;\n sessionId?: string;\n /** 1..100. Default 10. */\n limit?: number;\n /** Minimum cosine similarity in [0, 1]. Hits below this are dropped. */\n threshold?: number;\n /** Metadata predicates AND-ed to the semantic match. */\n filters?: Record<string, unknown>;\n /** Restrict the search to a subset of scopes. Default: every scope. */\n includeScopes?: readonly MemoryScope[];\n}\n\nexport interface MemoryHit extends MemoryItem {\n /** Cosine similarity in [0, 1]. */\n score: number;\n}\n\nexport interface ListMemoryRequest {\n userId: string;\n /** 1..100. Default 50. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface ListMemoryResult {\n items: readonly MemoryItem[];\n nextCursor?: string;\n}\n\nexport interface UpdateMemoryOptions {\n content?: string;\n /** Shallow-merged onto the existing metadata (mem0 semantics). */\n metadata?: Record<string, unknown>;\n}\n\nexport interface DeleteAllMemoryRequest {\n userId: string;\n}\n\nexport type MemoryHistoryEvent = 'created' | 'updated' | 'accessed' | 'deleted';\n\nexport interface MemoryHistoryEntry {\n id: string;\n memoryId: string;\n event: MemoryHistoryEvent;\n /** ISO 8601 UTC timestamp. */\n at: string;\n /** Identifier of who triggered the event (user id, agent id, etc.). */\n actor?: string;\n /** Content snapshot before the event. Only set for `updated`/`deleted`. */\n before?: string;\n /** Content snapshot after the event. Only set for `created`/`updated`. */\n after?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface EndSessionOptions {\n /** Persist session-scoped facts to long-term (`'user'`) memory before closing. Default `true`. */\n persist?: boolean;\n}\n\nexport interface EndSessionResult {\n sessionId: string;\n /** Number of session memories promoted to long-term storage. `0` when `persist: false`. */\n persisted: number;\n}\n\n/**\n * `client.memory` — long-term memory for the agent. The first iteration is a\n * scaffolding placeholder: every method returns `not_implemented`. The real\n * backend will be mem0 (`mem0ApiKey` / `MEM0_API_KEY`) and the public surface\n * defined here is the contract callers can already type against.\n *\n * Contract gating: not gated. Memory targets mem0 (a non-Stackbone partner),\n * so there is no Stackbone Agent Protocol capability to assert against. No\n * entry in `MODULE_CAPABILITIES` per the rule documented in\n * `contract/capability-registry.ts`. When/if the runtime moves to a\n * Stackbone-served backend we add the capability and wire the gate.\n */\nexport class MemoryModule {\n constructor(_resolved: ResolvedConfig) {\n // Constructor signature accepts ResolvedConfig for parity with the gated\n // surfaces. Runtime is not built yet (see class header comment).\n }\n\n async add(_content: MemoryContent, _request: AddMemoryRequest): Promise<Result<MemoryItem>> {\n return notImplemented('memory.add');\n }\n\n async search(\n _query: string,\n _options?: SearchMemoryOptions,\n ): Promise<Result<readonly MemoryHit[]>> {\n return notImplemented('memory.search');\n }\n\n async delete(_memoryId: string): Promise<Result<{ id: string }>> {\n return notImplemented('memory.delete');\n }\n\n async deleteAll(_request: DeleteAllMemoryRequest): Promise<Result<{ deleted: number }>> {\n return notImplemented('memory.deleteAll');\n }\n\n async get(_memoryId: string): Promise<Result<MemoryItem>> {\n return notImplemented('memory.get');\n }\n\n async list(_request: ListMemoryRequest): Promise<Result<ListMemoryResult>> {\n return notImplemented('memory.list');\n }\n\n async update(_memoryId: string, _options: UpdateMemoryOptions): Promise<Result<MemoryItem>> {\n return notImplemented('memory.update');\n }\n\n async history(_memoryId: string): Promise<Result<readonly MemoryHistoryEntry[]>> {\n return notImplemented('memory.history');\n }\n\n async endSession(\n _sessionId: string,\n _options?: EndSessionOptions,\n ): Promise<Result<EndSessionResult>> {\n return notImplemented('memory.endSession');\n }\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { type HttpClient } from '../../../lib/http-client';\nimport { notImplemented, type Result } from '../../../result';\n\n/**\n * A prompt managed by the Stackbone control plane. Templates are plain strings\n * with Mustache-style `{{var}}` placeholders — no conditionals or loops.\n */\nexport interface Prompt {\n name: string;\n template: string;\n /** Monotonically increasing per `name`. The first `create` produces version `1`. */\n version: number;\n /** Variable names parsed from the template. */\n variables?: readonly string[];\n metadata?: Record<string, unknown>;\n /** ISO 8601 UTC timestamp. */\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GetPromptOptions {\n /** Pin a specific version. Omitted -> latest. */\n version?: number;\n}\n\nexport interface ListPromptsOptions {\n /** 1..100. Default 50. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface ListPromptsResult {\n /** Latest version of each prompt. */\n items: readonly Prompt[];\n nextCursor?: string;\n}\n\nexport interface CreatePromptRequest {\n name: string;\n template: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UpdatePromptOptions {\n /** New template. Bumps `version` by one. */\n template?: string;\n /** Shallow-merged onto the existing metadata. */\n metadata?: Record<string, unknown>;\n}\n\nexport interface DeletePromptOptions {\n /** Delete a specific version. Omitted -> delete every version under `name`. */\n version?: number;\n}\n\nexport interface DeletePromptResult {\n name: string;\n /** Number of versions actually removed. */\n deleted: number;\n}\n\n/**\n * `client.prompts` — managed prompts for the agent. Prompts live outside the\n * code so creators can edit, version and A/B test them without rebuilding the\n * container. The first iteration is a scaffolding placeholder: every method\n * returns `not_implemented`. The real backend will be the Stackbone control\n * plane and the public surface defined here is the contract callers can\n * already type against.\n *\n * Contract gating: not gated yet. Prompts will eventually talk to the\n * Stackbone control plane, but no `Capability` has been declared for it\n * (no entry in `MODULE_CAPABILITIES` — see `contract/capability-registry.ts`).\n * When the runtime lands we add the row (e.g. `prompts.read_write`) and\n * wire the gate the same way `secrets` / `config` do.\n */\nexport class PromptsFacade {\n constructor(_resolved: ResolvedConfig, _http: HttpClient) {\n // Constructor signature accepts ResolvedConfig and HttpClient for parity\n // with the gated facades. Runtime is not built yet (see class header).\n }\n\n async get(_name: string, _options?: GetPromptOptions): Promise<Result<Prompt>> {\n return notImplemented('prompts.get');\n }\n\n async compile(\n _name: string,\n _variables: Record<string, unknown>,\n _options?: GetPromptOptions,\n ): Promise<Result<string>> {\n return notImplemented('prompts.compile');\n }\n\n async list(_options?: ListPromptsOptions): Promise<Result<ListPromptsResult>> {\n return notImplemented('prompts.list');\n }\n\n async create(_request: CreatePromptRequest): Promise<Result<Prompt>> {\n return notImplemented('prompts.create');\n }\n\n async update(_name: string, _options: UpdatePromptOptions): Promise<Result<Prompt>> {\n return notImplemented('prompts.update');\n }\n\n async delete(_name: string, _options?: DeletePromptOptions): Promise<Result<DeletePromptResult>> {\n return notImplemented('prompts.delete');\n }\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { err, notImplemented, type Result } from '../../../result';\n\nexport interface PublishRequest {\n url: string;\n body: unknown;\n retries?: number;\n delay?: number;\n deduplicationId?: string;\n headers?: Record<string, string>;\n}\n\nexport class QueuesModule {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('queues', resolved);\n }\n\n async publish(_request: PublishRequest): Promise<Result<{ messageId: string }>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return notImplemented('queues.publish');\n }\n}\n","import type { ContractResponse } from '@stackbone/validators';\n\nimport { type ClientConfig, resolveConfig, type ResolvedConfig } from './config';\nimport { type ContractStore, createContractStore } from './contract/contract-handshake';\nimport { createModuleGate } from './contract/module-gate';\nimport { HttpClient } from './lib/http-client';\nimport { DatabaseModule } from './surfaces/agent-local/database/database';\nimport { RagModule } from './surfaces/agent-local/rag/rag';\nimport { ApprovalFacade } from './surfaces/control-plane/approval/approval';\nimport { ConfigFacade } from './surfaces/control-plane/config/config';\nimport { SecretsFacade } from './surfaces/control-plane/secrets/secrets';\nimport { AiModule } from './surfaces/external/ai/ai';\nimport { ObservabilityModule } from './surfaces/external/observability/observability';\nimport { StorageModule } from './surfaces/external/storage/storage';\nimport { ConnectionsFacade } from './surfaces/pending/connections/connections';\nimport { EventsFacade } from './surfaces/pending/events/events';\nimport { MemoryModule } from './surfaces/pending/memory/memory';\nimport { PromptsFacade } from './surfaces/pending/prompts/prompts';\nimport { QueuesModule } from './surfaces/pending/queues/queues';\n\n/**\n * The live agent surfaces exposed to the creator's code through a single\n * `createClient()` entry point. The folder layout under `src/surfaces/`\n * groups each surface by where its state lives:\n *\n * - `surfaces/agent-local/` — Postgres branch owned by the agent\n * (`database`, `rag`).\n * - `surfaces/external/` — managed partner SDKs the SDK wraps directly\n * (`ai` / OpenRouter, `storage` / S3 + R2 / MinIO, `observability` /\n * OpenTelemetry).\n * - `surfaces/control-plane/` — thin HTTP calls to Stackbone's control\n * plane (`approval`, `secrets`, `config`).\n * - `surfaces/pending/` — public surface is stable but the runtime is\n * not built yet. They are wired as live `client.X` accessors so MVP\n * agent code can be authored against the eventual contract today; each\n * method returns `Result<{ error: { code: \"not_implemented\" } }>` until\n * the backing runtime ships. Today: queues, memory, prompts,\n * connections, events.\n *\n * Each accessor builds its surface on first access and caches it — env\n * vars and partner SDK init costs are paid only when the agent actually\n * touches that surface.\n *\n * Capability gating: every surface listed in `MODULE_CAPABILITIES` builds\n * its `ModuleGate` against the per-client `ContractStore` owned by this\n * instance — two clients constructed in the same process do NOT share\n * handshake cache or suppression-warning state. See\n * `contract/capability-registry.ts` for the membership rule.\n */\nexport class StackboneClient {\n private _database?: DatabaseModule;\n private _storage?: StorageModule;\n private _ai?: AiModule;\n private _rag?: RagModule;\n private _observability?: ObservabilityModule;\n private _approval?: ApprovalFacade;\n private _secrets?: SecretsFacade;\n private _config?: ConfigFacade;\n private _queues?: QueuesModule;\n private _memory?: MemoryModule;\n private _events?: EventsFacade;\n private _prompts?: PromptsFacade;\n private _connections?: ConnectionsFacade;\n private _httpClient?: HttpClient;\n private readonly _contractStore: ContractStore;\n\n constructor(private readonly resolved: ResolvedConfig) {\n this._contractStore = createContractStore(resolved);\n }\n\n private http(): HttpClient {\n this._httpClient ??= new HttpClient(this.resolved);\n return this._httpClient;\n }\n\n get database(): DatabaseModule {\n this._database ??= new DatabaseModule(\n this.resolved,\n createModuleGate('database', this.resolved, this._contractStore),\n );\n return this._database;\n }\n\n get storage(): StorageModule {\n this._storage ??= new StorageModule(\n this.resolved,\n createModuleGate('storage', this.resolved, this._contractStore),\n );\n return this._storage;\n }\n\n get ai(): AiModule {\n this._ai ??= new AiModule(\n this.resolved,\n undefined,\n createModuleGate('ai', this.resolved, this._contractStore),\n );\n return this._ai;\n }\n\n get rag(): RagModule {\n this._rag ??= new RagModule(\n this.resolved,\n () => this.database,\n () => this.ai,\n createModuleGate('rag', this.resolved, this._contractStore),\n );\n return this._rag;\n }\n\n get observability(): ObservabilityModule {\n this._observability ??= new ObservabilityModule(this.resolved);\n return this._observability;\n }\n\n get approval(): ApprovalFacade {\n this._approval ??= new ApprovalFacade(\n this.resolved,\n this.http(),\n createModuleGate('approval', this.resolved, this._contractStore),\n );\n return this._approval;\n }\n\n get secrets(): SecretsFacade {\n this._secrets ??= new SecretsFacade(\n this.resolved,\n this.http(),\n createModuleGate('secrets', this.resolved, this._contractStore),\n );\n return this._secrets;\n }\n\n get config(): ConfigFacade {\n this._config ??= new ConfigFacade(\n this.resolved,\n this.http(),\n createModuleGate('config', this.resolved, this._contractStore),\n );\n return this._config;\n }\n\n /**\n * Pending surface — runtime not built. Every method returns\n * `not_implemented` so MVP agent code can wire against the eventual\n * contract today and switch over the day the backing runtime ships.\n * Gated against `queues.pgmq` so the handshake-blocked / capability-\n * missing paths are exercised the same way as the live surfaces.\n */\n get queues(): QueuesModule {\n this._queues ??= new QueuesModule(\n this.resolved,\n createModuleGate('queues', this.resolved, this._contractStore),\n );\n return this._queues;\n }\n\n /**\n * Pending surface — runtime not built. Every method returns\n * `not_implemented`. Mem0 is a third-party integration, not a Stackbone\n * Agent Protocol capability, so this surface is intentionally not gated.\n */\n get memory(): MemoryModule {\n this._memory ??= new MemoryModule(this.resolved);\n return this._memory;\n }\n\n /**\n * Pending surface — runtime not built. Every method returns\n * `not_implemented`. Gated against `events.bus` so handshake errors\n * surface symmetrically with the other control-plane facades.\n */\n get events(): EventsFacade {\n this._events ??= new EventsFacade(\n this.resolved,\n this.http(),\n createModuleGate('events', this.resolved, this._contractStore),\n );\n return this._events;\n }\n\n /**\n * Pending surface — runtime not built. Every method returns\n * `not_implemented`. Will gate once a capability row is declared in\n * `MODULE_CAPABILITIES`; until then it is intentionally ungated.\n */\n get prompts(): PromptsFacade {\n this._prompts ??= new PromptsFacade(this.resolved, this.http());\n return this._prompts;\n }\n\n /**\n * Pending surface — runtime not built. Returns an empty list today.\n * Connections target third-party OAuth providers, not the Stackbone\n * Agent Protocol, so this surface is intentionally not gated.\n */\n get connections(): ConnectionsFacade {\n this._connections ??= new ConnectionsFacade(this.resolved, this.http());\n return this._connections;\n }\n\n /**\n * Read-only view of the most recently resolved Stackbone Agent Protocol\n * contract for this client's `stackboneApiUrl`. Returns `null` until a\n * handshake has resolved successfully (the handshake fires lazily on the\n * first gated module call — slices #4/#5). Synchronous, never throws,\n * performs no fetches.\n *\n * Backed by this client's own `ContractStore`, so two `StackboneClient`\n * instances see independent `client.contract` views even when they point\n * at the same baseUrl.\n */\n get contract(): ContractResponse | null {\n return this._contractStore.peek(this.resolved.stackboneApiUrl);\n }\n}\n\nexport function createClient(config: ClientConfig = {}): StackboneClient {\n return new StackboneClient(resolveConfig(config));\n}\n","import type { z } from 'zod';\n\nimport type { StackboneClient } from '../client';\n\nimport type { Logger } from './logger';\n\n/**\n * The data the wrapper hands to the creator's `run` function. F5 widens the\n * shape from F1's bare `{ input }` to the full per-invocation context:\n *\n * - `signal` is a fresh `AbortSignal` per invocation. The wrapper aborts\n * it when the deadline expires; the handler is expected to honour it\n * on cancellable work (fetches, DB queries, model calls).\n * - `invocationId` / `runId` come straight from the parsed envelope.\n * - `client` is the **same** `StackboneClient` instance for every\n * invocation in the process, so sub-modules can keep their internal\n * pools warm.\n * - `logger` is a child of the wrapper's structured logger already\n * bound to `invocationId` and `runId`, so the handler does not have to\n * pass them on every line. The actual JSON format lands in F6.\n */\nexport interface InvokeContext<I extends z.ZodType> {\n input: z.infer<I>;\n signal: AbortSignal;\n invocationId: string;\n runId: string;\n client: StackboneClient;\n logger: Logger;\n}\n\n/**\n * The single `invoke` capability the creator exposes. Mirrors the wrapper's\n * three HTTP verbs (`/invoke`, `/health`, `/schema`) — F1 lands only the\n * invoke half; `/health` and `/schema` land in later slices.\n *\n * The fields are deliberately enumerated (no `[k: string]: unknown` escape\n * hatch) so the parent `AgentSpec` can reject unknown keys at the type level\n * via `keyof` checks downstream.\n */\nexport interface InvokeCapability<I extends z.ZodType, O extends z.ZodType> {\n /** Zod schema for the parsed `/invoke` request body. */\n input: I;\n /** Zod schema for the `/invoke` response body. */\n output: O;\n /** Creator-supplied handler. Returns either the parsed output or a promise of it. */\n run: (ctx: InvokeContext<I>) => z.infer<O> | Promise<z.infer<O>>;\n /** Optional per-invocation timeout in milliseconds. Wired by a later slice. */\n timeoutMs?: number;\n}\n\n/**\n * The declarative shape every Stackbone agent returns from `src/index.ts`.\n *\n * `AgentSpec` is a closed object: the keys are listed explicitly so adding\n * `{ invoke, anyOtherKey }` at the call site fails `tsc`. The corresponding\n * runtime guard in `defineAgent` enforces the same invariant against callers\n * that bypass the type system through `as any`.\n *\n * `health` and other capabilities will join `invoke` as they land — every\n * addition is an explicit, reviewable edit to this type.\n */\nexport interface AgentSpec<I extends z.ZodType, O extends z.ZodType> {\n invoke: InvokeCapability<I, O>;\n}\n\n/**\n * The whitelist `defineAgent` checks at runtime. Kept in lockstep with\n * `AgentSpec`'s declared keys so the runtime guard and the type system tell\n * the creator the same story.\n */\nconst KNOWN_TOP_LEVEL_KEYS = ['invoke'] as const;\nconst KNOWN_INVOKE_KEYS = ['input', 'output', 'run', 'timeoutMs'] as const;\n\n/**\n * Hard ceiling on `invoke.timeoutMs`. The platform saga kills the Machine\n * before the wrapper would time out at higher values, so a creator declaring\n * a 10-minute timeout would publish a contract the runtime cannot keep.\n * Surface that conflict at boot instead of as a mysterious mid-invocation\n * SIGKILL in production.\n */\nexport const INVOKE_TIMEOUT_HARD_CAP_MS = 300_000;\n\n/**\n * Identity function with two jobs:\n *\n * 1. **Inference anchor** — pins the input/output Zod schemas so creators get\n * a fully typed `ctx.input` and a typed return value inside `run` without\n * repeating themselves.\n * 2. **Boot-time invariant** — throws on any unknown top-level or invoke-block\n * key. This is the safety net for creators that force a shape through\n * `as any`; the type system already rejects this, but the wrapper PRD's\n * \"impossible to break the contract from creator code\" success criterion\n * requires the runtime check too.\n *\n * Returns the spec verbatim so callers can `export default defineAgent({...})`\n * and the wrapper can read the same object back through dynamic import.\n */\nexport const defineAgent = <I extends z.ZodType, O extends z.ZodType>(\n spec: AgentSpec<I, O>,\n): AgentSpec<I, O> => {\n if (spec === null || typeof spec !== 'object') {\n throw new TypeError('defineAgent: spec must be a non-null object');\n }\n\n const topLevelKeys = Object.keys(spec) as readonly (keyof AgentSpec<I, O>)[];\n const unknownTopLevel = topLevelKeys.filter(\n (key) => !(KNOWN_TOP_LEVEL_KEYS as readonly string[]).includes(key as string),\n );\n if (unknownTopLevel.length > 0) {\n throw new TypeError(\n `defineAgent: unknown top-level key(s): ${unknownTopLevel.join(', ')}. ` +\n `Allowed keys are: ${KNOWN_TOP_LEVEL_KEYS.join(', ')}.`,\n );\n }\n\n const invoke = spec.invoke;\n if (invoke === undefined || invoke === null || typeof invoke !== 'object') {\n throw new TypeError(\n 'defineAgent: missing `invoke` block. Every agent must declare `defineAgent({ invoke: {...} })`.',\n );\n }\n\n const invokeKeys = Object.keys(invoke) as readonly (keyof InvokeCapability<I, O>)[];\n const unknownInvoke = invokeKeys.filter(\n (key) => !(KNOWN_INVOKE_KEYS as readonly string[]).includes(key as string),\n );\n if (unknownInvoke.length > 0) {\n throw new TypeError(\n `defineAgent: unknown key(s) on \\`invoke\\`: ${unknownInvoke.join(', ')}. ` +\n `Allowed keys are: ${KNOWN_INVOKE_KEYS.join(', ')}.`,\n );\n }\n\n if (typeof invoke.run !== 'function') {\n throw new TypeError('defineAgent: `invoke.run` must be a function.');\n }\n\n if (invoke.timeoutMs !== undefined) {\n if (typeof invoke.timeoutMs !== 'number' || !Number.isFinite(invoke.timeoutMs)) {\n throw new TypeError(\n 'defineAgent: `invoke.timeoutMs` must be a finite number of milliseconds.',\n );\n }\n if (invoke.timeoutMs > INVOKE_TIMEOUT_HARD_CAP_MS) {\n throw new RangeError(\n `defineAgent: \\`invoke.timeoutMs\\` (${invoke.timeoutMs}) exceeds the ${INVOKE_TIMEOUT_HARD_CAP_MS}ms hard cap. ` +\n 'The platform saga terminates the Machine above 5 minutes, so a higher timeout would publish a contract the wrapper cannot honour.',\n );\n }\n }\n\n return spec;\n};\n","// Structured logger the runtime v2 wrapper hands to creator code via\n// `InvokeContext.logger`. F5 shipped the binding interface only; F6 lands the\n// real implementation: one NDJSON line per call written to stdout (or any\n// injectable writable-like sink), with bindings accumulated through `child()`\n// so the per-invocation `invocationId` / `runId` ride along without the\n// handler having to thread them.\n//\n// Deliberately a tiny custom writer (no `pino`): the wrapper PRD pins a fixed\n// shape (`ts`, `msg`, `level`, plus bindings + per-call meta) and the\n// destination is always `process.stdout`. Adding a dependency would buy us a\n// transport ecosystem we explicitly do not want at this layer — the OTLP\n// follow-up will add OTEL alongside this fallback.\n\n/**\n * Structured fields the wrapper, an upstream consumer, or a handler can\n * attach to a single log line. Values are `unknown` because the wrapper\n * does not enforce a schema — the destination decides how to serialise\n * each value.\n */\nexport type LoggerBindings = Record<string, unknown>;\n\n/**\n * The handler-facing logger. Every method takes a human-readable message\n * plus an optional bag of structured fields the destination merges with\n * the bindings already set by the wrapper (typically `invocationId` and\n * `runId`).\n *\n * F5 wired the binding contract only; F6 replaces the stub implementation\n * with the JSON/STACKBONE_MODE-aware variant. Keeping the surface here\n * (instead of in the CLI) lets the SDK ship a typed seam creators can\n * reference from their own tests.\n */\nexport interface Logger {\n /** Fine-grained diagnostic information. */\n debug(msg: string, meta?: LoggerBindings): void;\n /** Routine progress information. */\n info(msg: string, meta?: LoggerBindings): void;\n /** Recoverable problem the handler still resolved. */\n warn(msg: string, meta?: LoggerBindings): void;\n /** Unrecoverable failure the handler is about to report. */\n error(msg: string, meta?: LoggerBindings): void;\n /**\n * Returns a new logger that merges `bindings` into every subsequent\n * log line. The original logger is left untouched.\n */\n child(bindings: LoggerBindings): Logger;\n}\n\n/**\n * Minimal writable surface the structured logger drains into. Both\n * `process.stdout` and arbitrary test doubles satisfy it — every consumer\n * only needs `write(string): unknown`.\n */\nexport interface LogSink {\n write(chunk: string): unknown;\n}\n\nexport interface StructuredLoggerOptions {\n /** Output stream. Defaults to `process.stdout` for production use. */\n stream?: LogSink;\n /** Initial bindings every line inherits (e.g. process-wide metadata). */\n bindings?: LoggerBindings;\n /** Clock seam for the `ts` field. Defaults to `() => new Date()`. */\n now?: () => Date;\n}\n\ntype Level = 'debug' | 'info' | 'warn' | 'error';\n\nconst writeLine = (\n stream: LogSink,\n level: Level,\n msg: string,\n bindings: LoggerBindings,\n meta: LoggerBindings,\n now: () => Date,\n): void => {\n // Per-call meta wins over bindings so a handler can override an inherited\n // field on a specific line without rebuilding a child logger.\n const record = { ts: now().toISOString(), level, msg, ...bindings, ...meta };\n stream.write(`${JSON.stringify(record)}\\n`);\n};\n\n/**\n * Builds a structured `Logger` that emits one NDJSON line per call. Output\n * shape is fixed by the wrapper PRD: `{ ts, level, msg, ...bindings,\n * ...meta }`. The wrapper layers extra fields on top via `child()`\n * (`invocationId`, `runId`, `latencyMs`, `status`).\n */\nexport const createStructuredLogger = (opts: StructuredLoggerOptions = {}): Logger => {\n const stream: LogSink = opts.stream ?? process.stdout;\n const now = opts.now ?? (() => new Date());\n const baseBindings: LoggerBindings = opts.bindings ?? {};\n\n const build = (bindings: LoggerBindings): Logger => ({\n debug: (msg, meta = {}) => writeLine(stream, 'debug', msg, bindings, meta, now),\n info: (msg, meta = {}) => writeLine(stream, 'info', msg, bindings, meta, now),\n warn: (msg, meta = {}) => writeLine(stream, 'warn', msg, bindings, meta, now),\n error: (msg, meta = {}) => writeLine(stream, 'error', msg, bindings, meta, now),\n child: (extra) => build({ ...bindings, ...extra }),\n });\n\n return build(baseBindings);\n};\n","// The symmetric request/response envelope every `POST /invoke` call uses.\n//\n// The shape lives here (in `@stackbone/sdk`) rather than next to the wrapper\n// so a future ADR can promote it to a dedicated `runtime-contract` lib\n// without rewriting consumers. The dispatcher in the platform and the\n// wrapper in the CLI both speak this envelope verbatim.\n//\n// Reserved error codes are part of the contract. Creators may attach their\n// own `code` to thrown errors (duck-typed), but if that code collides with\n// a reserved one the wrapper falls back to `HANDLER_ERROR` so the platform\n// can keep relying on the reserved codes meaning exactly what they say.\nimport { z } from 'zod';\n\n/**\n * Reserved error codes. Order is intentional: keep them flat (string) so\n * the envelope JSON stays trivial to inspect.\n *\n * F2 owns `VALIDATION_ERROR` and `HANDLER_ERROR`. `TIMEOUT_ERROR` is\n * declared here so the collision check is stable across slices — the F5\n * timeout slice will start emitting it without needing to amend the\n * envelope contract.\n */\nexport const RESERVED_ERROR_CODES = ['VALIDATION_ERROR', 'HANDLER_ERROR', 'TIMEOUT_ERROR'] as const;\n\nexport type ReservedErrorCode = (typeof RESERVED_ERROR_CODES)[number];\n\n/**\n * HTTP header carrying `invocationId` so the dispatcher can correlate\n * requests without parsing the JSON body.\n */\nexport const INVOCATION_ID_HEADER = 'X-Stackbone-Invocation-Id';\n\n/**\n * HTTP header carrying `runId` so the dispatcher can correlate requests\n * across approval callbacks, log lookups, and trace spans without parsing\n * the JSON body.\n */\nexport const RUN_ID_HEADER = 'X-Stackbone-Run-Id';\n\n/**\n * Envelope a client (the platform dispatcher, the local emulator, or a\n * curl smoke test) sends to `POST /invoke`. `payload` is unknown at this\n * layer — the wrapper revalidates it against `spec.invoke.input` before\n * handing it to the creator's `run`.\n */\nexport const invokeRequestSchema = z.object({\n invocationId: z.string().min(1),\n runId: z.string().min(1),\n payload: z.unknown(),\n});\n\nexport type InvokeRequest = z.infer<typeof invokeRequestSchema>;\n\n/**\n * Error portion of a failure envelope. `issues` mirrors Zod's `ZodIssue[]`\n * shape verbatim so the dispatcher can render the same field-level paths\n * an SDK consumer would see locally.\n */\nexport interface InvokeEnvelopeError {\n code: string;\n message: string;\n issues?: z.ZodIssue[];\n}\n\n/**\n * Success envelope returned by `/invoke`. `TResult` is left generic so the\n * wrapper can wrap the parsed output without paying for an extra type\n * assertion at the call site.\n */\nexport interface InvokeSuccessEnvelope<TResult = unknown> {\n invocationId: string;\n runId: string;\n result: TResult;\n}\n\n/**\n * Failure envelope returned by `/invoke`. Keeps `invocationId` and `runId`\n * at the top level so a client can correlate a 4xx/5xx with the request\n * without inspecting `error.issues`.\n */\nexport interface InvokeErrorEnvelope {\n invocationId: string;\n runId: string;\n error: InvokeEnvelopeError;\n}\n\nexport type InvokeResponse<TResult = unknown> =\n | InvokeSuccessEnvelope<TResult>\n | InvokeErrorEnvelope;\n\n/**\n * True when `code` is one of the reserved tokens the wrapper owns. Used by\n * the duck-typed error path: a creator that throws an error tagged with a\n * reserved code falls back to `HANDLER_ERROR` so reserved codes always\n * mean what the platform expects.\n */\nexport const isReservedErrorCode = (code: string): code is ReservedErrorCode =>\n (RESERVED_ERROR_CODES as readonly string[]).includes(code);\n","// `schema-introspection` walks a Zod schema's internal `_zod.def` tree to\n// classify it against the runtime v2 wrapper's \"JSON-Schema-serialisable\n// subset\" rule. The wrapper PRD splits offending constructs into two buckets:\n//\n// - **Fatal**: `.transform()`, `.preprocess()`, `.coerce.*` — these change\n// the shape between the declared input and the value the handler sees,\n// so the public catalog would describe one shape and the wrapper would\n// enforce another. Boot must abort before the HTTP port binds.\n// - **Warning**: `.refine()`, `.superRefine()`, recursive `z.lazy()` —\n// these are runtime-only rules that cannot round-trip to JSON Schema.\n// The wrapper boots, the rule still runs at invoke time, the catalog\n// just won't render it.\n//\n// The walk runs once at boot. Its output is the cached `{ input, output }`\n// pair the wrapper serves from `GET /schema` plus the diagnostics list the\n// caller uses to decide between `throw` and `console.warn`.\n//\n// Why this lives in `@stackbone/sdk` (and not in the CLI): Studio Playground,\n// the catalog type generator, and breaking-change detection will all want\n// the same classification later. The CLI just wraps it with the boot-time\n// fatal/warn decision.\nimport { z } from 'zod';\n\n/**\n * Which half of the contract the diagnostic belongs to. The wrapper's error\n * message names the half so the creator can find the offending field\n * immediately (\"input.user.email\", not just \"user.email\").\n */\nexport type SchemaHalf = 'input' | 'output';\n\n/**\n * Constructs the wrapper either rejects outright or warns about. Listed\n * verbatim so a future ADR can extend the union without changing the type\n * shape downstream consumers rely on.\n */\nexport type FatalConstruct = 'transform' | 'preprocess' | 'coerce';\nexport type WarnConstruct = 'refine' | 'lazy';\n\nexport interface SchemaDiagnostic<Construct extends string> {\n half: SchemaHalf;\n /** Dotted JSON pointer-ish path: `email`, `user.address.street`, `items[]`. */\n path: string;\n construct: Construct;\n}\n\nexport interface AgentSchemaPair {\n input: z.ZodType;\n output: z.ZodType;\n}\n\nexport interface SchemaIntrospectionResult {\n fatal: SchemaDiagnostic<FatalConstruct>[];\n warnings: SchemaDiagnostic<WarnConstruct>[];\n schemas: {\n input: JsonSchemaDocument;\n output: JsonSchemaDocument;\n };\n}\n\n/**\n * JSON Schema 2020-12 document. We intentionally keep this loose — Zod's\n * `toJSONSchema` returns an arbitrary structure and the wrapper only needs\n * to serialise it verbatim to the catalog. A future ADR can tighten this\n * to a generated type once the catalog has a real consumer.\n */\nexport interface JsonSchemaDocument {\n $schema?: string;\n type?: string | string[];\n properties?: Record<string, JsonSchemaDocument>;\n required?: string[];\n // Catch-all for the rest of the 2020-12 vocabulary so consumers can read\n // `items`, `$ref`, etc. without a cast.\n [key: string]: unknown;\n}\n\n/**\n * Internal accumulator. The walker mutates this in place so we can collect\n * every diagnostic in one pass — stopping at the first match would force\n * the creator into a fix-recompile-rerun loop for unrelated issues.\n */\ninterface WalkAccumulator {\n fatal: SchemaDiagnostic<FatalConstruct>[];\n warnings: SchemaDiagnostic<WarnConstruct>[];\n /** Tracks visited `lazy` defs so a recursive cycle does not loop forever. */\n visitedLazy: WeakSet<object>;\n}\n\n/**\n * The structural shape we read from Zod's internals. Zod 4 exposes its def\n * tree under `_zod.def`; the shape varies per type so we treat it as an\n * arbitrary record and narrow per branch.\n */\ntype ZodDefLike = Record<string, unknown> & { type?: string };\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object';\n\nconst getDef = (node: unknown): ZodDefLike | null => {\n if (!isObject(node)) return null;\n const internal = (node as { _zod?: { def?: unknown } })._zod;\n if (!isObject(internal)) return null;\n const def = internal.def;\n return isObject(def) ? (def as ZodDefLike) : null;\n};\n\n/**\n * Joins a parent path segment with a child key, picking the right separator\n * so consumers can copy/paste the path into a Zod schema spec.\n */\nconst join = (parent: string, child: string | number): string => {\n if (parent === '') return String(child);\n if (typeof child === 'number') return `${parent}[${child}]`;\n return `${parent}.${child}`;\n};\n\n/**\n * Walks the Zod def tree under `node`, recording fatal/warn diagnostics into\n * `acc`. The walker treats `pipe`, `optional`, `nullable`, `default`,\n * `array`, `object`, `union`, `intersection`, `record`, `tuple`, and `lazy`\n * as structural containers; every other type is a leaf (we still inspect\n * its `checks` and `coerce` flags).\n *\n * `path` is the dotted accessor; `half` is the input/output bucket; `acc`\n * is shared across both halves.\n */\nconst walk = (node: unknown, path: string, half: SchemaHalf, acc: WalkAccumulator): void => {\n const def = getDef(node);\n if (def === null) return;\n\n // Coerce flag — `z.coerce.number()` sets `coerce: true` on the leaf def.\n // We surface this BEFORE recursing so the diagnostic carries the field's\n // own path (not its parent's).\n if (def['coerce'] === true) {\n acc.fatal.push({ half, path, construct: 'coerce' });\n }\n\n // Checks (Zod 4 stores `.refine()` / `.superRefine()` as `check: 'custom'`\n // entries on the parent type's `checks` array; built-in constraints like\n // `.min()` use other tokens, so we filter to `custom` only).\n const checks = def['checks'];\n if (Array.isArray(checks)) {\n for (const check of checks) {\n const checkDef = getDef(check);\n if (checkDef !== null && checkDef['check'] === 'custom') {\n acc.warnings.push({ half, path, construct: 'refine' });\n // Only one warning per field is enough; chained refines collapse\n // into the same diagnostic since the catalog drops them all anyway.\n break;\n }\n }\n }\n\n switch (def.type) {\n case 'pipe': {\n // `.transform()` -> pipe(in: source, out: transform)\n // `.preprocess()` -> pipe(in: transform, out: target)\n const inDef = getDef(def['in']);\n const outDef = getDef(def['out']);\n if (outDef?.type === 'transform') {\n acc.fatal.push({ half, path, construct: 'transform' });\n } else if (inDef?.type === 'transform') {\n acc.fatal.push({ half, path, construct: 'preprocess' });\n }\n // Still recurse into the non-transform side so we surface nested\n // diagnostics underneath a `.transform()`/`.preprocess()` wrapper.\n if (inDef !== null && inDef.type !== 'transform') {\n walk(def['in'], path, half, acc);\n }\n if (outDef !== null && outDef.type !== 'transform') {\n walk(def['out'], path, half, acc);\n }\n return;\n }\n case 'object': {\n const shape = def['shape'];\n if (isObject(shape)) {\n for (const [key, child] of Object.entries(shape)) {\n walk(child, join(path, key), half, acc);\n }\n }\n return;\n }\n case 'array': {\n walk(def['element'], join(path, '[]' as unknown as number), half, acc);\n return;\n }\n case 'union': {\n const options = def['options'];\n if (Array.isArray(options)) {\n for (const option of options) {\n walk(option, path, half, acc);\n }\n }\n return;\n }\n case 'intersection': {\n walk(def['left'], path, half, acc);\n walk(def['right'], path, half, acc);\n return;\n }\n case 'record': {\n walk(def['keyType'], path, half, acc);\n walk(def['valueType'], path, half, acc);\n return;\n }\n case 'tuple': {\n const items = def['items'];\n if (Array.isArray(items)) {\n for (let i = 0; i < items.length; i++) {\n walk(items[i], join(path, i), half, acc);\n }\n }\n return;\n }\n case 'optional':\n case 'nullable':\n case 'default':\n case 'catch':\n case 'readonly':\n case 'nonoptional':\n case 'prefault':\n case 'promise': {\n walk(def['innerType'], path, half, acc);\n return;\n }\n case 'lazy': {\n // `z.lazy()` is a runtime construct that *can* round-trip to JSON\n // Schema via `$ref`, but the PRD pre-emptively flags it so creators\n // know the public catalog cannot render it faithfully. We also need\n // a cycle guard — walking a self-referential tree without one\n // overflows the stack.\n const lazyKey = isObject(node) ? node : null;\n if (lazyKey !== null) {\n if (acc.visitedLazy.has(lazyKey)) {\n return;\n }\n acc.visitedLazy.add(lazyKey);\n }\n acc.warnings.push({ half, path, construct: 'lazy' });\n const getter = def['getter'];\n if (typeof getter === 'function') {\n try {\n const resolved = (getter as () => unknown)();\n walk(resolved, path, half, acc);\n } catch {\n // A getter that throws on its first call is the creator's bug,\n // not ours; the regular Zod parse path will surface it at invoke\n // time. We skip the recursion and keep collecting siblings.\n }\n }\n return;\n }\n default:\n return;\n }\n};\n\n/**\n * Walks the agent's input/output schemas, classifies offending constructs,\n * and emits the JSON Schema 2020-12 documents the wrapper serves from\n * `GET /schema`. The function never throws — the caller decides what to do\n * with the fatal list.\n *\n * Derivation runs through Zod's native `z.toJSONSchema`. We pass\n * `unrepresentable: 'any'` so a `.refine()`-bearing string still surfaces as\n * a string (the catalog drops the constraint, the wrapper still runs it at\n * invoke time).\n */\nexport const analyzeAgentSchemas = (pair: AgentSchemaPair): SchemaIntrospectionResult => {\n const acc: WalkAccumulator = {\n fatal: [],\n warnings: [],\n visitedLazy: new WeakSet<object>(),\n };\n\n walk(pair.input, '', 'input', acc);\n walk(pair.output, '', 'output', acc);\n\n // `unrepresentable: 'any'` keeps `.transform()` etc. from throwing during\n // derivation — we already flagged them in `acc.fatal`, so the caller is\n // expected to abort before consuming `schemas`. We still return them so a\n // test can assert the shape directly.\n const inputJson = z.toJSONSchema(pair.input, { unrepresentable: 'any' });\n const outputJson = z.toJSONSchema(pair.output, { unrepresentable: 'any' });\n\n return {\n fatal: acc.fatal,\n warnings: acc.warnings,\n schemas: {\n input: inputJson as JsonSchemaDocument,\n output: outputJson as JsonSchemaDocument,\n },\n };\n};\n"]}
1
+ {"version":3,"sources":["../../../libs/sdk/src/config.ts","../../../libs/shared/validators/src/lib/common/json-object.ts","../../../libs/shared/validators/src/lib/agents/contract.ts","../../../libs/shared/validators/src/lib/studio/studio-queues.ts","../../../libs/shared/validators/src/lib/agents/queue-jobs.ts","../../../libs/sdk/src/result.ts","../../../libs/sdk/src/contract/contract-handshake.ts","../../../libs/sdk/src/contract/capability-registry.ts","../../../libs/sdk/src/contract/module-gate.ts","../../../libs/sdk/src/lib/http-client.ts","../../../libs/sdk/src/surfaces/agent-local/approval/tool.ts","../../../libs/sdk/src/surfaces/agent-local/approval/verify.ts","../../../libs/sdk/src/surfaces/agent-local/approval/approval.ts","../../../libs/sdk/src/surfaces/agent-local/config/config.ts","../../../libs/sdk/src/surfaces/agent-local/database/lazy-client.ts","../../../libs/sdk/src/surfaces/agent-local/database/shared-handle.ts","../../../libs/sdk/src/surfaces/agent-local/database/database.ts","../../../libs/shared/prompt-compiler/src/lib/compile.ts","../../../libs/sdk/src/surfaces/agent-local/prompts/prompts.ts","../../../libs/shared/rag-core/src/lib/result.ts","../../../libs/shared/rag-core/src/lib/parsing/chunker.ts","../../../libs/shared/rag-core/src/lib/parsing/parser.ts","../../../libs/shared/rag-core/src/lib/pipeline/errors.ts","../../../libs/shared/rag-core/src/lib/pipeline/sql.ts","../../../libs/shared/rag-core/src/lib/pipeline/pipeline.ts","../../../libs/shared/rag-core/src/lib/pipeline/jobs.ts","../../../libs/sdk/src/surfaces/agent-local/rag/embedder.ts","../../../libs/sdk/src/surfaces/agent-local/rag/rag.ts","../../../node_modules/.pnpm/libsodium@0.8.4/node_modules/libsodium/dist/modules-esm/libsodium.mjs","../../../node_modules/.pnpm/libsodium-wrappers@0.8.4/node_modules/libsodium-wrappers/dist/modules-esm/libsodium-wrappers.mjs","../../../libs/shared/crypto/src/lib/secret-cipher.ts","../../../libs/sdk/src/surfaces/agent-local/secrets/secrets.ts","../../../libs/sdk/src/surfaces/external/ai/ai.ts","../../../libs/sdk/src/surfaces/external/storage/storage.ts","../../../libs/sdk/src/surfaces/pending/memory/memory.ts","../../../libs/sdk/src/surfaces/pending/queues/queues.ts","../../../libs/sdk/src/client.ts","../../../libs/sdk/src/errors/codes.ts","../../../libs/sdk/src/runtime/define-agent.ts","../../../libs/sdk/src/runtime/logger.ts","../../../libs/sdk/src/runtime/invocation-context.ts","../../../libs/sdk/src/runtime/console-capture.ts","../../../libs/sdk/src/runtime/system-secrets.ts","../../../libs/sdk/src/runtime/invoke-envelope.ts","../../../libs/sdk/src/runtime/schema-introspection.ts"],"names":["resolveConfig","config","env","process","Object","freeze","stackboneApiUrl","agentJwt","installationId","approvalSigningKey","agentId","databaseUrl","secretKey","openrouterKey","openrouterBaseUrl","s3AccessKeyId","s3","accessKeyId","s3SecretAccessKey","secretAccessKey","s3Endpoint","endpoint","s3Bucket","bucket","s3Region","region","otelExporterOtlpEndpoint","otel","exporterOtlpEndpoint","requireContract","contractTtlMs","parseTtlMs","debug","ragEmbeddingModel","rag","embeddingModel","protocolRequired","raw","undefined","n","Number","parseInt","isFinite","jsonObject","z","looseObject","MIN_SUPPORTED_CONTRACT_VERSION","CAPABILITIES","MODULE_CAPABILITIES","database","queues","secrets","approval","storage","ai","prompts","contractBuildNameSchema","enum","contractResponseSchema","object","version","number","int","min","minSupported","capabilities","array","build","name","string","runtimeUrl","url","nullable","optional","requireVersion","contract","data","error","code","message","meta","detected","required","requireCapability","capability","versionCheck","includes","available","QUEUE_NAME_REGEX","queueNameSchema","max","regex","bullmqJobStatusSchema","journalTerminalStatusSchema","journalJobStatusSchema","options","jobStatusSchema","jobStatusFilterSchema","queueSummarySchema","is_dlq","boolean","pending","nonnegative","active","delayed","failed","strict","items","jobCommonFields","id","queue","attempts","enqueued_at","iso","datetime","dispatch_id","payload","bullmqJobSchema","source","literal","status","next_run_at","started_at","finished_at","journalJobSchema","refine","value","jobSchema","discriminatedUnion","cursor","limit","coerce","default","next_cursor","jobId","MAX_JOB_ATTEMPTS","baseJobFields","retries","delay","deduplicationId","publishJobResponseSchema","messageId","cronExpressionSchema","cron","tz","scheduleJobResponseSchema","scheduleId","unscheduleJobResponseSchema","removed","scheduleSummarySchema","listSchedulesResponseSchema","ok","err","notImplemented","scope","CONTRACT_PATH","createContractStore","resolved","cache","Map","lastResolved","debugLogged","Set","ttl","get","baseUrl","trim","reason","key","normaliseBaseUrl","now","Date","existing","expiresAt","promise","delete","fetchImpl","fetch","globalThis","bind","performHandshake","POSITIVE_INFINITY","set","result","maybeLogDebug","peek","cached","gatingEnabled","response","method","cause","Error","String","body","cancel","json","issues","parsed","safeParse","success","URL","protocol","toLowerCase","host","replace","has","add","console","warn","length","assertCapability","module","createModuleGate","store","warnedKeys","warningsFor","handshake","resolveContract","agentFloor","gateError","warningsByStore","WeakMap","warnings","RETRYABLE_STATUS","IDEMPOTENT_METHODS","HttpClient","timeout","retryCount","retryDelay","path","request","post","put","patch","req","responseSchema","errorMapping","resolveApiUrl","querystring","buildQuerystring","params","arrayParams","buildUrl","canRetry","toUpperCase","idempotent","maxAttempts","requestHeaders","Headers","headers","jwt","resolveAgentJwt","resolveInstallationId","serializeBody","lastError","attempt","sleepWithSignal","computeBackoff","signal","composeSignal","_rawBody","_callerSignal","_params","_arrayParams","_idempotent","_headers","passthrough","init","codeForStatus","statusText","parseResponse","sdkErr","mapFetchError","base","Math","pow","jitter","random","round","endsWith","entries","searchParams","append","toString","out","invalidCode","prefix","field","values","Array","isArray","some","v","join","FormData","ArrayBuffer","isView","JSON","stringify","validateOrFail","contentType","text","e","domainMeta","schema","validation","override","overrides","domainSuffix","transportSuffix","timeoutMs","callerSignal","aborted","controller","AbortController","timer","setTimeout","abort","onCallerAbort","addEventListener","once","clearTimeout","removeEventListener","ms","Promise","resolve","reject","onAbort","createApprovalTool","facade","spec","description","parameters","openaiSpec","type","function","invoke","input","resolveGate","needsApproval","requestOpts","toRequest","requested","topic","approvalId","execute","tool","Boolean","SIGNATURE_HEADER","DEFAULT_TOLERANCE_SECONDS","HEX_RE","verifyCallback","signingKey","resolveSigningKey","header","parseHeader","tolerance","toleranceSeconds","deltaSeconds","timestamp","FUTURE_DRIFT_TOLERANCE_SECONDS","rawBody","readRawBody","expected","computeHmac","constantTimeEqual","signature","decision","parse","isDecision","part","split","eqIdx","indexOf","slice","test","ENCODER","TextEncoder","secret","crypto","subtle","importKey","encode","hash","sign","Buffer","from","Uint8Array","a","b","mismatch","i","charCodeAt","DECISION_STATUSES","DEFAULT_APPROVAL_TIMEOUT_MS","DEFAULT_LIST_LIMIT","MAX_LIST_LIMIT","ApprovalFacade","_resolved","_getDatabase","validateRequest","sql","parseTimeoutMs","fallback","onTimeoutToFallback","onTimeout","callbackUrl","onDecide","rows","idempotencyKey","metadata","row","callback_url","timeout_at","created_at","cancelReason","toRecord","list","clampLimit","map","verify","shared","$client","record","createdAt","floor","match","exec","unit","factor","s","m","h","d","ConfigFacade","loadPayload","getMany","keys","createDrizzleClient","connectionString","postgres","drizzle","cachedHandle","cachedUrl","getDatabaseHandle","DatabaseNotConfiguredError","DATABASE_NOT_CONFIGURED_MESSAGE","POOL_TERMINATED_ERROR_CODES","isPoolTerminatedError","runWithColdStartRetry","firstAttempt","retryAttempt","stderr","write","withColdStartRetry","gate","assertGate","GateBlockedError","sdkError","createRetriableQueryBuilder","seed","rootCall","buildProxy","steps","target","run","replayChain","Proxy","_t","then","catch","cb","finally","kind","apply","_this","args","last","next","current","step","parent","fn","TypeError","retriable","DatabaseModule","_gate","_databaseUrl","query","select","insert","update","transaction","PLACEHOLDER","compile","template","vars","missing","output","_match","extractVars","seen","ordered","matchAll","push","PG_UNDEFINED_TABLE","PG_UNIQUE_VIOLATION","PromptsFacade","keyError","validateKey","head","fetchHead","notFound","current_version","content","fetchVersionContent","rowToPrompt","mapReadError","variables","prompt","compileTemplate","detail","create","begin","tx","isPgError","mapWriteError","nextVersion","_options","deleted","notConfigured","trunc","toIso","updatedAt","updated_at","toISOString","isOk","DEFAULT_SIZE","DEFAULT_OVERLAP","RECURSIVE_SEPARATORS","SENTENCE_BOUNDARY","chunk","size","overlap","strategy","trimmed","pieces","splitBySentence","splitRecursive","mergePieces","sepIdx","idx","sep","splitByLength","parts","filter","bufParts","bufLen","flush","closed","piece","candidateLen","seedText","tail","trimStart","PDF_MIME_TYPES","PDF_MAGIC","PDF_NO_TEXT_LAYER","PdfNoTextLayerError","mime","sniffMime","bytes","toUint8Array","resolveKind","extractText","mergePages","TextDecoder","decode","startsWith","looksLikePdf","Blob","arrayBuffer","every","RAG_SCHEMA_MISSING_HINT","RAG_ERROR_CODES","isRagErrorCode","isTaggedError","toRagError","fallbackCode","hint","DEFAULT_NAMESPACE","contentHash","createHash","digest","createDocument","collectionId","ensureCollection","collection","insertedDoc","documentId","appendChunks","placeholders","_","flatMap","chunkIdx","formatVector","embedding","unsafe","deleteByIds","ids","namespace","count","deleteByFilter","filterClause","retrieve","embStr","contentColumn","includeContent","metadataColumn","includeMetadata","topK","inserted","DEFAULT_TOP_K","RagPipeline","_sqlProvider","_embedder","_jobWriter","_progressBatchSize","deps","sqlProvider","embedder","jobWriter","progressBatchSize","ingest","validateIngest","chunks","isAutoEmbedIngest","embedded","embedAll","received","c","docId","client","totalChunks","onProgress","writer","started","start","needsBatching","batchSize","processed","offset","cancelled","isCancelled","processedChunks","currentDocument","ordinal","progress","complete","mapped","fail","idList","deleteWhere","resolveQueryEmbedding","retrieveRows","hit","score","isAutoEmbedRetrieve","embedOne","model","hasEmbedder","dims","createSqlJobWriter","DEFAULT_BATCH_SIZE","DEFAULT_CONCURRENCY","Embedder","_ai","_model","_batchSize","_concurrency","isInteger","concurrency","first","texts","batches","worker","batchIndex","batch","embeddings","isUnsupportedModelError","forEach","item","j","errors","all","firstError","find","DEFAULT_RAG_EMBEDDING_MODEL","RagModule","_testSqlOverride","_testJobWriterFactory","_getAi","testDeps","jobWriterFactory","gateResult","resolveIngestModel","withPipeline","buildEmbedderForIngest","pipeline","ingestAsync","writerFactory","channel","createProgressChannel","requestWithHook","event","countChunks","close","facadeWriter","withPreallocatedJob","r","events","iterable","resolveRetrieveModel","buildEmbedderForRetrieve","reset","chunkText","parseInput","ragOk","buffer","done","Symbol","asyncIterator","shift","getAi","A","I","g","C","B","Q","E","D","F","o","w","S","y","k","M","U","G","J","Y","N","K","H","f","L","R","p","t","q","O","l","u","x","SECRET_CIPHER_VERSION","view","byteOffset","byteLength","decodeKey","base64","decoded","sodium","from_base64","base64_variants","ORIGINAL","crypto_secretbox_KEYBYTES","createSecretCipher","ready","keyBytes","encrypt","plaintext","nonce","randombytes_buf","crypto_secretbox_NONCEBYTES","ciphertext","crypto_secretbox_easy","from_string","decrypt","envelope","crypto_secretbox_open_easy","to_string","SecretsFacade","_cipher","cipher","names","AiModule","_openai","_chat","_embeddings","_images","_models","clientOverride","chat","completions","ChatCompletionsNamespace","EmbeddingsNamespace","images","ImagesNamespace","models","ModelsNamespace","apiKey","resolveApiKey","missingKeyError","OpenAI","baseURL","resolveBaseUrl","defaultHeaders","STACKBONE_DEFAULT_HEADERS","_getClient","wrapCall","generate","messages","role","modalities","imageConfig","image_config","completion","extractImages","created","clientResult","Authorization","mapApiError","OPENROUTER_DEFAULT_BASE_URL","OPENROUTER_KEY_MISSING_MESSAGE","getClient","DATA_URL_RE","choices","rawImages","img","image_url","mimeType","b64Json","APIError","APIUserAbortError","APIConnectionTimeoutError","APIConnectionError","DEFAULT_SIGNED_URL_TTL_SECONDS","StorageModule","_s3","StorageBucket","settings","S3_CREDENTIALS_MISSING_MESSAGE","S3_BUCKET_MISSING_MESSAGE","AGENT_ID_MISSING_MESSAGE","S3Client","forcePathStyle","credentials","bucketName","resolveSettings","upload","fullKey","send","PutObjectCommand","Bucket","Key","Body","ContentType","Metadata","etag","stripEtag","ETag","toStorageError","download","GetObjectCommand","transformToByteArray","basePrefix","ListObjectsV2Command","Prefix","MaxKeys","ContinuationToken","stripPrefix","objects","Contents","itemKey","obj","Size","LastModified","lastModified","nextCursor","IsTruncated","NextContinuationToken","remove","DeleteObjectCommand","getPublicUrl","encodeS3Key","getSignedUploadUrl","signUrl","getSignedDownloadUrl","failureMessage","buildCommand","expiresIn","getSignedUrl","normalisedKey","encodeURIComponent","aws","$metadata","httpStatusCode","$fault","MemoryModule","_content","_request","search","_query","_memoryId","deleteAll","history","endSession","_sessionId","QUEUES_BASE","ERROR_MAPPING","QueuesModule","_http","publish","schedule","unschedule","listSchedules","StackboneClient","_database","_storage","_rag","_approval","_secrets","_config","_queues","_memory","_prompts","_httpClient","_contractStore","http","memory","createClient","SDK_ERROR_CODE_PREFIXES","observability","SDK_ERROR_CODES_STANDALONE","ALL_CODES","reasons","isSdkErrorCode","RESERVED_HANDLER_NAMES","KNOWN_CAPABILITY_KEYS","INVOKE_TIMEOUT_HARD_CAP_MS","defineAgent","topLevelKeys","jobKeys","notHandlers","looksLikeHandler","assertCapabilityShape","unknownKeys","RangeError","writeLine","stream","level","msg","bindings","ts","createStructuredLogger","opts","stdout","baseBindings","info","child","extra","AsyncLocalStorage","runWithInvocationContext","context","getInvocationContext","getStore","patched","WeakSet","installInvocationConsoleCapture","loggerOptions","stdoutLogger","stderrLogger","original","log","bridge","logger","ctx","format","run_id","runId","trace_id","invocationId","handler","STORED_TO_SDK_ENV","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","S3_ENDPOINT","S3_BUCKET","S3_REGION","OPENROUTER_API_KEY","OPENROUTER_BASE_URL","AXIOM_TOKEN","rehydrateSystemSecretsRows","applied","assignIfUnset","hmac","sort","SYSTEM_SECRETS_QUERY","readWithPostgresJs","end","loadSystemSecretsIntoEnv","read","reader","RESERVED_ERROR_CODES","INVOCATION_ID_HEADER","RUN_ID_HEADER","invokeRequestSchema","unknown","isReservedErrorCode","isObject","getDef","node","internal","_zod","def","walk","half","acc","fatal","construct","checks","check","checkDef","inDef","outDef","shape","option","lazyKey","visitedLazy","getter","analyzeAgentSchemas","pair","inputJson","toJSONSchema","unrepresentable","outputJson","schemas"],"mappings":"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A,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,IAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAAG,EAAA,EAA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","file":"index.cjs","sourcesContent":["/**\n * Optional overrides accepted by `createClient`. All fields are optional;\n * the resolver applies the precedence rule (`config.xxx` first, env var\n * fallback) and produces a fully typed `ResolvedConfig` so downstream\n * modules never have to know the env-var names or the order of precedence.\n */\nexport interface ClientConfig {\n /** Ed25519 JWT signed by the control plane. Falls back to `STACKBONE_AGENT_JWT`. */\n agentJwt?: string;\n /** Stackbone control plane base URL used by the facade HttpClient. Falls back to `STACKBONE_API_URL`. */\n stackboneApiUrl?: string;\n /** Stable agent identifier injected at provisioning. Falls back to `STACKBONE_AGENT_ID`. Used as the multi-tenant key prefix in `client.storage`. */\n agentId?: string;\n /**\n * Postgres connection string consumed by `client.rag` and the platform\n * observability exporter. Falls back to `STACKBONE_POSTGRES_URL` — the same\n * env var `client.database` reads, so a single connection string covers\n * every SDK consumer that talks to the agent's Postgres.\n */\n databaseUrl?: string;\n /**\n * Per-agent encryption key (base64, 32 bytes) used to decrypt the agent's\n * own application secrets read directly from `stackbone_platform.secrets`.\n * Falls back to `STACKBONE_SECRET_KEY` — the per-agent key the saga/harness\n * inject into the runtime env. This is the ONLY new env channel the\n * agent-owned-secrets split adds; the deliberate no-generic-env-channel\n * stance is preserved.\n */\n secretKey?: string;\n openrouterKey?: string;\n openrouterBaseUrl?: string;\n llamaParseApiKey?: string;\n /** mem0 API key for the long-term memory backend (`client.memory`). Falls back to `MEM0_API_KEY`. */\n mem0ApiKey?: string;\n /** mem0 API base URL. Falls back to `MEM0_BASE_URL` (defaults to mem0 cloud when unset). */\n mem0BaseUrl?: string;\n /** HMAC key the control plane uses to sign approval-decision callbacks. Falls back to `STACKBONE_APPROVAL_SIGNING_KEY`. */\n approvalSigningKey?: string;\n /**\n * Identifies the install the agent runs inside. Sent as the\n * `X-Stackbone-Installation-Id` header when the SDK talks to the control\n * plane. Falls back to `STACKBONE_INSTALLATION_ID`.\n * TODO(studio-v1): remove once `STACKBONE_AGENT_JWT` carries the install id\n * and `apps/api` derives it from the bearer instead of an explicit header.\n */\n installationId?: string;\n s3?: {\n /** Falls back to `STACKBONE_S3_ACCESS_KEY`. */\n accessKeyId?: string;\n /** Falls back to `STACKBONE_S3_SECRET_KEY`. */\n secretAccessKey?: string;\n /** Falls back to `STACKBONE_S3_ENDPOINT`. */\n endpoint?: string;\n /** Physical R2/S3 bucket scoped to the agent. Falls back to `STACKBONE_S3_BUCKET`. */\n bucket?: string;\n /** AWS region. Falls back to `STACKBONE_S3_REGION`, defaults to `'auto'` (R2/MinIO). */\n region?: string;\n };\n otel?: {\n exporterOtlpEndpoint?: string;\n resourceAttributes?: string;\n };\n /**\n * RAG-related defaults parsed from `agent.yaml.rag` by the CLI/orchestrator\n * and forwarded here. The SDK never reads `agent.yaml` itself — keeping\n * filesystem ownership in the CLI. Defaults follow ADR\n * `2026-05-10-rag-consolidation-on-client-database` (D2/D6).\n */\n rag?: {\n /**\n * Embedding model used by `client.rag.ingest`/`retrieve` when the caller\n * omits `model`. Defaults to `openai/text-embedding-3-small`.\n */\n embeddingModel?: string;\n };\n /**\n * Creator-side floor on the negotiated Stackbone Agent Protocol contract\n * version. Sourced from `agent.yaml.protocol.required` by the\n * CLI/orchestrator (the SDK never reads `agent.yaml` itself). When set and\n * the datapath's negotiated `contract.version` is below this value, every\n * gated module call returns `SdkError('contract_version_unsupported',\n * { detected, required })` — independent of per-module capability gating.\n * When omitted, the SDK uses `MIN_SUPPORTED_CONTRACT_VERSION` as the\n * implicit floor (i.e. behaviour matches slice F5).\n */\n protocolRequired?: number;\n}\n\n/**\n * Fully-resolved, typed snapshot the SDK consumes. The resolver is the **only**\n * place in the library that touches `process.env`; every downstream module\n * reads from typed fields here instead of consulting the environment itself.\n *\n * Precedence rule: `config.xxx` (passed to `createClient`) wins over\n * `process.env['XXX']`. Required env vars surface as `string | undefined` —\n * the resolver never throws when a var is missing; whether a missing value\n * is fatal is a per-surface decision (some error at construction, others\n * lazily on first use).\n *\n * Construction is a snapshot. Tests that mutated `process.env` between\n * `createClient()` and the first module access used to observe the new value\n * through the old `env` channel; they now pass overrides via `createClient`\n * or rebuild a new `ResolvedConfig` after mutating `process.env`. Snapshot\n * semantics make the SDK easier to reason about — one read, one source.\n *\n * Note: there is intentionally no `env` channel. Reading\n * `resolved.env['SOMETHING']` is a type error. Adding a new env-driven\n * setting means adding a typed field here and resolving it in\n * `resolveConfig`.\n */\nexport interface ResolvedConfig {\n /** The frozen creator-supplied options (untouched, for debug introspection). */\n readonly config: Readonly<ClientConfig>;\n\n // ----- Control plane -----\n /** Resolved from `config.stackboneApiUrl` ?? `STACKBONE_API_URL`. */\n readonly stackboneApiUrl: string | undefined;\n /** Resolved from `config.agentJwt` ?? `STACKBONE_AGENT_JWT`. */\n readonly agentJwt: string | undefined;\n /** Resolved from `config.installationId` ?? `STACKBONE_INSTALLATION_ID`. */\n readonly installationId: string | undefined;\n /** Resolved from `config.approvalSigningKey` ?? `STACKBONE_APPROVAL_SIGNING_KEY`. */\n readonly approvalSigningKey: string | undefined;\n\n // ----- Agent identity / Postgres -----\n /** Resolved from `config.agentId` ?? `STACKBONE_AGENT_ID`. */\n readonly agentId: string | undefined;\n /** Resolved from `config.databaseUrl` ?? `STACKBONE_POSTGRES_URL`. Shared by `client.database`, `client.rag`, and the platform observability hooks in `@stackbone/sdk/observability`. */\n readonly databaseUrl: string | undefined;\n /**\n * Resolved from `config.secretKey` ?? `STACKBONE_SECRET_KEY`. The per-agent\n * base64 encryption key `client.secrets` uses to decrypt rows read straight\n * out of `stackbone_platform.secrets`.\n */\n readonly secretKey: string | undefined;\n\n // ----- OpenRouter (client.ai) -----\n /** Resolved from `config.openrouterKey` ?? `OPENROUTER_API_KEY`. */\n readonly openrouterKey: string | undefined;\n /** Resolved from `config.openrouterBaseUrl` ?? `OPENROUTER_BASE_URL`. `undefined` means use the OpenRouter default. */\n readonly openrouterBaseUrl: string | undefined;\n\n // ----- S3 / R2 / MinIO (client.storage) -----\n /** Resolved from `config.s3.accessKeyId` ?? `STACKBONE_S3_ACCESS_KEY`. */\n readonly s3AccessKeyId: string | undefined;\n /** Resolved from `config.s3.secretAccessKey` ?? `STACKBONE_S3_SECRET_KEY`. */\n readonly s3SecretAccessKey: string | undefined;\n /** Resolved from `config.s3.endpoint` ?? `STACKBONE_S3_ENDPOINT`. */\n readonly s3Endpoint: string | undefined;\n /** Resolved from `config.s3.bucket` ?? `STACKBONE_S3_BUCKET`. */\n readonly s3Bucket: string | undefined;\n /** Resolved from `config.s3.region` ?? `STACKBONE_S3_REGION` ?? `'auto'`. Always defined. */\n readonly s3Region: string;\n\n // ----- OpenTelemetry -----\n /** Resolved from `config.otel.exporterOtlpEndpoint` ?? `OTEL_EXPORTER_OTLP_ENDPOINT`. */\n readonly otelExporterOtlpEndpoint: string | undefined;\n\n // ----- Contract handshake / runtime knobs -----\n /**\n * `true` unless `STACKBONE_REQUIRE_CONTRACT=0` is set. Consulted by the\n * contract gate to decide whether a `capability_unavailable` /\n * `contract_version_unsupported` error becomes a hard failure or a logged\n * warning (escape-hatch path).\n */\n readonly requireContract: boolean;\n /**\n * Parsed `STACKBONE_CONTRACT_TTL_MS`. `undefined` (default) means cached\n * handshakes never expire within the process lifetime; a positive integer\n * caps the cache entry's `expiresAt`.\n */\n readonly contractTtlMs: number | undefined;\n /**\n * `true` only when `STACKBONE_DEBUG=1` is set. Consulted by the handshake\n * to emit a one-shot debug line per (store, baseUrl) tuple after a\n * successful negotiation.\n */\n readonly debug: boolean;\n\n // ----- RAG defaults -----\n /**\n * Embedding model parsed by the CLI from `agent.yaml.rag.embeddingModel`\n * and forwarded as `config.rag.embeddingModel`. Same value, surfaced\n * directly so consumers don't reach through the nested object.\n */\n readonly ragEmbeddingModel: string | undefined;\n\n // ----- Protocol negotiation -----\n /**\n * Forwarded from `config.protocolRequired`. The CLI sources it from\n * `agent.yaml.protocol.required`; there is no env-var fallback today.\n */\n readonly protocolRequired: number | undefined;\n}\n\n/**\n * Single seam in the SDK for reading `process.env`. Every downstream module\n * accepts a `ResolvedConfig` and reads typed fields off it — they MUST NOT\n * touch `process.env` directly. Adding a new env-driven setting means\n * extending `ResolvedConfig` and resolving it here.\n *\n * The result is a snapshot, not a live view: mutating `process.env` after\n * this returns will not change the resolved values. Callers that need to\n * pick up env-var rotation must build a new `ResolvedConfig` (most easily\n * by constructing a new `StackboneClient`).\n */\nexport function resolveConfig(config: ClientConfig): ResolvedConfig {\n const env = process.env;\n return Object.freeze({\n config: Object.freeze({ ...config }),\n\n // Control plane.\n stackboneApiUrl: config.stackboneApiUrl ?? env['STACKBONE_API_URL'],\n agentJwt: config.agentJwt ?? env['STACKBONE_AGENT_JWT'],\n installationId: config.installationId ?? env['STACKBONE_INSTALLATION_ID'],\n approvalSigningKey: config.approvalSigningKey ?? env['STACKBONE_APPROVAL_SIGNING_KEY'],\n\n // Agent identity / Postgres.\n agentId: config.agentId ?? env['STACKBONE_AGENT_ID'],\n databaseUrl: config.databaseUrl ?? env['STACKBONE_POSTGRES_URL'],\n secretKey: config.secretKey ?? env['STACKBONE_SECRET_KEY'],\n\n // OpenRouter.\n openrouterKey: config.openrouterKey ?? env['OPENROUTER_API_KEY'],\n openrouterBaseUrl: config.openrouterBaseUrl ?? env['OPENROUTER_BASE_URL'],\n\n // S3 / R2 / MinIO.\n s3AccessKeyId: config.s3?.accessKeyId ?? env['STACKBONE_S3_ACCESS_KEY'],\n s3SecretAccessKey: config.s3?.secretAccessKey ?? env['STACKBONE_S3_SECRET_KEY'],\n s3Endpoint: config.s3?.endpoint ?? env['STACKBONE_S3_ENDPOINT'],\n s3Bucket: config.s3?.bucket ?? env['STACKBONE_S3_BUCKET'],\n s3Region: config.s3?.region ?? env['STACKBONE_S3_REGION'] ?? 'auto',\n\n // OpenTelemetry.\n otelExporterOtlpEndpoint:\n config.otel?.exporterOtlpEndpoint ?? env['OTEL_EXPORTER_OTLP_ENDPOINT'],\n\n // Contract handshake / runtime knobs (env-only today).\n requireContract: env['STACKBONE_REQUIRE_CONTRACT'] !== '0',\n contractTtlMs: parseTtlMs(env['STACKBONE_CONTRACT_TTL_MS']),\n debug: env['STACKBONE_DEBUG'] === '1',\n\n // RAG defaults.\n ragEmbeddingModel: config.rag?.embeddingModel,\n\n // Protocol negotiation.\n protocolRequired: config.protocolRequired,\n });\n}\n\n/**\n * Parses `STACKBONE_CONTRACT_TTL_MS` once at resolve time. Anything missing,\n * empty, non-numeric or non-positive collapses to `undefined` (the\n * \"cache forever within the process\" default consumers expect).\n */\nfunction parseTtlMs(raw: string | undefined): number | undefined {\n if (raw === undefined || raw === '') return undefined;\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n <= 0) return undefined;\n return n;\n}\n","// Centralizes the orval workaround for \"open JSON object\" fields.\n//\n// Why `z.looseObject({})` instead of `z.unknown()` / `z.record(z.unknown())`:\n// nestjs-zod emits OpenAPI 3.1 fragments for those schemas, including a\n// `propertyNames` clause that orval (our frontend client generator) currently\n// rejects. `z.looseObject({})` round-trips through nestjs-zod as a flat\n// open object in the emitted spec, which orval consumes cleanly while\n// preserving the \"any JSON object\" runtime contract.\n//\n// TODO: once orval supports OpenAPI 3.1 (incl. `propertyNames`), migrate\n// every call site of `jsonObject()` to `z.unknown()` / `z.record(z.unknown())`\n// and delete this helper. Until then, this is the single source of truth —\n// do not inline `z.looseObject({})` at call sites.\nimport { z } from 'zod';\n\nexport const jsonObject = () => z.looseObject({});\n","import { z } from 'zod';\n\n// --- Stackbone Agent Protocol (Studio handshake) --------------------------------\n// Normative spec: docs/arquitectura/specs/stackbone-agent-protocol-v1.md.\n// Both the Hono emulator (libs/runtime/agent-emulator/) and apps/api expose\n// `GET /api/contract` returning this exact shape so the Studio UI can detect\n// version drift between the backend it is talking to and its own minimum\n// supported version. Bumps are documented in\n// docs/arquitectura/specs/stackbone-agent-protocol-changelog.md.\n\n/**\n * Monotonically increasing integer that identifies the wire-level revision of\n * the Stackbone Agent Protocol the backend (cloud `apps/api` or local\n * emulator) currently speaks. Append-only history (the only source of truth —\n * the markdown changelog mirrors this list manually):\n *\n * - v1 (initial): handshake shape frozen, `capabilities` reserved but empty.\n * - v9 (RAG consolidation, ADR 2026-05-10): client.database hosts the RAG\n * pipeline; older agents are pinned out of the RAG explorer via\n * `MIN_SUPPORTED_RAG_EXPLORER_CONTRACT_VERSION`.\n * - v10 (#23): `capabilities` becomes a populated, gated set. The\n * SDK now refuses module calls when their required capability is missing\n * from the handshake. No older datapaths are dropped (`MIN_SUPPORTED`\n * stays at 1) — the gating is purely additive on `capabilities`.\n * - v11 (agent-jobs-dispatcher-bullmq, ADR 2026-05-30): the agent job system\n * moves to BullMQ. The `queues` module's required capability is renamed\n * `queues.pgmq` -> `queues.jobs`. Renaming a capability string is a breaking\n * change (the SDK, Studio and emulator hardcode the old name), so it bumps\n * the version even though `MIN_SUPPORTED` stays at 1 (no older endpoint is\n * deleted — the rename is mechanical and lockstep).\n * - v12 (drop the never-shipped `events` surface): the `client.events` /\n * `client.connections` SDK stubs are removed and the `events.bus` capability\n * is deleted from the allowlist. Removing a capability string is a breaking\n * change per the membership rule below, so it bumps the version even though\n * `MIN_SUPPORTED` stays at 1 (the surface was always a `not_implemented`\n * stub — no live datapath is dropped).\n *\n * Bumping this constant is a breaking simultaneous change: the SDK and Studio\n * upgrade in lockstep. There is no per-request negotiation.\n */\nexport const STACKBONE_CONTRACT_VERSION = 12 as const;\n\n/**\n * Floor of the protocol version range the SDK and Studio still execute\n * against. Bumped only when we deliberately want to break older datapaths;\n * additive changes (new capabilities, new endpoints) MUST NOT raise this.\n *\n * Today (v10) the floor stays at v1 because v10 is purely additive: it gates\n * new behaviour on `capabilities` membership without dropping any older wire\n * format. The first time we delete or rename an existing endpoint we raise\n * this together with `STACKBONE_CONTRACT_VERSION` in the same release.\n */\nexport const MIN_SUPPORTED_CONTRACT_VERSION = 1 as const;\n\n// RAG-explorer-specific gate. ADR `2026-05-10-rag-consolidation-on-client-database`\n// §D7: Studio hides the RAG explorer (and refuses to fetch `/api/rag/*`)\n// when the negotiated `contract.version` is below this number. The agent\n// shell (`MIN_SUPPORTED_CONTRACT_VERSION`) stays at the lower floor so the\n// rest of Studio keeps working against older agents.\nexport const MIN_SUPPORTED_RAG_EXPLORER_CONTRACT_VERSION = 9 as const;\n\n/**\n * Full set of dot-namespaced capability identifiers the Stackbone Agent\n * Protocol recognises. The array doubles as the runtime allowlist for the\n * `Capability` enum used by `contractResponseSchema` and as the source of\n * truth for `MODULE_CAPABILITIES` below.\n *\n * Membership is intentionally additive — adding an entry does NOT bump\n * `STACKBONE_CONTRACT_VERSION` (per spec §3.2), but removing or renaming\n * one is a breaking change and DOES.\n */\nexport const CAPABILITIES = [\n 'database.postgres_direct',\n 'database.drizzle',\n 'rag.basic',\n 'rag.async_ingest',\n // `queues.jobs`: the BullMQ-backed agent job system (ADR 2026-05-30).\n // Renamed from the previous `queues.pgmq`; the rename bumps\n // STACKBONE_CONTRACT_VERSION to 11.\n 'queues.jobs',\n 'secrets.read_write',\n 'config.read_write',\n 'approval.fire_and_forget',\n 'storage.s3',\n 'ai.openrouter',\n // `prompts.basic`: the versioned prompt catalog + Mustache-subset compile\n // (feature sdk_prompts_versioned_catalog). Additive — adding this entry does\n // NOT bump STACKBONE_CONTRACT_VERSION per the membership rule above.\n 'prompts.basic',\n] as const satisfies readonly string[];\n\n/**\n * Compile-time alias: any capability identifier the wire schema accepts.\n * Consumers (SDK modules, Studio guards) MUST type capability arguments as\n * `Capability` so the compiler refuses unknown literals; the runtime check\n * lives in `contractResponseSchema` via `z.enum(CAPABILITIES)`.\n */\nexport type Capability = (typeof CAPABILITIES)[number];\n\n/**\n * Maps every SDK module identifier (`client.<module>`) to the single\n * `Capability` its surface depends on for the MVP. The SDK's gating layer\n * looks up the required capability here — adding a module means adding a\n * row, and changing a module's required capability (e.g. `database` moving\n * from `postgres_direct` to `drizzle` once #29 lands) is the only reason to\n * edit this map.\n */\nexport const MODULE_CAPABILITIES = {\n database: 'database.postgres_direct',\n rag: 'rag.basic',\n queues: 'queues.jobs',\n secrets: 'secrets.read_write',\n config: 'config.read_write',\n approval: 'approval.fire_and_forget',\n storage: 'storage.s3',\n ai: 'ai.openrouter',\n // `client.prompts` is an AGENT-LOCAL surface (reads the agent DB directly,\n // like secrets/config), so the SDK does NOT build a ModuleGate for it. The\n // row is still declared here because the table is shared with the cloud\n // contract / Studio capability advertisement.\n prompts: 'prompts.basic',\n} as const satisfies Record<string, Capability>;\n\n// Identifies which backend served the handshake. Both values are surfaced in\n// the response body so support can diagnose drift between local and cloud\n// without an extra hop.\nexport const contractBuildNameSchema = z.enum(['stackbone-cli', 'stackbone-api']);\nexport type ContractBuildName = z.infer<typeof contractBuildNameSchema>;\n\nexport const contractResponseSchema = z.object({\n version: z.number().int().min(1),\n minSupported: z.number().int().min(1),\n // `z.enum(CAPABILITIES)` rejects any string outside the union at runtime,\n // mirroring the compile-time guarantee of the `Capability` type.\n capabilities: z.array(z.enum(CAPABILITIES)),\n build: z.object({\n name: contractBuildNameSchema,\n version: z.string().min(1),\n }),\n // Public base URL where THIS install's agent runtime is actually reachable —\n // the active `stackbone dev` tunnel for local installs, the deterministic Fly\n // app URL for cloud installs. Host only, no path: callers append `/invoke`,\n // `/health`, `/schema`. Lets the Studio contract viewer surface every\n // handler's real URL instead of the control-plane proxy.\n //\n // Optional + nullable on purpose: only the PER-INSTALL handshake\n // (`/v1/.../installations/:id/contract`) populates it, because only it has an\n // install in scope. The global `/api/contract` and older/local emulators omit\n // it; `null` means \"no reachable runtime\" (e.g. a local dev session that is\n // currently offline).\n runtimeUrl: z.url().nullable().optional(),\n});\nexport type ContractResponse = z.infer<typeof contractResponseSchema>;\n\n/**\n * Error envelope returned by the contract gating helpers below. Structurally\n * compatible with `SdkError` from `@stackbone/sdk` (`{ code, message, meta? }`)\n * — kept local because `libs/shared/validators` is a leaf package and must not\n * depend on the SDK. The SDK widens these errors back into `SdkError` when\n * propagating them to user code.\n */\nexport interface ContractCheckError {\n code: 'contract_version_unsupported' | 'capability_unavailable';\n message: string;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result mirroring the `{ data, error }` envelope every other\n * SDK method returns. Narrowing on `error` refines `data` to the success\n * payload (here: `void`).\n */\nexport type ContractCheckResult =\n | { data: undefined; error: null }\n | { data: null; error: ContractCheckError };\n\n/**\n * Validates that the negotiated `contract.version` is at or above the\n * version the SDK still executes against. Pure, table-driven, never throws.\n *\n * Used by Studio's boot-time guard (`/api/contract` → if drift, render the\n * upgrade banner instead of the protected screen) and by every gated SDK\n * module before it dispatches its first call.\n */\nexport function requireVersion(contract: ContractResponse): ContractCheckResult {\n if (contract.version < MIN_SUPPORTED_CONTRACT_VERSION) {\n return {\n data: null,\n error: {\n code: 'contract_version_unsupported',\n message: `Stackbone Agent Protocol version ${contract.version} is below the minimum supported (${MIN_SUPPORTED_CONTRACT_VERSION}). Upgrade the CLI or the control plane.`,\n meta: {\n detected: contract.version,\n required: MIN_SUPPORTED_CONTRACT_VERSION,\n },\n },\n };\n }\n return { data: undefined, error: null };\n}\n\n/**\n * Validates that the negotiated contract both (a) meets the version floor\n * and (b) advertises the requested capability. Returns\n * `contract_version_unsupported` first if the version check fails so the SDK\n * never falls through to a misleading \"capability missing\" message when the\n * actual problem is a stale datapath. Pure, never throws.\n */\nexport function requireCapability(\n capability: Capability,\n contract: ContractResponse,\n): ContractCheckResult {\n const versionCheck = requireVersion(contract);\n if (versionCheck.error) {\n return versionCheck;\n }\n if (!contract.capabilities.includes(capability)) {\n return {\n data: null,\n error: {\n code: 'capability_unavailable',\n message: `Capability \"${capability}\" is not advertised by the negotiated Stackbone Agent Protocol contract.`,\n meta: {\n capability,\n available: contract.capabilities,\n },\n },\n };\n }\n return { data: undefined, error: null };\n}\n","import { z } from 'zod';\nimport { jsonObject } from '../common/json-object';\n\n// Studio Queues Inspector after the BullMQ migration (ADR 2026-05-30). The\n// agent job system runs on a single engine — BullMQ over the core's Redis —\n// in all three environments (cloud, self-host, emulator). The inspector\n// therefore COMBINES two sources behind one wire shape:\n//\n// - BullMQ (Redis in the core): the operational truth for in-flight state\n// (`pending` / `active` / `delayed`) and for *dispatch* failures\n// (`failed`) — jobs that never reached the agent (the Machine didn't wake,\n// timeout, network down). These rows carry `source: 'bullmq'`.\n// - The agent's reduced `_queue_jobs` journal: an append-only record of the\n// executions that actually ran inside the agent (`done` / `failed`),\n// written by the runtime wrapper around each job. These rows carry\n// `source: 'journal'` and are read on demand (so the panel does not wake\n// the agent's database on every open).\n//\n// `queueKindSchema` (`pgmq` / `qstash`) is GONE: there is no longer a per-queue\n// backend choice to surface. Where a row came from is the per-row `source`\n// discriminator, and `dispatch_id` correlates a journal execution back to its\n// BullMQ job. The wire shape stays identical across the three environments;\n// only injected configuration (Redis URL, agent URL, HMAC key) differs.\n\n// BullMQ queue name accepted on the wire. Unlike pgmq (whose queue name became\n// a Postgres table suffix `pgmq.q_<name>`, so it had to satisfy unquoted\n// Postgres identifier rules), a BullMQ queue is a plain Redis-keyed name that\n// allows hyphens and dots (e.g. `send-email`, `agent.notifications`). We still\n// bound the shape (non-empty, length-capped, no whitespace or `:` so it cannot\n// collide with BullMQ's own key separator) so the inspector path stays clean.\nconst QUEUE_NAME_REGEX = /^[A-Za-z0-9_.-]+$/;\nexport const queueNameSchema = z\n .string()\n .min(1)\n .max(128)\n .regex(QUEUE_NAME_REGEX, 'queue name must be a BullMQ queue identifier ([A-Za-z0-9_.-])');\nexport type QueueName = z.infer<typeof queueNameSchema>;\n\n// Where an inspector row was read from. Lets the Studio UI mark in-flight /\n// dispatch-failure rows (BullMQ) apart from real execution rows (the agent\n// journal) without changing the resource hooks.\nexport const jobSourceSchema = z.enum(['bullmq', 'journal']);\nexport type JobSource = z.infer<typeof jobSourceSchema>;\n\n// Combined job status the UI can render:\n// pending — BullMQ: waiting to be dispatched (immediate, queued).\n// active — BullMQ: a worker is dispatching it to the agent's `/invoke`.\n// delayed — BullMQ: scheduled for a future time (`publish({ delay })` or a\n// cron scheduler's next run) or backing off between retries.\n// running — journal: the handler is executing inside the agent right now —\n// the wrapper wrote the started row (`started_at` set) but has not\n// yet recorded a terminal outcome (DB `status` is NULL). Distinct\n// from BullMQ `active` (the dispatcher pushing the invoke); this is\n// the in-agent execution leg.\n// failed — exhausted retries — either a dispatch failure (BullMQ row) or an\n// application error the agent returned (also recorded in the\n// journal). Shown in Studio with a manual retry.\n// done — journal only: the job ran to completion inside the agent.\n// The old pgmq buckets (`in_flight`, `archived`) are gone: BullMQ exposes the\n// real lifecycle states and the journal carries the execution leg.\n//\n// status is NOT orthogonal to `source`: each source owns its own subset (the\n// two enums below). `jobStatusSchema` is the *union* of both subsets, used only\n// where the source is not yet known — the query `status` filter and the\n// retry/discard action response. The per-row `jobSchema` discriminates on\n// `source` so an illegal pairing (`{ source:'journal', status:'pending' }` or\n// `{ source:'bullmq', status:'done' }`) is unrepresentable.\n\n// BullMQ never reports a completed job (`publish` drops it on success); the\n// live lifecycle plus the dispatch-failure bucket is all the inspector reads.\nexport const bullmqJobStatusSchema = z.enum(['pending', 'active', 'delayed', 'failed']);\nexport type BullmqJobStatus = z.infer<typeof bullmqJobStatusSchema>;\n\n// The journal's persisted state is a TRI-state, not a binary one. The DB column\n// `_queue_jobs.status` is `done` / `failed` (terminal) OR NULL while the job is\n// in-flight (`recordStarted` ran, `recordFinished` has not). Modelling it as\n// just `done|failed` forced the readers to coerce NULL → `failed`, mislabelling\n// a legitimately in-flight execution as a failure. So the journal status is\n// split into two schemas with different jobs:\n//\n// - `journalTerminalStatusSchema` (`done`|`failed`) — the *terminal* subset.\n// It is what the wrapper writes (`recordFinished` only ever records a\n// terminal outcome), what the query `status` filter can select (a SQL\n// `WHERE status = $1` can never match the NULL in-flight rows, so exposing\n// `running` as a filter would always return empty), and what the\n// source-agnostic action response carries.\n// - `journalJobStatusSchema` (`done`|`failed`|`running`) — the *row* subset a\n// read can carry. The reader maps the DB NULL to `running` so an in-flight\n// journal row surfaces honestly instead of as a phantom `failed`.\nexport const journalTerminalStatusSchema = z.enum(['done', 'failed']);\nexport type JournalTerminalStatus = z.infer<typeof journalTerminalStatusSchema>;\n\nexport const journalJobStatusSchema = z.enum([...journalTerminalStatusSchema.options, 'running']);\nexport type JournalJobStatus = z.infer<typeof journalJobStatusSchema>;\n\n// Union of every status either source can carry on a ROW. Kept for the\n// source-agnostic per-row surfaces; the discriminated `jobSchema` ties each\n// status to its source instead of using this flat enum.\nexport const jobStatusSchema = z.enum([\n ...bullmqJobStatusSchema.options,\n ...journalJobStatusSchema.options,\n]);\nexport type JobStatus = z.infer<typeof jobStatusSchema>;\n\n// The status values the query `status` filter accepts. NOT the row union: the\n// journal `running` state lives only as a NULL in the DB, so a `WHERE status =\n// 'running'` filter could never match a row. Filtering is therefore restricted\n// to the terminal + BullMQ-live states; `running` rows arrive only on an\n// unfiltered page.\nexport const jobStatusFilterSchema = z.enum([\n ...bullmqJobStatusSchema.options,\n ...journalTerminalStatusSchema.options,\n]);\nexport type JobStatusFilter = z.infer<typeof jobStatusFilterSchema>;\n\nexport const queueSummarySchema = z\n .object({\n name: z.string(),\n // `is_dlq: true` flags queues whose name follows the `*-dlq` / `*_dlq`\n // convention. Studio renders them under a \"Dead-letter\" subgroup; the\n // server-side actions (retry/discard) are unchanged.\n is_dlq: z.boolean(),\n // BullMQ live counts. `failed` is the dispatch-failure / exhausted-retry\n // bucket the inspector surfaces for manual retry. Completed jobs are not\n // counted here — their record lives in the agent journal.\n pending: z.number().int().nonnegative(),\n active: z.number().int().nonnegative(),\n delayed: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n })\n .strict();\nexport type QueueSummary = z.infer<typeof queueSummarySchema>;\n\nexport const queueListResponseSchema = z.object({\n items: z.array(queueSummarySchema),\n});\nexport type QueueListResponse = z.infer<typeof queueListResponseSchema>;\n\n// Per-job row. `id` is the BullMQ job id for `source: 'bullmq'` rows and the\n// journal row id for `source: 'journal'` rows — opaque strings either way (no\n// longer a pgmq numeric `msg_id`). Composite job-action URLs\n// (POST /api/jobs/:queue/:jobId/...) carry the queue separately so the row id\n// stays clean.\n//\n// A job row is a `z.discriminatedUnion` on `source`, NOT a flat object. The two\n// sources have genuinely different shapes — different status subsets and\n// different timestamp guarantees — and a plain object would let illegal states\n// (a `done` BullMQ row, a `pending` journal row, a journal execution with no\n// `started_at`) validate by accident. The union pushes those invariants into\n// the type so they are impossible at compile-time and rejected at runtime, and\n// lets the service mappers drop their `as JobStatus` casts.\n\n// Fields shared by both sources. `enqueued_at` is the sort key the merged page\n// orders on; for journal rows it is the execution start (the journal has no\n// separate enqueue column).\nconst jobCommonFields = {\n id: z.string(),\n queue: z.string(),\n // Opaque job name the agent chose at publish time (e.g. `send-email`).\n // Null for legacy/anonymous rows that predate named jobs.\n name: z.string().nullable(),\n // BullMQ `attemptsMade` for in-flight rows; the journal's recorded attempt\n // count for execution rows.\n attempts: z.number().int().nonnegative(),\n enqueued_at: z.iso.datetime(),\n // Failure reason: the BullMQ `failedReason` (dispatch failure) or the\n // application error the agent returned (also persisted in the journal).\n error: z.string().nullable(),\n // Correlation key between a BullMQ job and its journal execution row.\n // BullMQ rows carry their own id here; journal rows carry the originating\n // BullMQ job id. Null when uncorrelated.\n dispatch_id: z.string().nullable(),\n payload: jsonObject(),\n} as const;\n\n// BullMQ-source row: a live in-flight job or a dispatch failure. It carries no\n// completed status (`publish` drops successes) and no execution window — BullMQ\n// tracks dispatch, not what ran inside the agent, so `started_at`/`finished_at`\n// are nullable (a dispatch failure never reached the agent).\nexport const bullmqJobSchema = z\n .object({\n ...jobCommonFields,\n source: z.literal('bullmq'),\n status: bullmqJobStatusSchema,\n // When the job is next expected to run: BullMQ `delay`/next-retry timestamp\n // for `delayed`/`pending` rows, null when it runs immediately.\n next_run_at: z.iso.datetime().nullable(),\n // BullMQ does not own an execution window; null until/unless the journal\n // correlates one. A dispatch failure has neither.\n started_at: z.iso.datetime().nullable(),\n finished_at: z.iso.datetime().nullable(),\n })\n .strict();\nexport type BullmqJob = z.infer<typeof bullmqJobSchema>;\n\n// Journal-source row: an execution that ran inside the agent. Its status is\n// `done`|`failed` once terminal, or `running` while in-flight (the wrapper\n// wrote the started row but has not recorded the outcome yet — DB `status` is\n// NULL). It ALWAYS has a `started_at` (the moment the execution began) and\n// never carries a live `next_run_at` (the journal has no scheduling state).\n// `finished_at` is null for a `running` row and set once the wrapper closes it.\nexport const journalJobSchema = z\n .object({\n ...jobCommonFields,\n source: z.literal('journal'),\n status: journalJobStatusSchema,\n // A journal row has no live scheduling state, so `next_run_at` is always\n // null. Modelled as a nullable date-time pinned to null (rather than a bare\n // `z.null()`) so it emits the `anyOf:[date-time, null]` shape the OpenAPI\n // 3.0 downgrader already collapses to `nullable: true` — a standalone\n // `{ type: 'null' }` is not valid OpenAPI 3.0 and orval rejects it.\n next_run_at: z.iso\n .datetime()\n .nullable()\n .refine((value) => value === null, {\n message: 'a journal row never carries a live next_run_at',\n }),\n started_at: z.iso.datetime(),\n finished_at: z.iso.datetime().nullable(),\n })\n .strict();\nexport type JournalJob = z.infer<typeof journalJobSchema>;\n\nexport const jobSchema = z.discriminatedUnion('source', [bullmqJobSchema, journalJobSchema]);\nexport type Job = z.infer<typeof jobSchema>;\n\n// `queue` is mandatory: a BullMQ queue scopes its jobs, so we cannot list \"all\n// jobs\" without picking one. The Studio sidebar always has a queue selected\n// before the table renders.\nexport const listJobsQuerySchema = z.object({\n queue: queueNameSchema,\n // Filter by the BullMQ-live or journal-terminal states only. The journal\n // `running` row exists in the DB as a NULL status, so a `WHERE status =\n // 'running'` filter could never match it — it is reachable only on an\n // unfiltered page, never as a filter value.\n status: jobStatusFilterSchema.optional(),\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(200).default(50),\n});\nexport type ListJobsQuery = z.infer<typeof listJobsQuerySchema>;\n\nexport const jobListResponseSchema = z.object({\n items: z.array(jobSchema),\n next_cursor: z.string().nullable(),\n});\nexport type JobListResponse = z.infer<typeof jobListResponseSchema>;\n\n// Job-action URLs share the same `(queue, jobId)` shape so the controller can\n// route both `retry` (re-enqueue a failed job) and `discard` (drop it) through\n// the same params DTO. The path segment is named `jobId` (not `id`) because the\n// surrounding install path already binds `:id` to the installation UUID.\n// BullMQ job ids are opaque strings, so this is a non-empty string — not the\n// numeric-only regex pgmq required.\nexport const jobActionParamsSchema = z.object({\n queue: queueNameSchema,\n jobId: z.string().min(1, 'job id must be a non-empty BullMQ job id'),\n});\nexport type JobActionParams = z.infer<typeof jobActionParamsSchema>;\n\nexport const jobActionResponseSchema = z.object({\n // Echoes the job id the action operated on. Retry re-enqueues the same job;\n // discard only drops it.\n id: z.string(),\n queue: z.string(),\n status: jobStatusSchema,\n});\nexport type JobActionResponse = z.infer<typeof jobActionResponseSchema>;\n","import { z } from 'zod';\nimport { jsonObject } from '../common/json-object';\nimport { queueNameSchema } from '../studio/studio-queues';\n\n// Agent → control plane job-enqueue contract (ADR 2026-05-30). The agent never\n// touches Redis: it calls `client.queues.publish(...)` / `schedule(...)`, which\n// POST an authenticated request to the core. The core's BullMQ dispatcher\n// (libs/runtime/job-dispatcher) owns the queue + the clock; these schemas describe the\n// wire shape of those POST bodies and their responses.\n//\n// `payload` is opaque on purpose — the \"end user\" lives inside it; the core\n// never has to understand the agent's domain (PRD user story 5).\n\n// Platform default for automatic retries with backoff. A job may override it\n// with `retries` (PRD user story 8); the dispatcher clamps to a sane ceiling.\nexport const DEFAULT_JOB_ATTEMPTS = 3;\nexport const MAX_JOB_ATTEMPTS = 20;\n\n// Shared bits every enqueue shares: the opaque job `name` (e.g. `send-email`),\n// the opaque `payload`, and an optional `retries` override.\nconst baseJobFields = {\n // The job name the agent chose. Surfaced in the Studio inspector and used as\n // the BullMQ job name. Same character class as a queue name so it stays a\n // clean Redis-keyed identifier.\n name: queueNameSchema,\n payload: jsonObject(),\n // Per-job override of the platform retry default. Omitted → DEFAULT_JOB_ATTEMPTS.\n retries: z.number().int().min(0).max(MAX_JOB_ATTEMPTS).optional(),\n};\n\n// POST .../queues/publish — fire-and-forget or deferred (`delay` ms) job.\nexport const publishJobRequestSchema = z\n .object({\n ...baseJobFields,\n // Deferred delivery in milliseconds. Omitted / 0 → immediate.\n delay: z.number().int().min(0).optional(),\n // Optional idempotency hint. When set the dispatcher uses it as the BullMQ\n // job id so a duplicate publish with the same key collapses to one job.\n deduplicationId: z.string().min(1).max(255).optional(),\n })\n .strict();\nexport type PublishJobRequest = z.infer<typeof publishJobRequestSchema>;\n\nexport const publishJobResponseSchema = z\n .object({\n // The BullMQ job id the dispatcher minted (or the dedupe id when supplied).\n messageId: z.string(),\n })\n .strict();\nexport type PublishJobResponse = z.infer<typeof publishJobResponseSchema>;\n\n// Cron expression accepted on the wire. Kept permissive (non-empty, length\n// capped) — BullMQ validates the actual pattern when it registers the\n// scheduler, and an invalid pattern surfaces as a 400 from the endpoint.\nexport const cronExpressionSchema = z.string().min(1).max(120);\n\n// POST .../queues/schedule — register / update a dynamic per-user cron job\n// (PRD user stories 3/4). `name` is unique per installation: re-scheduling with\n// the same name updates the schedule in place (no duplicates).\nexport const scheduleJobRequestSchema = z\n .object({\n ...baseJobFields,\n cron: cronExpressionSchema,\n // IANA timezone the cron pattern is evaluated in. Defaults to UTC.\n tz: z.string().min(1).max(64).optional(),\n })\n .strict();\nexport type ScheduleJobRequest = z.infer<typeof scheduleJobRequestSchema>;\n\nexport const scheduleJobResponseSchema = z\n .object({\n // The scheduler id (unique per installation) the dispatcher upserted.\n scheduleId: z.string(),\n name: z.string(),\n cron: z.string(),\n tz: z.string(),\n })\n .strict();\nexport type ScheduleJobResponse = z.infer<typeof scheduleJobResponseSchema>;\n\n// POST .../queues/unschedule — cancel a previously registered schedule by name.\nexport const unscheduleJobRequestSchema = z\n .object({\n name: queueNameSchema,\n })\n .strict();\nexport type UnscheduleJobRequest = z.infer<typeof unscheduleJobRequestSchema>;\n\nexport const unscheduleJobResponseSchema = z\n .object({\n name: z.string(),\n // True when a schedule with that name existed and was removed; false when\n // nothing matched (the call stays idempotent either way).\n removed: z.boolean(),\n })\n .strict();\nexport type UnscheduleJobResponse = z.infer<typeof unscheduleJobResponseSchema>;\n\n// GET .../queues/schedules — list the installation's active cron schedules.\nexport const scheduleSummarySchema = z\n .object({\n scheduleId: z.string(),\n name: z.string(),\n cron: z.string(),\n tz: z.string(),\n // Next planned fire time (ISO), null when BullMQ has not computed one yet.\n next_run_at: z.iso.datetime().nullable(),\n })\n .strict();\nexport type ScheduleSummary = z.infer<typeof scheduleSummarySchema>;\n\nexport const listSchedulesResponseSchema = z\n .object({\n items: z.array(scheduleSummarySchema),\n })\n .strict();\nexport type ListSchedulesResponse = z.infer<typeof listSchedulesResponseSchema>;\n","import { type SdkErrorCode } from './errors/codes';\n\n/**\n * Uniform error envelope returned by every SDK method. `cause` and `meta` are\n * optional escape hatches so wrappers can attach upstream errors / context\n * without breaking the public shape.\n *\n * `code` is typed against the catalog declared in `errors/codes.ts` — the\n * compiler refuses any literal that isn't part of the documented inventory.\n * Adding a new code is a single-file edit there; ALL throw sites then update\n * automatically through the union.\n */\nexport interface SdkError {\n code: SdkErrorCode;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result the entire SDK returns. Narrowing on `result.error`\n * automatically refines `result.data` to `T`.\n */\nexport type Result<T> = { data: T; error: null } | { data: null; error: SdkError };\n\nexport function ok<T>(data: T): Result<T> {\n return { data, error: null };\n}\n\nexport function err<T = never>(error: SdkError): Result<T> {\n return { data: null, error };\n}\n\nexport function notImplemented<T = never>(scope: string): Result<T> {\n return {\n data: null,\n error: {\n code: 'not_implemented',\n message: `${scope} is not implemented yet`,\n },\n };\n}\n\nexport type { SdkErrorCode } from './errors/codes';\n","import { type ContractResponse, contractResponseSchema } from '@stackbone/validators';\n\nimport { type ResolvedConfig, resolveConfig } from '../config';\nimport { err, ok, type Result } from '../result';\n\n/**\n * Optional injection seam for tests. Production callers rely on the global\n * `fetch` implementation; specs hand in a `vi.fn()` so we can assert\n * single-flight, cache hits and error mapping without real HTTP.\n */\nexport interface ContractHandshakeOptions {\n fetch?: typeof fetch;\n /** Test-only clock override consulted by the TTL eviction path. */\n now?: () => number;\n}\n\n/**\n * Per-client handshake store. Each `StackboneClient` owns one instance and\n * passes it (via `createModuleGate`) to every surface that gates, so two\n * clients constructed in the same process do NOT share cache state.\n *\n * Shape stays narrow on purpose: surfaces only need `get()`; the synchronous\n * `peek()` is consumed by `client.contract`; `gatingEnabled()` is the\n * `STACKBONE_REQUIRE_CONTRACT` escape-hatch read consulted by the gate.\n *\n * Cache, single-flight, TTL eviction and debug-log bookkeeping all live on\n * the instance — no module-level Maps, no `__resetForTests` helpers — so\n * specs start clean simply by constructing a fresh store.\n */\nexport interface ContractStore {\n /**\n * Resolves the contract for `baseUrl`. Single-flight per normalised baseUrl;\n * caches the resolved Result (including errors) until the TTL (if set)\n * elapses.\n */\n get(\n baseUrl: string | undefined,\n options?: ContractHandshakeOptions,\n ): Promise<Result<ContractResponse>>;\n\n /**\n * Synchronous read-only accessor consulted by `client.contract`. Returns\n * the most recently resolved successful `ContractResponse` for the given\n * baseUrl, or `null` if no successful handshake has resolved yet.\n */\n peek(baseUrl: string | undefined): ContractResponse | null;\n\n /**\n * Mirrors `resolved.requireContract` — `false` only when the creator opted\n * out (i.e. `STACKBONE_REQUIRE_CONTRACT=0` at resolve time). Kept on the\n * store so the module-gate consults a single seam instead of reaching back\n * into the resolver.\n */\n gatingEnabled(): boolean;\n}\n\ninterface CacheEntry {\n /**\n * Single-flight: the in-flight Promise is what gets cached, so two\n * concurrent first-callers share one fetch.\n */\n promise: Promise<Result<ContractResponse>>;\n /** Wall-clock millis at which the entry should be evicted. `Infinity` when no TTL is configured. */\n expiresAt: number;\n}\n\nconst CONTRACT_PATH = '/api/contract';\n\n/**\n * Builds a fresh `ContractStore`. The factory is the SDK-internal contract\n * — `createClient()` instantiates one per client (passing its\n * `ResolvedConfig`) and threads it through `createModuleGate(...)` to every\n * gated surface. Tests that drive a handshake without a full client\n * construct a store the same way; the resolver call below defaults to an\n * empty config (i.e. it still reads `process.env` once at store\n * construction, mirroring the old behaviour for ad-hoc test stores).\n *\n * The store reads the runtime knobs (`requireContract`, `contractTtlMs`,\n * `debug`) from `resolved` exactly once and caches them on the closure —\n * mirroring the snapshot semantics of `ResolvedConfig` itself.\n */\nexport function createContractStore(resolved: ResolvedConfig = resolveConfig({})): ContractStore {\n const cache = new Map<string, CacheEntry>();\n const lastResolved = new Map<string, Result<ContractResponse>>();\n const debugLogged = new Set<string>();\n const ttl = resolved.contractTtlMs;\n const debug = resolved.debug;\n const requireContract = resolved.requireContract;\n\n async function get(\n baseUrl: string | undefined,\n options: ContractHandshakeOptions = {},\n ): Promise<Result<ContractResponse>> {\n if (!baseUrl || baseUrl.trim() === '') {\n // The base URL may not have been resolvable when the client was built\n // (e.g. tests rebuild the client after setting `STACKBONE_API_URL`).\n // Returning a fresh synchronous error each time avoids freezing the\n // empty state.\n return err({\n code: 'contract_unreachable',\n message:\n 'STACKBONE_API_URL is not set — cannot perform the Stackbone Agent Protocol handshake.',\n meta: { reason: 'no_base_url' },\n });\n }\n\n const key = normaliseBaseUrl(baseUrl);\n const now = options.now ?? Date.now;\n\n const existing = cache.get(key);\n if (existing && existing.expiresAt > now()) {\n return existing.promise;\n }\n\n if (existing) {\n // Lazy eviction: TTL elapsed since the last resolution.\n cache.delete(key);\n }\n\n const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n const promise = performHandshake(key, fetchImpl);\n const expiresAt = ttl === undefined ? Number.POSITIVE_INFINITY : now() + ttl;\n cache.set(key, { promise, expiresAt });\n\n const result = await promise;\n lastResolved.set(key, result);\n if (!result.error && debug) {\n maybeLogDebug(debugLogged, key, result.data);\n }\n return result;\n }\n\n function peek(baseUrl: string | undefined): ContractResponse | null {\n if (!baseUrl || baseUrl.trim() === '') return null;\n const key = normaliseBaseUrl(baseUrl);\n const cached = lastResolved.get(key);\n if (!cached || cached.error) return null;\n return cached.data;\n }\n\n function gatingEnabled(): boolean {\n return requireContract;\n }\n\n return { get, peek, gatingEnabled };\n}\n\nasync function performHandshake(\n baseUrl: string,\n fetchImpl: typeof fetch,\n): Promise<Result<ContractResponse>> {\n const url = `${baseUrl}${CONTRACT_PATH}`;\n let response: Response;\n try {\n response = await fetchImpl(url, { method: 'GET' });\n } catch (cause) {\n return err({\n code: 'contract_unreachable',\n message: `Failed to reach ${url}: ${cause instanceof Error ? cause.message : String(cause)}`,\n cause,\n meta: { baseUrl },\n });\n }\n\n if (response.status === 404) {\n await response.body?.cancel();\n return err({\n code: 'contract_unreachable',\n message: `${url} responded 404 — the datapath is not Stackbone-shaped.`,\n meta: { baseUrl, reason: 'endpoint_missing' },\n });\n }\n\n if (response.status >= 500) {\n await response.body?.cancel();\n return err({\n code: 'contract_unreachable',\n message: `${url} responded ${response.status} — the datapath errored serving the contract.`,\n meta: { baseUrl, reason: 'datapath_error', status: response.status },\n });\n }\n\n let payload: unknown;\n try {\n payload = await response.json();\n } catch (cause) {\n return err({\n code: 'contract_malformed',\n message: `${url} returned a body that is not valid JSON.`,\n cause,\n meta: { baseUrl, issues: [] },\n });\n }\n\n const parsed = contractResponseSchema.safeParse(payload);\n if (!parsed.success) {\n return err({\n code: 'contract_malformed',\n message: `${url} returned a payload that does not match the contract schema.`,\n meta: { baseUrl, issues: parsed.error.issues },\n });\n }\n\n return ok(parsed.data);\n}\n\n/**\n * Normalises a baseUrl so the cache key collapses cosmetic differences:\n * lowercases the URL parser's `origin` (scheme + host + port) and drops a\n * trailing slash. Path components are intentionally ignored — the SDK only\n * accepts an _origin_ baseUrl today.\n *\n * Falls back to a string-level normalisation if `URL` rejects the input.\n */\nfunction normaliseBaseUrl(baseUrl: string): string {\n try {\n const parsed = new URL(baseUrl);\n return `${parsed.protocol.toLowerCase()}//${parsed.host.toLowerCase()}`;\n } catch {\n return baseUrl.trim().toLowerCase().replace(/\\/+$/, '');\n }\n}\n\n/**\n * Per-(store, baseUrl) one-shot debug warning. The caller has already\n * decided debug logging is on (via `resolved.debug`) — this helper only\n * dedupes so each baseUrl logs at most once per store lifetime.\n */\nfunction maybeLogDebug(debugLogged: Set<string>, key: string, contract: ContractResponse): void {\n if (debugLogged.has(key)) return;\n debugLogged.add(key);\n console.warn(\n `[stackbone] contract handshake ok: baseUrl=${key} version=${contract.version} capabilities=${contract.capabilities.length}`,\n );\n}\n","import {\n type ContractResponse,\n MODULE_CAPABILITIES,\n requireCapability,\n} from '@stackbone/validators';\n\nimport { err, type Result } from '../result';\n\n/**\n * Gating membership rule (Option B from the SDK audit):\n *\n * A surface gates iff `MODULE_CAPABILITIES` (in `@stackbone/validators`)\n * advertises a row for its module id.\n *\n * `MODULE_CAPABILITIES` is the single source of truth — `ModuleId =\n * keyof typeof MODULE_CAPABILITIES`, so the compiler refuses calls to\n * `createModuleGate(...)` for any module not in the table. Adding a new\n * surface to gating means:\n *\n * 1. Declare its required `Capability` in `CAPABILITIES`.\n * 2. Add the `<module>: '<capability>'` row to `MODULE_CAPABILITIES`.\n * 3. Wire `createModuleGate('<module>', resolved, store)` in the surface\n * constructor (or in `client.ts` if the surface is exposed on\n * `client.X`).\n *\n * The surfaces currently outside the gate map document the reason in their\n * own file (see `pending/memory/memory.ts`, `pending/connections/\n * connections.ts`, `pending/prompts/prompts.ts`, `external/observability/\n * observability.ts`). Today none of them need a wire-level protocol\n * capability — the runtime either does not yet exist, talks to a non-\n * Stackbone partner, or stays local (JSONL) — so they intentionally do\n * NOT consult the gate. When that changes, the criterion above kicks in.\n *\n * Agent-local data surfaces — `database`, `rag`, and now `secrets`, `config`\n * and `approval` — are likewise NOT wired to the control-plane handshake\n * gate: they operate directly against the agent's own\n * `stackbone_platform.*` tables, so there is no control-plane datapath to\n * negotiate. `secrets`/`config`/`approval` still carry rows in\n * `MODULE_CAPABILITIES` (the table is shared with the cloud contract), but\n * the SDK no longer builds a `ModuleGate` for them in `client.ts`.\n */\nexport type ModuleId = keyof typeof MODULE_CAPABILITIES;\n\n/**\n * Pure, table-driven gate. Looks up the module's required capability in the\n * shared `MODULE_CAPABILITIES` map, then delegates the actual version +\n * capability check to `requireCapability` from `@stackbone/validators`.\n *\n * Consumed by `createModuleGate` (slices #4/#5); intentionally not surfaced\n * from `libs/sdk/src/index.ts` (the SDK's only public contract surface\n * remains `client.contract`).\n */\nexport function assertCapability(module: ModuleId, contract: ContractResponse): Result<undefined> {\n const capability = MODULE_CAPABILITIES[module];\n const result = requireCapability(capability, contract);\n if (result.error) {\n // `ContractCheckError` is structurally compatible with `SdkError`\n // (`{ code, message, meta? }`), so the widening is just a type cast.\n return err(result.error);\n }\n return { data: undefined, error: null };\n}\n","import { type ContractResponse, MODULE_CAPABILITIES } from '@stackbone/validators';\n\nimport { type ResolvedConfig } from '../config';\nimport { err, ok, type Result } from '../result';\n\nimport { assertCapability, type ModuleId } from './capability-registry';\nimport {\n type ContractHandshakeOptions,\n type ContractStore,\n createContractStore,\n} from './contract-handshake';\n\n/**\n * Async predicate every gated SDK module awaits before forwarding to its\n * underlying implementation. Returns ok when the negotiated contract clears\n * the module's gate (or the escape hatch suppresses a gating error); returns\n * an error envelope otherwise — the caller propagates it back as the public\n * `Result<T>` of the method.\n *\n * Test seam — every gated module exposes an optional `gate` constructor\n * argument that defaults to `createModuleGate(<id>, resolved, store)`. Specs\n * inject a stub returning a synthetic `Result<undefined>` to exercise the\n * gating paths (ok / `contract_version_unsupported` / `capability_unavailable`\n * / `contract_unreachable`) without driving a real handshake.\n */\nexport type ModuleGate = () => Promise<Result<undefined>>;\n\n/**\n * Options accepted by `createModuleGate`. `fetch`/`now` only flow through to\n * the default `store.get(...)` resolver and are ignored when\n * `resolveContract` is supplied.\n *\n * `resolveContract` is the unit-test seam: lets a spec hand back a synthetic\n * (or even schema-invalid) `Result<ContractResponse>` without going through\n * the wire-level Zod parse — that is how the \"version below the SDK floor\"\n * path is tested even though the wire schema enforces `version >= 1`.\n */\nexport interface ModuleGateOptions extends ContractHandshakeOptions {\n resolveContract?: () => Promise<Result<ContractResponse>>;\n}\n\n/**\n * Builds the lazy contract-gate every facade method consults before\n * forwarding to the underlying call. The returned function:\n *\n * 1. Resolves the configured baseUrl from `resolved` (config first, then\n * `STACKBONE_API_URL`).\n * 2. Awaits the contract — by default `store.get(baseUrl)`\n * (single-flight, cached per baseUrl, lazy on first invocation). Tests\n * inject `resolveContract` to bypass the wire schema.\n * 3. On `contract_unreachable` / `contract_malformed`, returns the error.\n * These are reachability failures and remain hard errors regardless of\n * `STACKBONE_REQUIRE_CONTRACT` — the agent literally cannot tell what it\n * is talking to.\n * 4. On a successfully resolved contract, runs `assertCapability(module, c)`.\n * If it errors and `STACKBONE_REQUIRE_CONTRACT=0`, logs a single warning\n * per (store, baseUrl, capability) tuple to stderr and returns ok so the\n * underlying call proceeds. Otherwise returns the error.\n *\n * `store` is the per-client handshake cache. `createClient()` instantiates\n * one with `createContractStore()` and threads it into every gated surface\n * via this factory; two `StackboneClient` instances do NOT share cache\n * state.\n *\n * When omitted (used by callers building a one-off gate outside a client —\n * notably the integration spec) we allocate a fresh store; that store has\n * the same lifetime as the gate itself.\n */\nexport function createModuleGate(\n module: ModuleId,\n resolved: ResolvedConfig,\n store: ContractStore = createContractStore(resolved),\n options: ModuleGateOptions = {},\n): ModuleGate {\n /**\n * Per-store suppression-warning bookkeeping. The escape-hatch warning is\n * a property of the (store, baseUrl, capability) tuple — keeping the Set\n * on the store means two clients can each warn once without stepping on\n * each other, and a fresh store (e.g. a new test) starts with no\n * suppression history.\n */\n const warnedKeys = warningsFor(store);\n\n return async () => {\n const baseUrl = resolved.stackboneApiUrl;\n const handshake = options.resolveContract\n ? await options.resolveContract()\n : await store.get(baseUrl, options);\n if (handshake.error) {\n // Reachability failures cannot be suppressed — we don't know what the\n // datapath is, so refusing the call is the only safe answer.\n return err(handshake.error);\n }\n\n // Agent-side floor (F6): when the creator declared `agent.yaml.protocol.required`,\n // the SDK enforces it BEFORE the per-module capability check. This way the\n // creator's declared minimum wins over a misleading `capability_unavailable`\n // when the datapath happens to advertise the capability under an older\n // protocol version the agent does not support.\n const agentFloor = resolved.protocolRequired;\n const gateError =\n agentFloor !== undefined && handshake.data.version < agentFloor\n ? ({\n code: 'contract_version_unsupported',\n message: `Stackbone Agent Protocol version ${handshake.data.version} is below the minimum required by this agent (${agentFloor}). Upgrade the datapath or lower agent.yaml.protocol.required.`,\n meta: { detected: handshake.data.version, required: agentFloor },\n } as const)\n : assertCapability(module, handshake.data).error;\n\n if (gateError === null) {\n return ok(undefined);\n }\n\n if (store.gatingEnabled()) {\n return err(gateError);\n }\n\n // STACKBONE_REQUIRE_CONTRACT=0 — escape hatch. We still ran the\n // handshake (so `client.contract` is populated) and we still computed\n // the gate; we just don't propagate the error and we warn loudly enough\n // that the creator notices in dev. We always reference the module's\n // required capability (via `MODULE_CAPABILITIES`) so the warning is\n // identical for both `contract_version_unsupported` (no `capability` in\n // meta) and `capability_unavailable` paths.\n const capability = MODULE_CAPABILITIES[module];\n const key = `${baseUrl ?? ''}::${capability}`;\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n console.warn(\n `[stackbone] STACKBONE_REQUIRE_CONTRACT=0 — suppressing ${gateError.code} for ${capability}; ` +\n `the underlying ${module} call may fail downstream.`,\n );\n }\n return ok(undefined);\n };\n}\n\n/**\n * Per-store map of suppression-warning Sets, keyed by store identity. Two\n * gates pinned to the same store share their warning bookkeeping (so a\n * single client warns once per capability regardless of how many gated\n * surfaces fire); two stores get independent Sets, which is the property\n * that lets specs start clean by constructing a fresh store.\n *\n * `WeakMap` so the Set is collected together with its store when the\n * client goes out of scope.\n */\nconst warningsByStore = new WeakMap<ContractStore, Set<string>>();\n\nfunction warningsFor(store: ContractStore): Set<string> {\n let warnings = warningsByStore.get(store);\n if (!warnings) {\n warnings = new Set<string>();\n warningsByStore.set(store, warnings);\n }\n return warnings;\n}\n","import { type ResolvedConfig } from '../config';\nimport { type SdkErrorCode, type SdkErrorPrefix } from '../errors/codes';\nimport { err, ok, type Result, type SdkError } from '../result';\n\n/** Subset of `RequestInit['body']` we serialize without modification. */\ntype SerializedBody = NonNullable<RequestInit['body']>;\n\n/**\n * Per-status overrides facades attach when an HTTP status carries a\n * non-canonical meaning for the endpoint — e.g. a `POST` whose `409` means\n * \"already exists\" instead of the default \"conflict\". Keys are HTTP statuses,\n * values are domain codes the transport should surface verbatim (no prefix\n * concatenation — the override is the final code).\n *\n * The value is typed against the catalog (`SdkErrorCode`) so an endpoint\n * cannot smuggle a wire code that isn't in the documented inventory.\n */\nexport type ErrorOverrides = Record<number, SdkErrorCode>;\n\n/**\n * Tells the transport how to remap HTTP status codes onto the surface's\n * domain code prefix. `404 → '<prefix>_not_found'`, `401 → '<prefix>_unauthorized'`,\n * etc. Endpoint-specific overrides win over the canonical mapping.\n *\n * `prefix` is constrained to `SdkErrorPrefix` (the catalog's prefix tuple) so\n * an unknown surface name doesn't compile — keeps the wire codes the\n * transport emits inside the typed inventory.\n */\nexport interface ErrorMapping {\n /** Prefix concatenated with `_not_found`, `_unauthorized`, …. Required for any domain remap. */\n prefix: SdkErrorPrefix;\n /** Per-status final code that overrides the canonical mapping. */\n overrides?: ErrorOverrides;\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body' | 'signal'> {\n /** Scalar query params. `undefined` values are dropped, others get coerced via `String()`. */\n params?: Record<string, string | number | boolean | undefined>;\n /**\n * Repeated string-array params validated and serialised by the transport.\n * Empty arrays / blank elements reject upstream with `<prefix>_invalid_request`\n * (falls back to `http_invalid_request` when no `errorMapping` is set). Each\n * array is joined with `,` to match the canonical control-plane shape.\n */\n arrayParams?: Record<string, readonly string[]>;\n body?: SerializedBody | Record<string, unknown> | unknown[] | null;\n signal?: AbortSignal;\n /** Allow retrying non-idempotent requests (POST, PATCH). Off by default to prevent duplicate writes. */\n idempotent?: boolean;\n}\n\n/**\n * Shape every facade method ideally collapses into: \"POST to /path with this\n * body, validate against this schema, surface errors as `<prefix>_*`\". The\n * transport handles validation, HTTP→domain remapping, querystring assembly\n * and the `Result` envelope so facades stay tiny orchestrators.\n *\n * `arrayParams` keys default to `errorMapping.prefix` for the validation\n * error code (e.g. an empty `names: []` becomes `secrets_invalid_request`).\n */\nexport interface TransportRequest<T> extends RequestOptions {\n method: string;\n path: string;\n /**\n * Zod schema (or any object with a `.safeParse()` method) the parsed body\n * must validate against. On failure the transport surfaces\n * `<prefix>_invalid_response` (or `http_invalid_response` if no prefix is\n * configured) with the schema issues attached to `meta.issues`.\n */\n responseSchema?: ResponseSchema<T>;\n /** HTTP→domain remapping. Omit to let `http_*` codes flow through unchanged. */\n errorMapping?: ErrorMapping;\n}\n\n/**\n * Minimal contract the transport needs from a schema — `safeParse`. Compatible\n * with Zod (`z.object(…).safeParse(value)`) and any hand-rolled validator that\n * follows the same shape. Avoids leaking Zod's full surface into the transport\n * signature.\n */\nexport interface ResponseSchema<T> {\n safeParse(\n input: unknown,\n ): { success: true; data: T } | { success: false; error: { issues: unknown } };\n}\n\nexport interface HttpClientOptions {\n /** Default 30_000. Set to 0 to disable. */\n timeout?: number;\n /** Default 3. Set to 0 to disable. */\n retryCount?: number;\n /** Initial backoff in ms; doubles each attempt with ±15% jitter. Default 500. */\n retryDelay?: number;\n /** Override the global fetch (useful for tests). */\n fetch?: typeof fetch;\n}\n\nconst RETRYABLE_STATUS = new Set([500, 502, 503, 504]);\nconst IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS']);\n\n/**\n * Shared HTTP client used by every facade that talks to the Stackbone\n * control plane. Wraps `fetch` with timeout, exponential backoff with jitter,\n * idempotent-only retries, response validation (Zod-compatible schemas) and\n * a uniform `Result` envelope so facades never throw at the SDK boundary.\n *\n * Each facade tells the transport its error prefix (`'secrets'`, `'config'`,\n * `'approval'`) so 404/401/403/429/5xx remap to surface-specific codes —\n * `secrets_not_found`, `approval_unauthorized`, etc. Endpoint-specific\n * remaps (e.g. `409 → 'secrets_already_exists'`) flow through\n * `errorMapping.overrides`. Transport-level failures (network, timeout,\n * parse) keep the `http_*` prefix the README contract documents.\n *\n * Reads `STACKBONE_API_URL` and `STACKBONE_AGENT_JWT` lazily on every request so\n * env-var rotation is picked up without restarting the client.\n */\nexport class HttpClient {\n private readonly timeout: number;\n private readonly retryCount: number;\n private readonly retryDelay: number;\n private readonly fetchImpl: typeof fetch;\n\n constructor(\n private readonly resolved: ResolvedConfig,\n options: HttpClientOptions = {},\n ) {\n this.timeout = options.timeout ?? 30_000;\n this.retryCount = options.retryCount ?? 3;\n this.retryDelay = options.retryDelay ?? 500;\n this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n }\n\n /**\n * Convenience for `request({ method: 'GET', path, ... })`. Kept so legacy\n * callers (tests, pending facades) keep compiling — the deep work happens\n * in `request()`.\n */\n get<T>(path: string, options?: RequestOptions): Promise<Result<T>> {\n return this.request<T>({ method: 'GET', path, ...options });\n }\n\n post<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'POST',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n put<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'PUT',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n patch<T>(\n path: string,\n body?: RequestOptions['body'],\n options?: RequestOptions,\n ): Promise<Result<T>> {\n return this.request<T>({\n method: 'PATCH',\n path,\n ...options,\n ...(body !== undefined && { body }),\n });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<Result<T>> {\n return this.request<T>({ method: 'DELETE', path, ...options });\n }\n\n /**\n * The transport entry point every facade should target. Handles base-URL\n * resolution, header injection, body/querystring serialisation, retry +\n * timeout, response validation and HTTP→domain error remapping.\n */\n async request<T>(req: TransportRequest<T>): Promise<Result<T>> {\n const { method, path, responseSchema, errorMapping, ...options } = req;\n const baseUrl = resolveApiUrl(this.resolved);\n if (!baseUrl) {\n return err({\n code: 'stackbone_api_url_missing',\n message:\n 'Cannot reach the Stackbone control plane — set `STACKBONE_API_URL` in the container or pass `stackboneApiUrl` to `createClient({...})`.',\n });\n }\n\n const querystring = buildQuerystring(options.params, options.arrayParams, errorMapping);\n if (querystring.error) return err(querystring.error);\n\n const url = buildUrl(baseUrl, path, querystring.data);\n const canRetry = IDEMPOTENT_METHODS.has(method.toUpperCase()) || options.idempotent === true;\n const maxAttempts = canRetry ? this.retryCount : 0;\n\n const requestHeaders = new Headers(options.headers);\n const jwt = resolveAgentJwt(this.resolved);\n if (jwt && !requestHeaders.has('Authorization')) {\n requestHeaders.set('Authorization', `Bearer ${jwt}`);\n }\n const installationId = resolveInstallationId(this.resolved);\n if (installationId && !requestHeaders.has('X-Stackbone-Installation-Id')) {\n requestHeaders.set('X-Stackbone-Installation-Id', installationId);\n }\n const body = serializeBody(method, options.body, requestHeaders);\n\n let lastError: SdkError | null = null;\n\n for (let attempt = 0; attempt <= maxAttempts; attempt++) {\n if (attempt > 0) {\n try {\n await sleepWithSignal(this.computeBackoff(attempt), options.signal);\n } catch {\n return err({ code: 'http_aborted', message: 'Request aborted by caller' });\n }\n }\n\n const { signal, cancel } = composeSignal(this.timeout, options.signal);\n const {\n body: _rawBody,\n signal: _callerSignal,\n params: _params,\n arrayParams: _arrayParams,\n idempotent: _idempotent,\n headers: _headers,\n ...passthrough\n } = options;\n const init: RequestInit = {\n ...passthrough,\n method,\n headers: requestHeaders,\n };\n if (body !== undefined) init.body = body;\n if (signal) init.signal = signal;\n\n try {\n const response = await this.fetchImpl(url, init);\n cancel();\n\n if (RETRYABLE_STATUS.has(response.status) && attempt < maxAttempts) {\n await response.body?.cancel();\n lastError = {\n code: codeForStatus(response.status, errorMapping),\n message: `Server error: ${response.status} ${response.statusText}`,\n meta: { status: response.status },\n };\n continue;\n }\n\n return await parseResponse<T>(response, responseSchema, errorMapping);\n } catch (raw) {\n cancel();\n const sdkErr = mapFetchError(raw, this.timeout, options.signal);\n if (sdkErr.code === 'http_aborted' || sdkErr.code === 'http_timeout') {\n // Caller cancelled or timeout consumed all attempts — surface immediately.\n return err(sdkErr);\n }\n if (attempt < maxAttempts) {\n lastError = sdkErr;\n continue;\n }\n return err(sdkErr);\n }\n }\n\n return err(\n lastError ?? {\n code: 'http_request_failed',\n message: 'Request failed after all retry attempts',\n },\n );\n }\n\n private computeBackoff(attempt: number): number {\n const base = this.retryDelay * Math.pow(2, attempt - 1);\n const jitter = base * (0.85 + Math.random() * 0.3);\n return Math.round(jitter);\n }\n}\n\nfunction resolveApiUrl(resolved: ResolvedConfig): string | undefined {\n return resolved.stackboneApiUrl;\n}\n\nfunction resolveAgentJwt(resolved: ResolvedConfig): string | undefined {\n return resolved.agentJwt;\n}\n\nfunction resolveInstallationId(resolved: ResolvedConfig): string | undefined {\n return resolved.installationId;\n}\n\nfunction buildUrl(baseUrl: string, path: string, params: Record<string, string>): string {\n const url = new URL(path, baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.append(key, value);\n }\n return url.toString();\n}\n\n/**\n * Merges scalar `params` and validated `arrayParams` into a flat\n * `Record<string, string>` the URL builder can consume. Empty / blank-element\n * arrays short-circuit with `<prefix>_invalid_request` (or\n * `http_invalid_request` when no prefix is configured) — that is the\n * \"validate request shape\" job the transport now owns end-to-end.\n */\nfunction buildQuerystring(\n params: Record<string, string | number | boolean | undefined> | undefined,\n arrayParams: Record<string, readonly string[]> | undefined,\n errorMapping: ErrorMapping | undefined,\n): Result<Record<string, string>> {\n const out: Record<string, string> = {};\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n out[key] = String(value);\n }\n }\n\n if (arrayParams) {\n const invalidCode: SdkErrorCode = errorMapping?.prefix\n ? (`${errorMapping.prefix}_invalid_request` as SdkErrorCode)\n : 'http_invalid_request';\n for (const [field, values] of Object.entries(arrayParams)) {\n if (!Array.isArray(values) || values.length === 0) {\n return err({\n code: invalidCode,\n message: `\\`${field}\\` must be a non-empty array.`,\n });\n }\n if (values.some((v) => typeof v !== 'string' || !v.trim())) {\n return err({\n code: invalidCode,\n message: `\\`${field}[*]\\` must be non-empty strings.`,\n });\n }\n out[field] = values.join(',');\n }\n }\n\n return ok(out);\n}\n\nfunction serializeBody(\n method: string,\n body: RequestOptions['body'] | undefined,\n headers: Headers,\n): SerializedBody | undefined {\n if (body === undefined || body === null) return undefined;\n if (method === 'GET' || method === 'HEAD') return undefined;\n if (typeof FormData !== 'undefined' && body instanceof FormData) return body;\n if (typeof body === 'string' || body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n return body as SerializedBody;\n }\n if (!headers.has('Content-Type')) {\n headers.set('Content-Type', 'application/json;charset=UTF-8');\n }\n return JSON.stringify(body);\n}\n\nasync function parseResponse<T>(\n response: Response,\n responseSchema: ResponseSchema<T> | undefined,\n errorMapping: ErrorMapping | undefined,\n): Promise<Result<T>> {\n if (response.status === 204) {\n if (!responseSchema) return ok(undefined as T);\n // A schema on a 204 means the caller expects a body — `undefined`\n // won't validate. Run it through `safeParse` so the contract is\n // explicit instead of silently coercing.\n return validateOrFail<T>(undefined, responseSchema, errorMapping, { status: 204 });\n }\n\n const contentType = response.headers.get('content-type');\n let parsed: unknown;\n try {\n parsed = contentType?.includes('json') ? await response.json() : await response.text();\n } catch (e) {\n return err({\n code: 'http_parse_error',\n message: `Failed to parse response body: ${e instanceof Error ? e.message : String(e)}`,\n cause: e,\n meta: { status: response.status },\n });\n }\n\n if (!response.ok) {\n const message =\n parsed &&\n typeof parsed === 'object' &&\n 'message' in parsed &&\n typeof parsed.message === 'string'\n ? parsed.message\n : `Request failed: ${response.statusText}`;\n return err({\n code: codeForStatus(response.status, errorMapping),\n message,\n meta: domainMeta(response.status, parsed, errorMapping),\n });\n }\n\n if (!responseSchema) return ok(parsed as T);\n return validateOrFail<T>(parsed, responseSchema, errorMapping, { status: response.status });\n}\n\nfunction validateOrFail<T>(\n parsed: unknown,\n schema: ResponseSchema<T>,\n errorMapping: ErrorMapping | undefined,\n meta: Record<string, unknown>,\n): Result<T> {\n const validation = schema.safeParse(parsed);\n if (validation.success) return ok(validation.data);\n const code: SdkErrorCode = errorMapping?.prefix\n ? (`${errorMapping.prefix}_invalid_response` as SdkErrorCode)\n : 'http_invalid_response';\n return err({\n code,\n message: 'Response body did not match the expected shape.',\n meta: { ...meta, issues: validation.error.issues },\n });\n}\n\n/**\n * Canonical HTTP→domain mapping. With no `errorMapping` the transport keeps\n * the README-documented `http_*` codes; with a mapping it concatenates the\n * prefix and applies endpoint-specific overrides (`409 →\n * 'secrets_already_exists'`).\n *\n * Domain mapping (prefix set): 401 → `<prefix>_unauthorized`, 403 → forbidden,\n * 404 → not_found, 408 → timeout, 429 → rate_limited, 5xx → unavailable,\n * 4xx generic → invalid_request.\n *\n * Transport mapping (no prefix): keeps the existing `http_unauthorized`,\n * `http_forbidden`, `http_not_found`, `http_timeout`, `http_rate_limited`,\n * `http_server_error` for 5xx, `http_client_error` for generic 4xx — the\n * shape the README has been advertising since alpha.0.\n */\n/**\n * Domain-suffix mapping. Each surface that gets `<prefix>_<reason>` emits a\n * fixed inventory of `<reason>` strings; the catalog declares them per\n * prefix. The tuple here is the exhaustive set the transport produces — the\n * exhaustiveness test in `http-client.spec.ts` asserts every emitted code is\n * still in `SDK_ERROR_CODES`.\n */\nconst DOMAIN_REASONS = [\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'timeout',\n 'rate_limited',\n 'unavailable',\n 'invalid_request',\n 'invalid_response',\n] as const;\ntype DomainReason = (typeof DOMAIN_REASONS)[number];\n\nconst TRANSPORT_REASONS = [\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'timeout',\n 'rate_limited',\n 'server_error',\n 'client_error',\n 'request_failed',\n 'invalid_request',\n 'invalid_response',\n 'aborted',\n 'network_error',\n 'parse_error',\n] as const;\ntype TransportReason = (typeof TRANSPORT_REASONS)[number];\n\n/**\n * Maps `(status, errorMapping)` to the wire-level code surfaced on the\n * `Result.error.code`. The return type is `SdkErrorCode` so callers (the\n * retry-loop bookkeeper, `parseResponse`, the contract test) can't compose\n * a code that isn't in the catalog by accident.\n *\n * Internally the function builds the `<prefix>_<reason>` string from two\n * typed tuples (`SdkErrorPrefix` × `DomainReason` | `TransportReason`); the\n * compiler accepts the concatenation as `SdkErrorCode` because every\n * combination it can produce is listed in `errors/codes.ts`.\n */\nfunction codeForStatus(status: number, errorMapping: ErrorMapping | undefined): SdkErrorCode {\n const override = errorMapping?.overrides?.[status];\n if (override) return override;\n\n if (errorMapping?.prefix) {\n return `${errorMapping.prefix}_${domainSuffix(status)}` as SdkErrorCode;\n }\n return `http_${transportSuffix(status)}` as const;\n}\n\nfunction domainSuffix(status: number): DomainReason {\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limited';\n if (status >= 500) return 'unavailable';\n if (status >= 400) return 'invalid_request';\n return 'invalid_request';\n}\n\nfunction transportSuffix(status: number): TransportReason {\n if (status === 401) return 'unauthorized';\n if (status === 403) return 'forbidden';\n if (status === 404) return 'not_found';\n if (status === 408) return 'timeout';\n if (status === 429) return 'rate_limited';\n if (status >= 500) return 'server_error';\n if (status >= 400) return 'client_error';\n return 'request_failed';\n}\n\n/**\n * @internal — exposed solely for the contract test that asserts the SDK\n * error catalog is exhaustive over every `<prefix>_<reason>` HttpClient can\n * emit. Not re-exported from the library barrel.\n */\nexport const __HTTP_CLIENT_ERROR_REASONS_FOR_TESTING = {\n DOMAIN_REASONS,\n TRANSPORT_REASONS,\n} as const;\n\n/**\n * Carries the raw status / body through every error meta payload, regardless\n * of remapping. This keeps the escape hatches the README promised: callers\n * can still pattern-match on `meta.status` even after the code is remapped\n * to the surface-specific prefix.\n */\nfunction domainMeta(\n status: number,\n parsed: unknown,\n errorMapping: ErrorMapping | undefined,\n): Record<string, unknown> {\n const meta: Record<string, unknown> = { status, body: parsed };\n if (errorMapping?.prefix) meta['prefix'] = errorMapping.prefix;\n return meta;\n}\n\nfunction mapFetchError(\n raw: unknown,\n timeoutMs: number,\n callerSignal: AbortSignal | undefined,\n): SdkError {\n if (\n raw &&\n typeof raw === 'object' &&\n 'name' in raw &&\n (raw as { name: string }).name === 'AbortError'\n ) {\n if (callerSignal?.aborted) {\n return { code: 'http_aborted', message: 'Request aborted by caller', cause: raw };\n }\n return {\n code: 'http_timeout',\n message: `Request timed out after ${timeoutMs}ms`,\n cause: raw,\n };\n }\n return {\n code: 'http_network_error',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n };\n}\n\n/**\n * Composes the SDK's timeout signal with the caller's signal so either can\n * abort the in-flight request. `cancel()` clears the timeout when the\n * request settles to avoid keeping a dangling timer alive.\n */\nfunction composeSignal(\n timeoutMs: number,\n callerSignal: AbortSignal | undefined,\n): { signal: AbortSignal | undefined; cancel: () => void } {\n if (timeoutMs <= 0 && !callerSignal) return { signal: undefined, cancel: () => undefined };\n const controller = new AbortController();\n let timer: ReturnType<typeof setTimeout> | undefined;\n if (timeoutMs > 0) {\n timer = setTimeout(() => controller.abort(), timeoutMs);\n }\n let onCallerAbort: (() => void) | undefined;\n if (callerSignal) {\n if (callerSignal.aborted) {\n controller.abort(callerSignal.reason);\n } else {\n onCallerAbort = () => controller.abort(callerSignal.reason);\n callerSignal.addEventListener('abort', onCallerAbort, { once: true });\n }\n }\n return {\n signal: controller.signal,\n cancel: () => {\n if (timer !== undefined) clearTimeout(timer);\n if (onCallerAbort && callerSignal) callerSignal.removeEventListener('abort', onCallerAbort);\n },\n };\n}\n\n/**\n * Pre-flight guard facades use BEFORE consulting the contract gate. Mirrors\n * the validation `request()` runs on `arrayParams`, but lives at the facade\n * layer so an empty/malformed batch never triggers a contract handshake.\n * Returns `null` when the input is valid so callers can `if (invalid)`\n * short-circuit cleanly.\n */\nexport function validateStringArray(\n values: unknown,\n field: string,\n errorCode: SdkErrorCode,\n): Result<never> | null {\n if (!Array.isArray(values) || values.length === 0) {\n return err({ code: errorCode, message: `\\`${field}\\` must be a non-empty array.` });\n }\n if (values.some((v) => typeof v !== 'string' || !v.trim())) {\n return err({ code: errorCode, message: `\\`${field}[*]\\` must be non-empty strings.` });\n }\n return null;\n}\n\nasync function sleepWithSignal(ms: number, signal: AbortSignal | undefined): Promise<void> {\n if (signal?.aborted) throw signal.reason ?? new Error('aborted');\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n if (signal && onAbort) signal.removeEventListener('abort', onAbort);\n resolve();\n }, ms);\n const onAbort = signal\n ? () => {\n clearTimeout(timer);\n reject(signal.reason ?? new Error('aborted'));\n }\n : undefined;\n if (signal && onAbort) signal.addEventListener('abort', onAbort, { once: true });\n });\n}\n","import { err, ok, type Result } from '../../../result';\n\nimport { type ApprovalFacade, type ApprovalRequestOptions } from './approval';\n\nexport interface ApprovalToolSpec<I, O> {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n needsApproval?: boolean | ((input: I) => boolean | Promise<boolean>);\n /**\n * Maps the LLM input to the approval request fields. `topic` and `payload`\n * default to the tool name and the raw input respectively when omitted;\n * `onDecide` must always be supplied so the control plane knows where to\n * deliver the eventual decision.\n */\n toRequest: (\n input: I,\n ) => Omit<ApprovalRequestOptions<I>, 'payload' | 'topic'> &\n Partial<Pick<ApprovalRequestOptions<I>, 'payload' | 'topic'>>;\n execute: (input: I) => Promise<O> | O;\n}\n\nexport interface OpenAIToolSpec {\n type: 'function';\n function: {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n };\n}\n\nexport type ToolInvokeResult<O> =\n | { status: 'pending'; approvalId: string; expiresAt: string }\n | { status: 'ok'; result: O };\n\nexport interface ApprovalTool<I, O> {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n openaiSpec(): OpenAIToolSpec;\n invoke(input: I): Promise<Result<ToolInvokeResult<O>>>;\n}\n\nexport function createApprovalTool<I, O>(\n facade: ApprovalFacade,\n spec: ApprovalToolSpec<I, O>,\n): ApprovalTool<I, O> {\n return {\n name: spec.name,\n description: spec.description,\n parameters: spec.parameters,\n openaiSpec(): OpenAIToolSpec {\n return {\n type: 'function',\n function: {\n name: spec.name,\n description: spec.description,\n parameters: spec.parameters,\n },\n };\n },\n async invoke(input: I): Promise<Result<ToolInvokeResult<O>>> {\n if (await resolveGate(spec.needsApproval, input)) {\n const requestOpts = spec.toRequest(input);\n const requested = await facade.request<I>({\n ...requestOpts,\n topic: requestOpts.topic ?? `tool:${spec.name}`,\n payload: requestOpts.payload ?? input,\n });\n if (requested.error) return requested;\n return ok({\n status: 'pending',\n approvalId: requested.data.approvalId,\n expiresAt: requested.data.expiresAt,\n });\n }\n try {\n return ok({ status: 'ok', result: await spec.execute(input) });\n } catch (raw) {\n return err({\n code: 'approval_tool_execute_failed',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n meta: { tool: spec.name },\n });\n }\n },\n };\n}\n\nasync function resolveGate<I>(\n needsApproval: ApprovalToolSpec<I, unknown>['needsApproval'],\n input: I,\n): Promise<boolean> {\n if (needsApproval === undefined || needsApproval === false) return false;\n if (needsApproval === true) return true;\n return Boolean(await needsApproval(input));\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\n\nimport { DECISION_STATUSES, type Decision, type DecisionStatus } from './approval';\n\nexport interface VerifyOptions {\n /** Override the signing key resolved from `STACKBONE_APPROVAL_SIGNING_KEY` / `approvalSigningKey`. */\n signingKey?: string;\n /** Reject signatures whose timestamp is older than this (seconds). Default 300. */\n toleranceSeconds?: number;\n /** Inject a clock for tests. Defaults to `Date.now`. */\n now?: () => number;\n}\n\nconst SIGNATURE_HEADER = 'stackbone-signature';\nconst DEFAULT_TOLERANCE_SECONDS = 300;\nconst FUTURE_DRIFT_TOLERANCE_SECONDS = 30;\nconst HEX_RE = /^[0-9a-f]+$/i;\n\n/**\n * Header format follows the Stripe-style convention used elsewhere in\n * the platform: `t=<unix>,v1=<hex>`. HMAC-SHA256 is computed over\n * `${timestamp}.${rawBody}` with the agent's approval signing key. We\n * compare the digest in constant time and reject timestamps outside\n * `toleranceSeconds` to bound replay risk.\n */\nexport async function verifyCallback<T = unknown>(\n request: Request,\n resolved: ResolvedConfig,\n options: VerifyOptions = {},\n): Promise<Result<Decision<T>>> {\n const signingKey = resolveSigningKey(resolved, options.signingKey);\n if (!signingKey) {\n return err({\n code: 'approval_signing_key_missing',\n message:\n 'Cannot verify callback — set `STACKBONE_APPROVAL_SIGNING_KEY` in the container or pass `approvalSigningKey` to `createClient({...})`.',\n });\n }\n\n const header = request.headers.get(SIGNATURE_HEADER);\n if (!header) {\n return err({\n code: 'approval_invalid_signature',\n message: `Missing ${SIGNATURE_HEADER} header.`,\n });\n }\n\n const parsed = parseHeader(header);\n if (!parsed) {\n return err({\n code: 'approval_invalid_signature',\n message: 'Malformed signature header. Expected `t=<unix>,v1=<hex>`.',\n });\n }\n\n // Use a signed delta so we reject far-future timestamps (replay) while\n // still allowing the small positive clock drift typical between hosts.\n const tolerance = options.toleranceSeconds ?? DEFAULT_TOLERANCE_SECONDS;\n const now = (options.now ?? Date.now)();\n const deltaSeconds = now / 1000 - parsed.timestamp;\n if (deltaSeconds > tolerance || deltaSeconds < -FUTURE_DRIFT_TOLERANCE_SECONDS) {\n return err({\n code: 'approval_signature_expired',\n message: `Signature timestamp is outside the ${tolerance}s tolerance window.`,\n meta: { deltaSeconds, toleranceSeconds: tolerance },\n });\n }\n\n const rawBody = await readRawBody(request);\n const expected = await computeHmac(signingKey, `${parsed.timestamp}.${rawBody}`);\n if (!constantTimeEqual(expected, parsed.signature)) {\n return err({\n code: 'approval_invalid_signature',\n message: 'Signature does not match the request body.',\n });\n }\n\n let decision: Decision<T>;\n try {\n decision = JSON.parse(rawBody) as Decision<T>;\n } catch (e) {\n return err({\n code: 'approval_invalid_payload',\n message: `Callback body is not valid JSON: ${e instanceof Error ? e.message : String(e)}`,\n cause: e,\n });\n }\n\n if (!isDecision(decision)) {\n return err({\n code: 'approval_invalid_payload',\n message: 'Callback body is not a Decision<T> object.',\n });\n }\n\n return ok(decision);\n}\n\nfunction resolveSigningKey(resolved: ResolvedConfig, override?: string): string | undefined {\n return override ?? resolved.approvalSigningKey;\n}\n\nfunction parseHeader(header: string): { timestamp: number; signature: string } | null {\n let timestamp: number | undefined;\n let signature: string | undefined;\n for (const part of header.split(',')) {\n const eqIdx = part.indexOf('=');\n if (eqIdx === -1) continue;\n const key = part.slice(0, eqIdx).trim();\n const value = part.slice(eqIdx + 1).trim();\n if (!value) continue;\n if (key === 't') {\n const parsed = Number.parseInt(value, 10);\n if (Number.isFinite(parsed)) timestamp = parsed;\n } else if (key === 'v1') {\n if (HEX_RE.test(value)) signature = value.toLowerCase();\n }\n }\n if (timestamp === undefined || signature === undefined) return null;\n return { timestamp, signature };\n}\n\n/** `request.text()` consumes the body; clone upstream if you need to re-read it. */\nasync function readRawBody(request: Request): Promise<string> {\n return request.text();\n}\n\nconst ENCODER = new TextEncoder();\n\n/** @internal — exposed so the test suite can sign fixtures without forking the algorithm. */\nexport async function computeHmac(secret: string, message: string): Promise<string> {\n const key = await crypto.subtle.importKey(\n 'raw',\n ENCODER.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign'],\n );\n const signature = await crypto.subtle.sign('HMAC', key, ENCODER.encode(message));\n return Buffer.from(new Uint8Array(signature)).toString('hex');\n}\n\nfunction constantTimeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let mismatch = 0;\n for (let i = 0; i < a.length; i++) {\n mismatch |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return mismatch === 0;\n}\n\nfunction isDecision(value: unknown): value is Decision<unknown> {\n if (!value || typeof value !== 'object') return false;\n const status = (value as { status?: unknown }).status;\n return DECISION_STATUSES.includes(status as DecisionStatus);\n}\n","import { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\nimport { createApprovalTool, type ApprovalToolSpec, type ApprovalTool } from './tool';\nimport { verifyCallback, type VerifyOptions } from './verify';\n\nexport type ApprovalTopic = string;\n\nexport const DECISION_STATUSES = ['approved', 'rejected', 'timed_out', 'cancelled'] as const;\nexport type DecisionStatus = (typeof DECISION_STATUSES)[number];\nexport type ApprovalStatus = 'pending' | DecisionStatus;\n\nexport type Decision<T = unknown> =\n | {\n status: 'approved' | 'rejected';\n payload: T;\n approver: ApproverInfo;\n decidedAt: string;\n reason?: string;\n }\n | { status: 'timed_out'; decidedAt: string }\n | { status: 'cancelled'; decidedAt: string; reason?: string };\n\nexport interface ApproverInfo {\n id: string;\n email: string;\n name?: string;\n}\n\nexport interface ApprovalRequestOptions<T = unknown> {\n topic: ApprovalTopic;\n payload: T;\n title?: string;\n description?: string;\n /** Path on the agent the control plane will POST the decision to (resolved against the agent's public URL server-side). */\n onDecide: string;\n /** ISO 8601 duration (`'24h'`) or milliseconds. Default 24h. */\n timeout?: string | number;\n onTimeout?: 'reject' | 'approve' | 'ignore';\n approver?: string;\n /** Same `(topic, idempotencyKey)` returns the same `approvalId` instead of creating a new one. */\n idempotencyKey?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ApprovalRequest {\n approvalId: string;\n status: 'pending';\n callbackUrl: string;\n expiresAt: string;\n}\n\nexport interface ApprovalRecord<T = unknown> {\n approvalId: string;\n topic: ApprovalTopic;\n status: ApprovalStatus;\n payload: T;\n decision?: Decision<T>;\n createdAt: string;\n expiresAt: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface ApprovalListOptions {\n status?: ApprovalStatus;\n topic?: ApprovalTopic;\n cursor?: string;\n /** 1..100. Default 50. */\n limit?: number;\n}\n\nexport interface ApprovalListResult<T = unknown> {\n items: ApprovalRecord<T>[];\n nextCursor?: string;\n}\n\nconst DEFAULT_APPROVAL_TIMEOUT_MS = 24 * 60 * 60 * 1000;\nconst DEFAULT_LIST_LIMIT = 50;\nconst MAX_LIST_LIMIT = 100;\n\n/**\n * `client.approval` — AGENT-LOCAL. The HITL pause is recorded directly in the\n * agent's own `stackbone_platform.approvals` table over the shared\n * `client.database` pool; there is no control-plane POST anymore. The RESUME\n * half stays Studio-driven: a human decides in Studio, the control plane signs\n * an HMAC callback to `callbackUrl`, and the agent reconciles it with\n * `verify()` (local crypto — see `verify.ts`).\n *\n * The write populates only the columns the cloud `create()` used to set\n * (topic/payload/callback_url/idempotency_key/fallback/metadata/timeout_at;\n * `schema` was sourced from a DTO field the SDK options object does not carry,\n * so it stays NULL). `workspace_id`/`agent_id`/`run_id` stay NULL exactly as\n * they were on the control-plane path — the idempotency `ON CONFLICT` relies on\n * `workspace_id` being NULL with `NULLS NOT DISTINCT` (migration 0008).\n */\nexport class ApprovalFacade {\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Lazy accessor for `client.database` — reaches the shared `Sql` via `.shared().$client`. */\n private readonly _getDatabase: () => DatabaseModule,\n ) {}\n\n async request<T = unknown>(options: ApprovalRequestOptions<T>): Promise<Result<ApprovalRequest>> {\n const validation = validateRequest(options);\n if (validation) return validation;\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n const timeoutMs = parseTimeoutMs(options.timeout) ?? DEFAULT_APPROVAL_TIMEOUT_MS;\n const fallback = onTimeoutToFallback(options.onTimeout);\n // Today the decide endpoint resolves the absolute URL at dispatch time, so\n // the raw path is enough — symmetric with the old cloud `create()`.\n const callbackUrl = options.onDecide;\n\n try {\n const rows = await sql.data<InsertedRow[]>`\n INSERT INTO stackbone_platform.approvals (\n topic, payload, callback_url, idempotency_key,\n fallback, metadata, timeout_at\n ) VALUES (\n ${options.topic},\n ${JSON.stringify(options.payload ?? {})}::jsonb,\n ${callbackUrl},\n ${options.idempotencyKey ?? null},\n ${fallback},\n ${JSON.stringify(options.metadata ?? {})}::jsonb,\n now() + (${timeoutMs}::int * interval '1 millisecond')\n )\n ON CONFLICT (workspace_id, topic, idempotency_key)\n WHERE idempotency_key IS NOT NULL\n DO UPDATE SET topic = EXCLUDED.topic\n RETURNING id, callback_url,\n to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS created_at,\n to_char(timeout_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS timeout_at\n `;\n const row = rows[0];\n if (!row) {\n return err({ code: 'approval_persist_failed', message: 'Failed to persist approval.' });\n }\n return ok({\n approvalId: row.id,\n status: 'pending',\n callbackUrl: row.callback_url ?? '',\n expiresAt: row.timeout_at ?? row.created_at,\n });\n } catch (cause) {\n return err({\n code: 'approval_persist_failed',\n message: 'Failed to write the approval to the agent database.',\n cause,\n });\n }\n }\n\n async cancel(approvalId: string, reason?: string): Promise<Result<void>> {\n if (!approvalId) {\n return err({ code: 'approval_invalid_request', message: '`approvalId` is required.' });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const patch = reason ? { cancelReason: reason } : {};\n await sql.data`\n UPDATE stackbone_platform.approvals\n SET status = 'cancelled',\n decided_at = now(),\n metadata = metadata || ${JSON.stringify(patch)}::jsonb\n WHERE id = ${approvalId}::uuid AND status = 'pending'\n `;\n return ok(undefined);\n } catch (cause) {\n return err({\n code: 'approval_cancel_failed',\n message: `Failed to cancel approval \\`${approvalId}\\`.`,\n cause,\n });\n }\n }\n\n async get<T = unknown>(approvalId: string): Promise<Result<ApprovalRecord<T>>> {\n if (!approvalId) {\n return err({ code: 'approval_invalid_request', message: '`approvalId` is required.' });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await sql.data<ApprovalRow[]>`\n SELECT id, topic, status, payload, metadata,\n to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS created_at,\n to_char(timeout_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS timeout_at\n FROM stackbone_platform.approvals\n WHERE id = ${approvalId}::uuid\n LIMIT 1\n `;\n const row = rows[0];\n if (!row) {\n return err({\n code: 'approval_not_found',\n message: `Approval \\`${approvalId}\\` not found.`,\n meta: { approvalId },\n });\n }\n return ok(toRecord<T>(row));\n } catch (cause) {\n return err({\n code: 'approval_unavailable',\n message: `Failed to read approval \\`${approvalId}\\`.`,\n cause,\n });\n }\n }\n\n async list<T = unknown>(\n options: ApprovalListOptions = {},\n ): Promise<Result<ApprovalListResult<T>>> {\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n const limit = clampLimit(options.limit);\n try {\n const rows = await sql.data<ApprovalRow[]>`\n SELECT id, topic, status, payload, metadata,\n to_char(created_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS created_at,\n to_char(timeout_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS timeout_at\n FROM stackbone_platform.approvals\n WHERE (${options.status ?? null}::text IS NULL OR status = ${options.status ?? null})\n AND (${options.topic ?? null}::text IS NULL OR topic = ${options.topic ?? null})\n ORDER BY created_at DESC, id DESC\n LIMIT ${limit}\n `;\n return ok({ items: rows.map((row) => toRecord<T>(row)) });\n } catch (cause) {\n return err({\n code: 'approval_unavailable',\n message: 'Failed to list approvals.',\n cause,\n });\n }\n }\n\n /**\n * Local crypto verification — does not touch the database, so it has the same\n * shape it had on the control-plane surface. Auditing rule: a method gates\n * iff it issues a datapath call; this one never does.\n */\n verify<T = unknown>(request: Request, options?: VerifyOptions): Promise<Result<Decision<T>>> {\n return verifyCallback<T>(request, this._resolved, options);\n }\n\n /**\n * Pure factory — returns an `ApprovalTool` whose `invoke()` ultimately calls\n * back into `ApprovalFacade.request`.\n */\n tool<I, O>(spec: ApprovalToolSpec<I, O>): ApprovalTool<I, O> {\n return createApprovalTool(this, spec);\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'approval_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n}\n\ninterface InsertedRow {\n id: string;\n callback_url: string | null;\n created_at: string;\n timeout_at: string | null;\n}\n\ninterface ApprovalRow {\n id: string;\n topic: string;\n status: ApprovalStatus;\n payload: unknown;\n metadata: Record<string, unknown> | null;\n created_at: string;\n timeout_at: string | null;\n}\n\nfunction toRecord<T>(row: ApprovalRow): ApprovalRecord<T> {\n const record: ApprovalRecord<T> = {\n approvalId: row.id,\n topic: row.topic,\n status: row.status,\n payload: row.payload as T,\n createdAt: row.created_at,\n expiresAt: row.timeout_at ?? row.created_at,\n };\n if (row.metadata) record.metadata = row.metadata;\n return record;\n}\n\nfunction validateRequest(options: ApprovalRequestOptions): Result<ApprovalRequest> | null {\n if (!options.topic?.trim()) {\n return err({ code: 'approval_invalid_request', message: '`topic` is required.' });\n }\n if (!options.onDecide?.trim()) {\n return err({ code: 'approval_invalid_request', message: '`onDecide` is required.' });\n }\n return null;\n}\n\nfunction clampLimit(limit?: number): number {\n if (limit === undefined) return DEFAULT_LIST_LIMIT;\n if (!Number.isFinite(limit) || limit <= 0) return DEFAULT_LIST_LIMIT;\n return Math.min(Math.floor(limit), MAX_LIST_LIMIT);\n}\n\nfunction onTimeoutToFallback(\n onTimeout: ApprovalRequestOptions['onTimeout'],\n): 'approve' | 'reject' | 'timeout' | null {\n if (onTimeout === 'approve') return 'approve';\n if (onTimeout === 'reject') return 'reject';\n if (onTimeout === 'ignore') return 'timeout';\n return null;\n}\n\n/**\n * Parses the `timeout` option into milliseconds. Accepts a raw number of ms or\n * a compact duration string (`'24h'`, `'90m'`, `'30s'`, `'7d'`). Returns `null`\n * for anything unparseable so the caller falls back to the 24h default.\n */\nfunction parseTimeoutMs(timeout: ApprovalRequestOptions['timeout']): number | null {\n if (typeof timeout === 'number') {\n return Number.isFinite(timeout) && timeout > 0 ? Math.floor(timeout) : null;\n }\n if (typeof timeout !== 'string') return null;\n const match = /^(\\d+)\\s*(ms|s|m|h|d)$/i.exec(timeout.trim());\n if (!match) return null;\n const value = Number.parseInt(match[1] as string, 10);\n const unit = (match[2] as string).toLowerCase();\n const factor: Record<string, number> = {\n ms: 1,\n s: 1000,\n m: 60_000,\n h: 3_600_000,\n d: 86_400_000,\n };\n return value * (factor[unit] ?? 1);\n}\n\nexport type { VerifyOptions } from './verify';\nexport type { ApprovalToolSpec, ApprovalTool } from './tool';\n","import { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\n// `client.config` explicit read — AGENT-LOCAL. Reads the singleton\n// `stackbone_platform.agent_config` row (id = 1) over the shared\n// `client.database` pool and returns the requested key out of its JSON\n// payload. This converges the SDK's explicit `client.config.get()` onto the\n// same agent-DB read path the runtime harness uses to auto-inject `ctx.config`\n// per invoke (`neon-agent-config.ts`). No control-plane HTTP anymore.\n\ninterface AgentConfigRow {\n payload: Record<string, unknown> | null;\n}\n\nexport class ConfigFacade {\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Lazy accessor for `client.database` — see `SecretsFacade`. */\n private readonly _getDatabase: () => DatabaseModule,\n ) {\n // `_resolved` is retained for symmetry with the other facades and future\n // config-namespacing needs; the agent config row is global per agent DB.\n void this._resolved;\n }\n\n async get<T = unknown>(key: string): Promise<Result<T>> {\n if (!key.trim()) {\n return err({ code: 'config_invalid_request', message: '`key` is required.' });\n }\n const payload = await this.loadPayload();\n if (payload.error) return err(payload.error);\n if (!payload.data || !(key in payload.data)) {\n return err({\n code: 'config_not_found',\n message: `Config key \\`${key}\\` is not set for this agent.`,\n meta: { key },\n });\n }\n return ok(payload.data[key] as T);\n }\n\n /**\n * Keys absent from the agent's config come back as omissions in the\n * response — the returned map only contains entries the agent DB actually\n * has, so callers must access fields with `?.` (the return type is\n * `Partial<T>`).\n */\n async getMany<T extends Record<string, unknown> = Record<string, unknown>>(\n keys: string[],\n ): Promise<Result<Partial<T>>> {\n if (!Array.isArray(keys) || keys.length === 0) {\n return err({ code: 'config_invalid_request', message: '`keys` must be a non-empty array.' });\n }\n const payload = await this.loadPayload();\n if (payload.error) return err(payload.error);\n const out: Record<string, unknown> = {};\n for (const key of keys) {\n if (payload.data && key in payload.data) out[key] = payload.data[key];\n }\n return ok(out as Partial<T>);\n }\n\n private async loadPayload(): Promise<Result<Record<string, unknown> | null>> {\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await sql.data<AgentConfigRow[]>`\n SELECT payload FROM stackbone_platform.agent_config WHERE id = 1\n `;\n return ok(rows[0]?.payload ?? null);\n } catch (cause) {\n return err({\n code: 'config_unavailable',\n message: 'Failed to read agent config from the agent database.',\n cause,\n });\n }\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'config_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n}\n","import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js';\nimport postgres, { type Sql } from 'postgres';\n\n/**\n * Public surface a creator can use through `client.database`. We pin it to the\n * `postgres-js` Drizzle wrapper because that is the only driver `@stackbone/sdk`\n * ships and the only one `STACKBONE_POSTGRES_URL` is contracted to point at.\n *\n * Re-exporting Drizzle's own type instead of inventing a structural alias keeps\n * the surface 1:1 with what `drizzle-orm` documents and what `@stackbone/sdk/db`\n * re-exports — so types flow end to end without translation.\n */\nexport type DrizzleClient = PostgresJsDatabase<Record<string, never>> & { $client: Sql };\n\n/**\n * Default factory used by `DatabaseModule`. Spied on in tests via\n * `vi.spyOn(lazyClient, 'createDrizzleClient')` to assert the proxy stays lazy\n * and to swap the real connection out for a fake builder. Tweaking the\n * `postgres()` options here (pool size, prepare flag, etc.) keeps that surface\n * in one place — for now we let the postgres-js defaults stand.\n *\n * Cold-start reconnect: after a Fly Machines `auto_stop_machines=suspend` the\n * pool's sockets may be dead. The first query then surfaces a postgres-js\n * `CONNECTION_TERMINATED`/`CONNECTION_ENDED`/`ECONNRESET`. `client.database`\n * traps that case in `internal.ts` (see `runWithColdStartRetry`), invalidates\n * the cached handle, calls `createDrizzleClient` again to rebuild the pool\n * against `STACKBONE_POSTGRES_URL`, and replays the query exactly once.\n */\nexport function createDrizzleClient(connectionString: string): DrizzleClient {\n const sql = postgres(connectionString);\n // `drizzle(sql)` returns `PostgresJsDatabase & { $client: Sql }`; the cast\n // pins the public alias so internal sibling modules (e.g. `client.rag`) can\n // reach the underlying postgres-js `Sql` via `handle.$client` and share the\n // same pool instead of opening their own.\n return drizzle(sql) as DrizzleClient;\n}\n","import { type ModuleGate } from '../../../contract/module-gate';\nimport { type SdkErrorCode } from '../../../errors/codes';\nimport { type SdkError } from '../../../result';\n\nimport { createDrizzleClient, type DrizzleClient } from './lazy-client';\n\n/**\n * Implementation of the **shared-handles pattern** for the agent's\n * Postgres pool. Cross-surface consumers (RAG today, memory / queues\n * tomorrow) do NOT import from this file — they reach the shared handle\n * through the canonical public accessor `database.shared()` on the live\n * `client.database` surface, which delegates here. See the SDK README +\n * CHANGELOG for the pattern itself.\n *\n * This file is intentionally NOT re-exported from `libs/sdk/src/index.ts`\n * nor from `libs/sdk/src/db/index.ts`. It also has no sibling-relative\n * importers anymore — that was the old escape hatch and the source of\n * the friction P4 removed. The one in-repo importer outside this folder\n * is the test seam `__resetDatabaseHandleForTesting`.\n *\n * Single-pool invariant: an agent process opens at most one `postgres()`\n * pool against the resolved `databaseUrl`. The first reader (whichever\n * side calls `database.shared()` / `database.raw()` / a query-builder verb\n * first) builds the pool; every subsequent caller reuses it. Checked by\n * `nx test sdk` via `shared-handle.spec.ts` which asserts\n * `createDrizzleClient` is invoked exactly once across many callers.\n *\n * Connection string ownership: `DatabaseModule` reads\n * `ResolvedConfig.databaseUrl` (resolved exactly once when the client was\n * built) and passes it in through `getDatabaseHandle(url)`. The first call\n * pins that URL on the module-level cache; subsequent callers (including\n * the cold-start retry path) reuse it. The resolver is the single seam\n * that reads `process.env['STACKBONE_POSTGRES_URL']`.\n */\nlet cachedHandle: DrizzleClient | null = null;\nlet cachedUrl: string | undefined;\n\n/**\n * Implementation detail of `DatabaseModule.shared()` — returns the\n * process-wide Drizzle handle bound to the resolved `databaseUrl`. The\n * first call constructs the underlying `postgres()` pool; subsequent\n * calls return the same Drizzle instance — and therefore reuse the same\n * pool.\n *\n * `connectionString` is the resolved URL the caller already pulled from\n * `ResolvedConfig.databaseUrl`. Passing `undefined` (no explicit value\n * and no cached URL from a previous call) raises\n * `SdkError('database_not_configured')`, matching the public\n * `client.database` setup-bug shape. Cross-surface consumers should call\n * `client.database.shared()` instead of importing this function directly.\n */\nexport function getDatabaseHandle(connectionString?: string): DrizzleClient {\n if (cachedHandle) return cachedHandle;\n const url = connectionString ?? cachedUrl;\n if (!url) {\n throw new DatabaseNotConfiguredError();\n }\n cachedUrl = url;\n cachedHandle = createDrizzleClient(url);\n return cachedHandle;\n}\n\nconst DATABASE_NOT_CONFIGURED_MESSAGE =\n 'Cannot reach the agent database — set `STACKBONE_POSTGRES_URL` in the container or run `stackbone dev` to spin up a local emulator.';\n\n/**\n * Mirrors `DatabaseModule`'s setup-bug error so internal callers see the same\n * `code`/`message` contract as the public `client.database` surface.\n */\nclass DatabaseNotConfiguredError extends Error implements SdkError {\n readonly code = 'database_not_configured';\n\n constructor() {\n super(DATABASE_NOT_CONFIGURED_MESSAGE);\n this.name = 'DatabaseNotConfiguredError';\n }\n}\n\n/**\n * Test-only reset hook for the process-wide singleton. Imported by spec\n * files in this folder and by `rag/shared-pool.spec.ts` to clear the\n * cache between tests; it is intentionally not re-exported from\n * `libs/sdk/src/index.ts` nor `libs/sdk/src/db/index.ts` (same as\n * everything else in this implementation file). The name is loud on\n * purpose so a production caller would have to mean it.\n */\nexport function __resetDatabaseHandleForTesting(): void {\n cachedHandle = null;\n cachedUrl = undefined;\n}\n\n// postgres-js connection codes raised when the underlying socket died (Fly\n// Machines suspended us between queries). SQLSTATE-shaped application errors\n// are excluded — rebuilding the pool only fixes broken sockets.\nconst POOL_TERMINATED_ERROR_CODES = new Set([\n 'CONNECTION_ENDED',\n 'CONNECTION_CLOSED',\n 'CONNECTION_DESTROYED',\n 'CONNECTION_TERMINATED',\n 'ECONNRESET',\n]);\n\nfunction isPoolTerminatedError(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false;\n const code = (error as { code?: unknown }).code;\n return typeof code === 'string' && POOL_TERMINATED_ERROR_CODES.has(code);\n}\n\n// Runs `firstAttempt`; on a postgres-js connection-terminated rejection,\n// rebuilds the singleton pool once and runs `retryAttempt` against the fresh\n// handle. Non-pool errors pass through. If retry also fails, surfaces the\n// original error verbatim — single retry, no looping. One stderr line per\n// retry so operators see cold-start frequency in production.\nasync function runWithColdStartRetry<T>(\n firstAttempt: () => Promise<T> | T,\n retryAttempt: () => Promise<T> | T,\n): Promise<T> {\n try {\n return await firstAttempt();\n } catch (error) {\n if (!isPoolTerminatedError(error)) throw error;\n process.stderr.write(\n `[stackbone/sdk] database cold-start reconnect: rebuilding pool after ${\n (error as { code?: string }).code ?? 'unknown'\n }\\n`,\n );\n cachedHandle = null;\n try {\n return await retryAttempt();\n } catch {\n throw error;\n }\n }\n}\n\n// Thunk-shaped wrapper consumed by `client.database.transaction(...)` and\n// any future internal caller that does not flow through the chainable proxy.\n// `gate` is awaited before the first attempt; on failure, the gate's\n// `SdkError` is thrown as an `Error & { code, message, meta? }` so the\n// surface matches the synchronous `DatabaseNotConfiguredError` and the rest\n// of the SDK's `database` API (which throws on misuse rather than returning\n// `Result`).\nexport function withColdStartRetry<T>(\n attempt: () => Promise<T> | T,\n gate?: ModuleGate,\n): Promise<T> {\n if (!gate) return runWithColdStartRetry(attempt, attempt);\n return (async () => {\n await assertGate(gate);\n return runWithColdStartRetry(attempt, attempt);\n })();\n}\n\n/**\n * Awaits `gate()` and throws an `Error & SdkError` when the contract handshake\n * blocks the call. Mirrors the shape of `DatabaseNotConfiguredError` so the\n * `client.database` surface stays consistent: setup-bug and gating errors\n * both throw a tagged `Error` with `code` / `message` / `meta`.\n */\nasync function assertGate(gate: ModuleGate): Promise<void> {\n const result = await gate();\n if (result.error === null) return;\n throw new GateBlockedError(result.error);\n}\n\nclass GateBlockedError extends Error implements SdkError {\n readonly code: SdkErrorCode;\n readonly meta?: Record<string, unknown>;\n override readonly cause?: unknown;\n\n constructor(sdkError: SdkError) {\n super(sdkError.message);\n this.name = 'GateBlockedError';\n this.code = sdkError.code;\n if (sdkError.meta) this.meta = sdkError.meta;\n if (sdkError.cause !== undefined) this.cause = sdkError.cause;\n }\n}\n\n// Chainable thenable proxy over a Drizzle query builder. `db.select().from(t)`\n// records the chain; only the terminal `then`/`catch`/`finally` triggers\n// execution. `seed` is the builder primed by the initial `handle.select(...)`\n// call so happy-path spies fire once; on retry we discard `seed`, rebuild the\n// pool, ask `rootCall` for a fresh builder, and replay the chain.\ntype ChainStep = { kind: 'call'; key: string; args: unknown[] } | { kind: 'get'; key: string };\n\nexport function createRetriableQueryBuilder(\n seed: unknown,\n rootCall: (handle: DrizzleClient) => unknown,\n gate?: ModuleGate,\n): unknown {\n return buildProxy([], seed, rootCall, gate);\n}\n\nfunction buildProxy(\n steps: ChainStep[],\n seed: unknown,\n rootCall: (handle: DrizzleClient) => unknown,\n gate: ModuleGate | undefined,\n): unknown {\n const target = function () {\n /* proxy traps every operation */\n };\n const run = async (): Promise<unknown> => {\n if (gate) await assertGate(gate);\n return runWithColdStartRetry(\n () => replayChain(seed, steps),\n () => replayChain(rootCall(getDatabaseHandle()), steps),\n );\n };\n return new Proxy(target, {\n get(_t, key) {\n if (key === 'then') {\n return (resolve: (v: unknown) => unknown, reject?: (e: unknown) => unknown) =>\n run().then(resolve, reject);\n }\n if (key === 'catch') {\n return (reject: (e: unknown) => unknown) => run().catch(reject);\n }\n if (key === 'finally') {\n return (cb: () => void) => run().finally(cb);\n }\n return buildProxy([...steps, { kind: 'get', key: String(key) }], seed, rootCall, gate);\n },\n apply(_t, _this, args) {\n // Previous step was the property access that produced this callable;\n // promote it from `get` to `call` carrying the args so replay invokes\n // the right method on the rebuilt handle.\n const last = steps[steps.length - 1];\n if (!last || last.kind !== 'get') {\n return buildProxy([...steps, { kind: 'call', key: '', args }], seed, rootCall, gate);\n }\n const next: ChainStep[] = [...steps.slice(0, -1), { kind: 'call', key: last.key, args }];\n return buildProxy(next, seed, rootCall, gate);\n },\n });\n}\n\nfunction replayChain(seed: unknown, steps: ChainStep[]): unknown {\n let current: unknown = seed;\n for (const step of steps) {\n if (current === null || current === undefined) return current;\n if (step.kind === 'get') {\n current = (current as Record<string, unknown>)[step.key];\n continue;\n }\n const parent = current as Record<string, unknown>;\n const fn = parent[step.key];\n if (typeof fn !== 'function') {\n throw new TypeError(\n `[stackbone/sdk] cold-start retry could not replay \"${step.key}\": not a function on the rebuilt handle`,\n );\n }\n current = (fn as (...a: unknown[]) => unknown).apply(parent, step.args);\n }\n return current;\n}\n","import { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\n\nimport { type DrizzleClient } from './lazy-client';\nimport {\n createRetriableQueryBuilder,\n getDatabaseHandle,\n withColdStartRetry,\n} from './shared-handle';\n\n// Tiny helper: prime the singleton handle with `rootCall(handle)`, hand the\n// resulting builder + factory to the proxy. Keeps the per-verb declarations\n// short and consistent. When a `gate` is provided, it is awaited at the\n// terminal `await` of the chainable proxy and throws a tagged\n// `GateBlockedError` (carrying `code` / `message` / `meta`) when the\n// negotiated contract refuses the call. The connection URL was resolved\n// once at `resolveConfig` time and is threaded down to the singleton on\n// first call; the retry path inside `createRetriableQueryBuilder` reuses\n// the URL already cached on the singleton.\nfunction retriable(\n rootCall: (handle: DrizzleClient) => unknown,\n databaseUrl: string | undefined,\n gate?: ModuleGate,\n): unknown {\n return createRetriableQueryBuilder(rootCall(getDatabaseHandle(databaseUrl)), rootCall, gate);\n}\n\n/**\n * `client.database` is a lazy wrapper over a `drizzle()` instance bound to\n * the resolved `databaseUrl` (config first, then `STACKBONE_POSTGRES_URL`\n * at `resolveConfig` time). The underlying postgres-js connection and the\n * Drizzle facade are constructed on the first method call so partner SDKs\n * only pay the cost when the agent actually touches the database.\n *\n * Native Drizzle methods (`select`, `insert`, `update`, `delete`, `transaction`,\n * `execute`) are exposed verbatim — we explicitly avoid wrapping them in a\n * Result envelope here. Drizzle already throws on misuse and returns typed rows\n * on success; mirroring its API keeps the contract identical to what the\n * `@stackbone/sdk/db` re-exports document, so creators write idiomatic Drizzle.\n *\n * Missing `STACKBONE_POSTGRES_URL` raises `SdkError('database_not_configured')`\n * with an actionable hint that points to `stackbone dev`. This is a creator\n * setup bug, not something the agent's code can recover from at runtime.\n *\n * Methods are declared with their full Drizzle generic signatures (rather than\n * `(...args) => Drizzle[k](...args)` arrow properties) so the inferred row\n * types from `pgTable(...)` flow end-to-end into the caller, which is the\n * promise the `@stackbone/sdk/db` re-export makes.\n *\n * The actual `postgres()` pool and the Drizzle handle are owned by the\n * module-internal singleton in `./shared-handle.ts`. The shared handle is\n * exposed to other SDK surfaces (RAG today, memory / queues tomorrow)\n * through the `shared()` method below — the **canonical accessor** of\n * the SDK's shared-handles pattern. Same instance every call → one pool\n * per agent process. See `shared-handle.spec.ts` for the invariant.\n */\nexport class DatabaseModule {\n private readonly _gate: ModuleGate | undefined;\n private readonly _databaseUrl: string | undefined;\n\n // The connection URL is resolved exactly once at `resolveConfig` time and\n // threaded down to `getDatabaseHandle` on first access; the singleton\n // caches it for the cold-start retry path. The resolver is the single\n // seam that touches `process.env` for this value.\n constructor(\n resolved: ResolvedConfig,\n /**\n * Test seam — see `ModuleGate`. Defaults to the lazy contract gate.\n * The gate is awaited at the terminal `await` of every Drizzle chain\n * (`select/insert/update/delete/execute/transaction`); when it returns\n * an error, a tagged `GateBlockedError` is thrown so callers see the\n * same `Error & { code, message, meta }` surface as the existing\n * `database_not_configured` setup-bug.\n */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('database', resolved);\n this._databaseUrl = resolved.databaseUrl;\n }\n\n /**\n * Escape hatch — returns Drizzle's relational query builder verbatim. The\n * contract gate does NOT fire here because the surface is a synchronous\n * accessor; the user can still bypass the gate via `client.database.raw()`\n * for the same reason. Audit: `query` and `raw()` are intentionally\n * ungated escape hatches; the standard `select/insert/update/delete/\n * execute/transaction` path is fully gated.\n */\n get query(): DrizzleClient['query'] {\n return getDatabaseHandle(this._databaseUrl).query;\n }\n\n // Each query-builder verb invokes Drizzle eagerly (handle construction is\n // observable to tests) and wraps the result in a chainable thenable proxy.\n // Intermediate hops (`from`, `where`, ...) are recorded; only the terminal\n // `await` runs the chain, so a stale pool after a Fly Machines suspend\n // rebuilds and replays the chain exactly once via `createRetriableQueryBuilder`.\n // The contract gate is awaited at the same terminal step.\n select: DrizzleClient['select'] = ((...args: Parameters<DrizzleClient['select']>) =>\n retriable((h) => h.select(...args), this._databaseUrl, this._gate)) as DrizzleClient['select'];\n\n insert: DrizzleClient['insert'] = ((...args: Parameters<DrizzleClient['insert']>) =>\n retriable((h) => h.insert(...args), this._databaseUrl, this._gate)) as DrizzleClient['insert'];\n\n update: DrizzleClient['update'] = ((...args: Parameters<DrizzleClient['update']>) =>\n retriable((h) => h.update(...args), this._databaseUrl, this._gate)) as DrizzleClient['update'];\n\n delete: DrizzleClient['delete'] = ((...args: Parameters<DrizzleClient['delete']>) =>\n retriable((h) => h.delete(...args), this._databaseUrl, this._gate)) as DrizzleClient['delete'];\n\n // `execute()` returns Drizzle's `PgRaw` thenable for raw SQL — same\n // chainable proxy treatment as the query-builder verbs above.\n execute: DrizzleClient['execute'] = ((...args: Parameters<DrizzleClient['execute']>) =>\n retriable(\n (h) => h.execute(...args),\n this._databaseUrl,\n this._gate,\n )) as DrizzleClient['execute'];\n\n // `transaction()` takes a creator-supplied callback and returns a promise,\n // so it goes through the thunk-shaped wrapper. Any cold start mid-tx\n // rebuilds and replays the whole transaction; postgres-js will not commit\n // a half-baked tx. The contract gate fires before the first attempt.\n transaction: DrizzleClient['transaction'] = ((\n ...args: Parameters<DrizzleClient['transaction']>\n ) =>\n withColdStartRetry(\n () => getDatabaseHandle(this._databaseUrl).transaction(...args),\n this._gate,\n )) as DrizzleClient['transaction'];\n\n /**\n * Canonical accessor for the **shared-handles pattern**. Returns the\n * process-wide Drizzle handle backing `client.database`. Cross-surface\n * SDK consumers (RAG today, memory / queues tomorrow) call this — never\n * the implementation-detail singleton in `./shared-handle.ts` — to\n * ensure they share the one `postgres()` pool the agent process owns\n * against `STACKBONE_POSTGRES_URL`.\n *\n * Contract: same input → same instance. Calling `shared()` twice in the\n * same process returns the same reference; the underlying postgres-js\n * `Sql` is reachable as `shared().$client` for callers (e.g. RAG) that\n * need the template-tag function instead of the Drizzle facade.\n *\n * Like `raw()`, this is a synchronous accessor and intentionally does\n * NOT consult the contract gate — surfaces that gate behaviour gate it\n * at their own call sites (`pipeline.ingest`, etc.), not at handle\n * acquisition. Configuration errors (`database_not_configured`) throw\n * with the same tagged `Error` shape every other `client.database`\n * surface uses.\n */\n shared(): DrizzleClient {\n return getDatabaseHandle(this._databaseUrl);\n }\n\n /**\n * Escape hatch for **creator** callers that want the raw Drizzle handle\n * (e.g. to pass it to a library that expects `PostgresJsDatabase`).\n * Functionally identical to `shared()` — both return the same singleton\n * and trigger the same lazy initialisation — but kept under a distinct\n * name because the audiences differ: `shared()` is consumed by other\n * SDK surfaces and documents the cross-surface contract; `raw()` is\n * documented as the creator's escape hatch out of the structured\n * `select/insert/...` surface. Reading either intentionally does NOT\n * consult the contract gate; the caller is opting out of the SDK's\n * structured surface.\n */\n raw(): DrizzleClient {\n return this.shared();\n }\n}\n","// `@stackbone/prompt-compiler` — the deliberately minimal Mustache-subset\n// template engine shared by the SDK (`client.prompts.compile`), the cloud\n// `POST .../prompts/:key/preview` endpoint, the emulator's equivalent route,\n// and (eventually) Studio's in-browser preview pane.\n//\n// THE WHOLE SYNTAX is `{{var}}`, where `var` matches\n// `[a-zA-Z_][a-zA-Z0-9_]*` with optional surrounding whitespace inside the\n// braces (`{{ var }}`). NOTHING ELSE is special:\n// - `{{#if x}}` / `{{/if}}` / `{{#each}}` — conditionals/loops are NOT\n// parsed; they pass through verbatim as literal text.\n// - `{{!comment}}`, `{{> partial}}`, `{{var | filter}}`, `{{a.b}}` — every\n// one of these fails the strict `var` pattern, so the whole `{{...}}`\n// token is left untouched in the output.\n//\n// This is the law per the prompts PRD: prompts stay reviewable artefacts and\n// the engine has no expression surface to reason about for security. The\n// `treats {{#if}} as a literal` test enforces it — any future power\n// (conditionals, loops, helpers) requires a new ADR and a contract bump.\n//\n// Zero runtime dependencies. No `mustache`, no `handlebars`, no parser\n// generator — a single regex match loop and `String(value)` coercion.\n\n/** A `{{var}}` placeholder name: a JS-identifier-like token. */\nconst PLACEHOLDER = /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\n\nexport interface CompileOk {\n ok: true;\n output: string;\n}\n\nexport type CompileError =\n | { code: 'missing_var'; name: string }\n | { code: 'invalid_syntax'; detail: string };\n\nexport interface CompileFail {\n ok: false;\n error: CompileError;\n}\n\nexport type CompileResult = CompileOk | CompileFail;\n\n/**\n * Substitute every `{{var}}` in `template` with `String(vars[var])`.\n *\n * - A placeholder whose name is absent from `vars` (or maps to `undefined`)\n * fails fast with `{ ok: false, error: { code: 'missing_var', name } }`.\n * This is what surfaces a typo to the creator immediately instead of\n * sending an LLM call with a literal `{{name}}` in it.\n * - Extra keys in `vars` that the template never references are silently\n * ignored, so a creator can pass a generic context object.\n * - Values are coerced with `String(value)`: numbers, booleans and `null`\n * stringify per JS defaults (`null` -> `\"null\"`); objects become\n * `[object Object]` (creators stringify their own objects).\n */\nexport function compile(template: string, vars: Record<string, unknown>): CompileResult {\n let missing: string | null = null;\n const output = template.replace(PLACEHOLDER, (_match, name: string) => {\n if (missing !== null) return _match;\n const value = vars[name];\n // `undefined` (key absent or explicitly undefined) is a missing var. We\n // record the first miss and stop substituting meaningfully; the caller\n // sees the error, not a half-rendered string.\n if (value === undefined) {\n missing = name;\n return _match;\n }\n return String(value);\n });\n\n if (missing !== null) {\n return { ok: false, error: { code: 'missing_var', name: missing } };\n }\n return { ok: true, output };\n}\n\n/**\n * List the distinct `{{var}}` names referenced by `template`, in first-seen\n * order with no duplicates. Used for validation and for Studio's diff view\n * (\"which vars were added/removed between versions\"). Pure; never throws.\n */\nexport function extractVars(template: string): string[] {\n const seen = new Set<string>();\n const ordered: string[] = [];\n for (const match of template.matchAll(PLACEHOLDER)) {\n const name = match[1];\n if (name !== undefined && !seen.has(name)) {\n seen.add(name);\n ordered.push(name);\n }\n }\n return ordered;\n}\n","import { compile as compileTemplate, extractVars } from '@stackbone/prompt-compiler';\nimport { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\n// `client.prompts` — AGENT-LOCAL. The agent reads its own prompts straight out\n// of `stackbone_platform.prompts` / `prompt_versions` (the canonical agent-DB\n// store, migration 0013) over the shared `client.database` pool and compiles\n// them with the zero-dependency `@stackbone/prompt-compiler` (Mustache subset:\n// `{{var}}` only). There is no control-plane HTTP round-trip — the agent owns\n// its data, exactly like `client.secrets` and `client.config`.\n//\n// Connection ownership: like `client.rag` / `client.secrets`, this surface\n// reaches the underlying `postgres-js` `Sql` through\n// `client.database.shared().$client`, so the agent process opens exactly one\n// pool against `STACKBONE_POSTGRES_URL`.\n//\n// Soft delete: `delete(key)` stamps `deleted_at` and keeps the rows; reads\n// filter `deleted_at IS NULL` and return `prompts_not_found` for a removed key.\n//\n// Schema gating: a `42P01` (relation does not exist) from any read/write means\n// the prompts migration has not been applied — the facade surfaces\n// `prompts_not_configured` with a \"run `stackbone db migrate up`\" hint instead\n// of a raw Postgres error.\n\nconst PG_UNDEFINED_TABLE = '42P01';\nconst PG_UNIQUE_VIOLATION = '23505';\n\n/**\n * A prompt's current/active state. Key-based (workspace-unique). `template` is\n * the current version's content; `version` is the live version number.\n */\nexport interface Prompt {\n key: string;\n name: string;\n description: string | null;\n /** The current version's content. */\n template: string;\n /** The live version number. The first `create` produces version `1`. */\n version: number;\n /** `{{var}}` names referenced by the current version. */\n variables: readonly string[];\n metadata: Record<string, unknown> | null;\n /** ISO 8601 UTC timestamp. */\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface GetPromptOptions {\n /** Pin a specific version. Omitted -> current/latest. */\n version?: number;\n}\n\nexport interface ListPromptsOptions {\n /** 1..100. Default 50. */\n limit?: number;\n}\n\nexport interface ListPromptsResult {\n /** Current version of each (non-deleted) prompt. */\n items: readonly Prompt[];\n}\n\nexport interface CreatePromptRequest {\n key: string;\n name: string;\n /** The version-1 content. */\n template: string;\n description?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface UpdatePromptOptions {\n /** New content. Appends a new immutable version. */\n template?: string;\n name?: string;\n description?: string | null;\n /** Replaces the prompt-head metadata. */\n metadata?: Record<string, unknown>;\n}\n\nexport interface DeletePromptOptions {\n /** Reserved for future per-version deletes; ignored today (soft-deletes the key). */\n version?: number;\n}\n\nexport interface DeletePromptResult {\n key: string;\n /** Number of prompt heads soft-deleted (0 or 1). */\n deleted: number;\n}\n\nexport interface CompilePromptResult {\n /** The rendered string. */\n output: string;\n /** The version the compile ran against. */\n version: number;\n}\n\ninterface PromptHeadRow {\n key: string;\n name: string;\n description: string | null;\n current_version: number;\n metadata: Record<string, unknown> | null;\n created_at: string | Date;\n updated_at: string | Date;\n content: string;\n}\n\ninterface VersionContentRow {\n version: number;\n content: string;\n}\n\nexport class PromptsFacade {\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. The facade pulls the shared\n * `postgres-js` `Sql` via `getDatabase().shared().$client` — never\n * reaching into a sibling module's implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n ) {\n // `_resolved` is retained for symmetry with the other agent-local facades.\n void this._resolved;\n }\n\n async get(key: string, options?: GetPromptOptions): Promise<Result<Prompt>> {\n const keyError = validateKey(key);\n if (keyError) return err(keyError);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n try {\n const head = await fetchHead(sql.data, key);\n if (!head) {\n return err(notFound(key));\n }\n if (options?.version !== undefined && options.version !== head.current_version) {\n const content = await fetchVersionContent(sql.data, key, options.version);\n if (content === null) {\n return err({\n code: 'prompts_not_found',\n message: `Prompt \\`${key}\\` has no version ${options.version}.`,\n meta: { key, version: options.version },\n });\n }\n return ok(rowToPrompt(head, content.version, content.content));\n }\n return ok(rowToPrompt(head, head.current_version, head.content));\n } catch (cause) {\n return this.mapReadError(cause, key);\n }\n }\n\n async compile(\n key: string,\n variables: Record<string, unknown>,\n options?: GetPromptOptions,\n ): Promise<Result<CompilePromptResult>> {\n const prompt = await this.get(key, options);\n if (prompt.error) return err(prompt.error);\n const result = compileTemplate(prompt.data.template, variables ?? {});\n if (!result.ok) {\n if (result.error.code === 'missing_var') {\n return err({\n code: 'prompts_missing_var',\n message: `Prompt \\`${key}\\` references {{${result.error.name}}} but no value was provided.`,\n meta: { key, name: result.error.name },\n });\n }\n return err({\n code: 'prompts_invalid_request',\n message: `Prompt \\`${key}\\` failed to compile: ${result.error.detail}.`,\n meta: { key },\n });\n }\n return ok({ output: result.output, version: prompt.data.version });\n }\n\n async list(options?: ListPromptsOptions): Promise<Result<ListPromptsResult>> {\n const limit = clampLimit(options?.limit);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await sql.data<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.deleted_at IS NULL\n ORDER BY p.key\n LIMIT ${limit}\n `;\n return ok({\n items: rows.map((row) => rowToPrompt(row, row.current_version, row.content)),\n });\n } catch (cause) {\n return this.mapReadError(cause);\n }\n }\n\n async create(request: CreatePromptRequest): Promise<Result<Prompt>> {\n const keyError = validateKey(request?.key);\n if (keyError) return err(keyError);\n if (!request.name?.trim()) {\n return err({ code: 'prompts_invalid_request', message: '`name` is required.' });\n }\n if (!request.template) {\n return err({ code: 'prompts_invalid_request', message: '`template` is required.' });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n const variables = extractVars(request.template);\n try {\n const head = await sql.data.begin(async (tx) => {\n await tx`\n INSERT INTO stackbone_platform.prompts\n (key, name, description, current_version, metadata)\n VALUES (\n ${request.key},\n ${request.name},\n ${request.description ?? null},\n 1,\n ${request.metadata ? JSON.stringify(request.metadata) : null}::jsonb\n )\n `;\n await tx`\n INSERT INTO stackbone_platform.prompt_versions\n (prompt_key, version, content, vars_extracted)\n VALUES (\n ${request.key}, 1, ${request.template}, ${JSON.stringify(variables)}::jsonb\n )\n `;\n const rows = await tx<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${request.key}\n `;\n return rows[0];\n });\n if (!head) {\n return err({ code: 'prompts_unavailable', message: 'Prompt create returned no row.' });\n }\n return ok(rowToPrompt(head, head.current_version, head.content));\n } catch (cause) {\n if (isPgError(cause, PG_UNIQUE_VIOLATION)) {\n return err({\n code: 'prompts_already_exists',\n message: `Prompt \\`${request.key}\\` already exists.`,\n meta: { key: request.key },\n });\n }\n return this.mapWriteError(cause, request.key);\n }\n }\n\n async update(key: string, options: UpdatePromptOptions): Promise<Result<Prompt>> {\n const keyError = validateKey(key);\n if (keyError) return err(keyError);\n if (\n options?.template === undefined &&\n options?.name === undefined &&\n options?.description === undefined &&\n options?.metadata === undefined\n ) {\n return err({\n code: 'prompts_invalid_request',\n message: 'at least one of template, name, description or metadata is required.',\n });\n }\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n try {\n const head = await sql.data.begin(async (tx) => {\n // Serialize concurrent updates to the same key so two parallel writers\n // can never read the same `MAX(version)` and both insert the next\n // number. `pg_advisory_xact_lock` is released at COMMIT/ROLLBACK.\n await tx`SELECT pg_advisory_xact_lock(hashtext(${`prompts:${key}`}))`;\n\n const existing = await tx<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${key} AND p.deleted_at IS NULL\n LIMIT 1\n `;\n const current = existing[0];\n if (!current) return null;\n\n let nextVersion = current.current_version;\n if (options.template !== undefined) {\n nextVersion = current.current_version + 1;\n const variables = extractVars(options.template);\n await tx`\n INSERT INTO stackbone_platform.prompt_versions\n (prompt_key, version, content, vars_extracted)\n VALUES (\n ${key}, ${nextVersion}, ${options.template},\n ${JSON.stringify(variables)}::jsonb\n )\n `;\n }\n\n await tx`\n UPDATE stackbone_platform.prompts\n SET current_version = ${nextVersion},\n name = ${options.name ?? current.name},\n description = ${\n options.description !== undefined ? options.description : current.description\n },\n metadata = COALESCE(${\n options.metadata !== undefined ? JSON.stringify(options.metadata) : null\n }::jsonb, metadata),\n updated_at = now()\n WHERE key = ${key}\n `;\n\n const rows = await tx<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${key}\n `;\n return rows[0] ?? null;\n });\n\n if (head === null) {\n return err(notFound(key));\n }\n return ok(rowToPrompt(head, head.current_version, head.content));\n } catch (cause) {\n return this.mapWriteError(cause, key);\n }\n }\n\n async delete(key: string, _options?: DeletePromptOptions): Promise<Result<DeletePromptResult>> {\n const keyError = validateKey(key);\n if (keyError) return err(keyError);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n const rows = await sql.data<{ key: string }[]>`\n UPDATE stackbone_platform.prompts\n SET deleted_at = now(), updated_at = now()\n WHERE key = ${key} AND deleted_at IS NULL\n RETURNING key\n `;\n const deleted = rows.length;\n if (deleted === 0) {\n return err(notFound(key));\n }\n return ok({ key, deleted });\n } catch (cause) {\n return this.mapWriteError(cause, key);\n }\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'prompts_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n\n private mapReadError(cause: unknown, key?: string): Result<never> {\n if (isPgError(cause, PG_UNDEFINED_TABLE)) {\n return err(notConfigured());\n }\n return err({\n code: 'prompts_unavailable',\n message: key\n ? `Failed to read prompt \\`${key}\\` from the agent database.`\n : 'Failed to read prompts from the agent database.',\n cause,\n });\n }\n\n private mapWriteError(cause: unknown, key: string): Result<never> {\n if (isPgError(cause, PG_UNDEFINED_TABLE)) {\n return err(notConfigured());\n }\n return err({\n code: 'prompts_unavailable',\n message: `Failed to write prompt \\`${key}\\` to the agent database.`,\n cause,\n });\n }\n}\n\nfunction notFound(key: string): {\n code: 'prompts_not_found';\n message: string;\n meta: { key: string };\n} {\n return {\n code: 'prompts_not_found',\n message: `Prompt \\`${key}\\` is not registered for this agent.`,\n meta: { key },\n };\n}\n\nfunction notConfigured(): { code: 'prompts_not_configured'; message: string } {\n return {\n code: 'prompts_not_configured',\n message:\n 'The prompts schema is not applied for this agent. Run `stackbone db migrate up` to create it.',\n };\n}\n\nfunction validateKey(key: string): { code: 'prompts_invalid_request'; message: string } | null {\n if (typeof key !== 'string' || !key.trim()) {\n return { code: 'prompts_invalid_request', message: '`key` is required.' };\n }\n return null;\n}\n\nfunction clampLimit(limit: number | undefined): number {\n if (limit === undefined) return 50;\n if (!Number.isFinite(limit) || limit < 1) return 1;\n return Math.min(Math.trunc(limit), 100);\n}\n\nfunction isPgError(cause: unknown, code: string): boolean {\n return (cause as { code?: string } | null)?.code === code;\n}\n\nfunction rowToPrompt(row: PromptHeadRow, version: number, template: string): Prompt {\n return {\n key: row.key,\n name: row.name,\n description: row.description,\n template,\n version,\n variables: extractVars(template),\n metadata: row.metadata,\n createdAt: toIso(row.created_at),\n updatedAt: toIso(row.updated_at),\n };\n}\n\nasync function fetchHead(sql: Sql, key: string): Promise<PromptHeadRow | undefined> {\n const rows = await sql<PromptHeadRow[]>`\n SELECT p.key, p.name, p.description, p.current_version, p.metadata,\n p.created_at, p.updated_at, v.content\n FROM stackbone_platform.prompts p\n JOIN stackbone_platform.prompt_versions v\n ON v.prompt_key = p.key AND v.version = p.current_version\n WHERE p.key = ${key} AND p.deleted_at IS NULL\n LIMIT 1\n `;\n return rows[0];\n}\n\nasync function fetchVersionContent(\n sql: Sql,\n key: string,\n version: number,\n): Promise<VersionContentRow | null> {\n const rows = await sql<VersionContentRow[]>`\n SELECT version, content\n FROM stackbone_platform.prompt_versions\n WHERE prompt_key = ${key} AND version = ${version}\n LIMIT 1\n `;\n return rows[0] ?? null;\n}\n\nfunction toIso(value: string | Date): string {\n return value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n}\n","// Self-contained Result envelope for `@stackbone/rag-core`. This lib is a\n// `scope:shared` LEAF — it must not import the SDK's own `Result`/`SdkError`\n// types (that would couple a leaf to `scope:sdk`). The shapes here are\n// structurally identical to the SDK envelope, and `RagErrorCode` is a strict\n// subset of the SDK's `SdkErrorCode` catalog, so a `RagError` produced here is\n// assignable to the SDK's `SdkError` without a cast at the facade boundary.\n\n/**\n * The error codes the RAG ingestion core can emit. Every entry here also\n * exists in the SDK's `SdkErrorCode` catalog (the `rag_*` family plus\n * `rag_schema_missing`), so the SDK facade re-exposes these verbatim.\n */\nexport type RagErrorCode =\n | 'rag_dim_mismatch'\n | 'rag_embedding_failed'\n | 'rag_embedding_model_unsupported'\n | 'rag_error'\n | 'rag_ingest_cancelled'\n | 'rag_invalid_request'\n | 'rag_job_insert_failed'\n | 'rag_jobs_error'\n | 'rag_schema_missing';\n\n/**\n * Uniform error envelope returned by every RAG core method. `cause` and `meta`\n * are optional escape hatches so callers can attach upstream errors / context\n * without breaking the public shape. Mirrors the SDK's `SdkError`.\n */\nexport interface RagError {\n code: RagErrorCode;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Structural error envelope an injected port (the `sqlProvider` thunk, the\n * `EmbeddingsPort`) may carry. Widened to `code: string` so the SDK can inject\n * its own `SdkError` (whose code catalog is a superset of `RagErrorCode`)\n * without a cast. The pipeline forwards such errors verbatim through its output\n * Result, which is why the public `Result<T, E>` is generic over the injected\n * error type.\n */\nexport interface PortError {\n code: string;\n message: string;\n cause?: unknown;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Discriminated result the RAG core returns. Narrowing on `result.error`\n * automatically refines `result.data` to `T`. The error type defaults to the\n * core's own `RagError`; injected ports and the pipeline's public methods\n * widen it to the caller's error envelope so a forwarded `sqlProvider` /\n * embeddings-port error survives verbatim.\n */\nexport type Result<T, E extends PortError = RagError> =\n | { data: T; error: null }\n | { data: null; error: E };\n\nexport function ok<T, E extends PortError = RagError>(data: T): Result<T, E> {\n return { data, error: null };\n}\n\nexport function err<T = never, E extends PortError = RagError>(error: E): Result<T, E> {\n return { data: null, error };\n}\n\n/**\n * Type guard that narrows a `Result<T, E>` to its success branch. Needed\n * because `E` is generic: TS cannot treat `{ error: null } | { error: E }` as a\n * discriminated union (the `E` branch isn't a literal), so a bare `if\n * (r.error)` check leaves `r.data` as `T | null`. Routing through this guard\n * restores the `T` narrowing.\n */\nexport function isOk<T, E extends PortError>(\n result: Result<T, E>,\n): result is { data: T; error: null } {\n return result.error === null;\n}\n","export type ChunkStrategy = 'recursive' | 'sentence';\n\nexport interface ChunkOptions {\n /** Splitter algorithm. Default `recursive`. */\n strategy?: ChunkStrategy;\n /** Target characters per chunk. Default 512. */\n size?: number;\n /** Characters of overlap between consecutive chunks. Default 64. */\n overlap?: number;\n}\n\nconst DEFAULT_SIZE = 512;\nconst DEFAULT_OVERLAP = 64;\n\nconst RECURSIVE_SEPARATORS = ['\\n\\n', '\\n', ' ', ''] as const;\n\nconst SENTENCE_BOUNDARY = /(?<=[.!?])\\s+(?=[A-ZÀ-ſ])/g;\n\nexport function chunk(text: string, options: ChunkOptions = {}): string[] {\n const size = options.size ?? DEFAULT_SIZE;\n const overlap = options.overlap ?? DEFAULT_OVERLAP;\n const strategy = options.strategy ?? 'recursive';\n\n if (size <= 0) throw new Error('chunk: `size` must be > 0');\n if (overlap < 0) throw new Error('chunk: `overlap` must be >= 0');\n if (overlap >= size) throw new Error('chunk: `overlap` must be < `size`');\n\n const trimmed = text.trim();\n if (!trimmed) return [];\n\n const pieces = strategy === 'sentence' ? splitBySentence(trimmed) : splitRecursive(trimmed, size);\n return mergePieces(pieces, size, overlap);\n}\n\n/**\n * `sepIdx` skips separators that have already failed for the parent fragment —\n * once `\\n\\n` produced no split, the recursive call on each part doesn't need\n * to retry it.\n */\nfunction splitRecursive(text: string, size: number, sepIdx = 0): string[] {\n if (text.length <= size) return [text];\n for (let idx = sepIdx; idx < RECURSIVE_SEPARATORS.length; idx++) {\n const sep = RECURSIVE_SEPARATORS[idx] as string;\n if (sep === '') return splitByLength(text, size);\n const parts = text.split(sep);\n if (parts.length === 1) continue;\n const out: string[] = [];\n for (const part of parts) {\n if (!part) continue;\n if (part.length <= size) out.push(part);\n else out.push(...splitRecursive(part, size, idx + 1));\n }\n return out;\n }\n return splitByLength(text, size);\n}\n\nfunction splitByLength(text: string, size: number): string[] {\n const out: string[] = [];\n for (let i = 0; i < text.length; i += size) out.push(text.slice(i, i + size));\n return out;\n}\n\nfunction splitBySentence(text: string): string[] {\n return text.split(SENTENCE_BOUNDARY).filter((s) => s.trim().length > 0);\n}\n\n/**\n * Greedy pack into chunks up to `size`, carrying the trailing `overlap`\n * characters of the previous chunk into the next. Avoids O(n²) string\n * concatenation by buffering parts and joining once per chunk.\n */\nfunction mergePieces(pieces: string[], size: number, overlap: number): string[] {\n const out: string[] = [];\n let bufParts: string[] = [];\n let bufLen = 0;\n\n const flush = (): string => {\n const closed = bufParts.join(' ');\n out.push(closed);\n bufParts = [];\n bufLen = 0;\n return closed;\n };\n\n const seed = (text: string): void => {\n bufParts = [text];\n bufLen = text.length;\n };\n\n for (const piece of pieces) {\n if (!piece) continue;\n if (piece.length > size) {\n if (bufLen > 0) flush();\n for (const slice of splitByLength(piece, size)) out.push(slice);\n continue;\n }\n const candidateLen = bufLen === 0 ? piece.length : bufLen + 1 + piece.length;\n if (candidateLen <= size) {\n bufParts.push(piece);\n bufLen = candidateLen;\n continue;\n }\n const closed = flush();\n if (overlap > 0) {\n const seedText = `${tail(closed, overlap)} ${piece}`.trimStart();\n if (seedText.length > size) {\n for (const slice of splitByLength(seedText, size)) out.push(slice);\n } else {\n seed(seedText);\n }\n } else {\n seed(piece);\n }\n }\n if (bufLen > 0) flush();\n return out;\n}\n\nfunction tail(text: string, n: number): string {\n return text.length <= n ? text : text.slice(text.length - n);\n}\n","import { extractText } from 'unpdf';\n\nexport interface ParseOptions {\n /** MIME type override. If omitted, the parser sniffs the input (Blob.type or PDF magic bytes). */\n mime?: string;\n}\n\nexport type ParseInput = Blob | string | Uint8Array | ArrayBuffer;\n\nconst PDF_MIME_TYPES = new Set(['application/pdf', 'application/x-pdf']);\nconst PDF_MAGIC = [0x25, 0x50, 0x44, 0x46];\n\n/**\n * Stable discriminator carried by {@link PdfNoTextLayerError}. Callers (the SDK\n * `client.rag.parse` facade, the Studio-managed ingest path) can detect this\n * specific failure with `error.code === PDF_NO_TEXT_LAYER` instead of matching\n * on the message string.\n */\nexport const PDF_NO_TEXT_LAYER = 'pdf_no_text_layer' as const;\n\n/**\n * Thrown when a `.pdf` parses successfully but yields no extractable text — the\n * hallmark of a scanned document or an image-only export with no text layer.\n * unpdf's `extractText` cannot recover text from rasterised pages, and we do\n * NOT run OCR, so this is a terminal, actionable error: the caller must supply\n * a PDF whose text was generated by software (a real text layer) rather than a\n * photo/scan of a page.\n */\nexport class PdfNoTextLayerError extends Error {\n /** Stable machine-readable discriminator — see {@link PDF_NO_TEXT_LAYER}. */\n readonly code = PDF_NO_TEXT_LAYER;\n\n constructor() {\n super(\n 'parse: the PDF has no extractable text — it looks like a scanned or ' +\n 'image-only document with no text layer. OCR is not supported; re-export ' +\n 'the file with a real text layer (selectable text) before ingesting it.',\n );\n this.name = 'PdfNoTextLayerError';\n }\n}\n\n/**\n * Markdown is returned verbatim — no HTML rendering, no frontmatter stripping.\n * PDFs are flattened to one string with newlines between pages (no OCR).\n */\nexport async function parse(input: ParseInput, options: ParseOptions = {}): Promise<string> {\n if (typeof input === 'string') return input;\n\n const mime = (options.mime ?? sniffMime(input))?.toLowerCase();\n const bytes = await toUint8Array(input);\n const kind = resolveKind(mime, bytes);\n\n switch (kind) {\n case 'pdf': {\n const { text } = await extractText(bytes, { mergePages: true });\n // A scanned / image-only PDF parses fine but yields no text layer. unpdf\n // has nothing to return and we do not run OCR, so reject with a typed,\n // actionable error instead of silently ingesting an empty document.\n if (text.trim() === '') throw new PdfNoTextLayerError();\n return text;\n }\n case 'text':\n return new TextDecoder().decode(bytes);\n case 'unsupported':\n throw new Error(\n `parse: unsupported MIME type \\`${mime}\\`. Supported: text/*, application/pdf.`,\n );\n }\n}\n\nfunction resolveKind(mime: string | undefined, bytes: Uint8Array): 'pdf' | 'text' | 'unsupported' {\n if (mime) {\n if (PDF_MIME_TYPES.has(mime)) return 'pdf';\n if (mime.startsWith('text/')) return 'text';\n return 'unsupported';\n }\n return looksLikePdf(bytes) ? 'pdf' : 'text';\n}\n\nasync function toUint8Array(input: Exclude<ParseInput, string>): Promise<Uint8Array> {\n if (input instanceof Uint8Array) return input;\n if (input instanceof Blob) return new Uint8Array(await input.arrayBuffer());\n return new Uint8Array(input);\n}\n\nfunction sniffMime(input: Exclude<ParseInput, string>): string | undefined {\n if (input instanceof Blob && input.type) return input.type;\n return undefined;\n}\n\nfunction looksLikePdf(bytes: Uint8Array): boolean {\n if (bytes.length < PDF_MAGIC.length) return false;\n return PDF_MAGIC.every((b, i) => bytes[i] === b);\n}\n","import { type RagError, type RagErrorCode } from '../result';\n\n// Postgres error code for `relation does not exist`. The canonical RAG schema\n// (`stackbone_platform.rag_*`) is provisioned by the platform migrator, so a\n// missing relation here means those migrations were never applied to this\n// database — surface an actionable hint instead of a raw Postgres error.\nexport const PG_UNDEFINED_TABLE = '42P01';\n\nexport const RAG_SCHEMA_MISSING_HINT =\n 'the platform RAG schema (stackbone_platform.rag_*) is not provisioned on this database';\n\n/** The RAG error codes the core may pass through verbatim from a tagged cause. */\nconst RAG_ERROR_CODES: ReadonlySet<string> = new Set<RagErrorCode>([\n 'rag_dim_mismatch',\n 'rag_embedding_failed',\n 'rag_embedding_model_unsupported',\n 'rag_error',\n 'rag_ingest_cancelled',\n 'rag_invalid_request',\n 'rag_job_insert_failed',\n 'rag_jobs_error',\n 'rag_schema_missing',\n]);\n\nfunction isRagErrorCode(code: string): code is RagErrorCode {\n return RAG_ERROR_CODES.has(code);\n}\n\nexport function isTaggedError(\n cause: unknown,\n): cause is Error & { code?: string; meta?: Record<string, unknown> } {\n return cause instanceof Error;\n}\n\n/**\n * Maps an arbitrary thrown value into the error envelope used by every RAG\n * entrypoint. Special-cases `42P01` so missing schema flows through as\n * `rag_schema_missing` with the canonical hint regardless of whether the\n * caller is the pipeline or the jobs writer.\n *\n * `fallbackCode` is constrained to `RagErrorCode`, so every call site has to\n * choose from the catalog — typos no longer compile. The same constraint\n * applies to `cause.code`: when the upstream error already carries a RAG\n * catalog code (e.g. `'rag_dim_mismatch'` thrown from `sql.ts`), the helper\n * surfaces it verbatim; anything else collapses into `fallbackCode` so a raw\n * upstream string can never leak past the core boundary.\n */\nexport function toRagError(\n cause: unknown,\n message: string,\n fallbackCode: RagErrorCode = 'rag_error',\n): RagError {\n if (isTaggedError(cause) && cause.code === PG_UNDEFINED_TABLE) {\n return {\n code: 'rag_schema_missing',\n message: `RAG tables are not installed — ${RAG_SCHEMA_MISSING_HINT}.`,\n cause,\n meta: { hint: RAG_SCHEMA_MISSING_HINT },\n };\n }\n if (isTaggedError(cause)) {\n const code: RagErrorCode =\n cause.code !== undefined && isRagErrorCode(cause.code) ? cause.code : fallbackCode;\n const error: RagError = {\n code,\n message: `${message}: ${cause.message}`,\n cause,\n };\n if (cause.meta) error.meta = cause.meta;\n return error;\n }\n return { code: fallbackCode, message, cause };\n}\n","import { createHash } from 'node:crypto';\n\nimport type { Sql, TransactionSql } from 'postgres';\n\n// Canonical-schema persistence for the RAG ingest pipeline. Every write lands\n// in the platform-owned `stackbone_platform.rag_*` tables (defined in\n// `../schema/schema.ts`, provisioned by `@stackbone/platform-schema` migration\n// `0014_rag.sql`): a single `stackbone_platform.rag_documents` row per ingested\n// document and one `stackbone_platform.rag_chunks` row per chunk.\n//\n// Names are schema-qualified because the pipeline shares the agent's DB\n// connection (whose `search_path` is the creator's `public`); the platform\n// tables are not on that path, so every statement spells out the schema. The\n// pipeline never runs `CREATE TABLE` — a missing schema surfaces as Postgres\n// `42P01`, mapped to `rag_schema_missing` upstream.\n//\n// Dimension assumption: the chunk `embedding` column is pinned to\n// `vector(1536)` (text-embedding-3-small). A non-1536 model is NOT validated\n// here — a mismatch surfaces as a raw INSERT error from Postgres, which is\n// acceptable for the MVP (frozen decision).\n\n/**\n * Default collection name used when an ingest/retrieve/delete request omits an\n * explicit `collection`. The canonical schema keys documents on a collection\n * (there is no `namespace` column), so this is the single bucket pre-collection\n * callers land in. Kept as `'default'` for back-compat with the public API's\n * `namespace` field, which now feeds the collection name.\n */\nexport const DEFAULT_NAMESPACE = 'default';\n\nexport interface IngestRow {\n /** Logical document id surfaced to the public API. Stored as `documents.source`. */\n docId: string;\n /** Contiguous chunk index from 0. Stored as `chunks.ordinal`. */\n chunkIdx: number;\n /** Collection name the document belongs to. Resolved to a `collection_id`. */\n namespace: string;\n content: string;\n embedding: number[];\n metadata: Record<string, unknown>;\n}\n\nexport interface RetrieveRow {\n docId: string;\n chunkIdx: number;\n content: string | null;\n metadata: Record<string, unknown> | null;\n score: number;\n}\n\n/**\n * Stable content hash of the source bytes. The same file always produces the\n * same hash so the platform can dedup a document within a collection. We hash\n * the raw bytes (sha256, hex) — for the precomputed/auto-embed pipeline the\n * \"source bytes\" are the UTF-8 concatenation of the chunk contents in order,\n * which reconstructs the parsed text the chunker split.\n */\nexport function contentHash(source: Buffer | string): string {\n const bytes = typeof source === 'string' ? Buffer.from(source, 'utf8') : source;\n return createHash('sha256').update(bytes).digest('hex');\n}\n\nexport interface CreatedDocument {\n /** The `stackbone_platform.rag_documents.id` chunks are appended to. */\n documentId: string;\n}\n\n/**\n * Creates the `stackbone_platform.rag_documents` row for a document, atomically, and\n * returns its id so the pipeline can stream chunk batches into it.\n *\n * Within a single transaction it:\n * 1. upserts the `stackbone_platform.rag_collections` row for the collection name,\n * 2. deletes any pre-existing document with the same `source` in that collection\n * (cascading its chunks) so a re-ingest with the same `docId` replaces it,\n * 3. inserts one `stackbone_platform.rag_documents` row carrying the computed\n * `content_hash` (NOT NULL) and the document `metadata`.\n *\n * The `content_hash` MUST be derived from the source bytes so the same file\n * always produces the same hash (see `contentHash`).\n */\nexport async function createDocument(\n sql: Sql,\n args: {\n collection: string;\n source: string;\n contentHash: string;\n metadata: Record<string, unknown>;\n },\n): Promise<CreatedDocument> {\n return sql.begin(async (tx) => {\n const collectionId = await ensureCollection(tx, args.collection);\n await tx`\n DELETE FROM stackbone_platform.rag_documents\n WHERE collection_id = ${collectionId} AND source = ${args.source}\n `;\n const insertedDoc = await tx<{ id: string }[]>`\n INSERT INTO stackbone_platform.rag_documents (collection_id, source, content_hash, metadata)\n VALUES (${collectionId}, ${args.source}, ${args.contentHash}, ${tx.json(args.metadata as never)})\n RETURNING id\n `;\n const documentId = insertedDoc[0]?.id;\n if (!documentId) {\n throw new Error('stackbone_platform.rag_documents insert returned no row');\n }\n return { documentId };\n }) as Promise<CreatedDocument>;\n}\n\n/**\n * Bulk-inserts a contiguous batch of chunk rows for one document via multi-row\n * VALUES. Embeddings are pinned to `vector(1536)` on the column (a non-1536\n * model surfaces a raw INSERT error — acceptable for the MVP); the placeholders\n * cast each parameter to `vector` / `jsonb` so postgres-js sends the right\n * types. Does NOT delete pre-existing rows — call `createDocument` first.\n */\nexport async function appendChunks(\n sql: Sql | TransactionSql,\n documentId: string,\n rows: IngestRow[],\n): Promise<number> {\n if (rows.length === 0) return 0;\n const placeholders = rows\n .map((_, i) => {\n const base = i * 5;\n return `($${base + 1}, $${base + 2}, $${base + 3}, $${base + 4}::vector, $${base + 5}::jsonb)`;\n })\n .join(',');\n const params = rows.flatMap((row) => [\n documentId,\n row.chunkIdx,\n row.content,\n formatVector(row.embedding),\n JSON.stringify(row.metadata),\n ]);\n await sql.unsafe(\n `INSERT INTO stackbone_platform.rag_chunks (document_id, ordinal, content, embedding, metadata) VALUES ${placeholders}`,\n params,\n );\n return rows.length;\n}\n\nexport async function deleteByIds(sql: Sql, ids: string[], namespace: string): Promise<number> {\n if (ids.length === 0) return 0;\n const result = await sql`\n DELETE FROM stackbone_platform.rag_documents d\n USING stackbone_platform.rag_collections c\n WHERE d.collection_id = c.id\n AND c.name = ${namespace}\n AND d.source = ANY(${ids})\n `;\n return result.count ?? 0;\n}\n\nexport async function deleteByFilter(\n sql: Sql,\n filter: Record<string, unknown>,\n namespace: string,\n): Promise<number> {\n const filterClause =\n Object.keys(filter).length > 0 ? sql`AND d.metadata @> ${sql.json(filter as never)}` : sql``;\n const result = await sql`\n DELETE FROM stackbone_platform.rag_documents d\n USING stackbone_platform.rag_collections c\n WHERE d.collection_id = c.id\n AND c.name = ${namespace}\n ${filterClause}\n `;\n return result.count ?? 0;\n}\n\nexport interface RetrieveParams {\n embedding: number[];\n topK: number;\n filter?: Record<string, unknown>;\n namespace: string;\n includeContent: boolean;\n includeMetadata: boolean;\n}\n\nexport async function retrieve(sql: Sql, params: RetrieveParams): Promise<RetrieveRow[]> {\n const embStr = formatVector(params.embedding);\n const filterClause =\n params.filter && Object.keys(params.filter).length > 0\n ? sql`AND ch.metadata @> ${sql.json(params.filter as never)}`\n : sql``;\n const contentColumn = params.includeContent ? sql`ch.content` : sql`NULL AS content`;\n const metadataColumn = params.includeMetadata ? sql`ch.metadata` : sql`NULL AS metadata`;\n return sql<RetrieveRow[]>`\n SELECT\n d.source AS \"docId\",\n ch.ordinal AS \"chunkIdx\",\n ${contentColumn},\n ${metadataColumn},\n 1 - (ch.embedding <=> ${embStr}::vector) AS score\n FROM stackbone_platform.rag_chunks ch\n INNER JOIN stackbone_platform.rag_documents d ON d.id = ch.document_id\n INNER JOIN stackbone_platform.rag_collections c ON c.id = d.collection_id\n WHERE c.name = ${params.namespace} ${filterClause}\n ORDER BY ch.embedding <=> ${embStr}::vector\n LIMIT ${params.topK}\n `;\n}\n\n// One round-trip: ON CONFLICT DO UPDATE always returns the id whether the row\n// was inserted or already existed.\nasync function ensureCollection(sql: Sql | TransactionSql, name: string): Promise<string> {\n const inserted = await sql<{ id: string }[]>`\n INSERT INTO stackbone_platform.rag_collections (name) VALUES (${name})\n ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name\n RETURNING id\n `;\n const row = inserted[0];\n if (!row) {\n throw new Error(`stackbone_platform.rag_collections upsert returned no row for ${name}`);\n }\n return row.id;\n}\n\nfunction formatVector(embedding: number[]): string {\n return `[${embedding.join(',')}]`;\n}\n","import { type Sql } from 'postgres';\n\nimport { err, isOk, ok, type PortError, type RagError, type Result } from '../result';\n\nimport { type EmbeddingsPort } from './embeddings-port';\nimport { toRagError } from './errors';\nimport { type IngestJobWriter, type RagIngestProgress } from './jobs';\nimport {\n appendChunks,\n contentHash,\n createDocument,\n DEFAULT_NAMESPACE,\n deleteByFilter,\n deleteByIds,\n retrieve as retrieveRows,\n} from './sql';\n\nexport interface IngestChunk {\n content: string;\n embedding: number[];\n}\n\ninterface IngestRequestBase {\n /** Document identifier — re-ingesting with the same `id` replaces all its chunks atomically. */\n id: string;\n metadata?: Record<string, unknown>;\n /**\n * Optional precomputed `content_hash` for the document. When set it is stored\n * verbatim on the `stackbone_platform.rag_documents` row instead of the default (a hash\n * of the chunk-text concatenation). A file-ingest caller passes the hash of the\n * ORIGINAL bytes here so the persisted hash matches the upstream upload-time\n * dedup check; the SDK omits it and falls back to the text hash.\n */\n contentHash?: string;\n /** Logical namespace for separation. Default `'default'`. */\n namespace?: string;\n /**\n * Canonical collection name used by the `stackbone_platform.rag_jobs` writer (F07)\n * to bind the row to a `stackbone_platform.rag_collections` parent. Optional for\n * back-compat with pre-F07 callers — when absent, no job row is written\n * and progress is delivered only via `onProgress` (if any).\n */\n collection?: string;\n /**\n * Optional sink for streaming progress events. Fired in addition to (and\n * before) the matching `IngestJobWriter` call so synchronous `ingest`\n * consumers can observe progress without paying the SQL writer cost.\n */\n onProgress?: (event: RagIngestProgress) => void | Promise<void>;\n}\n\nexport interface IngestRequestPrecomputed extends IngestRequestBase {\n chunks: IngestChunk[];\n}\n\nexport interface IngestRequestAutoEmbed extends IngestRequestBase {\n chunks: string[];\n /** Embedding model id. When set, the pipeline calls the configured embeddings port. */\n model: string;\n /**\n * Items per embeddings request. Consumed by the facade when it builds the\n * embeddings port; ignored by the pipeline itself (the port is fully\n * configured at construction time).\n */\n batchSize?: number;\n}\n\nexport type IngestRequest = IngestRequestPrecomputed | IngestRequestAutoEmbed;\n\nexport interface IngestResponse {\n id: string;\n chunks: number;\n}\n\nexport interface DeleteOptions {\n namespace?: string;\n}\n\nexport interface DeleteResponse {\n deleted: number;\n}\n\ninterface RetrieveRequestBase {\n topK?: number;\n filter?: Record<string, unknown>;\n namespace?: string;\n includeContent?: boolean;\n includeMetadata?: boolean;\n}\n\nexport interface RetrieveRequestPrecomputed extends RetrieveRequestBase {\n embedding: number[];\n}\n\nexport interface RetrieveRequestAutoEmbed extends RetrieveRequestBase {\n text: string;\n /** Must match the model used at ingest time. */\n model: string;\n}\n\nexport type RetrieveRequest = RetrieveRequestPrecomputed | RetrieveRequestAutoEmbed;\n\nexport interface RetrieveHit {\n id: string;\n chunkIdx: number;\n content?: string;\n metadata?: Record<string, unknown>;\n score: number;\n}\n\nconst DEFAULT_TOP_K = 5;\n\nexport interface RagPipelineDeps<E extends PortError = RagError> {\n /**\n * Provides the postgres-js `Sql` to bind queries to. Called lazily, after\n * input validation and any auto-embed step, so that callers whose request\n * is rejected upstream never trigger a pool build.\n *\n * Pass `() => ok($client)` of the shared Drizzle handle for normal\n * operation, or a thunk that yields a transaction-bound `Sql` from\n * `client.database.transaction(...)` to enrol RAG writes in the caller's\n * transaction. May return a `Result.err` (e.g. `database_not_configured`)\n * which the pipeline forwards verbatim — hence the generic injected error\n * `E`, widened by the SDK facade to its own `SdkError`.\n */\n sqlProvider: () => Result<Sql, E>;\n /**\n * Optional embeddings port for auto-embed ingest/retrieve. Required when\n * callers pass a `model` to `ingest`/`retrieve`; precomputed-vector calls\n * work without one.\n */\n embedder?: EmbeddingsPort<E>;\n /**\n * Optional `stackbone_platform.rag_jobs` writer. When present, every `ingest`\n * call allocates a job row, emits `started`/`progress`/`completed`/`failed`\n * events through it, and polls `isCancelled` between chunk batches. The\n * facade wires this with the shared `client.database` pool for\n * `ingestAsync`; sync `ingest` callers may also opt in. ADR §D9 locks\n * the event shape.\n */\n jobWriter?: IngestJobWriter;\n /**\n * How many persisted chunks to accumulate before firing a `progress`\n * event and re-checking cancellation. Default `1` so small ingests still\n * surface granular feedback; large ingests can raise this to amortise\n * writer overhead. Always emits at least one event per request.\n */\n progressBatchSize?: number;\n}\n\n/**\n * `RagPipeline` — owns the parse → chunk → embed → persist flow for a single\n * RAG operation. The `client.rag` facade builds one bound to the shared\n * `client.database` pool; integration tests build one bound to a dockerized\n * Postgres with a deterministic fake embeddings port.\n *\n * The pipeline is a deep module: its public surface (`ingest`, `retrieve`,\n * `delete`, `deleteWhere`) is small and stable; everything underneath\n * (validation, batching, transaction shape, error mapping) is implementation\n * detail.\n */\nexport class RagPipeline<E extends PortError = RagError> {\n private readonly _sqlProvider: () => Result<Sql, E>;\n private readonly _embedder: EmbeddingsPort<E> | undefined;\n private readonly _jobWriter: IngestJobWriter | undefined;\n private readonly _progressBatchSize: number | undefined;\n\n constructor(deps: RagPipelineDeps<E>) {\n this._sqlProvider = deps.sqlProvider;\n this._embedder = deps.embedder;\n this._jobWriter = deps.jobWriter;\n this._progressBatchSize =\n deps.progressBatchSize !== undefined ? Math.max(1, deps.progressBatchSize) : undefined;\n }\n\n async ingest(request: IngestRequest): Promise<Result<IngestResponse, RagError | E>> {\n const validation = validateIngest(request, this._embedder !== undefined);\n if (validation.error) return err(validation.error);\n\n // The canonical schema keys documents on a collection, not a namespace.\n // Prefer the explicit `collection`; fall back to `namespace` (which still\n // defaults to 'default') so pre-collection callers keep working.\n const collection = request.collection ?? request.namespace ?? DEFAULT_NAMESPACE;\n const metadata = request.metadata ?? {};\n\n let chunks: IngestChunk[];\n if (isAutoEmbedIngest(request)) {\n // Validation above guarantees the embeddings port is present.\n const embedded = await (this._embedder as EmbeddingsPort).embedAll(request.chunks);\n if (embedded.error) return err(embedded.error);\n if (embedded.data.length !== request.chunks.length) {\n return err({\n code: 'rag_embedding_failed',\n message: `Embedding API returned ${embedded.data.length} vectors for ${request.chunks.length} chunks.`,\n meta: { expected: request.chunks.length, received: embedded.data.length },\n });\n }\n chunks = request.chunks.map((content, i) => ({\n content,\n embedding: embedded.data[i] as number[],\n }));\n } else {\n chunks = request.chunks;\n }\n\n const rows = chunks.map((c, idx) => ({\n docId: request.id,\n chunkIdx: idx,\n namespace: collection,\n content: c.content,\n embedding: c.embedding,\n metadata,\n }));\n // Content hash is derived from the source bytes so the same file always\n // produces the same hash. A file-ingest caller (the managed-ingest worker)\n // passes the hash of the ORIGINAL bytes via `request.contentHash` so the\n // persisted hash matches its upload-time dedup check; otherwise fall back to\n // the in-order UTF-8 concatenation of the chunk contents, which reconstructs\n // the parsed text the chunker split.\n const hash = request.contentHash ?? contentHash(chunks.map((c) => c.content).join(''));\n\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n const client = sql.data;\n\n const totalChunks = rows.length;\n const onProgress = request.onProgress;\n const writer = this._jobWriter;\n let jobId: string | null = null;\n\n if (writer && request.collection) {\n const started = await writer.start({\n collection: request.collection,\n source: request.id,\n totalChunks,\n });\n if (started.error) return err(started.error);\n jobId = started.data.jobId;\n }\n\n await onProgress?.({ type: 'started', jobId: jobId ?? request.id, totalChunks });\n\n try {\n // Create (replacing any prior version of) the document row atomically and\n // get its id; embeddings are pinned to vector(1536) on the chunks table —\n // no model-dimension validation here (frozen decision), a mismatch\n // surfaces as a raw INSERT error from Postgres.\n const { documentId } = await createDocument(client, {\n collection,\n source: request.id,\n contentHash: hash,\n metadata,\n });\n // When neither a job writer nor an onProgress hook is configured, keep\n // the original single-INSERT behaviour for back-compat with pre-F07\n // callers (sql-level row-count assertions in `pipeline.spec.ts`).\n const needsBatching = Boolean(writer || onProgress);\n const batchSize = this._progressBatchSize ?? (needsBatching ? 1 : rows.length || 1);\n let processed = 0;\n for (let offset = 0; offset < rows.length; offset += batchSize) {\n if (writer && jobId) {\n const cancelled = await writer.isCancelled({ jobId });\n if (cancelled) {\n return err({\n code: 'rag_ingest_cancelled',\n message: `Ingest job ${jobId} was cancelled after ${processed}/${totalChunks} chunks.`,\n meta: { jobId, processedChunks: processed, totalChunks },\n });\n }\n }\n const slice = rows.slice(offset, offset + batchSize);\n await appendChunks(client, documentId, slice);\n processed += slice.length;\n const currentDocument = { source: request.id, ordinal: processed - 1 };\n await onProgress?.({\n type: 'progress',\n jobId: jobId ?? request.id,\n processedChunks: processed,\n totalChunks,\n currentDocument,\n });\n if (writer && jobId) {\n await writer.progress({\n jobId,\n processedChunks: processed,\n totalChunks,\n currentDocument,\n });\n }\n }\n await onProgress?.({ type: 'completed', jobId: jobId ?? request.id, totalChunks });\n if (writer && jobId) await writer.complete({ jobId, totalChunks });\n return ok({ id: request.id, chunks: rows.length });\n } catch (cause) {\n const mapped = toRagError(cause, 'Ingest failed');\n await onProgress?.({ type: 'failed', jobId: jobId ?? request.id, error: mapped.message });\n if (writer && jobId) await writer.fail({ jobId, error: mapped.message });\n return err(mapped);\n }\n }\n\n async delete(\n ids: string | string[],\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse, RagError | E>> {\n const namespace = options?.namespace ?? DEFAULT_NAMESPACE;\n const idList = Array.isArray(ids) ? ids : [ids];\n if (idList.length === 0) return ok({ deleted: 0 });\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n try {\n const deleted = await deleteByIds(sql.data, idList, namespace);\n return ok({ deleted });\n } catch (cause) {\n return err(toRagError(cause, 'Delete failed'));\n }\n }\n\n async deleteWhere(\n filter: Record<string, unknown>,\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse, RagError | E>> {\n const namespace = options?.namespace ?? DEFAULT_NAMESPACE;\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n try {\n const deleted = await deleteByFilter(sql.data, filter, namespace);\n return ok({ deleted });\n } catch (cause) {\n return err(toRagError(cause, 'Delete by filter failed'));\n }\n }\n\n async retrieve(request: RetrieveRequest): Promise<Result<RetrieveHit[], RagError | E>> {\n const resolved = await this.resolveQueryEmbedding(request);\n if (!isOk(resolved)) return err(resolved.error);\n\n const includeContent = request.includeContent ?? true;\n const includeMetadata = request.includeMetadata ?? true;\n\n const params: Parameters<typeof retrieveRows>[1] = {\n embedding: resolved.data,\n topK: request.topK ?? DEFAULT_TOP_K,\n namespace: request.namespace ?? DEFAULT_NAMESPACE,\n includeContent,\n includeMetadata,\n };\n if (request.filter) params.filter = request.filter;\n\n const sql = this._sqlProvider();\n if (!isOk(sql)) return err(sql.error);\n\n try {\n const rows = await retrieveRows(sql.data, params);\n return ok(\n rows.map((row) => {\n const hit: RetrieveHit = {\n id: row.docId,\n chunkIdx: row.chunkIdx,\n score: Number(row.score),\n };\n if (includeContent && row.content !== null) hit.content = row.content;\n if (includeMetadata && row.metadata !== null) hit.metadata = row.metadata;\n return hit;\n }),\n );\n } catch (cause) {\n return err(toRagError(cause, 'Retrieve failed'));\n }\n }\n\n private async resolveQueryEmbedding(\n request: RetrieveRequest,\n ): Promise<Result<number[], RagError | E>> {\n if (isAutoEmbedRetrieve(request)) {\n if (!request.text) {\n return err({ code: 'rag_invalid_request', message: '`text` is required.' });\n }\n if (!this._embedder) {\n return err({\n code: 'rag_invalid_request',\n message: '`model` was supplied but no embeddings port is configured on the pipeline.',\n });\n }\n const embedded = await this._embedder.embedOne(request.text);\n if (!isOk(embedded)) return err(embedded.error);\n return ok(embedded.data);\n }\n if (!Array.isArray(request.embedding) || request.embedding.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: '`embedding` is required and must be a non-empty array.',\n });\n }\n return ok(request.embedding);\n }\n}\n\nexport function isAutoEmbedIngest(request: IngestRequest): request is IngestRequestAutoEmbed {\n return 'model' in request && typeof request.model === 'string';\n}\n\nexport function isAutoEmbedRetrieve(request: RetrieveRequest): request is RetrieveRequestAutoEmbed {\n return 'model' in request && typeof request.model === 'string';\n}\n\nfunction validateIngest(request: IngestRequest, hasEmbedder: boolean): Result<true> {\n if (!request.id) return err({ code: 'rag_invalid_request', message: '`id` is required.' });\n if (!Array.isArray(request.chunks) || request.chunks.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: '`chunks` must contain at least one item.',\n });\n }\n if (isAutoEmbedIngest(request)) {\n if (!hasEmbedder) {\n return err({\n code: 'rag_invalid_request',\n message: '`model` was supplied but no embeddings port is configured on the pipeline.',\n });\n }\n for (let i = 0; i < request.chunks.length; i++) {\n const c = request.chunks[i];\n if (typeof c !== 'string' || c.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}] must be a non-empty string when \\`model\\` is provided.`,\n });\n }\n }\n return ok(true);\n }\n const dims = request.chunks[0]?.embedding.length ?? 0;\n if (dims === 0) {\n return err({\n code: 'rag_invalid_request',\n message:\n 'First chunk has no embedding — pass `model` to auto-embed or include precomputed embeddings.',\n });\n }\n for (let i = 0; i < request.chunks.length; i++) {\n const c = request.chunks[i];\n if (!c || !c.content || !Array.isArray(c.embedding) || c.embedding.length === 0) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}] must include non-empty content and embedding.`,\n });\n }\n if (c.embedding.length !== dims) {\n return err({\n code: 'rag_invalid_request',\n message: `chunks[${i}].embedding has ${c.embedding.length} dims but chunks[0] has ${dims}.`,\n });\n }\n }\n return ok(true);\n}\n","// F07 — `stackbone_platform.rag_jobs` writer + streaming progress events.\n//\n// `RagPipeline` is intentionally agnostic about *where* job lifecycle goes:\n// it calls into an `IngestJobWriter` whenever one is supplied, and the\n// concrete implementation in `RagModule` plugs the writer that talks to the\n// canonical `stackbone_platform.rag_jobs` table via the shared `client.database`\n// pool. Tests pass an in-memory writer that records the event sequence and\n// can simulate cancellation between batches.\n//\n// Event shape is locked by ADR `2026-05-10-rag-consolidation-on-client-database` §D9.\n\nimport { type Sql } from 'postgres';\n\nimport { err, ok, type Result } from '../result';\n\nimport { toRagError } from './errors';\n\nexport type RagIngestProgress =\n | { type: 'started'; jobId: string; totalChunks: number }\n | {\n type: 'progress';\n jobId: string;\n processedChunks: number;\n totalChunks: number;\n currentDocument?: { source: string; ordinal: number };\n }\n | { type: 'completed'; jobId: string; totalChunks: number }\n | { type: 'failed'; jobId: string; error: string };\n\nexport interface IngestJobStartArgs {\n collection: string;\n source: string;\n totalChunks: number;\n}\n\nexport interface IngestJobProgressArgs {\n jobId: string;\n processedChunks: number;\n totalChunks: number;\n currentDocument?: { source: string; ordinal: number };\n}\n\nexport interface IngestJobCompleteArgs {\n jobId: string;\n totalChunks: number;\n}\n\nexport interface IngestJobFailArgs {\n jobId: string;\n error: string;\n}\n\nexport interface IngestJobWriter {\n /**\n * Allocates a `stackbone_platform.rag_jobs` row in `running` state and returns its\n * id. Caller is expected to surface this id to the user before any\n * progress event fires so a `client.rag.ingestAsync` consumer can\n * immediately address the job (e.g. `POST /api/rag/jobs/:jobId/cancel`).\n */\n start(args: IngestJobStartArgs): Promise<Result<{ jobId: string }>>;\n /** Idempotent — last write wins on `progress` jsonb. */\n progress(args: IngestJobProgressArgs): Promise<void>;\n /** Marks the row terminal (status='succeeded'). */\n complete(args: IngestJobCompleteArgs): Promise<void>;\n /** Marks the row terminal (status='failed') and stores the error message. */\n fail(args: IngestJobFailArgs): Promise<void>;\n /**\n * Polled between chunk batches. Returning `true` makes the pipeline abort\n * with `rag_ingest_cancelled`, leaving the row in whatever terminal state\n * the writer transitions it to next (typically `cancelled`).\n */\n isCancelled(args: { jobId: string }): Promise<boolean>;\n}\n\ninterface CollectionRow {\n id: string;\n}\n\ninterface JobRow {\n id: string;\n status: 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';\n}\n\n/**\n * Writer bound to the shared `client.database` pool. Resolves the\n * `stackbone_platform.rag_collections.id` for the requested collection name (creating\n * the row on the fly so an `ingestAsync` against a brand-new collection\n * doesn't 404 on the FK). Cancellation is observed by re-reading the row's\n * status — the `/api/rag/jobs/:jobId/cancel` handler from F06 flips it to\n * `cancelled` from outside the pipeline.\n */\nexport function createSqlJobWriter(sql: Sql): IngestJobWriter {\n return {\n async start({ collection, totalChunks }): Promise<Result<{ jobId: string }>> {\n try {\n const collectionId = await ensureCollection(sql, collection);\n const inserted = await sql<JobRow[]>`\n INSERT INTO stackbone_platform.rag_jobs (collection_id, status, progress)\n VALUES (${collectionId}, 'running', ${sql.json({ totalChunks, processedChunks: 0 })})\n RETURNING id, status\n `;\n const row = inserted[0];\n if (!row) {\n return err({\n code: 'rag_job_insert_failed',\n message: 'Job row insert returned no rows.',\n });\n }\n return ok({ jobId: row.id });\n } catch (cause) {\n return err(toRagError(cause, 'Job start failed', 'rag_jobs_error'));\n }\n },\n async progress({ jobId, processedChunks, totalChunks, currentDocument }): Promise<void> {\n const payload = currentDocument\n ? { totalChunks, processedChunks, currentDocument }\n : { totalChunks, processedChunks };\n await sql`\n UPDATE stackbone_platform.rag_jobs\n SET progress = ${sql.json(payload)}, updated_at = now()\n WHERE id = ${jobId}\n `;\n },\n async complete({ jobId, totalChunks }): Promise<void> {\n await sql`\n UPDATE stackbone_platform.rag_jobs\n SET status = 'succeeded',\n progress = ${sql.json({ totalChunks, processedChunks: totalChunks })},\n updated_at = now()\n WHERE id = ${jobId} AND status NOT IN ('cancelled', 'succeeded', 'failed')\n `;\n },\n async fail({ jobId, error }): Promise<void> {\n await sql`\n UPDATE stackbone_platform.rag_jobs\n SET status = 'failed', error = ${error}, updated_at = now()\n WHERE id = ${jobId} AND status NOT IN ('cancelled', 'succeeded', 'failed')\n `;\n },\n async isCancelled({ jobId }): Promise<boolean> {\n const rows = await sql<Pick<JobRow, 'status'>[]>`\n SELECT status FROM stackbone_platform.rag_jobs WHERE id = ${jobId} LIMIT 1\n `;\n return rows[0]?.status === 'cancelled';\n },\n };\n}\n\n// One round-trip: ON CONFLICT DO UPDATE always returns the id whether the row\n// was inserted or already existed.\nasync function ensureCollection(sql: Sql, name: string): Promise<string> {\n const inserted = await sql<CollectionRow[]>`\n INSERT INTO stackbone_platform.rag_collections (name) VALUES (${name})\n ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name\n RETURNING id\n `;\n const row = inserted[0];\n if (!row) {\n throw new Error(`stackbone_platform.rag_collections upsert returned no row for ${name}`);\n }\n return row.id;\n}\n","import { type EmbeddingsPort } from '@stackbone/rag-core';\n\nimport { err, ok, type Result, type SdkError } from '../../../result';\nimport { type AiModule } from '../../external/ai/ai';\n\nconst DEFAULT_BATCH_SIZE = 128;\nconst DEFAULT_CONCURRENCY = 4;\n\nexport interface EmbedderOptions {\n ai: AiModule;\n model: string;\n batchSize?: number;\n /** Maximum parallel batches in flight. Default 4. */\n concurrency?: number;\n}\n\n/**\n * `Embedder` — thin adapter around `client.ai.embeddings.create(...)` that\n * batches calls up to the model's batch limit, runs a bounded number of\n * batches concurrently, and maps provider errors into the canonical\n * `rag_embedding_failed` `SdkError` shape consumed by `RagPipeline`.\n *\n * The class is decoupled from postgres and from `client.rag` so the ingestion\n * pipeline can be unit-tested with a deterministic fake `Embedder` that\n * returns fixed vectors per input string.\n *\n * It is the SDK-side adapter for `@stackbone/rag-core`'s `EmbeddingsPort`:\n * by declaring `implements EmbeddingsPort<SdkError>` the structural contract\n * the pipeline relies on (`embedOne` / `embedAll` returning a `Result`\n * envelope) becomes explicit, so `client.rag` can pass an `Embedder` straight\n * into the shared pipeline. The `AiModule` ownership — and all batching /\n * bounded-concurrency semantics — stay here in the adapter; the shared lib\n * constructs no `AiModule` and only ever calls the two port methods.\n */\nexport class Embedder implements EmbeddingsPort<SdkError> {\n private readonly _ai: AiModule;\n private readonly _model: string;\n private readonly _batchSize: number;\n private readonly _concurrency: number;\n\n constructor(options: EmbedderOptions) {\n const batchSize = options.batchSize ?? DEFAULT_BATCH_SIZE;\n if (!Number.isInteger(batchSize) || batchSize <= 0) {\n throw new Error('Embedder: `batchSize` must be a positive integer.');\n }\n this._ai = options.ai;\n this._model = options.model;\n this._batchSize = batchSize;\n this._concurrency = options.concurrency ?? DEFAULT_CONCURRENCY;\n }\n\n get model(): string {\n return this._model;\n }\n\n async embedOne(text: string): Promise<Result<number[]>> {\n const result = await this.embedAll([text]);\n if (result.error) return err(result.error);\n const first = result.data[0];\n if (!first) {\n return err({\n code: 'rag_embedding_failed',\n message: 'Embedding API returned no vector for the input text.',\n });\n }\n return ok(first);\n }\n\n async embedAll(texts: string[]): Promise<Result<number[][]>> {\n if (texts.length === 0) return ok([]);\n\n const batches: string[][] = [];\n for (let i = 0; i < texts.length; i += this._batchSize) {\n batches.push(texts.slice(i, i + this._batchSize));\n }\n\n const out: number[][] = new Array(texts.length);\n let cursor = 0;\n\n const worker = async (): Promise<SdkError | null> => {\n while (cursor < batches.length) {\n const batchIndex = cursor++;\n const batch = batches[batchIndex] as string[];\n const result = await this._ai.embeddings.create({ model: this._model, input: batch });\n if (result.error) {\n const meta = { ...(result.error.meta ?? {}), batchIndex, model: this._model };\n if (isUnsupportedModelError(result.error)) {\n return {\n code: 'rag_embedding_model_unsupported',\n message: `Embedding model \\`${this._model}\\` is not available through the configured AI client: ${result.error.message}`,\n cause: result.error,\n meta,\n };\n }\n return {\n code: 'rag_embedding_failed',\n message: `Embedding batch ${batchIndex} failed: ${result.error.message}`,\n cause: result.error,\n meta,\n };\n }\n const offset = batchIndex * this._batchSize;\n result.data.data.forEach((item, j) => {\n out[offset + j] = item.embedding;\n });\n }\n return null;\n };\n\n const errors = await Promise.all(\n Array.from({ length: Math.min(this._concurrency, batches.length) }, () => worker()),\n );\n const firstError = errors.find((e) => e !== null);\n if (firstError) return err(firstError);\n return ok(out);\n }\n}\n\n/**\n * Detects underlying `client.ai` errors that mean \"the embedding model is not\n * available through the configured AI client\" — typically OpenRouter 404 for\n * an unknown model id, or a 400/422 validation error rejecting the model\n * field. The pipeline maps these to the canonical\n * `rag_embedding_model_unsupported` error so creators get an actionable hint\n * instead of a raw provider error. ADR `2026-05-10-rag-consolidation-on-client-database` §D2.\n */\nfunction isUnsupportedModelError(error: SdkError): boolean {\n const status = (error.meta as { status?: number } | undefined)?.status;\n if (status === 404) return true;\n if (error.code === 'ai_validation_error') return true;\n return false;\n}\n","import {\n chunk as chunkText,\n createSqlJobWriter,\n isAutoEmbedIngest,\n isAutoEmbedRetrieve,\n isTaggedError,\n ok as ragOk,\n parse as parseInput,\n RagPipeline,\n toRagError,\n type ChunkOptions,\n type DeleteOptions,\n type DeleteResponse,\n type IngestRequest,\n type IngestRequestAutoEmbed,\n type IngestResponse,\n type IngestJobWriter,\n type ParseInput,\n type ParseOptions,\n type RagIngestProgress,\n type Result as RagCoreResult,\n type RetrieveHit,\n type RetrieveRequest,\n type RetrieveRequestAutoEmbed,\n} from '@stackbone/rag-core';\nimport { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { err, ok, type Result, type SdkError } from '../../../result';\nimport { type AiModule } from '../../external/ai/ai';\nimport { type DatabaseModule } from '../database/database';\n\nimport { Embedder } from './embedder';\n\nexport type {\n DeleteOptions,\n DeleteResponse,\n IngestChunk,\n IngestRequest,\n IngestRequestAutoEmbed,\n IngestRequestPrecomputed,\n IngestResponse,\n RetrieveHit,\n RetrieveRequest,\n RetrieveRequestAutoEmbed,\n RetrieveRequestPrecomputed,\n RagIngestProgress,\n} from '@stackbone/rag-core';\n\n/**\n * Handle returned by `client.rag.ingestAsync`. The job id is allocated\n * synchronously against `stackbone_rag_jobs` so the caller can track / cancel\n * the work via the `/api/rag/jobs/:jobId/*` surface; `events` is a streaming\n * channel of progress events (ADR §D9 shape); `result` settles when the\n * pipeline finishes (or fails / is cancelled).\n */\nexport interface IngestAsyncHandle {\n jobId: string;\n events: AsyncIterable<RagIngestProgress>;\n result: Promise<Result<IngestResponse>>;\n}\n\nconst DEFAULT_BATCH_SIZE = 128;\n\n/**\n * Default embedding model when neither the call site nor the resolved\n * `ClientConfig.rag.embeddingModel` (parsed by the CLI from `agent.yaml.rag`)\n * specifies one. Frozen by ADR `2026-05-10-rag-consolidation-on-client-database`\n * §D2 — kept in sync with `DEFAULT_RAG_EMBEDDING_MODEL` in `@stackbone/validators`.\n */\nexport const DEFAULT_RAG_EMBEDDING_MODEL = 'openai/text-embedding-3-small';\n\n/**\n * `client.rag` — `pgvector`-backed retrieval. Two shapes per write/read:\n * pass `model` to let the SDK embed for you; pass embeddings precomputed for\n * provider/dimension/batching control.\n *\n * Implementation note: `RagModule` is a thin facade over `RagPipeline`. The\n * pipeline owns parse → chunk → embed → persist; the facade resolves the\n * shared `client.database` pool, builds an `Embedder` on demand, and maps\n * configuration errors. See ADR `2026-05-10-rag-consolidation-on-client-database`.\n *\n * Connection ownership: this module never opens its own postgres pool. It\n * reaches the underlying `postgres-js` `Sql` through the **shared-handles\n * pattern** — `client.database.shared().$client` — so an agent that\n * touches both surfaces still opens exactly one connection pool against\n * `STACKBONE_POSTGRES_URL`. RAG is the canonical first cross-surface\n * consumer; memory and queues will adopt the same accessor when they\n * land.\n *\n * Schema readiness: the canonical schema (`stackbone_platform.rag_*`) is\n * provisioned by the platform migrator, present on every install. When an\n * operation still hits `42P01 relation does not exist`, the pipeline returns\n * `SdkError('rag_schema_missing')` with an actionable hint.\n */\n/**\n * Test-only seams accepted by `RagModule`. Production callers leave these\n * unset — they are injected by `ingest-async.spec.ts` to substitute the\n * shared-pool lookup and the SQL-backed job writer.\n */\nexport interface RagModuleTestDeps {\n /**\n * Replaces the `client.database.shared().$client` lookup used by\n * `ingestAsync`. Tests can plug a fake `Sql` here without standing up\n * the database surface.\n */\n sqlProvider?: () => Result<Sql>;\n /** Builds an `IngestJobWriter` from the resolved SQL. Defaults to `createSqlJobWriter`. */\n jobWriterFactory?: (sql: Sql) => IngestJobWriter;\n}\n\nexport class RagModule {\n private readonly _gate: ModuleGate;\n private readonly _testSqlOverride?: () => Result<Sql>;\n private readonly _testJobWriterFactory?: (sql: Sql) => IngestJobWriter;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. RAG calls `getDatabase().shared()`\n * to reach the process-wide Drizzle handle (and its `$client` Sql) via\n * the shared-handles pattern — never reaches into a sibling module's\n * implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n /**\n * Lazy accessor for `client.ai`. RAG calls `getAi()` for the embeddings\n * namespace; the `Embedder` adapter reaches the shared OpenAI client\n * through the same `client.ai.embeddings.create` public surface, so\n * RAG never instantiates a parallel `OpenAI` client.\n */\n private readonly _getAi: () => AiModule,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n testDeps?: RagModuleTestDeps,\n ) {\n this._gate = gate ?? createModuleGate('rag', _resolved);\n if (testDeps?.sqlProvider) this._testSqlOverride = testDeps.sqlProvider;\n if (testDeps?.jobWriterFactory) this._testJobWriterFactory = testDeps.jobWriterFactory;\n }\n\n async ingest(request: IngestRequest): Promise<Result<IngestResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = resolveIngestModel(request, this._resolved);\n return this.withPipeline(buildEmbedderForIngest(resolved, this._getAi), (pipeline) =>\n pipeline.ingest(resolved),\n );\n }\n\n /**\n * Asynchronous ingest. Allocates a `stackbone_rag_jobs` row, returns the\n * job id immediately, and exposes both an `AsyncIterable` of streaming\n * progress events and the final `Result` so callers can `await` either\n * surface — typical webhook handlers consume `events` and ignore `result`,\n * tests `await result` directly. Cancellation is observed by flipping the\n * row's status (e.g. via `POST /api/rag/jobs/:jobId/cancel`); the worker\n * polls between chunk batches and bails out with `rag_ingest_cancelled`.\n *\n * Connection ownership: the `IngestJobWriter` is bound to the same SQL\n * pulled off the shared `client.database.shared()` handle, so a single\n * agent that issues `ingestAsync` and `client.database.select` in\n * flight still opens exactly one pool against\n * `STACKBONE_POSTGRES_URL`.\n */\n async ingestAsync(request: IngestRequest): Promise<Result<IngestAsyncHandle>> {\n if (!request.collection) {\n return err({\n code: 'rag_invalid_request',\n message: '`collection` is required for ingestAsync.',\n });\n }\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const sql = this._testSqlOverride ? this._testSqlOverride() : this.sql();\n if (sql.error) return err(sql.error);\n\n const writerFactory = this._testJobWriterFactory ?? createSqlJobWriter;\n const writer: IngestJobWriter = writerFactory(sql.data);\n const channel = createProgressChannel();\n const resolved = resolveIngestModel(request, this._resolved);\n const requestWithHook: IngestRequest = {\n ...resolved,\n onProgress: (event) => channel.push(event),\n } as IngestRequest;\n\n // Allocate the job row up-front so the caller has a stable id before we\n // hand back the handle. The pipeline will reuse the same writer (and\n // therefore the same row) when `request.collection` is set.\n const started = await writer.start({\n collection: request.collection,\n source: request.id,\n totalChunks: countChunks(resolved),\n });\n if (started.error) {\n channel.close();\n return err(started.error);\n }\n const jobId = started.data.jobId;\n const facadeWriter = withPreallocatedJob(writer, jobId);\n\n const embedder = buildEmbedderForIngest(resolved, this._getAi);\n const pipeline = new RagPipeline({\n sqlProvider: () => sql,\n ...(embedder && { embedder }),\n jobWriter: facadeWriter,\n });\n\n const result = pipeline\n .ingest(requestWithHook)\n .then((r) => {\n channel.close();\n return r;\n })\n .catch((cause: unknown) => {\n channel.close();\n return err<IngestResponse>(toRagError(cause, 'Ingest failed'));\n });\n\n return ok({ jobId, events: channel.iterable, result });\n }\n\n async delete(ids: string | string[], options?: DeleteOptions): Promise<Result<DeleteResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this.withPipeline(null, (pipeline) => pipeline.delete(ids, options));\n }\n\n async deleteWhere(\n filter: Record<string, unknown>,\n options?: DeleteOptions,\n ): Promise<Result<DeleteResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return this.withPipeline(null, (pipeline) => pipeline.deleteWhere(filter, options));\n }\n\n async retrieve(request: RetrieveRequest): Promise<Result<RetrieveHit[]>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = resolveRetrieveModel(request, this._resolved);\n return this.withPipeline(buildEmbedderForRetrieve(resolved, this._getAi), (pipeline) =>\n pipeline.retrieve(resolved),\n );\n }\n\n /**\n * Drops the legacy ad-hoc RAG tables (`rag_chunks` / `_rag_meta`) that\n * pre-feature-30 agents provisioned on first ingest. Kept for backwards\n * compatibility so an old agent can clean those up after upgrading. The\n * canonical RAG schema (`stackbone_platform.rag_*`) is owned by the platform\n * migrator — this method never touches it.\n */\n async reset(): Promise<Result<void>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n try {\n await sql.data`DROP TABLE IF EXISTS rag_chunks`;\n await sql.data`DROP TABLE IF EXISTS _rag_meta`;\n return ok(undefined);\n } catch (cause) {\n return err(toRagError(cause, 'Reset failed'));\n }\n }\n\n /**\n * Pure helper — exposed verbatim from the chunker. No DB, no AI, no\n * datapath traffic, so it is intentionally NOT gated.\n */\n chunk(text: string, options?: ChunkOptions): string[] {\n return chunkText(text, options);\n }\n\n /**\n * Pure helper — exposed verbatim from the parser. No DB, no AI, no\n * datapath traffic, so it is intentionally NOT gated.\n */\n parse(input: ParseInput, options?: ParseOptions): Promise<string> {\n return parseInput(input, options);\n }\n\n /**\n * Resolves the postgres-js `Sql` to use for this operation. Goes through\n * the **shared-handles pattern** — `client.database.shared().$client` —\n * to pull the postgres-js template-tag function off the same Drizzle\n * handle the rest of the SDK uses. Single pool per agent process.\n * Future cross-module transaction propagation plugs a tx-bound `Sql`\n * into the pipeline at the same call site, replacing the pool-bound\n * one without touching the rest of RAG.\n *\n * Configuration errors (`STACKBONE_POSTGRES_URL` unset) flow up as a\n * `Result.err` with the same `database_not_configured` shape\n * `client.database` raises, instead of throwing through the public\n * surface.\n */\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n if (isTaggedError(cause) && cause.code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: cause.message,\n cause,\n });\n }\n return err(toRagError(cause, 'Database handle unavailable'));\n }\n }\n\n private async withPipeline<T>(\n embedder: Embedder | null,\n run: (pipeline: RagPipeline<SdkError>) => Promise<RagCoreResult<T, SdkError>>,\n ): Promise<Result<T>> {\n const pipeline = new RagPipeline<SdkError>({\n sqlProvider: () => this.sql(),\n ...(embedder && { embedder }),\n });\n // `RagPipeline<SdkError>` emits `RagCoreResult<T, RagError | SdkError>`.\n // `RagError`'s code catalog is a strict subset of `SdkErrorCode`, so the\n // envelope is wire-identical to the SDK's own `Result<T>`; TS just won't\n // collapse the cross-module union on its own. The boundary is sound.\n return (await run(pipeline)) as Result<T>;\n }\n}\n\nfunction countChunks(request: IngestRequest): number {\n return Array.isArray(request.chunks) ? request.chunks.length : 0;\n}\n\n/**\n * Wraps an `IngestJobWriter` so the pipeline reuses an already-allocated job\n * row instead of inserting a new one. The facade pre-allocates so it can hand\n * the `jobId` back to the caller before launching the pipeline.\n */\nfunction withPreallocatedJob(writer: IngestJobWriter, jobId: string): IngestJobWriter {\n return {\n async start() {\n return ragOk({ jobId });\n },\n progress: writer.progress.bind(writer),\n complete: writer.complete.bind(writer),\n fail: writer.fail.bind(writer),\n isCancelled: writer.isCancelled.bind(writer),\n };\n}\n\ninterface ProgressChannel {\n push(event: RagIngestProgress): void;\n close(): void;\n iterable: AsyncIterable<RagIngestProgress>;\n}\n\n/**\n * Tiny single-consumer pull-channel. Buffers events when the consumer hasn't\n * started iterating yet (typical for `ingestAsync` callers that grab the\n * handle and `for await` later), and resolves a pending `next()` promise\n * synchronously when an event arrives mid-iteration.\n */\nfunction createProgressChannel(): ProgressChannel {\n const buffer: RagIngestProgress[] = [];\n let pending: ((value: IteratorResult<RagIngestProgress>) => void) | null = null;\n let closed = false;\n return {\n push(event) {\n if (pending) {\n const resolve = pending;\n pending = null;\n resolve({ value: event, done: false });\n return;\n }\n buffer.push(event);\n },\n close() {\n closed = true;\n if (pending) {\n const resolve = pending;\n pending = null;\n resolve({ value: undefined as never, done: true });\n }\n },\n iterable: {\n [Symbol.asyncIterator]() {\n return {\n next(): Promise<IteratorResult<RagIngestProgress>> {\n if (buffer.length > 0) {\n return Promise.resolve({ value: buffer.shift() as RagIngestProgress, done: false });\n }\n if (closed) return Promise.resolve({ value: undefined as never, done: true });\n return new Promise((resolve) => {\n pending = resolve;\n });\n },\n };\n },\n },\n };\n}\n\nfunction buildEmbedderForIngest(request: IngestRequest, getAi: () => AiModule): Embedder | null {\n if (!isAutoEmbedIngest(request)) return null;\n return new Embedder({\n ai: getAi(),\n model: request.model,\n batchSize: request.batchSize ?? DEFAULT_BATCH_SIZE,\n });\n}\n\nfunction buildEmbedderForRetrieve(\n request: RetrieveRequest,\n getAi: () => AiModule,\n): Embedder | null {\n if (!isAutoEmbedRetrieve(request)) return null;\n return new Embedder({ ai: getAi(), model: request.model });\n}\n\n/**\n * Inject the configured embedding model when the caller supplied string\n * chunks but omitted `model`. Precomputed-embedding requests are passed\n * through untouched. Source of the default: `agent.yaml.rag.embeddingModel`\n * (parsed by the CLI into `ResolvedConfig.config.rag.embeddingModel`),\n * falling back to the ADR-frozen `DEFAULT_RAG_EMBEDDING_MODEL`.\n */\nfunction resolveIngestModel(request: IngestRequest, resolved: ResolvedConfig): IngestRequest {\n if (isAutoEmbedIngest(request)) return request;\n if (!Array.isArray(request.chunks) || request.chunks.length === 0) return request;\n if (typeof request.chunks[0] !== 'string') return request;\n const model = resolved.ragEmbeddingModel ?? DEFAULT_RAG_EMBEDDING_MODEL;\n return { ...(request as unknown as IngestRequestAutoEmbed), model };\n}\n\nfunction resolveRetrieveModel(request: RetrieveRequest, resolved: ResolvedConfig): RetrieveRequest {\n if (isAutoEmbedRetrieve(request)) return request;\n if (typeof (request as unknown as RetrieveRequestAutoEmbed).text !== 'string') return request;\n const model = resolved.ragEmbeddingModel ?? DEFAULT_RAG_EMBEDDING_MODEL;\n return { ...(request as unknown as RetrieveRequestAutoEmbed), model };\n}\n","async function A(A={}){var I,g=A,C=!!globalThis.window,B=!!globalThis.WorkerGlobalScope,Q=(globalThis.process?.versions?.node&&globalThis.process,import.meta.url);if(C||B){try{new URL(\".\",Q).href}catch{}B&&(I=A=>{var I=new XMLHttpRequest;return I.open(\"GET\",A,!1),I.responseType=\"arraybuffer\",I.send(null),new Uint8Array(I.response)})}(function(){}).bind();var E,i,D,F,o,w,h,S,y,k,c,M=function(){}.bind(),U=!1,G=!1;function J(){var A=d.buffer;h=new Int8Array(A),o=new Int16Array(A),g.HEAPU8=c=new Uint8Array(A),new Uint16Array(A),w=new Int32Array(A),k=new Uint32Array(A),S=new Float32Array(A),y=new Float64Array(A)}function Y(A){g.onAbort?.(A),M(A=`Aborted(${A})`),U=!0,A+=\". Build with -sASSERTIONS for more info.\";var I=new WebAssembly.RuntimeError(A);throw D?.(I),I}for(var N=A=>{for(;A.length>0;)A.shift()(g)},K=[],H=A=>K.push(A),a=[],f=A=>a.push(A),s=globalThis.TextDecoder&&new TextDecoder,L=(A,I,g)=>A?((A,I=0,g,C)=>{var B=((A,I,g,C)=>{var B=I+g;if(C)return B;for(;A[I]&&!(I>=B);)++I;return I})(A,I,g,C);if(B-I>16&&A.buffer&&s)return s.decode(A.subarray(I,B));for(var Q=\"\";I<B;){var E=A[I++];if(128&E){var i=63&A[I++];if(192!=(224&E)){var D=63&A[I++];if((E=224==(240&E)?(15&E)<<12|i<<6|D:(7&E)<<18|i<<12|D<<6|63&A[I++])<65536)Q+=String.fromCharCode(E);else{var F=E-65536;Q+=String.fromCharCode(55296|F>>10,56320|1023&F)}}else Q+=String.fromCharCode((31&E)<<6|i)}else Q+=String.fromCharCode(E)}return Q})(c,A,I,g):\"\",R=[],p=(A,I)=>Math.ceil(A/I)*I,t=A=>{var I=(A-d.buffer.byteLength+65535)/65536|0;try{return d.grow(I),J(),1}catch(A){}},n=new Uint8Array(123),q=25;q>=0;--q)n[48+q]=52+q,n[65+q]=q,n[97+q]=26+q;if(n[43]=62,n[47]=63,g.noExitRuntime&&g.noExitRuntime,g.print&&g.print,g.printErr&&(M=g.printErr),g.wasmBinary&&(E=g.wasmBinary),g.arguments&&g.arguments,g.thisProgram&&g.thisProgram,g.preInit)for(\"function\"==typeof g.preInit&&(g.preInit=[g.preInit]);g.preInit.length>0;)g.preInit.shift()();g.setValue=function(A,I,g=\"i8\"){switch(g.endsWith(\"*\")&&(g=\"*\"),g){case\"i1\":case\"i8\":h[A]=I;break;case\"i16\":o[A>>1]=I;break;case\"i32\":w[A>>2]=I;break;case\"i64\":Y(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":S[A>>2]=I;break;case\"double\":y[A>>3]=I;break;case\"*\":k[A>>2]=I;break;default:Y(`invalid type for setValue: ${g}`)}},g.getValue=function(A,I=\"i8\"){switch(I.endsWith(\"*\")&&(I=\"*\"),I){case\"i1\":case\"i8\":return h[A];case\"i16\":return o[A>>1];case\"i32\":return w[A>>2];case\"i64\":Y(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return S[A>>2];case\"double\":return y[A>>3];case\"*\":return k[A>>2];default:Y(`invalid type for getValue: ${I}`)}},g.UTF8ToString=L;var d,O,r={40216:()=>g.getRandomValue(),40252:()=>{if(void 0===g.getRandomValue)try{var A=\"object\"==typeof window?window:self,I=void 0!==A.crypto?A.crypto:A.msCrypto;I=void 0===I?B:I;var C=function(){var A=new Uint32Array(1);return I.getRandomValues(A),A[0]>>>0};C(),g.getRandomValue=C}catch(A){try{var B=require(\"crypto\"),Q=function(){var A=B.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};Q(),g.getRandomValue=Q}catch(A){throw\"No secure random number generator found\"}}}},e={a:(A,I,g,C)=>Y(`Assertion failed: ${L(A)}, at: `+[I?L(I):\"unknown filename\",g,C?L(C):\"unknown function\"]),c:()=>Y(\"\"),b:(A,I,g)=>((A,I,g)=>{var C=((A,I)=>{var g;for(R.length=0;g=c[A++];){var C=105!=g;I+=(C&=112!=g)&&I%8?4:0,R.push(112==g?k[I>>2]:105==g?w[I>>2]:y[I>>3]),I+=C?8:4}return R})(I,g);return r[A](...C)})(A,I,g),d:A=>{var I=c.length,g=2147483648;if((A>>>=0)>g)return!1;for(var C=1;C<=4;C*=2){var B=I*(1+.2/C);B=Math.min(B,A+100663296);var Q=Math.min(g,p(Math.max(A,B),65536));if(t(Q))return!0}return!1}};return O=await async function(){function A(A,I){return function(A){g._crypto_aead_aegis128l_keybytes=A.f,g._crypto_aead_aegis128l_nsecbytes=A.g,g._crypto_aead_aegis128l_npubbytes=A.h,g._crypto_aead_aegis128l_abytes=A.i,g._crypto_aead_aegis128l_messagebytes_max=A.j,g._crypto_aead_aegis128l_keygen=A.k,g._crypto_aead_aegis128l_encrypt=A.l,g._crypto_aead_aegis128l_encrypt_detached=A.m,g._crypto_aead_aegis128l_decrypt=A.n,g._crypto_aead_aegis128l_decrypt_detached=A.o,g._crypto_aead_aegis256_keybytes=A.p,g._crypto_aead_aegis256_nsecbytes=A.q,g._crypto_aead_aegis256_npubbytes=A.r,g._crypto_aead_aegis256_abytes=A.s,g._crypto_aead_aegis256_messagebytes_max=A.t,g._crypto_aead_aegis256_keygen=A.u,g._crypto_aead_aegis256_encrypt=A.v,g._crypto_aead_aegis256_encrypt_detached=A.w,g._crypto_aead_aegis256_decrypt=A.x,g._crypto_aead_aegis256_decrypt_detached=A.y,g._crypto_aead_aes256gcm_is_available=A.z,g._crypto_aead_chacha20poly1305_encrypt_detached=A.A,g._crypto_aead_chacha20poly1305_encrypt=A.B,g._crypto_aead_chacha20poly1305_ietf_encrypt_detached=A.C,g._crypto_aead_chacha20poly1305_ietf_encrypt=A.D,g._crypto_aead_chacha20poly1305_decrypt_detached=A.E,g._crypto_aead_chacha20poly1305_decrypt=A.F,g._crypto_aead_chacha20poly1305_ietf_decrypt_detached=A.G,g._crypto_aead_chacha20poly1305_ietf_decrypt=A.H,g._crypto_aead_chacha20poly1305_ietf_keybytes=A.I,g._crypto_aead_chacha20poly1305_ietf_npubbytes=A.J,g._crypto_aead_chacha20poly1305_ietf_nsecbytes=A.K,g._crypto_aead_chacha20poly1305_ietf_abytes=A.L,g._crypto_aead_chacha20poly1305_ietf_messagebytes_max=A.M,g._crypto_aead_chacha20poly1305_ietf_keygen=A.N,g._crypto_aead_chacha20poly1305_keybytes=A.O,g._crypto_aead_chacha20poly1305_npubbytes=A.P,g._crypto_aead_chacha20poly1305_nsecbytes=A.Q,g._crypto_aead_chacha20poly1305_abytes=A.R,g._crypto_aead_chacha20poly1305_messagebytes_max=A.S,g._crypto_aead_chacha20poly1305_keygen=A.T,g._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=A.U,g._crypto_aead_xchacha20poly1305_ietf_encrypt=A.V,g._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=A.W,g._crypto_aead_xchacha20poly1305_ietf_decrypt=A.X,g._crypto_aead_xchacha20poly1305_ietf_keybytes=A.Y,g._crypto_aead_xchacha20poly1305_ietf_npubbytes=A.Z,g._crypto_aead_xchacha20poly1305_ietf_nsecbytes=A._,g._crypto_aead_xchacha20poly1305_ietf_abytes=A.$,g._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=A.aa,g._crypto_aead_xchacha20poly1305_ietf_keygen=A.ba,g._crypto_auth_bytes=A.ca,g._crypto_auth_keybytes=A.da,g._crypto_auth=A.ea,g._crypto_auth_verify=A.fa,g._crypto_auth_keygen=A.ga,g._crypto_box_seedbytes=A.ha,g._crypto_box_publickeybytes=A.ia,g._crypto_box_secretkeybytes=A.ja,g._crypto_box_beforenmbytes=A.ka,g._crypto_box_noncebytes=A.la,g._crypto_box_macbytes=A.ma,g._crypto_box_messagebytes_max=A.na,g._crypto_box_seed_keypair=A.oa,g._crypto_box_keypair=A.pa,g._crypto_box_beforenm=A.qa,g._crypto_box_detached_afternm=A.ra,g._crypto_box_detached=A.sa,g._crypto_box_easy_afternm=A.ta,g._crypto_box_easy=A.ua,g._crypto_box_open_detached_afternm=A.va,g._crypto_box_open_detached=A.wa,g._crypto_box_open_easy_afternm=A.xa,g._crypto_box_open_easy=A.ya,g._crypto_box_seal=A.za,g._crypto_box_seal_open=A.Aa,g._crypto_box_sealbytes=A.Ba,g._crypto_generichash_bytes_min=A.Ca,g._crypto_generichash_bytes_max=A.Da,g._crypto_generichash_bytes=A.Ea,g._crypto_generichash_keybytes_min=A.Fa,g._crypto_generichash_keybytes_max=A.Ga,g._crypto_generichash_keybytes=A.Ha,g._crypto_generichash_statebytes=A.Ia,g._crypto_generichash=A.Ja,g._crypto_generichash_init=A.Ka,g._crypto_generichash_update=A.La,g._crypto_generichash_final=A.Ma,g._crypto_generichash_keygen=A.Na,g._crypto_hash_bytes=A.Oa,g._crypto_hash=A.Pa,g._crypto_hash_sha3256_bytes=A.Qa,g._crypto_hash_sha3256_statebytes=A.Ra,g._crypto_hash_sha3256_init=A.Sa,g._crypto_hash_sha3256_update=A.Ta,g._crypto_hash_sha3256_final=A.Ua,g._crypto_hash_sha3256=A.Va,g._crypto_hash_sha3512_bytes=A.Wa,g._crypto_hash_sha3512_statebytes=A.Xa,g._crypto_hash_sha3512_init=A.Ya,g._crypto_hash_sha3512_update=A.Za,g._crypto_hash_sha3512_final=A._a,g._crypto_hash_sha3512=A.$a,g._crypto_ipcrypt_bytes=A.ab,g._crypto_ipcrypt_keybytes=A.bb,g._crypto_ipcrypt_nd_keybytes=A.cb,g._crypto_ipcrypt_nd_tweakbytes=A.db,g._crypto_ipcrypt_nd_inputbytes=A.eb,g._crypto_ipcrypt_nd_outputbytes=A.fb,g._crypto_ipcrypt_ndx_keybytes=A.gb,g._crypto_ipcrypt_ndx_tweakbytes=A.hb,g._crypto_ipcrypt_ndx_inputbytes=A.ib,g._crypto_ipcrypt_ndx_outputbytes=A.jb,g._crypto_ipcrypt_pfx_keybytes=A.kb,g._crypto_ipcrypt_pfx_bytes=A.lb,g._crypto_ipcrypt_keygen=A.mb,g._crypto_ipcrypt_nd_keygen=A.nb,g._crypto_ipcrypt_ndx_keygen=A.ob,g._crypto_ipcrypt_pfx_keygen=A.pb,g._crypto_ipcrypt_encrypt=A.qb,g._crypto_ipcrypt_decrypt=A.rb,g._crypto_ipcrypt_nd_encrypt=A.sb,g._crypto_ipcrypt_nd_decrypt=A.tb,g._crypto_ipcrypt_ndx_encrypt=A.ub,g._crypto_ipcrypt_ndx_decrypt=A.vb,g._crypto_ipcrypt_pfx_encrypt=A.wb,g._crypto_ipcrypt_pfx_decrypt=A.xb,g._crypto_kdf_bytes_min=A.yb,g._crypto_kdf_bytes_max=A.zb,g._crypto_kdf_contextbytes=A.Ab,g._crypto_kdf_keybytes=A.Bb,g._crypto_kdf_derive_from_key=A.Cb,g._crypto_kdf_keygen=A.Db,g._crypto_kdf_hkdf_sha256_extract_init=A.Eb,g._crypto_kdf_hkdf_sha256_extract_update=A.Fb,g._crypto_kdf_hkdf_sha256_extract_final=A.Gb,g._crypto_kdf_hkdf_sha256_extract=A.Hb,g._crypto_kdf_hkdf_sha256_keygen=A.Ib,g._crypto_kdf_hkdf_sha256_expand=A.Jb,g._crypto_kdf_hkdf_sha256_keybytes=A.Kb,g._crypto_kdf_hkdf_sha256_bytes_min=A.Lb,g._crypto_kdf_hkdf_sha256_bytes_max=A.Mb,g._crypto_kdf_hkdf_sha256_statebytes=A.Nb,g._crypto_kdf_hkdf_sha512_extract_init=A.Ob,g._crypto_kdf_hkdf_sha512_extract_update=A.Pb,g._crypto_kdf_hkdf_sha512_extract_final=A.Qb,g._crypto_kdf_hkdf_sha512_extract=A.Rb,g._crypto_kdf_hkdf_sha512_keygen=A.Sb,g._crypto_kdf_hkdf_sha512_expand=A.Tb,g._crypto_kdf_hkdf_sha512_keybytes=A.Ub,g._crypto_kdf_hkdf_sha512_bytes_min=A.Vb,g._crypto_kdf_hkdf_sha512_bytes_max=A.Wb,g._crypto_kdf_hkdf_sha512_statebytes=A.Xb,g._crypto_kem_publickeybytes=A.Yb,g._crypto_kem_secretkeybytes=A.Zb,g._crypto_kem_ciphertextbytes=A._b,g._crypto_kem_sharedsecretbytes=A.$b,g._crypto_kem_seedbytes=A.ac,g._crypto_kem_primitive=A.bc,g._crypto_kem_seed_keypair=A.cc,g._crypto_kem_keypair=A.dc,g._crypto_kem_enc=A.ec,g._crypto_kem_dec=A.fc,g._crypto_kem_mlkem768_publickeybytes=A.gc,g._crypto_kem_mlkem768_secretkeybytes=A.hc,g._crypto_kem_mlkem768_ciphertextbytes=A.ic,g._crypto_kem_mlkem768_sharedsecretbytes=A.jc,g._crypto_kem_mlkem768_seedbytes=A.kc,g._crypto_kem_mlkem768_seed_keypair=A.lc,g._crypto_kem_mlkem768_keypair=A.mc,g._crypto_kem_mlkem768_enc=A.nc,g._crypto_kem_mlkem768_enc_deterministic=A.oc,g._crypto_kem_mlkem768_dec=A.pc,g._crypto_kem_xwing_publickeybytes=A.qc,g._crypto_kem_xwing_secretkeybytes=A.rc,g._crypto_kem_xwing_ciphertextbytes=A.sc,g._crypto_kem_xwing_sharedsecretbytes=A.tc,g._crypto_kem_xwing_seedbytes=A.uc,g._crypto_kem_xwing_seed_keypair=A.vc,g._crypto_kem_xwing_keypair=A.wc,g._crypto_kem_xwing_enc_deterministic=A.xc,g._crypto_kem_xwing_enc=A.yc,g._crypto_kem_xwing_dec=A.zc,g._crypto_kx_seed_keypair=A.Ac,g._crypto_kx_keypair=A.Bc,g._crypto_kx_client_session_keys=A.Cc,g._crypto_kx_server_session_keys=A.Dc,g._crypto_kx_publickeybytes=A.Ec,g._crypto_kx_secretkeybytes=A.Fc,g._crypto_kx_seedbytes=A.Gc,g._crypto_kx_sessionkeybytes=A.Hc,g._crypto_scalarmult_base=A.Ic,g._crypto_scalarmult=A.Jc,g._crypto_scalarmult_bytes=A.Kc,g._crypto_scalarmult_scalarbytes=A.Lc,g._crypto_secretbox_keybytes=A.Mc,g._crypto_secretbox_noncebytes=A.Nc,g._crypto_secretbox_macbytes=A.Oc,g._crypto_secretbox_messagebytes_max=A.Pc,g._crypto_secretbox_keygen=A.Qc,g._crypto_secretbox_detached=A.Rc,g._crypto_secretbox_easy=A.Sc,g._crypto_secretbox_open_detached=A.Tc,g._crypto_secretbox_open_easy=A.Uc,g._crypto_secretstream_xchacha20poly1305_keygen=A.Vc,g._crypto_secretstream_xchacha20poly1305_init_push=A.Wc,g._crypto_secretstream_xchacha20poly1305_init_pull=A.Xc,g._crypto_secretstream_xchacha20poly1305_rekey=A.Yc,g._crypto_secretstream_xchacha20poly1305_push=A.Zc,g._crypto_secretstream_xchacha20poly1305_pull=A._c,g._crypto_secretstream_xchacha20poly1305_statebytes=A.$c,g._crypto_secretstream_xchacha20poly1305_abytes=A.ad,g._crypto_secretstream_xchacha20poly1305_headerbytes=A.bd,g._crypto_secretstream_xchacha20poly1305_keybytes=A.cd,g._crypto_secretstream_xchacha20poly1305_messagebytes_max=A.dd,g._crypto_secretstream_xchacha20poly1305_tag_message=A.ed,g._crypto_secretstream_xchacha20poly1305_tag_push=A.fd,g._crypto_secretstream_xchacha20poly1305_tag_rekey=A.gd,g._crypto_secretstream_xchacha20poly1305_tag_final=A.hd,g._crypto_shorthash_bytes=A.id,g._crypto_shorthash_keybytes=A.jd,g._crypto_shorthash=A.kd,g._crypto_shorthash_keygen=A.ld,g._crypto_sign_statebytes=A.md,g._crypto_sign_bytes=A.nd,g._crypto_sign_seedbytes=A.od,g._crypto_sign_publickeybytes=A.pd,g._crypto_sign_secretkeybytes=A.qd,g._crypto_sign_messagebytes_max=A.rd,g._crypto_sign_seed_keypair=A.sd,g._crypto_sign_keypair=A.td,g._crypto_sign=A.ud,g._crypto_sign_open=A.vd,g._crypto_sign_detached=A.wd,g._crypto_sign_verify_detached=A.xd,g._crypto_sign_init=A.yd,g._crypto_sign_update=A.zd,g._crypto_sign_final_create=A.Ad,g._crypto_sign_final_verify=A.Bd,g._crypto_sign_ed25519_pk_to_curve25519=A.Cd,g._crypto_sign_ed25519_sk_to_curve25519=A.Dd,g._crypto_xof_shake128_blockbytes=A.Ed,g._crypto_xof_shake128_statebytes=A.Fd,g._crypto_xof_shake128_domain_standard=A.Gd,g._crypto_xof_shake128=A.Hd,g._crypto_xof_shake128_init=A.Id,g._crypto_xof_shake128_init_with_domain=A.Jd,g._crypto_xof_shake128_update=A.Kd,g._crypto_xof_shake128_squeeze=A.Ld,g._crypto_xof_shake256_blockbytes=A.Md,g._crypto_xof_shake256_statebytes=A.Nd,g._crypto_xof_shake256_domain_standard=A.Od,g._crypto_xof_shake256=A.Pd,g._crypto_xof_shake256_init=A.Qd,g._crypto_xof_shake256_init_with_domain=A.Rd,g._crypto_xof_shake256_update=A.Sd,g._crypto_xof_shake256_squeeze=A.Td,g._crypto_xof_turboshake128_blockbytes=A.Ud,g._crypto_xof_turboshake128_statebytes=A.Vd,g._crypto_xof_turboshake128_domain_standard=A.Wd,g._crypto_xof_turboshake128=A.Xd,g._crypto_xof_turboshake128_init=A.Yd,g._crypto_xof_turboshake128_init_with_domain=A.Zd,g._crypto_xof_turboshake128_update=A._d,g._crypto_xof_turboshake128_squeeze=A.$d,g._crypto_xof_turboshake256_blockbytes=A.ae,g._crypto_xof_turboshake256_statebytes=A.be,g._crypto_xof_turboshake256_domain_standard=A.ce,g._crypto_xof_turboshake256=A.de,g._crypto_xof_turboshake256_init=A.ee,g._crypto_xof_turboshake256_init_with_domain=A.fe,g._crypto_xof_turboshake256_update=A.ge,g._crypto_xof_turboshake256_squeeze=A.he,g._randombytes_random=A.ie,g._randombytes_stir=A.je,g._randombytes_uniform=A.ke,g._randombytes_buf=A.le,g._randombytes_buf_deterministic=A.me,g._randombytes_seedbytes=A.ne,g._randombytes_close=A.oe,g._randombytes=A.pe,g._sodium_bin2hex=A.qe,g._sodium_hex2bin=A.re,g._sodium_base64_encoded_len=A.se,g._sodium_bin2base64=A.te,g._sodium_base642bin=A.ue,g._sodium_ip2bin=A.ve,g._sodium_bin2ip=A.we,g._sodium_init=A.xe,g._sodium_pad=A.ye,g._sodium_unpad=A.ze,g._sodium_version_string=A.Ae,g._sodium_library_version_major=A.Be,g._sodium_library_version_minor=A.Ce,g._sodium_library_minimal=A.De,g._malloc=A.Ee,g._free=A.Fe,A.dynCall_iiiji,A.dynCall_iiij,A.dynCall_iijii,A.dynCall_iiijiji,A.dynCall_iiijiii,d=A.e,A.__indirect_function_table}(O=A.exports),J(),O}var C={a:e};return g.instantiateWasm?new Promise((I,B)=>{g.instantiateWasm(C,(g,C)=>{I(A(g))})}):(F??=(A=>{for(var I,g,C=0,B=0,Q=295748,E=new Uint8Array(221811-(\"=\"==A[295746])-(\"=\"==A[295747]));C<Q;C+=4,B+=3)I=n[A.charCodeAt(C+1)],g=n[A.charCodeAt(C+2)],E[B]=n[A.charCodeAt(C)]<<2|I>>4,E[B+1]=I<<4|g>>2,E[B+2]=g<<6|n[A.charCodeAt(C+3)];return E})(\"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IgMgATQCGCIGfnwgAigCCCIsrCINIAE0AhAiB358IAIoAgwiLawiECABKAIMIi5BAXSsIhV+fCACKAIQIi+sIhEgATQCCCIIfnwgAigCFCIwrCIWIAEoAgQiMUEBdKwiF358IAIoAhgiMqwiICABNAIAIgl+fCACKAIcIjNBE2ysIgwgASgCJCI0QQF0rCIYfnwgAigCICI1QRNsrCIEIAE0AiAiCn58IAIoAiQiAkETbKwiBSABKAIcIgFBAXSsIhl+fCAHIAt+IAMgK6wiGn58IA0gLqwiG358IAggEH58IBEgMawiHH58IAkgFn58IDJBE2ysIg4gNKwiHX58IAogDH58IAQgAawiHn58IAUgBn58IAsgFX4gAyAHfnwgCCANfnwgECAXfnwgCSARfnwgMEETbKwiHyAYfnwgCiAOfnwgDCAZfnwgBCAGfnwgBSAUfnwiIkKAgIAQfCIjQhqHfCIkQoCAgAh8IiVCGYd8IhIgEkKAgIAQfCITQoCAgOAPg30+AhggACALIBd+IAMgCH58IAkgDX58IC1BE2ysIg8gGH58IAogL0ETbKwiEn58IBkgH358IAYgDn58IAwgFH58IAQgB358IAUgFX58IAkgC34gAyAcfnwgLEETbKwiISAdfnwgCiAPfnwgEiAefnwgBiAffnwgDiAafnwgByAMfnwgBCAbfnwgBSAIfnwgKkETbKwgGH4gAyAJfnwgCiAhfnwgDyAZfnwgBiASfnwgFCAffnwgByAOfnwgDCAVfnwgBCAIfnwgBSAXfnwiIUKAgIAQfCImQhqHfCInQoCAgAh8IihCGYd8Ig8gD0KAgIAQfCIpQoCAgOAPg30+AgggACAGIAt+IAMgHn58IA0gGn58IAcgEH58IBEgG358IAggFn58IBwgIH58IAkgM6wiD358IAQgHX58IAUgCn58IBNCGod8IhMgE0KAgIAIfCITQoCAgPAPg30+AhwgACAIIAt+IAMgG358IA0gHH58IAkgEH58IBIgHX58IAogH358IA4gHn58IAYgDH58IAQgGn58IAUgB358IClCGod8IgQgBEKAgIAIfCIEQoCAgPAPg30+AgwgACALIBl+IAMgCn58IAYgDX58IBAgFH58IAcgEX58IBUgFn58IAggIH58IA8gF358IAkgNawiDH58IAUgGH58IBNCGYd8IgUg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IAZSDQALCyAAIAsgDCAMQYAFaiINEDsgASAFp2ohASACIAV9IgJC/wBWBEADQCAAIAEgDCANEDsgAUGAAWohASACQoABfSICQv8AVg0ACwsCQCACUA0AIAJCA4MhBEIAIQdCACEDIAJCBFoEQCACQvwAgyEFQgAhAgNAIAsgA6ciAGogACABai0AADoAACALIABBAXIiDWogASANai0AADoAACALIABBAnIiDWogASANai0AADoAACALIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALIARQDQELA0AgCyADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAHQgF8IgcgBFINAAsLIAxBwAUQBwwBCyACQgODIQVCACEDIAJCBFoEQCACQnyDIQIDQCALIAMgBHynaiABIAOnai0AADoAACALIANCAYQiBiAEfKdqIAEgBqdqLQAAOgAAIAsgA0IChCIGIAR8p2ogASAGp2otAAA6AAAgCyADQgOEIgYgBHynaiABIAanai0AADoAACADQgR8IQMgCUIEfCIJIAJSDQALIAVQDQELA0AgCyADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAdCAXwiByAFUg0ACwsgDEHABWokAEEAC6UFAQN/IwBBsAFrIgIkACACIAEoAAA2AgBBBCEDIAIgASgABDYCBCACIAEoAAg2AgggAiABKAAMIgE2AgwDQCACIANBAnRqIgQgA0EDcQR/IAEFIANBAnZB8IgCai0AACABQRh3IgFBCHZB/wFxQYCrAmotAABBCHQgAUH/AXFBgKsCai0AAHIgAUEQdkH/AXFBgKsCai0AAEEQdHIgAUEYdkGAqwJqLQAAQRh0cnMLIARBEGsoAgBzIgE2AgAgA0EBaiIDQSxHDQALIAAgAigCADYCACAAIAIoAgQ2AgQgACACKAIINgIIIAAgAigCDDYCDCAAIAIoAhA2AhAgACACKAIUNgIUIAAgAigCGDYCGCAAIAIoAhw2AhwgACACKAIgNgIgIAAgAigCJDYCJCAAIAIoAig2AiggACACKAIsNgIsIAAgAigCMDYCMCAAIAIoAjQ2AjQgACACKAI4NgI4IAAgAigCPDYCPCAAQUBrIAIoAkA2AgAgACACKAJENgJEIAAgAigCSDYCSCAAIAIoAkw2AkwgACACKAJQNgJQIAAgAigCVDYCVCAAIAIoAlg2AlggACACKAJcNgJcIAAgAigCYDYCYCAAIAIoAmQ2AmQgACACKAJoNgJoIAAgAigCbDYCbCAAIAIoAnA2AnAgACACKAJ0NgJ0IAAgAigCeDYCeCAAIAIoAnw2AnwgACACKAKAATYCgAEgACACKAKEATYChAEgACACKAKIATYCiAEgACACKAKMATYCjAEgACACKAKQATYCkAEgACACKAKUATYClAEgACACKAKYATYCmAEgACACKAKcATYCnAEgACACKAKgATYCoAEgACACKAKkATYCpAEgACACKAKoATYCqAEgACACKAKsATYCrAEgAkGwAWokAAufBAETfyABKAIoIQIgASgCBCEDIAEoAiwhBCABKAIIIQUgASgCMCEGIAEoAgwhByABKAI0IQggASgCECEJIAEoAjghCiABKAIUIQsgASgCPCEMIAEoAhghDSABQUBrIg4oAgAhDyABKAIcIRAgASgCRCERIAEoAiAhEiABKAJIIRMgASgCACEUIAAgASgCJCABKAJMajYCJCAAIBIgE2o2AiAgACAQIBFqNgIcIAAgDSAPajYCGCAAIAsgDGo2AhQgACAJIApqNgIQIAAgByAIajYCDCAAIAUgBmo2AgggACADIARqNgIEIAAgAiAUajYCACABKAIoIQIgASgCBCEDIAEoAiwhBCABKAIIIQUgASgCMCEGIAEoAgwhByABKAI0IQggASgCECEJIAEoAjghCiABKAIUIQsgASgCPCEMIAEoAhghDSAOKAIAIQ4gASgCHCEPIAEoAkQhECABKAIgIREgASgCSCESIAEoAgAhEyAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAPazYCRCAAQUBrIA4gDWs2AgAgACAMIAtrNgI8IAAgCiAJazYCOCAAIAggB2s2AjQgACAGIAVrNgIwIAAgBCADazYCLCAAIAIgE2s2AiggACABKQJQNwJQIAAgASkCWDcCWCAAIAEpAmA3AmAgACABKQJoNwJoIAAgASkCcDcCcCAAQfgAaiABQfgAakGgCxAGC/AJAR5/IAEoAighAyABKAIEIQQgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEOIAFBQGsiDygCACEQIAEoAhwhESABKAJEIRIgASgCICETIAEoAkghFCABKAIAIRUgACABKAIkIAEoAkxqNgIkIAAgEyAUajYCICAAIBEgEmo2AhwgACAOIBBqNgIYIAAgDCANajYCFCAAIAogC2o2AhAgACAIIAlqNgIMIAAgBiAHajYCCCAAIAQgBWo2AgQgACADIBVqNgIAIAEoAighBSABKAIEIQMgASgCLCEGIAEoAgghByABKAIwIQggASgCDCEJIAEoAjQhCiABKAIQIQsgASgCOCEMIAEoAhQhDSABKAI8IQ4gASgCGCEQIA8oAgAhDyABKAIcIQQgASgCRCERIAEoAiAhEiABKAJIIRMgASgCACEUIAAgASgCTCABKAIkazYCTCAAIBMgEms2AkggACARIARrNgJEIABBQGsiBCAPIBBrNgIAIAAgDiANazYCPCAAIAwgC2s2AjggACAKIAlrNgI0IAAgCCAHazYCMCAAIAYgA2s2AiwgAEEoaiIDIAUgFGs2AgAgAEHQAGogACACEAYgAyADIAJBKGoQBiAAQfgAaiACQfgAaiABQfgAahAGIAAgAUHQAGogAkHQAGoQBiAAKAIEIRUgACgCCCEWIAAoAgwhFyAAKAIQIRggACgCFCEZIAAoAhghGiAAKAIcIRsgACgCICEcIAAoAiQhHSADKAIAIQEgACgCUCECIAAoAiwhBSAAKAJUIQYgACgCMCEHIAAoAlghCCAAKAI0IQkgACgCXCEKIAAoAjghCyAAKAJgIQwgACgCPCENIAAoAmQhDiAEKAIAIQ8gACgCaCEQIAAoAkQhESAAKAJsIRIgACgCSCETIAAoAnAhFCAAKAIAIR4gACAAKAJMIh8gACgCdCIgajYCTCAAIBMgFGo2AkggACARIBJqNgJEIAQgDyAQajYCACAAIA0gDmo2AjwgACALIAxqNgI4IAAgCSAKajYCNCAAIAcgCGo2AjAgACAFIAZqNgIsIAMgASACajYCACAAICAgH2s2AiQgACAUIBNrNgIgIAAgEiARazYCHCAAIBAgD2s2AhggACAOIA1rNgIUIAAgDCALazYCECAAIAogCWs2AgwgACAIIAdrNgIIIAAgBiAFazYCBCAAIAIgAWs2AgAgACAdQQF0IgEgACgCnAEiAms2ApwBIAAgHEEBdCIDIAAoApgBIgRrNgKYASAAIBtBAXQiBSAAKAKUASIGazYClAEgACAaQQF0IgcgACgCkAEiCGs2ApABIAAgGUEBdCIJIAAoAowBIgprNgKMASAAIBhBAXQiCyAAKAKIASIMazYCiAEgACAXQQF0Ig0gACgChAEiDms2AoQBIAAgFkEBdCIPIAAoAoABIhBrNgKAASAAIBVBAXQiESAAKAJ8IhJrNgJ8IAAgHkEBdCITIAAoAngiFGs2AnggACADIARqNgJwIAAgBSAGajYCbCAAIAcgCGo2AmggACAJIApqNgJkIAAgCyAMajYCYCAAIA0gDmo2AlwgACAPIBBqNgJYIAAgESASajYCVCAAIBMgFGo2AlAgACABIAJqNgJ0C/UCAQN/IwBBsANrIgMkACADIAEpABg3AxggAyABKQAQNwMQIAMgASkACDcDCCADIAEpAAA3AwAgAyACOgAgIANBMGoiAUEAQcgB/AsAIAFBgD47AeQBIAFBADYC4AEgASADQiEQSBogASADQbACakGAARBKGgNAIAAgBEEEdGoiAiADQbACaiIFIARBAnRqKAIAIgFBAXZB1arVqgVxIAFB1arVqgVxaiIBQRx2QQNxIAFBHnZrOwEOIAIgAUEYdkEDcSABQRp2QQNxazsBDCACIAFBFHZBA3EgAUEWdkEDcWs7AQogAiABQRB2QQNxIAFBEnZBA3FrOwEIIAIgAUEMdkEDcSABQQ52QQNxazsBBiACIAFBCHZBA3EgAUEKdkEDcWs7AQQgAiABQQR2QQNxIAFBBnZBA3FrOwECIAIgAUEDcSABQQJ2QQNxazsBACAEQQFqIgRBIEcNAAsgA0EwakGAAhAHIAVBgAEQByADQbADaiQACxoAECAgAQRAIAAgAUHsxAIoAgAoAhARBQALCwgAIABBIBAVC9c5AS5+IAAgACkAqAEiCiAAKQCAASIbIAApAFgiFSAAKQAwIgEgACkACCIDhYWFhSICIAApALgBIg4gACkAkAEiCyAAKQBoIhwgACkAQCIGIAApABgiEIWFhYUiFkIBiYUiBSAAKQA4IgSFQgaJIhkgAyAAKQCgASIXIAApAHgiEyAAKQBQIiEgACkAKCIRIAApAAAiDIWFhYUiFCAAKQCwASINIAApAIgBIgcgACkAYCIPIAQgACkAECIYhYWFhSIIQgGJhSIEhUIBiSIaQn+FgyAAKQDAASISIAApAJgBIh4gACkAcCIJIAApAEgiIiAAKQAgIiOFhYWFIiQgAkIBiYUiAyAXhUISiSIXhSImIBYgFEIBiYUiAiAShUIOiSIWIAEgBIVCLIkiFCADIAyFIgxCf4WDhSIlhSAkQgGJIAiFIgEgDoVCOIkiDiADIBGFQiSJIhEgAiAjhUIbiSIIQn+Fg4UiI4UgBSANhUI9iSINIAIgIoVCFIkiEiABIBCFQhyJIhBCf4WDhSIihSAEIAqFQgKJIgogASAGhUI3iSIGIAUgGIVCPokiGEJ/hYOFIiSFIh1CAYkgBCAVhUIKiSIVIA4gBSAHhUIPiSIHQn+Fg4UiHyAFIA+FQiuJIg8gFiABIAuFQhWJIgtCf4WDhSInIAIgCYVCJ4kiCSAKIAMgE4VCKYkiE0J/hYOFIiAgASAchUIZiSIBIBcgAiAehUIIiSICQn+Fg4UiHCADICGFQgOJIgMgDSAEIBuFQi2JIgRCf4WDhSIbhYWFhSIhhSIFIAggDkJ/hYMgB4UiHoVCFYkiDiAcIAIgAUJ/hYMgGYUiKCALIA9Cf4WDIBSFIikgBiATIAlCf4WDhSIqIAcgFUJ/hYMgEYUiByAEIANCf4WDIBKFIiuFhYWFIiwgHiAQIA1Cf4WDIASFIi0gGCAKQn+FgyAThSITIBogF0J/hYMgAoUiDSALIAwgFkJ/hYOFIi6FhYWFIgJCAYmFIgSFQiuJIhdCf4WDICsgCSAGQn+FgyAYhSIJIAEgGUJ/hYMgGoUiCiAVIBFCf4WDIAiFIgYgDCAPIBRCf4WDhUKLgYKACIUiHCAQIAMgEkJ/hYOFIhKFhYWFIgEgIUIBiYUiA4VCLIkiGYUiISABQgGJIAKFIgIgIoVCFIkiGiADIAeFQi2JIhYgCiAsQgGJIB2FIgGFQgOJIhRCf4WDhSIehSAEIBuFQgaJIgwgAiAjhUIIiSIRIAUgDYVCGYkiCEJ/hYOFIiKFIAEgEoVCJIkiDSAEIB+FQg+JIhIgAyAohUIKiSIQQn+Fg4UiI4UgBSAthUI3iSIKIAEgBoVCKYkiBiACICaFQieJIhhCf4WDhSImhSIdQgGJIAMgKoVCAokiFSAKIAQgJ4VCPokiB0J/hYOFIh8gBSAThUI4iSIPIA0gAiAlhUIbiSILQn+Fg4UiJSABIAmFQhKJIgkgDCADICmFQgGJIgNCf4WDhSInIAIgJIVCDokiAiAZIAEgHIUiAUJ/hYOFIhwgBCAghUI9iSITIBogBSAuhUIciSIbQn+Fg4UiJIWFhYUiIIUiBSABIBcgGUJ/hYOFQouBgICAgICAgH+FIiiFIhkgHSAHIBVCf4WDIAaFIikgCyAPQn+FgyAShSIqIAMgCUJ/hYMgEYUiKyAbIBNCf4WDIBaFIiwgASACQn+FgyAOhSIBhYWFhSItQgGJhSIEIAkgEUJ/hYMgCIUiCYVCK4kiESAeIBggCkJ/hYMgB4UiHSAQIA1Cf4WDIAuFIgcgCCAMQn+FgyADhSIMICggFCAaQn+FgyAbhSIKhYWFhSIIIBUgBkJ/hYMgGIUiGyAPIBJCf4WDIBCFIg8gAiAOQn+FgyAXhSIGIBMgFkJ/hYMgFIUiDYUgCYWFhSICQgGJhSIDhUIsiSIaQn+Fg4VCiYGCgICAgICAf4UiHiAgQgGJIAKFIgIgAYVCHIkiFyAFIAyFQgOJIhYgCEIBiSAthSIBICSFQhSJIhRCf4WDhSIkhSADICGFQgGJIgwgAiArhUIZiSIOIAQgDYVCBokiCEJ/hYOFIiGFIAEgHIVCG4kiDSADICKFQgqJIhIgBSAKhUIkiSIQQn+Fg4UiHIUgBCAGhUI+iSIKIAEgJ4VCJ4kiBiACICyFQjeJIhhCf4WDhSIihSInQgGJIAUgB4VCKYkiFSAKIAMgJoVCAokiB0J/hYOFIiYgBCAPhUIPiSIPIA0gAiAphUI4iSILQn+Fg4UiICABICWFQgiJIgkgDCAFIB2FQhKJIhNCf4WDhSIlIAIgKoVCFYkiAiAZIAEgH4VCDokiAUJ/hYOFIh0gAyAjhUItiSIDIBcgBCAbhUI9iSIEQn+Fg4UiG4WFhYUiI4UiBSAYIApCf4WDIAeFIh+FQg6JIgogICAHIBVCf4WDIAaFIgcgCyAPQn+FgyAShSIoIBMgCUJ/hYMgDoUiKSABIAJCf4WDIBGFIiogBCADQn+FgyAWhSIrhYWFhSIsIB8gECANQn+FgyALhSINIAggDEJ/hYMgE4UiCyAaIBlCf4WDIAGFIhMgFCAXQn+FgyAEhSIthYWFhSIBQgGJhSIEhUIViSIZQn+FgyApIBUgBkJ/hYMgGIUiBiAPIBJCf4WDIBCFIgwgCSAOQn+FgyAIhSIIIAIgEUJ/hYMgGoUiCSADIBZCf4WDIBSFIh+FhYWFIgIgI0IBiYUiA4VCK4kiGoUiIyACQgGJIAGFIgIgIYVCA4kiFyADIAeFQj2JIhYgLEIBiSAnhSIBIAyFQi2JIhRCf4WDhSIhhSAEICWFQhmJIgwgAiAihUISiSIOIAUgDYVCCIkiEUJ/hYOFIiKFIAEgCIVCCokiCCAEICaFQjiJIg0gAyAohUIPiSISQn+Fg4UiJoUgBSALhUIniSIQIAEgBoVCAokiBiACIByFQimJIhhCf4WDhSIchSIlQgGJIAMgKoVCPokiFSAQIAQgG4VCN4kiB0J/hYOFIhsgBSAThUIbiSIPIAggAiAkhUIkiSILQn+Fg4UiJCABIAmFQgGJIgkgDCADICuFQgaJIgNCf4WDhSInIAIgHoUiAiAaIAEgH4VCLIkiAUJ/hYOFQoOAgoCAgICAgH+FIh4gBCAdhUIciSITIBcgBSAthUIUiSIEQn+Fg4UiHYWFhYUiH4UiBSAUIBdCf4WDIASFIiCFQiyJIhcgHiAHIBVCf4WDIAaFIiggCyAPQn+FgyANhSIpIAMgCUJ/hYMgDoUiKiABIAJCf4WDIAqFIisgBCATQn+FgyAWhSIshYWFhSItIBggEEJ/hYMgB4UiByASIAhCf4WDIAuFIi4gESAMQn+FgyADhSILIBkgGkJ/hYMgAYUiCCAghYWFhSIBQgGJhSIEhSIaQn+FgyAoIBUgBkJ/hYMgGIUiECAPIA1Cf4WDIBKFIh4gCSAOQn+FgyARhSIJIAIgCkJ/hYMgGYUiDCATIBZCf4WDIBSFIgaFhYWFIgIgH0IBiYUiA4VCDokiGYUiHyACQgGJIAGFIgIgHIVCPYkiFiADICyFQhSJIhQgLUIBiSAlhSIBIAyFQhyJIgxCf4WDhSIchSAEIBuFQhKJIg4gAiAhhUIGiSIRIAUgCIVCAYkiCEJ/hYOFIhuFIAEgEIVCOIkiDSAEIB2FQiSJIhIgAyArhUIbiSIQQn+Fg4UiIYUgBSAHhUICiSIKIAEgBoVCN4kiBiACICOFQj6JIhhCf4WDhSIjhSIlQgGJIAMgKoVCJ4kiFSAKIAQgJIVCKYkiB0J/hYOFIiQgBSALhUIKiSIPIA0gAiAmhUIPiSILQn+Fg4UiJiABIAmFQhmJIgkgDiADICmFQgiJIgNCf4WDhSIdIAIgIoVCK4kiAiAZIAEgHoVCFYkiAUJ/hYOFIh4gBCAnhUIDiSITIBYgBSAuhUItiSIEQn+Fg4UiIoWFhYUiJ4UiBSAQIA1Cf4WDIAuFIiCFQhWJIg0gHSAHIBVCf4WDIAaFIiggCyAPQn+FgyAShSILIAMgCUJ/hYMgEYUiKSABIAJCf4WDIBeFIiogBCATQn+FgyAUhSIrhYWFhSIsIBggCkJ/hYMgB4UiLSAgIAggDkJ/hYMgA4UiCiAaIBlCf4WDIAGFIi4gDCAWQn+FgyAEhSIHhYWFhSIBQgGJhSIEhUIriSIZQn+FgyArIBUgBkJ/hYMgGIUiHSAPIBJCf4WDIBCFIgYgCSARQn+FgyAIhSIOIBogAiAXQn+Fg4VCgoCCgICAgICAf4UiICATIBRCf4WDIAyFIgiFhYWFIgIgJ0IBiYUiA4VCLIkiGoUiJyACQgGJIAGFIgIgHIVCFIkiFyADIAuFQi2JIhYgLEIBiSAlhSIBIA6FQgOJIhRCf4WDhSIchSAEICKFQgaJIgwgAiAhhUIIiSIOIAUgCoVCGYkiEUJ/hYOFIiGFIAEgCIVCJIkiCCAEICaFQg+JIhIgAyAphUIKiSIQQn+Fg4UiIoUgBSAHhUI3iSIKIAEgBoVCKYkiBiACIBuFQieJIhhCf4WDhSImhSIlQgGJIAMgKIVCAokiFSAKIAQgHoVCPokiB0J/hYOFIh4gBSAthUI4iSIPIAggAiAfhUIbiSILQn+Fg4UiHyABIB2FQhKJIgkgDCADICqFQgGJIgNCf4WDhSIdIAIgI4VCDokiAiAaIAEgIIUiAUJ/hYOFIiMgBCAkhUI9iSITIBcgBSAuhUIciSIbQn+Fg4UiJIWFhYUiIIUiBSABIBkgGkJ/hYOFQoCBgICAgICAgH+FIiiFIhogJSAHIBVCf4WDIAaFIikgCyAPQn+FgyAShSIqIAMgCUJ/hYMgDoUiKyABIAJCf4WDIA2FIgEgGyATQn+FgyAWhSIshYWFhSItQgGJhSIEIAkgDkJ/hYMgEYUiCYVCK4kiDiAcIBggCkJ/hYMgB4UiJSAQIAhCf4WDIAuFIgcgESAMQn+FgyADhSIMICggFCAXQn+FgyAbhSIKhYWFhSIRIBUgBkJ/hYMgGIUiGyAPIBJCf4WDIBCFIg8gAiANQn+FgyAZhSIGIBMgFkJ/hYMgFIUiCIUgCYWFhSICQgGJhSIDhUIsiSIZQn+Fg4VCioAChSIcICBCAYkgAoUiAiABhUIciSIXIAUgDIVCA4kiFiARQgGJIC2FIgEgJIVCFIkiFEJ/hYOFIiSFIAMgJ4VCAYkiDCACICuFQhmJIhEgBCAIhUIGiSIIQn+Fg4UiJ4UgASAjhUIbiSINIAMgIYVCCokiEiAFIAqFQiSJIhBCf4WDhSIhhSAEIAaFQj6JIgogASAdhUIniSIGIAIgLIVCN4kiGEJ/hYOFIiOFIh1CAYkgBSAHhUIpiSIVIAogAyAmhUICiSIHQn+Fg4UiJiAEIA+FQg+JIg8gDSACICmFQjiJIgtCf4WDhSIgIAEgH4VCCIkiCSAMIAUgJYVCEokiE0J/hYOFIiUgAiAqhUIViSICIBogASAehUIOiSIBQn+Fg4UiHiADICKFQi2JIgMgFyAEIBuFQj2JIgRCf4WDhSIbhYWFhSIihSIFIBggCkJ/hYMgB4UiH4VCDokiCiAgIAcgFUJ/hYMgBoUiByALIA9Cf4WDIBKFIiggEyAJQn+FgyARhSIpIAEgAkJ/hYMgDoUiKiAEIANCf4WDIBaFIiuFhYWFIiwgHyAQIA1Cf4WDIAuFIg0gCCAMQn+FgyAThSILIBkgGkJ/hYMgAYUiEyAUIBdCf4WDIASFIi2FhYWFIgFCAYmFIgSFQhWJIhpCf4WDICkgFSAGQn+FgyAYhSIGIA8gEkJ/hYMgEIUiDCAJIBFCf4WDIAiFIgggAiAOQn+FgyAZhSIJIAMgFkJ/hYMgFIUiH4WFhYUiAiAiQgGJhSIDhUIriSIZhSIiIAJCAYkgAYUiAiAnhUIDiSIXIAMgB4VCPYkiFiAsQgGJIB2FIgEgDIVCLYkiFEJ/hYOFIh2FIAQgJYVCGYkiDCACICOFQhKJIg4gBSANhUIIiSIRQn+Fg4UiI4UgASAIhUIKiSIIIAQgJoVCOIkiDSADICiFQg+JIhJCf4WDhSImhSAFIAuFQieJIhAgASAGhUICiSIGIAIgIYVCKYkiGEJ/hYOFIiGFIiVCAYkgAyAqhUI+iSIVIBAgBCAbhUI3iSIHQn+Fg4UiGyAFIBOFQhuJIg8gCCACICSFQiSJIgtCf4WDhSIkIAEgCYVCAYkiCSAMIAMgK4VCBokiA0J/hYOFIicgAiAchSICIBkgASAfhUIsiSIBQn+Fg4VCioCAgIiAgICAf4UiHCAEIB6FQhyJIhMgFyAFIC2FQhSJIgRCf4WDhSIehYWFhSIfhSIFIBQgF0J/hYMgBIUiIIVCLIkiFyAcIAcgFUJ/hYMgBoUiKCALIA9Cf4WDIA2FIikgAyAJQn+FgyAOhSIqIAEgAkJ/hYMgCoUiKyAEIBNCf4WDIBaFIiyFhYWFIi0gGCAQQn+FgyAHhSIHIBIgCEJ/hYMgC4UiLiARIAxCf4WDIAOFIgsgGiAZQn+FgyABhSIIICCFhYWFIgFCAYmFIgSFIhlCf4WDICggFSAGQn+FgyAYhSIQIA8gDUJ/hYMgEoUiHCAJIA5Cf4WDIBGFIgkgAiAKQn+FgyAahSIMIBMgFkJ/hYMgFIUiBoWFhYUiAiAfQgGJhSIDhUIOiSIahSIfIAJCAYkgAYUiAiAhhUI9iSIWIAMgLIVCFIkiFCAtQgGJICWFIgEgDIVCHIkiDEJ/hYOFIiGFIAQgG4VCEokiDiACIB2FQgaJIhEgBSAIhUIBiSIIQn+Fg4UiG4UgASAQhUI4iSINIAQgHoVCJIkiEiADICuFQhuJIhBCf4WDhSIehSAFIAeFQgKJIgogASAGhUI3iSIGIAIgIoVCPokiGEJ/hYOFIiKFIiVCAYkgAyAqhUIniSIVIAogBCAkhUIpiSIHQn+Fg4UiJCAFIAuFQgqJIg8gDSACICaFQg+JIgtCf4WDhSImIAEgCYVCGYkiCSAOIAMgKYVCCIkiA0J/hYOFIh0gAiAjhUIriSICIBogASAchUIViSIBQn+Fg4UiHCAEICeFQgOJIhMgFiAFIC6FQi2JIgRCf4WDhSIjhYWFhSInhSIFIBAgDUJ/hYMgC4UiIIVCFYkiDSAdIAcgFUJ/hYMgBoUiKCALIA9Cf4WDIBKFIgsgAyAJQn+FgyARhSIpIAEgAkJ/hYMgF4UiKiAEIBNCf4WDIBSFIiuFhYWFIiwgGCAKQn+FgyAHhSItICAgCCAOQn+FgyADhSIKIBkgGkJ/hYMgAYUiLiAMIBZCf4WDIASFIgeFhYWFIgFCAYmFIgSFQiuJIhpCf4WDICsgFSAGQn+FgyAYhSIdIA8gEkJ/hYMgEIUiBiAJIBFCf4WDIAiFIg4gGSACIBdCf4WDhUKBgYKAiICAgIB/hSIgIBMgFEJ/hYMgDIUiCIWFhYUiAiAnQgGJhSIDhUIsiSIZhSInIAJCAYkgAYUiAiAhhUIUiSIXIAMgC4VCLYkiFiAsQgGJICWFIgEgDoVCA4kiFEJ/hYOFIiGFIAQgI4VCBokiDCACIB6FQgiJIg4gBSAKhUIZiSIRQn+Fg4UiHoUgASAIhUIkiSIIIAQgJoVCD4kiEiADICmFQgqJIhBCf4WDhSIjhSAFIAeFQjeJIgogASAGhUIpiSIGIAIgG4VCJ4kiGEJ/hYOFIhuFIiZCAYkgAyAohUICiSIVIAogBCAchUI+iSIHQn+Fg4UiHCAFIC2FQjiJIg8gCCACIB+FQhuJIgtCf4WDhSIlIAEgHYVCEokiCSAMIAMgKoVCAYkiA0J/hYOFIh0gAiAihUIOiSICIBkgASAghSIBQn+Fg4UiIiAEICSFQj2JIhMgFyAFIC6FQhyJIgRCf4WDhSIkhYWFhSIfhSIFIAEgGiAZQn+Fg4VCgIGCgICAgICAf4UiIIUiGSAcIAcgFUJ/hYMgBoUiKCALIA9Cf4WDIBKFIikgAyAJQn+FgyAOhSIqIAEgAkJ/hYMgDYUiASAEIBNCf4WDIBaFIiuFhYWFIiwgGCAKQn+FgyAHhSIKIBAgCEJ/hYMgC4UiByARIAxCf4WDIAOFIi0gICAUIBdCf4WDIASFIguFhYWFIgxCAYmFIgSFQg6JIhdCf4WDIBUgBkJ/hYMgGIUiCCAPIBJCf4WDIBCFIhIgCSAOQn+FgyARhSIcIAIgDUJ/hYMgGoUiBiATIBZCf4WDIBSFIgmFhYWFIgIgH0IBiYUiAyAphUIViSIahSIfIAJCAYkgDIUiAiAjhUItiSIWIAEgA4VCHIkiFCAsQgGJICaFIgEgCIVCPYkiDEJ/hYOFIiOFIAQgJYVCCIkiDiACICeFQgGJIhEgBSAKhUISiSIIQn+Fg4UiJoUgASAShUIPiSINIAQgIoVCG4kiEiADICiFQjiJIhBCf4WDhSIihSAFIAeFQimJIgogASAGhUI+iSIGIAIgG4VCAokiGEJ/hYOFIhuFIiVCAYkgAyArhUI3iSIVIAogBCAdhUIniSIHQn+Fg4UiHSAFIAuFQiSJIg8gDSACIB6FQgqJIgtCf4WDhSIeIAEgCYVCBokiCSAOIAMgKoVCGYkiA0J/hYOFIicgAiAhhUIsiSICIBogASAchUIriSIBQn+Fg4UiHCAEICSFQhSJIhMgFiAFIC2FQgOJIgRCf4WDhSIhhYWFhSIkhSIFIBcgGkJ/hYMgAYUiIIVCPokiGiAdIAcgFUJ/hYMgBoUiKCALIA9Cf4WDIBKFIikgAyAJQn+FgyARhSIqIBkgASACQn+Fg4VCgYCAgAiFIisgBCATQn+FgyAUhSIshYWFhSIBIBggCkJ/hYMgB4UiByAQIA1Cf4WDIAuFIg0gCCAOQn+FgyADhSItICAgDCAWQn+FgyAEhSIKhYWFhSIOQgGJhSIEhUICiSIWQn+FgyAVIAZCf4WDIBiFIh0gDyASQn+FgyAQhSIGIAkgEUJ/hYMgCIUiESACIBlCf4WDIBeFIgggEyAUQn+FgyAMhSIPhYWFhSIUICRCAYmFIgMgKYVCKYkiGYU3ALgBIAAgAUIBiSAlhSICIBGFQieJIhcgFEIBiSAOhSIBICOFQjeJIhRCf4WDIBqFNwCgASAAIAUgDYVCD4kiDCACIAiFQhuJIg4gASAbhUI4iSIRQn+Fg4U3AJABIAAgAyAshUIkiSIIIAwgBCAnhUIKiSINQn+Fg4U3AIABIAAgAyAohUISiSISIAUgCoVCBokiECAEIByFQgGJIgpCf4WDhTcAcCAAIAIgBoVCCIkiBiABICaFQhmJIhhCf4WDIBCFNwBYIAAgBSAHhUI9iSIVIAIgD4VCFIkiByABIB+FQhyJIg9Cf4WDhTcASCAAIAMgKoVCA4kiCyAVIAQgHoVCLYkiCUJ/hYOFNwA4IAAgAiAdhUIOiSICIAQgIYVCLIkiBCADICuFIgNCf4WDhTcAICAAIAUgLYVCK4kiBSACIAEgIoVCFYkiAUJ/hYOFNwAQIAAgFCAaQn+FgyAWhTcAwAEgACAWIBlCf4WDIBeFNwCwASAAIBkgF0J/hYMgFIU3AKgBIAAgCCAOQn+FgyARhTcAmAEgACARIAxCf4WDIA2FNwCIASAAIA0gCEJ/hYMgDoU3AHggACAKIBJCf4WDIAaFNwBoIAAgEiAGQn+FgyAYhTcAYCAAIBggEEJ/hYMgCoU3AFAgACAPIBVCf4WDIAmFNwBAIAAgCSALQn+FgyAHhTcAMCAAIAsgB0J/hYMgD4U3ACggACADIAJCf4WDIAGFNwAYIAAgASAFQn+FgyAEhTcACCAAIAMgBSAEQn+Fg4VCiICCgIiAgICAf4U3AAALnwEBBX8gAqchBSAALQDsAQR/IAAQDiAAQQA2AuABIABBADoA7AFBfwVBAAsgBQRAIAAoAuABIQMDQCAAKALkASIEIANGBEAgABAOIABBADYC4AEgACgC5AEhBEEAIQMLIAAgASAGaiADIAQgA2siAyAFIAZrIgQgAyAESRsiBBANIAAgACgC4AEgBGoiAzYC4AEgBCAGaiIGIAVJDQALCwvoAQIGfwJ+An8gAkIAUgRAIABB4AFqIQggAEHgAGohBCAAKADgAiEFIABBQGshBgNAIAQgBWohB0GAAiAFayIDrSIJIAJaBEAgAqciAwRAIAcgASAD/AoAAAsgACAAKADgAiADajYA4AJBAAwDCyADBEAgByABIAP8CgAACyAAIAAoAOACIANqNgDgAiAGIAYpAAAiCkKAAXw3AAAgACAAKQBIIApC/35WrXw3AEggACAEEDwgBCAIQYAB/AoAACAAIAAoAOACQYABayIFNgDgAiABIANqIQEgAiAJfSICQgBSDQALC0EACwvoBAEJfyAAIAEoAiAiBSABKAIcIgYgASgCGCIHIAEoAhQiCCABKAIQIgkgASgCDCIKIAEoAggiBCABKAIEIgMgASgCACICIAEoAiQiAUETbEGAgIAIakEZdmpBGnVqQRl1akEadWpBGXVqQRp1akEZdWpBGnVqQRl1akEadSABakEZdUETbCACaiICOgAAIAAgAkEQdjoAAiAAIAJBCHY6AAEgACADIAJBGnVqIgNBDnY6AAUgACADQQZ2OgAEIAAgAkEYdkEDcSADQQJ0cjoAAyAAIAQgA0EZdWoiAkENdjoACCAAIAJBBXY6AAcgACACQQN0IANBgICADnFBFnZyOgAGIAAgCiACQRp1aiIEQQt2OgALIAAgBEEDdjoACiAAIARBBXQgAkGAgIAfcUEVdnI6AAkgACAJIARBGXVqIgJBEnY6AA8gACACQQp2OgAOIAAgAkECdjoADSAAIAggAkEadWoiAzoAECAAIAJBBnQgBEGAgOAPcUETdnI6AAwgACADQRB2OgASIAAgA0EIdjoAESAAIAcgA0EZdWoiAkEPdjoAFSAAIAJBB3Y6ABQgACADQRh2QQFxIAJBAXRyOgATIAAgBiACQRp1aiIDQQ12OgAYIAAgA0EFdjoAFyAAIANBA3QgAkGAgIAccUEXdnI6ABYgACAFIANBGXVqIgJBDHY6ABsgACACQQR2OgAa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LQAAczoAACADQQRqIQMgCEEEaiIIIAJHDQALIAdFDQELA0AgBEFAayADaiIAIAAtAAAgASADai0AAHM6AAAgA0EBaiEDIApBAWoiCiAHRw0ACwsgCSAEQUBrIgBCgAEQEBogAEGAARAHIARBwAAQByAEQcABaiQAQQAPCxAKAAuVAQEBfyMAQdABayIDJAAgA0IANwNIIANCADcDQCADQZCtAikDADcDACADQZitAikDADcDCCADQaCtAikDADcDECADQaitAikDADcDGCADQbCtAikDADcDICADQbitAikDADcDKCADQcCtAikDADcDMCADQcitAikDADcDOCADIAEgAhAQGiADIAAQHCADQdABaiQAQQALVwIBfwF+AkBBsLkCKAIAIgGtIACtQgd8Qvj///8fg3wiAkL/////D1gEQCACpyIAPwBBEHRNDQEgABADDQELQdDAAkEwNgIAQX8PC0GwuQIgADYCACABCzoBAn8jAEEgayIDJABBfyEEIAMgAiABEClFBEAgAEGguQIgAxBfIANBIBAHQQAhBAsgA0EgaiQAIAQLBABBbwuiAwIDfwF+IwBB4AJrIgYkACAGIAQgBRBfAn8CQAJAIAAgAksgAyAAIAJrrVZxRQRAIAAgAk8NASADIAIgAGutWA0BCyADpyIFBEAgACACIAX8CgAACyAGQgA3AzggBkIANwMwIAZCADcDKCAGQgA3AyBCICADIANCIFobIQkgA0IgViEFIAAhAgwBCyAGQgA3AzggBkIANwMwIAZCADcDKCAGQgA3AyBCICADIANCIFobIQkgA0IgViEFIANCAFINAEEBDAELIAmnIgcEQCAGQUBrIAIgB/wKAAALQQALIQggBkEgaiIHIAcgCUIgfCAEQRBqIgRCACAGQdS5AigCABEPABogBkHgAGogB0G8uQIoAgARAQAaAkAgCA0AIAmnIgdFDQAgACAGQUBrIAf8CgAACyAGQSBqQcAAEAcgBQRAIAAgCaciBWogAiAFaiADIAl9IARCASAGQdS5AigCABEPABoLIAZBIBAHIAZB4ABqIgIgACADQcC5AigCABEAABogAiABQcS5AigCABEBABogAkGAAhAHIAZB4AJqJABBAAuHGAEOf0H/ACECA0AgACABQQF0aiIDIAMuAQQiBCADLgEAIgZqIgXBQb+dAWxBGnVB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IAEgA6dqLQAAOgAAIANCAXwhAyAHQgF8IgcgBlINAAsLIAAgCyAMIAxBgAJqIg0QTyABIAWnaiEBIAIgBX0iAkI/VgRAA0AgACABIAwgDRBPIAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEHQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAsgA6ciAGogACABai0AADoAACALIABBAXIiDWogASANai0AADoAACALIABBAnIiDWogASANai0AADoAACALIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALIARQDQELA0AgCyADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAHQgF8IgcgBFINAAsLIAxBoAIQBwwBCyACQgODIQVCACEDIAJCBFoEQCACQnyDIQIDQCALIAMgBHynaiABIAOnai0AADoAACALIANCAYQiBiAEfKdqIAEgBqdqLQAAOgAAIAsgA0IChCIGIAR8p2ogASAGp2otAAA6AAAgCyADQgOEIgYgBHynaiABIAanai0AADoAACADQgR8IQMgCUIEfCIJIAJSDQALIAVQDQELA0AgCyADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAdCAXwiByAFUg0ACwsgDEGgAmokAAsEAEEYC+kDAQJ/QX8hBQJAIAJBwABLDQAgA0HBAGsiBEFASQ0AAkAgAUEAIAIbRQRAIARB/wFxQb8BTQRAEAoACyAAQUBrQQBBpQL8CwAgAEL5wvibkaOz8NsANwA4IABC6/qG2r+19sEfNwAwIABCn9j52cKR2oKbfzcAKCAAQtGFmu/6z5SH0QA3ACAgAELx7fT4paf9p6V/NwAYIABCq/DT9K/uvLc8NwAQIABCu86qptjQ67O7fzcACCAAIAOtQoiS95X/zPmE6gCFNwAADAELAn8jAEGAAWsiBCQAAkAgA0HBAGtB/wFxQb8BTQ0AIAFFDQAgAkHBAGtB/wFxQb8BTQ0AIABBQGtBAEGlAvwLACAAQvnC+JuRo7Pw2wA3ADggAELr+obav7X2wR83ADAgAEKf2PnZwpHagpt/NwAoIABC0YWa7/rPlIfRADcAICAAQvHt9Pilp/2npX83ABggAEKr8NP0r+68tzw3ABAgAEK7zqqm2NDrs7t/NwAIIAAgA60g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GiABKAAUIRsgASgAGCEcIAEoABwhLCABKAAgIS0gASgAJCEuIAEoACghLyABKAAsITAgASgAMCExIAEoADQhMiABKAA4ITMgASgAPCE0IAUgASgAACAIICpqczYAACAFIDQgECAdanM2ADwgBSAzIBcgHmpzNgA4IAUgMiASIBhqczYANCAFIDEgDSATanM2ADAgBSAwIBEgH2pzNgAsIAUgLyAMICBqczYAKCAFIC4gDyAhanM2ACQgBSAtIAsgImpzNgAgIAUgLCAHICNqczYAHCAFIBwgBiAkanM2ABggBSAbIAIgJWpzNgAUIAUgGiAEICZqczYAECAFIBkgFCAnanM2AAwgBSAVIA4gKGpzNgAIIAUgFiAKIClqczYABCASIBNBAWoiE0VqIRIgA0LAAFgEQCADQj9YBEAgA6chAUEAIQQDQCAEICtqIAQgBWotAAA6AAAgBEEBaiIEIAFJDQALCyAAIBI2AjQgACATNgIwBSABQUBrIQEgBUFAayECIANCQHwhAwwBCwsLCAAgAEEQEBUL0QYBCn8jAEGgAmsiAiQAIAAoABwhBCAAKAAYIQUgACgAFCEGIAAoABAhByAAKAAEIQggACgACCEJIAAoAAwhCiAAKAAAIQsgAiABKQJ4NwOYAiACIAEpAnA3A5ACIAIgASkCYDcD8AEgAiABKQJoNwP4ASACIAEpAnA3A+ABIAIgASkCeDcD6AEgAkGAAmoiAyACQfABaiACQeABahAFIAEgAikCiAI3AnggASACKQKAAjcCcCACIAEpAlA3A9ABIAIgASkCWDcD2AEgAiABKQJgNwPAASACIAEpAmg3A8gBIAMgAkHQAWogAkHAAWoQBSABIAIpAogCNwJoIAEgAikCgAI3AmAgAiABQUBrIgApAgA3A7ABIAIgASkCSDcDuAEgAiABKQJQNwOgASACIAEpAlg3A6gBIAMgAkGwAWogAkGgAWoQBSABIAIpAogCNwJYIAEgAikCgAI3AlAgAiABKQIwNwOQASACIAEpAjg3A5gBIAIgACkCADcDgAEgAiABKQJINwOIASADIAJBkAFqIAJBgAFqEAUgASACKQKIAjcCSCAAIAIpAoACNwIAIAIgASkCIDcDcCACIAEpAig3A3ggAiABKQIwNwNgIAIgASkCODcDaCADIAJB8ABqIAJB4ABqEAUgASAC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IiAKIAUgBBAGIAJBkANqIgEgByADEAYgAkG4A2oiBiADIAQQBiAFIAoQIiAKIAUgBBAGIAEgByADEAYgBiADIAQQBiAFIAoQIiAKIAUgBBAGIAEgByADEAYgBiADIAQQBiAFIAoQIiAAIAUgBBAGIAggByADEAYgCSADIAQQBiALIAUgBxAGQQAhAQNAIAJBCGoiBiABQQF2IAJBoAJqIAFqLAAAEHYgAkGAAWoiBSAAIAYQWSAAIAUgBBAGIAggByADEAYgCSADIAQQBiALIAUgBxAGIAFBPkkgAUECaiEBDQALIAJB4ANqJAALYgEDfyMAQbABayICJAAgAkHgAGoiAyABQdAAahBEIAJBMGoiBCABIAMQBiACIAFBKGogAxAGIAAgAhAaIAJBkAFqIAQQGiAAIAAtAB8gAi0AkAFBB3RzOgAfIAJBsAFqJAALyggBA38jAEHAAWsiAiQAIAJBkAFqIgQgARAEIAJB4ABqIgMgBBAEIAMgAxAEIAMgASADEAYgBCAEIAMQBiACQTBqIgEgBBAEIAMgAyABEAYgASADEAQgASABEAQgASABEAQgASABEAQgASABEAQgAyABIAMQBiABIAMQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEgAxAGIAIgARAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAEgAiABEAYgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgASABEAQgAyABIAMQBiABIAMQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEQBCABIAEgAxAGIAIgARAEQQEhAQNAIAIgAhAEIAFBAWoiAUHkAEcNAAsgAkEwaiIBIAIgARAGIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAEgARAEIAJB4ABqIgMgASADEAYgAyADEAQgAyADEAQgAyADEAQgAyADEAQgAyADEAQgACADIAJBkAFqEAYgAkHAAWokAAv8AgIDfwF+IwBB4ABrIgYkACAGIAQgBRBfIAZBIGoiBUIgIARBEGoiBCAGQdC5AigCABERABoCfyACIAEgAyAFQbi5AigCABEWAARAIAZBIBAHQX8MAQsCQCAARQRAIAZBIBAHIAZBIGpBwAAQBwwBCwJAAkACQAJAIAAgAUkgAyABIABrrVZxRQRAIAAgAU0NASADIAAgAWutWA0BCyADpyICBEAgACABIAL8CgAACyAAIQEMAQsgA1ANAQsgBkFAayEFQiAgAyADQiBaGyIJpyICRSIHRQRAIAUgASAC/AoAAAsgBkEgaiIIIAggCUIgfCAEQgAgBkHUuQIoAgARDwAaIAdFBEAgACAFIAL8CgAACyAGQSBqQcAAEAcgA0IhVA0BIAAgAmogASACaiADIAl9IARCASAGQdS5AigCABEPABoMAQsgBkEgaiIAIABCICAEQgAgBkHUuQIoAgARDwAaIABBwAAQBwsg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BEAgAxAOIANBADYC4AEgAygC5AEhBEEAIQULIAMgASAGaiAFIAQgBWsiBSAHIAZrIgQgBCAFSxsiBBANIAMgAygC4AEgBGoiBTYC4AEgBCAGaiIGIAdJDQALCyADIAAQNhogA0GAAhAHIANBgAJqJABBAAuxAQEBfyMAQRBrIgIgADYCDCACIAE2AghBACEAIAJBADsBBgNAIAIgAi8BBiACKAIMIABqLQAAIAIoAgggAGotAABzcjsBBiACIAIvAQYgAEEBciIBIAIoAgxqLQAAIAIoAgggAWotAABzcjsBBiAAQQJqIgBBIEcNAAsgAiACLwEGOwEGIAIgAi8BBkEBazsBBiACQeDEAi8BAEECdiACLwEGQQ92czsBBiACLwEGQQFrCzQBAX8jAEEgayICJAAgACACEGUgAEHoAGoiACACQiAQNyAAIAEQZSACQSAQByACQSBqJAAL4gcBCX8jAEHgAGsiAyQAAkACQCACQcEATwRAIABCADcDICAAQeCzAikDADcDACAAQeizAikDADcDCCAAQfCzAikDADcDECAAQfizAikDADcDGCAAIAEgAq0QNyAAIAMQZUEgIQIgAyEBDAELIAENACACDQELIABCADcDICAAQeCzAikDADcDACAAQeizAikDADcDCCAAQfCzAikDADcDECAAQfizAikDADcDGCADQrbs2LHjxo2bNjcDWCADQrbs2LHjxo2bNjcDUCADQrbs2LHjxo2bNjcDSCADQrbs2LHjxo2bNjcDQCADQrbs2LHjxo2bNjcDOCADQrbs2LHjxo2bNjcDMCADQrbs2LHjxo2bNjcDKCADQrbs2LHjxo2bNjcDIAJAIAJFDQAgAkEDcSEJIAJBBE8EQCACQfwAcSEGA0AgA0EgaiIHIARqIgUgBS0AACABIARqLQAAczoAACAHIARBAXIiBWoiCyALLQAAIAEgBWotAABzOgAAIAcgBEECciIFaiILIAstAAAgASAFai0AAHM6AAAgByAEQQNyIgVqIgcgBy0AACABIAVqLQAAczoAACAEQQRqIQQgCEEEaiIIIAZHDQALIAlFDQELA0AgA0EgaiAEaiIIIAgtAAAgASAEai0AAHM6AAAgBEEBaiEEIApBAWoiCiAJRw0ACwsgACADQSBqQsAAEDcgAEHoAGoiCSIAQgA3AyAgAEHgswIpAwA3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EAghAyAAIAAoAmwQCDYCbCAAIAM2AmggACACNgJkIAAgATYCYCAAKAJwEAghASAAKAJ0EAghAiAAKAJ4EAghAyAAIAAoAnwQCDYCfCAAIAM2AnggACACNgJ0IAAgATYCcCAAKAKAARAIIQEgACgChAEQCCECIAAoAogBEAghAyAAIAAoAowBEAg2AowBIAAgAzYCiAEgACACNgKEASAAIAE2AoABIAAoApABEAghASAAKAKUARAIIQIgACgCmAEQCCEDIAAgACgCnAEQCDYCnAEgACADNgKYASAAIAI2ApQBIAAgATYCkAEL9xICFX4DfyAAIAAoACwiFkEFdkH///8Aca0gACgAPEEDdq0iAkKDoVZ+IAAzACogADEALEIQhkKAgPwAg4R8IgtCgIBAfSIIQhWHfCIBQoOhVn4gADUAMUIHiEL///8AgyIDQtOMQ34gACgAFyIXQRh2rSAAMQAbQgiGhCAAMQAcQhCGhEICiEL///8Ag3wgACgANCIYQQR2Qf///wBxrSIEQuf2J358IBZBGHatIAAxADBCCIaEIAAxADFCEIaEQgKIQv///wCDIgVC0asIfnwgADUAOUIGiEL///8AgyIGQpPYKH58IBhBGHatIAAxADhCCIaEIAAxADlCEIaEQgGIQv///wCDIglCmNocfnwiB3wgB0KAgEB9IhFCgICAf4N9IBdBBXZB////AHGtIANC5/YnfnwgBEKY2hx+fCAFQtOMQ358IAlCk9gofnwgA0KY2hx+IAAzABUgADEAF0IQhkKAgPwAg4R8IARCk9gofnwgBULn9id+fCIHQoCAQH0iCkIViHwiDEKAgEB9Ig1CFYd8Ig8gD0KAgEB9Ig9CgICAf4N9IAwgAULRqwh+fCANQoCAgH+DfSALIAhCgICAf4N9IAJC0asIfiAAKAAkIhZBGHatIAAxAChCCIaEIAAxAClCEIaEQgOIfCAGQoOhVn58IBZBBnZB////AHGtIAJC04xDfnwgBkLRqwh+fCAJQoOhVn58IgxCgIBAfSINQhWHfCIIQoCAQH0iDkIVh3wiC0KDoVZ+fCAHIApCgICA////A4N9IANCk9gofiAAKAAPIhZBGHatIAAxABNCCIaEIAAxABRCEIaEQgOIfCAFQpjaHH58IBZBBnZB////AHGtIAVCk9gofnwiCkKAgEB9IhJCFYh8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IAAoAgQiGq0hCSAaQQVsrSEQIBlBBWytIQ4gGEEFbK0hDCAXQQVsrSEKIAA1AgAhCANAIAEoAANBAnZB////H3EgFWqtIgMgDX4gASgAAEH///8fcSARaq0iBCAPfnwgASgABkEEdkH///8fcSAUaq0iBSALfnwgASgACUEGdiATaq0iBiAJfnwgEiAWaiABKAAMQQh2aq0iByAIfnwgAyALfiAEIA1+fCAFIAl+fCAGIAh+fCAHIAp+fCADIAl+IAQgC358IAUgCH58IAYgCn58IAcgDH58IAMgCH4gBCAJfnwgBSAKfnwgBiAMfnwgByAOfnwgAyAKfiAEIAh+fCAFIAx+fCAGIA5+fCAHIBB+fCIDQhqIQv////8Pg3wiBEIaiEL/////D4N8IgVCGohC/////w+DfCIGQhqIQv////8Pg3wiB0IaiKdBBWwgA6dB////H3FqIhFBGnYgBKdB////H3FqIRUgBadB////H3EhFCAGp0H///8fcSETIAenQf///x9xIRIgEUH///8fcSERIAFBEGohASACQhB9IgJCD1YNAAsgACASNgIkIAAgEzYCICAAIBQ2AhwgACAVNgIYIAAgETYCFAvvJgEnfyMAQdAEayIdJABBfyENIABBIGohCEEgIQpBASEFA0AgCkEBayIJQfAUai0AACIHIAggCWotAAAiCXNBAWtBCHUgBXEiBiAIIApBAmsiCmotAAAiDCAKQfAUai0AACIOa0EIdXEgCSAHa0EIdSAFcSALcnIhCyAMIA5zQQFrQQh1IAZxIQUgCg0ACwJAIAtFDQAgABBYDQAgAy0AH0F/c0H/AHEgAy0AASADLQACIAMtAAMgAy0ABCADLQAFIAMtAAYgAy0AByADLQAIIAMtAAkgAy0ACiADLQALIAMtAAwgAy0ADSADLQAOIAMtAA8gAy0AECADLQARIAMtABIgAy0AEyADLQAUIAMtABUgAy0AFiADLQAXIAMtABggAy0AGSADLQAaIAMtABsgAy0AHCADLQAeIAMtAB1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUH/AXNyQQFrQewBIAMtAABrcUF/c0EIdkEBcUUNACADEFgNACAdQYABaiIKIAMQeQ0AIB1BgANqIgsQJSAEBEAgC0HguAJCIhAQGgsgCyAAQiAQEBogCyADQiAQ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HCAAIAcgCSAKc3M2ABggACAOIAsgDHNzNgAUIAAgASAGIAhzczYAEAwBCyABRQ0AIABBACAB/AsACyAFQeABaiQAC6UGARR/IwBB4AFrIgMkACACKAIQIQUgAkFAayIEKAIAIQkgAigCUCEKIAIoAiAhCyACKAIwIQwgASgABCEGIAIoAhQhDSACKAJEIQ4gAigCVCEPIAIoAiQhECACKAI0IREgASgACCEHIAIoAhghEiACKAJIIRMgAigCWCEUIAIoAighFSACKAI4IRYgASgAACEIIAAgASgADCIBIAIoAiwgAigCPHEgAigCHCACKAJcIAIoAkxzc3NzNgAMIAAgByAVIBZxIBIgEyAUc3NzczYACCAAIAYgECARcSANIA4gD3Nzc3M2AAQgACAIIAsgDHEgBSAJIApzc3NzNgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAQpAgA3A7ABIAMgAikCSDcDuAEgAyACKQJQNwOgASADIAIpAlg3A6gBIANBwAFqIgAgA0GwAWogA0GgAWoQBSACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQIwNwOQASADIAIpAjg3A5gBIAMgBCkCADcDgAEgAyACKQJINwOIASAAIANBkAFqIANBgAFqEAUgAiADKQLIATcCSCAEIAMpAsABNwIAIAMgAikCIDcDcCADIAIpAig3A3ggAyACKQIwNwNgIAMgAikCODcDaCAAIANB8ABqIANB4ABqEAUgAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCEDcDUCADIAIpAhg3A1ggAyACKQIgNwNAIAMgAikCKDcDSCAAIANB0ABqIANBQGsQBSACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIANwMwIAMgAikCCDcDOCADIAIpAhA3AyAgAyACKQIYNwMoIAAgA0EwaiADQSBqEAUgAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD0AE3AxAgAyADKQPYATcDGCADIAIpAgA3AwAgAyACKQIINwMIIAAgA0EQaiADEAUgAygCwAEhACADKALEASEEIAMoAsgBIQUgAiABIAMoAswBczYCDCACIAUgB3M2AgggAiAEIAZzNgIEIAIgACAIczYCACADQeABaiQAC6UJAQ1/IwBBoANrIgIkACAAKAAQIQYgACgAFCEHIAAoABghCCAAKAAcIQkgACgABCEEIAAoAAghBSAAKAAMIQogACgAACELIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAFBQGsiACkCADcD8AIgAiABKQJINwP4AiACIAEpAlA3A+ACIAIgASkCWDcD6AIgAkGAA2oiAyACQfACaiACQeACahAFIAEgAikCiAM3AlggASACKQKAAzcCUCACIAEpAjA3A9ACIAIgASkCODcD2AIgAiAAKQIANwPAAiACIAEpAkg3A8gCIAMgAkHQAmogAkHAAmoQBSABIAIpAogDNwJIIAAgAikCgAM3AgAgAiABKQIgNwOwAiACIAEpAig3A7gCIAIgASkCMDcDoAIgAiABKQI4NwOoAiADIAJBsAJqIAJBoAJqEAUgASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCEDcDkAIgAiABKQIYNwOYAiACIAEpAiA3A4ACIAIgASkCKDcDiAIgAyACQZACaiACQYACahAFIAEgAikCiAM3AiggASACKQKAAzcCICACIAEpAgA3A/ABIAIgASkCCDcD+AEgAiABKQIQNwPgASACIAEpAhg3A+gBIAMgAkHwAWogAkHgAWoQBSABIAIpAogDNwIYIAEgAikCgAM3AhAgAiACKQOQAzcD0AEgAiACKQOYAzcD2AEgAiABKQIANwPAASACIAEpAgg3A8gBIAMgAkHQAWogAkHAAWoQBSACKAKAAyEMIAIoAoQDIQ0gAigCiAMhDiABIAogAigCjANzNgIMIAEgBSAOczYCCCABIAQgDXM2AgQgASALIAxzNgIAIAIgASkCWDcDmAMgAiABKQJQNwOQAyACIAApAgA3A7ABIAIgASkCSDcDuAEgAiABKQJQNwOgASACIAEpAlg3A6gBIAMgAkGwAWogAkGgAWoQBSABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQIwNwOQASACIAEpAjg3A5gBIAIgACkCADcDgAEgAiABKQJINwOIASADIAJBkAFqIAJBgAFqEAUgASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCIDcDcCACIAEpAig3A3ggAiABKQIwNwNgIAIgASkCODcDaCADIAJB8ABqIAJB4ABqEAUgASACKQKIAzcCOCABIAIpAoADNwIwIAIgASkCEDcDUCACIAEpAhg3A1ggAiABKQIgNwNAIAIgASkCKDcDSCADIAJB0ABqIAJBQGsQBSABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIANwMwIAIgASkCCDcDOCACIAEpAhA3AyAgAiABKQIYNwMoIAMgAkEwaiACQSBqEAUgASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDkAM3AxAgAiACKQOYAzcDGCACIAEpAgA3AwAgAiABKQIINwMIIAMgAkEQaiACEAUgAigCgAMhACACKAKEAyEEIAIoAogDIQUgASAJIAIoAowDczYCDCABIAUgCHM2AgggASAEIAdzNgIEIAEgACAGczYCACACQaADaiQAC94UARV/IwBBoAZrIgMkACABKAAEIQggASgACCEJIAEoAAwhCiABKAAQIQsgASgAFCEMIAEoABghDSABKAAcIQ4gACgABCEPIAAoAAghECAAKAAMIREgACgAECESIAAoABQhEyAAKAAYIRQgACgAHCEVIAEoAAAhFiACQUBrIgEgACgAACIAQYCChBBzNgIAIAJClcTcyYWy+rziADcCOCACQoCChJCwoIGEDTcCMCACQqCixJG0rq2UXTcCKCACQtv74KjVzfCXcTcCICACIAAgFnMiFjYCACACIBVB8+qi6X1zNgJcIAIgFEGgosSRBHM2AlggAiATQe2Ev4l/czYCVCACIBJB2/vgqAVzNgJQIAIgEUGQ0+eTBnM2AkwgAiAQQZXE3MkFczYCSCACIA9Bg4qg6ABzNgJEIAIgDiAVcyIONgIcIAIgDSAUcyINNgIYIAIgDCATcyIMNgIUIAIgCyAScyILNgIQIAIgCiARcyIKNgIMIAIgCSAQcyIJNgIIIAIgCCAPcyIXNgIEQQAhCANAIAMgAikCWDcDmAYgAyACKQJQNwOQBiADIAEpAgA3A/AFIAMgASkCCDcD+AUgAyACKQJQNwPgBSADIAIpAlg3A+gFIANBgAZqIgQgA0HwBWogA0HgBWoQBSACIAMpAogGNwJYIAIgAykCgAY3AlAgAyACKQIwNwPQBSADIAIpAjg3A9gFIAMgASkCADcDwAUgAyABKQIINwPIBSAEIANB0AVqIANBwAVqEAUgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgAikCIDcDsAUgAyACKQIoNwO4BSADIAIpAjA3A6AFIAMgAikCODcDqAUgBCADQbAFaiADQaAFahAFIAIgAykCiAY3AjggAiADKQKABjcCMCADIAIpAhA3A5AFIAMgAikCGDcDmAUgAyACKQIgNwOABSADIAIpAig3A4gFIAQgA0GQBWogA0GABWoQBSACIAMpAogGNwIoIAIgAykCgAY3AiAgAyACKQIANwPwBCADIAIpAgg3A/gEIAMgAikCEDcD4AQgAyACKQIYNwPoBCAEIANB8ARqIANB4ARqEAUgAiADKQKIBjcCGCACIAMpAoAGNwIQIAMgAykDkAY3A9AEIAMgAykDmAY3A9gEIAMgAikCADcDwAQgAyACKQIINwPIBCAEIANB0ARqIANBwARqEAUgAygCgAYhBSADKAKEBiEGIAMoAogGIQcgAiADKAKMBiARczYCDCACIAcgEHM2AgggAiAGIA9zNgIEIAIgACAFczYCACADIAIpAlg3A5gGIAMgAikCUDcDkAYgAyABKQIANwOwBCADIAEpAgg3A7gEIAMgAikCWDcDqAQgAyACKQJQNwOgBCAEIANBsARqIANBoARqEAUgAiADKQKIBjcCWCACIAMpAoAGNwJQIAMgAikCMDcDkAQgAyACKQI4NwOYBCADIAEpAgA3A4AEIAMgASkCCDcDiAQgBCADQZAEaiADQYAEahAFIAEgAykCiAY3AgggASADKQKABjcCACADIAIpAiA3A/ADIAMgAikCKDcD+AMgAyACKQIwNwPgAyADIAIpAjg3A+gDIAQgA0HwA2ogA0HgA2oQBSACIAMpAogGNwI4IAIgAykCgAY3AjAgAyACKQIQNwPQAyADIAIpAhg3A9gDIAMgAikCIDcDwAMgAyACKQIoNwPIAyAEIANB0ANqIANBwANqEAUgAiADKQKIBjcCKCACIAMpAoAGNwIgIAMgAikCADcDsAMgAyACKQIINwO4AyADIAIpAhA3A6ADIAMgAikCGDcDqAMgBCADQbADaiADQaADahAFIAIgAykCiAY3AhggAiADKQKABjcCECADIAMpA5AGNwOQAyADIAMpA5gGNwOYAyADIAIpAgA3A4ADIAMgAikCCDcDiAMgBCADQZADaiADQYADahAFIAMoAoAGIQUgAygChAYhBiADKAKIBiEHIAIgAygCjAYgFXM2AgwgAiAHIBRzNgIIIAIgBiATczYCBCACIAUgEnM2AgAgAyACKQJYNwOYBiADIAIpAlA3A5AGIAMgASkCADcD8AIgAyABKQIINwP4AiADIAIpAlg3A+gCIAMgAikCUDcD4AIgBCADQfACaiADQeACahAFIAIgAykCiAY3AlggAiADKQKABjcCUCADIAIpAjA3A9ACIAMgAikCODcD2AIgAyABKQIANwPAAiADIAEpAgg3A8gCIAQgA0HQAmogA0HAAmoQBSABIAMpAogGNwIIIAEgAykCgAY3AgAgAyACKQIgNwOwAiADIAIpAig3A7gCIAMgAikCMDcDoAIgAyACKQI4NwOoAiAEIANBsAJqIANBoAJqEAUgAiADKQKIBjcCOCACIAMpAoAGNwIwIAMgAikCEDcDkAIgAyACKQIYNwOYAiADIAIpAiA3A4ACIAMgAikCKDcDiAIgBCADQZACaiADQYACahAFIAIgAykCiAY3AiggAiADKQKABjcCICADIAIpAgA3A/ABIAMgAikCCDcD+AEgAyACKQIQNwPgASADIAIpAhg3A+gBIAQgA0HwAWogA0HgAWoQBSACIAMpAogGNwIYIAIgAykCgAY3AhAgAyADKQOQBjcD0AEgAyADKQOYBjcD2AEgAyACKQIANwPAASADIAIpAgg3A8gBIAQgA0HQAWogA0HAAWoQBSADKAKABiEFIAMoAoQGIQYgAygCiAYhByACIAMoAowGIApzNgIMIAIgByAJczYCCCACIAYgF3M2AgQgAiAFIBZzNgIAIAMgAikCWDcDmAYgAyACKQJQNwOQBiADIAEpAgA3A7ABIAMgASkCCDcDuAEgAyACKQJYNwOoASADIAIpAlA3A6ABIAQgA0GwAWogA0GgAWoQBSACIAMpAogGNwJYIAIgAykCgAY3AlAgAyACKQIwNwOQASADIAIpAjg3A5gBIAMgASkCADcDgAEgAyABKQIINwOIASAEIANBkAFqIANBgAFqEAUgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgAikCIDcDcCADIAIpAig3A3ggAyACKQIwNwNgIAMgAikCODcDaCAEIANB8ABqIANB4ABqEAUgAiADKQKIBjcCOCACIAMpAoAGNwIwIAMgAikCEDcDUCADIAIpAhg3A1ggAyACKQIgNwNAIAMgAikCKDcDSCAEIANB0ABqIANBQGsQBSACIAMpAogGNwIoIAIgAykCgAY3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BSACIAMpAogCNwJYIAIgAykCgAI3AlAgAyACKQIwNwOQASADIAIpAjg3A5gBIAMgACkCADcDgAEgAyACKQJINwOIASAEIANBkAFqIANBgAFqEAUgAiADKQKIAjcCSCAAIAMpAoACNwIAIAMgAikCIDcDcCADIAIpAig3A3ggAyACKQIwNwNgIAMgAikCODcDaCAEIANB8ABqIANB4ABqEAUgAiADKQKIAjcCOCACIAMpAoACNwIwIAMgAikCEDcDUCADIAIpAhg3A1ggAyACKQIgNwNAIAMgAikCKDcDSCAEIANB0ABqIANBQGsQBSACIAMpAogCNwIoIAIgAykCgAI3AiAgAyACKQIANwMwIAMgAikCCDcDOCADIAIpAhA3AyAgAyACKQIYNwMoIAQgA0EwaiADQSBqEAUgAiADKQKIAjcCGCACIAMpAoACNwIQIAMgAykDkAI3AxAgAyADKQOYAjcDGCADIAIpAgA3AwAgAyACKQIINwMIIAQgA0EQaiADEAUgAiADKQKIAjcCCCACIAMpAoACNwIAIAIgByACKAIMczYCDCACIAYgAigCCHM2AgggAiAFIAIoAgRzNgIEIAIgECACKAIAczYCACAAIAggACgCAHM2AgAgAiALIAIoAkRzNgJEIAIgDiACKAJIczYCSCACIAEgAigCTHM2AkwgA0GgAmokAAuZDQESfyMAQaAEayICJAAgACgAPCEEIAAoADghBSAAKAA0IQYgACgAMCEHIAAoACAhCCAAKAAkIQkgACgAKCEKIAAoACwhCyAAKAAcIQwgACgAGCENIAAoABQhDiAAKAAQIQ8gACgABCEQIAAoAAghESAAKAAMIRIgACgAACETIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmA3A/ADIAIgASkCaDcD+AMgAiABKQJwNwPgAyACIAEpAng3A+gDIAJBgARqIgMgAkHwA2ogAkHgA2oQBSABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJQNwPQAyACIAEpAlg3A9gDIAIgASkCYDcDwAMgAiABKQJoNwPIAyADIAJB0ANqIAJBwANqEAUgASACKQKIBDcCaCABIAIpAoAENwJgIAIgAUFAayIAKQIANwOwAyACIAEpAkg3A7gDIAIgASkCUDcDoAMgAiABKQJYNwOoAyADIAJBsANqIAJBoANqEAUgASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCMDcDkAMgAiABKQI4NwOYAyACIAApAgA3A4ADIAIgASkCSDcDiAMgAyACQZADaiACQYADahAFIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAiA3A/ACIAIgASkCKDcD+AIgAiABKQIwNwPgAiACIAEpAjg3A+gCIAMgAkHwAmogAkHgAmoQBSABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIQNwPQAiACIAEpAhg3A9gCIAIgASkCIDcDwAIgAiABKQIoNwPIAiADIAJB0AJqIAJBwAJqEAUgASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCADcDsAIgAiABKQIINwO4AiACIAEpAhA3A6ACIAIgASkCGDcDqAIgAyACQbACaiACQaACahAFIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5AENwOQAiACIAIpA5gENwOYAiACIAEpAgA3A4ACIAIgASkCCDcDiAIgAyACQZACaiACQYACahAFIAEgAikCiAQ3AgggASACKQKABDcCACABIBIgASgCDHM2AgwgASARIAEoAghzNgIIIAEgECABKAIEczYCBCABIBMgASgCAHM2AgAgACAPIAAoAgBzNgIAIAEgDiABKAJEczYCRCABIA0gASgCSHM2AkggASAMIAEoAkxzNgJMIAIgASkCeDcDmAQgAiABKQJwNwOQBCACIAEpAmA3A/ABIAIgASkCaDcD+AEgAiABKQJwNwPgASACIAEpAng3A+gBIAMgAkHwAWogAkHgAWoQBSABIAIpAogENwJ4IAEgAikCgAQ3AnAgAiABKQJQNwPQASACIAEpAlg3A9gBIAIgASkCYDcDwAEgAiABKQJoNwPIASADIAJB0AFqIAJBwAFqEAUgASACKQKIBDcCaCABIAIpAoAENwJgIAIgACkCADcDsAEgAiABKQJINwO4ASACIAEpAlA3A6ABIAIgASkCWDcDqAEgAyACQbABaiACQaABahAFIAEgAikCiAQ3AlggASACKQKABDcCUCACIAEpAjA3A5ABIAIgASkCODcDmAEgAiAAKQIANwOAASACIAEpAkg3A4gBIAMgAkGQAWogAkGAAWoQBSABIAIpAogENwJIIAAgAikCgAQ3AgAgAiABKQIgNwNwIAIgASkCKDcDeCACIAEpAjA3A2AgAiABKQI4NwNoIAMgAkHwAGogAkHgAGoQBSABIAIpAogENwI4IAEgAikCgAQ3AjAgAiABKQIQNwNQIAIgASkCGDcDWCACIAEpAiA3A0AgAiABKQIoNwNIIAMgAkHQAGogAkFAaxAFIAEgAikCiAQ3AiggASACKQKABDcCICACIAEpAgA3AzAgAiABKQIINwM4IAIgASkCEDcDICACIAEpAhg3AyggAyACQTBqIAJBIGoQBSABIAIpAogENwIYIAEgAikCgAQ3AhAgAiACKQOQBDcDECACIAIpA5gENwMYIAIgASkCADcDACACIAEpAgg3AwggAyACQRBqIAIQBSABIAIpAogENwIIIAEgAikCgAQ3AgAgASALIAEoAgxzNgIMIAEgCiABKAIIczYCCCABIAkgASgCBHM2AgQgASAIIAEoAgBzNgIAIAAgByAAKAIAczYCACABIAYgASgCRHM2AkQgASAFIAEoAkhzNgJIIAEgBCABKAJMczYCTCACQaAEaiQAC5wJAQt/IwBBoAJrIgMkACABKAAEIQogASgACCELIAEoAAwhDCAAKAAEIQYgACgACCEHIAAoAAwhCCABKAAAIQ0gAiAAKAAAIgFBgIKEEHMiADYCcCACIAFB2/vgqAVzNgJgIAIgADYCUCACQUBrIgAgASANcyIFNgIAIAJCoKLEkbSurZRdNwI4IAJC2/vgqNXN8JdxNwIwIAJClcTcyYWy+rziADcCKCACQoCChJCwoIGEDTcCICACQqCixJG0rq2UXTcCGCACQtv74KjVzfCXcTcCECACIAU2AgAgAiAIQZDT55MGcyIFNgJ8IAIgB0GVxNzJBXMiBDYCeCACIAZBg4qg6ABzIgk2AnQgAiAIQfPqoul9czYCbCACIAdBoKLEkQRzNgJoIAIgBkHthL+Jf3M2AmQgAiAFNgJcIAIgBDYCWCACIAk2AlQgAiAIIAxzIgU2AkwgAiAHIAtzIgQ2AkggAiAGIApzIgk2AkQgAiAFNgIMIAIgBDYCCCACIAk2AgRBACEFA0AgAyACKQJ4NwOYAiADIAIpAnA3A5ACIAMgAikCYDcD8AEgAyACKQJoNwP4ASADIAIpAnA3A+ABIAMgAikCeDcD6AEgA0GAAmoiBCADQfABaiADQeABahAFIAIgAykCiAI3AnggAiADKQKAAjcCcCADIAIpAlA3A9ABIAMgAikCWDcD2AEgAyACKQJgNwPAASADIAIpAmg3A8gBIAQgA0HQAWogA0HAAWoQBSACIAMpAogCNwJoIAIgAykCgAI3AmAgAyAAKQIANwOwASADIAApAgg3A7gBIAMgAikCUDcDoAEgAyACKQJYNwOoASAEIANBsAFqIANBoAFqEAUgAiADKQKIAjcCWCACIAMpAoACNwJQIAMgAikCMDcDkAEgAyACKQI4NwOYASADIAApAgA3A4ABIAMgACkCCDcDiAEgBCADQZABaiADQYABahAFIAAgAykCiAI3AgggACADKQKAAjcCACADIAIpAiA3A3AgAyACKQIoNwN4IAMgAikCMDcDYCADIAIpAjg3A2ggBCADQfAAaiADQeAAahAFIAIgAykCiAI3AjggAiADKQKAAjcCMCADIAIpAhA3A1AgAyACKQIYNwNYIAMgAikCIDcDQCADIAIpAig3A0ggBCADQdAAaiADQUBrEAUgAiADKQKIAjcCKCACIAMpAoACNwIgIAMgAikCADcDMCADIAIpAgg3AzggAyACKQIQNwMgIAMgAikCGDcDKCAEIANBMGogA0EgahAFIAIgAykCiAI3AhggAiADKQKAAjcCECADIAMpA5ACNwMQIAMgAykDmAI3AxggAyACKQIANwMAIAMgAikCCDcDCCAEIANBEGogAxAFIAIgAykCiAI3AgggAiADKQKAAjcCACACIAIoAgwgDHM2AgwgAiACKAIIIAtzNgIIIAIgAigCBCAKczYCBCACIAIoAgAgDXM2AgAgACAAKAIAIAFzNgIAIAIgAigCRCAGczYCRCACIAIoAkggB3M2AkggAiACKAJMIAhzNgJMIAVBAWoiBUEKRw0ACyADQaACaiQAC7UFAQl/IwBBgAFrIgMkAEHixAItAAAhBCAAQgA3AgQgAEEBNgIAIABCADcCDCAAQgA3AhQgAEIANwIcIABCgICAgBA3AiQgAEEsakEAQcwA/AsAIAAgAUHAB2xBkBVqIgFB4sQCLQAAQQJ2IAIgAkEAIARBAnYgAkGAAXFBB3ZzIgRrcUEBdGsiAkEBc0H/AXFBAWtBH3ZzEB0gACABQfgAakHixAItAABBAnYgAkECc0H/AXFBAWtBH3ZzEB0gACABQfABakHixAItAABBAnYgAkEDc0H/AXFBAWtBH3ZzEB0gACABQegCakHixAItAABBAnYgAkEEc0H/AXFBAWtBH3ZzEB0gACABQeADakHixAItAABBAnYgAkEFc0H/AXFBAWtBH3ZzEB0gACABQdgEakHixAItAABBAnYgAkEGc0H/AXFBAWtBH3ZzEB0gACABQdAFakHixAItAABBAnYgAkEHc0H/AXFBAWtBH3ZzEB0gACABQcgGakHixAItAABBAnYgAkEIc0H/AXFBAWtBH3ZzEB0gAyAAKQJINwMoIAMgAEFAaykCADcDICADIAApAjg3AxggAyAAKQIwNwMQIAMgACkCKDcDCCADIAApAgA3AzAgAyAAKQIINwM4IAMgACkCEDcDQCADIAApAhg3A0ggAyAAKQIgNwNQIAAoAlAhASAAKAJUIQIgACgCWCEFIAAoAlwhBiAAKAJgIQcgACgCZCEIIAAoAmghCSAAKAJsIQogACgCcCELIANBACAAKAJ0azYCfCADQQAgC2s2AnggA0EAIAprNgJ0IANBACAJazYCcCADQQAgCGs2AmwgA0EAIAdrNgJoIANBACAGazYCZCADQQAgBWs2AmAgA0EAIAJrNgJcIANBACABazYCWCAAIANBCGogBBAdIANBgAFqJAAL8AkBHn8gASgCKCEDIAEoAgQhBCABKAIsIQUgASgCCCEGIAEoAjAhByABKAIMIQggASgCNCEJIAEoAhAhCiABKAI4IQsgASgCFCEMIAEoAjwhDSABKAIYIQ4gAUFAayIPKAIAIRAgASgCHCERIAEoAkQhEiABKAIgIRMgASgCSCEUIAEoAgAhFSAAIAEoAiQgASgCTGo2AiQgACATIBRqNgIgIAAgESASajYCHCAAIA4gEGo2AhggACAMIA1qNgIUIAAgCiALajYCECAAIAggCWo2AgwgACAGIAdqNgIIIAAgBCAFajYCBCAAIAMgFWo2AgAgASgCKCEFIAEoAgQhAyABKAIsIQYgASgCCCEHIAEoAjAhCCABKAIMIQkgASgCNCEKIAEoAhAhCyABKAI4IQwgASgCFCENIAEoAjwhDiABKAIYIRAgDygCACEPIAEoAhwhBCABKAJEIREgASgCICESIAEoAkghEyABKAIAIRQgACABKAJMIAEoAiRrNgJMIAAgEyASazYCSCAAIBEgBGs2AkQgAEFAayIEIA8gEGs2AgAgACAOIA1rNgI8IAAgDCALazYCOCAAIAogCWs2AjQgACAIIAdrNgIwIAAgBiADazYCLCAAQShqIgMgBSAUazYCACAAQdAAaiAAIAJBKGoQBiADIAMgAhAGIABB+ABqIAJB+ABqIAFB+ABqEAYgACABQdAAaiACQdAAahAGIAAoAgQhFSAAKAIIIRYgACgCDCEXIAAoAhAhGCAAKAIUIRkgACgCGCEaIAAoAhwhGyAAKAIgIRwgACgCJCEdIAMoAgAhASAAKAJQIQIgACgCLCEFIAAoAlQhBiAAKAIwIQcgACgCWCEIIAAoAjQhCSAAKAJcIQogACgCOCELIAAoAmAhDCAAKAI8IQ0gACgCZCEOIAQoAgAhDyAAKAJoIRAgACgCRCERIAAoAmwhEiAAKAJIIRMgACgCcCEUIAAoAgAhHiAAIAAoAkwiHyAAKAJ0IiBqNgJMIAAgEyAUajYCSCAAIBEgEmo2AkQgBCAPIBBqNgIAIAAgDSAOajYCPCAAIAsgDGo2AjggACAJIApqNgI0IAAgByAIajYCMCAAIAUgBmo2AiwgAyABIAJqNgIAIAAgICAfazYCJCAAIBQgE2s2AiAgACASIBFrNgIcIAAgECAPazYCGCAAIA4gDWs2AhQgACAMIAtrNgIQIAAgCiAJazYCDCAAIAggB2s2AgggACAGIAVrNgIEIAAgAiABazYCACAAIAAoApwBIgEgHUEBdCICajYCnAEgACAAKAKYASIDIBxBAXQiBGo2ApgBIAAgACgClAEiBSAbQQF0IgZqNgKUASAAIAAoApABIgcgGkEBdCIIajYCkAEgACAAKAKMASIJIBlBAXQiCmo2AowBIAAgACgCiAEiCyAYQQF0IgxqNgKIASAAIAAoAoQBIg0gF0EBdCIOajYChAEgACAAKAKAASIPIBZBAXQiEGo2AoABIAAgACgCfCIRIBVBAXQiEmo2AnwgACAAKAJ4IhMgHkEBdCIUajYCeCAAIAQgA2s2AnAgACAGIAVrNgJsIAAgCCAHazYCaCAAIAogCWs2AmQgACAMIAtrNgJgIAAgDiANazYCXCAAIBAgD2s2AlggACASIBFrNgJUIAAgFCATazYCUCAAIAIgAWs2AnQLEgAgACABIAKtIAOtQiCGhBAYC64OARd/IwBBwAJrIgMkACAAQShqIgkgARCAASAAQgA3AlQgAEEBNgJQIABCADcCXCAAQgA3AmQgAEIANwJsIABBADYCdCADQfABaiIIIAkQBCADQcABaiIGIAhBwAoQBkF/IQogAyADKALwAUEBayILNgLwASADIAMoAsABQQFqNgLAASADKAL0ASEMIAMoAvgBIQ0gAygC/AEhDiADKAKAAiEPIAMoAoQCIRAgAygCiAIhESADKAKMAiESIAMoApACIRMgAygClAIhFCADQZABaiIHIAYQBCAHIAcgBhAGIAAgBxAEIAAgACAGEAYgACAAIAgQBiMAQZABayIEJAAgBEHgAGoiBSAAEAQgBEEwaiICIAUQBCACIAIQBCACIAAgAhAGIAUgBSACEAYgBSAFEAQgBSACIAUQBiACIAUQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCAFIAIgBRAGIAIgBRAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAiAFEAYgBCACEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgBCAEEAQgAiAEIAIQBiACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCACIAIQBCAFIAIgBRAGIAIgBRAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAhAEIAIgAiAFEAYgBCACEARBASECA0AgBCAEEAQgAkEBaiICQeQARw0ACyAEQTBqIgIgBCACEAYgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgAiACEAQgBEHgAGoiBSACIAUQBiAFIAUQBCAFIAUQBCAAIAUgABAGIARBkAFqJAAgACAAIAcQBiAAIAAgCBAGIANB4ABqIgIgABAEIAIgAiAGEAYgAyADKAKEASICIBRrNgJUIAMgAygCgAEiBCATazYCUCADIAMoAnwiBSASazYCTCADIAMoAngiBiARazYCSCADIAMoAnQiByAQazYCRCADIAMoAnAiCCAPazYCQCADIAMoAmwiFSAOazYCPCADIAMoAmgiFiANazYCOCADIAMoAmQiFyAMazYCNCADIAMoAmAiGCALazYCMCADIANBMGoQGgJAIANBIBAoRQRAIAMgAiAUajYCJCADIAQgE2o2AiAgAyAFIBJqNgIcIAMgBiARajYCGCADIAcgEGo2AhQgAyAIIA9qNgIQIAMgDiAVajYCDCADIA0gFmo2AgggAyAMIBdqNgIEIAMgCyAYajYCACADQaACaiICIAMQGiACQSAQKEUNASAAIABB8AoQBgsgA0GgAmogABAaIAMtAKACQQFxIAEtAB9BB3ZGBEAgAEEAIAAoAgBrNgIAIABBACAAKAIkazYCJCAAQQAgACgCIGs2AiAgAEEAIAAoAhxrNgIcIABBACAAKAIYazYCGCAAQQAgACgCFGs2AhQgAEEAIAAoAhBrNgIQIABBACAAKAIMazYCDCAAQQAgACgCCGs2AgggAEEAIAAoAgRrNgIECyAAQfgAaiAAIAkQ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ACADIAApAgA3A9ABIAMgACkCCDcD2AEgAyACQUBrKQIANwPAASADIAIpAkg3A8gBIAEgA0HQAWogA0HAAWoQBSAAIAMpAsgCNwIIIAAgAykCwAI3AgAgAyAAKQIANwOwASADIAApAgg3A7gBIAMgAikCUDcDoAEgAyACKQJYNwOoASABIANBsAFqIANBoAFqEAUgACADKQLIAjcCCCAAIAMpAsACNwIAIAMgACkCADcDkAEgAyAAKQIINwOYASADIAIpAmA3A4ABIAMgAikCaDcDiAEgASADQZABaiADQYABahAFIAAgAykCyAI3AgggACADKQLAAjcCACADIAApAgA3A3AgAyAAKQIINwN4IAMgAikCcDcDYCADIAIpAng3A2ggASADQfAAaiADQeAAahAFIAAgAykCyAI3AgggACADKQLAAjcCACADIAApAgA3A1AgAyAAKQIINwNYIAMgAikCgAE3A0AgAyACKQKIATcDSCABIANB0ABqIANBQGsQBSAAIAMpAsgCNwIIIAAgAykCwAI3AgAgAyAAKQIANwMwIAMgACkCCDcDOCADIAIpApABNwMgIAMgAikCmAE3AyggASADQTBqIANBIGoQBSAAIAMpAsgCNwIIIAAgAykCwAI3AgAgAyAAKQIANwMQIAMgACkCCDcDGCADIAIpAqABNwMAIAMgAikCqAE3AwggASADQRBqIAMQISAAIAMpAsgCNwIIIAAgAykCwAI3AgAgA0HQAmokAAuwAwEFfyMAQaAfayIDJAAgA0GgHWoiBEHgACACQiAQSRogAyADKQPYHTcDmB0gAyADKQPQHTcDkB0gAyADKQPIHTcDiB0gAyADKQPAHTcDgB0gAyADKQO4HTcD+BwgAyADKQOwHTcD8BwgAyADKQOoHTcD6BwgAyADKQOgHTcD4BwgAyADKQPgHTcDICADIAMpA+gdNwMoIAMgAykD8B03AzAgAyADKQP4HTcDOCADQcATaiADQeAAaiIGIANB4BxqIgUQNRogA0FAayADQSBqIgdBzLkCKAIAEQEAGiAEQeAAEAcgBUHAABAHQX8hAiAFIAEgBhCRAUUEQCADIAcgAUHACGoiBBApBH8gBQUgA0GgHWoiAUEAQcgB/AsAIAFBADoA7AEgAUEgNgLoASABQoCAgICAETcD4AEgASADQeAcaiICQiAQGBog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CiALKQI4NwOYASAKIBApAgA3A4ABIAogCykCSDcDiAEgASAKQZABaiAKQYABahAFIAsgCikC2AE3AkggECAKKQLQATcCACAKIAspAiA3A3AgCiALKQIoNwN4IAogCykCMDcDYCAKIAspAjg3A2ggASAKQfAAaiAKQeAAahAFIAsgCikC2AE3AjggCyAKKQLQATcCMCAKIAspAhA3A1AgCiALKQIYNwNYIAogCykCIDcDQCAKIAspAig3A0ggASAKQdAAaiAKQUBrEAUgCyAKKQLYATcCKCALIAopAtABNwIgIAogCykCADcDMCAKIAspAgg3AzggCiALKQIQNwMgIAogCykCGDcDKCABIApBMGogCkEgahAFIAsgCikC2AE3AhggCyAKKQLQATcCECAKIAopA+ABNwMQIAogCikD6AE3AxggCiALKQIANwMAIAogCykCCDcDCCABIApBEGogChAFIAooAtABIQcgCigC1AEhBSAKKALYASEBIAsgCCAKKALcAXM2AgwgCyABIAxzNgIIIAsgBSANczYCBCALIAcgD3M2AgAgCkHwAWokAAsgCUGAA2ogBCAGrSACrSAJQbADahBrQX8hBwJAAkACQAJ/AkACQCAEQRBrDhEAAwMDAwMDAwMDAwMDAwMDAQMLIAlBgANqIAMQKwwBCyAJQYADaiADEEwLIgdFDQELIABFDQEgAkUNASAAQQAgAvwLAAwBC0EAIQcLIAlBoARqJAAgBwvaAQEDfyMAQRBrIgUkAAJAAkAgA0UEQEF/IQEMAQsCfyADIANBAWsiBnFFBEAgBiACQX9zIgdxDAELIAJBf3MhByAGIAIgA3BrCyIGIAdPDQEgBCACIAZqIgJNBEBBfyEBDAELIAAEQCAAIAJBAWo2AgALIAEgAmohAEEAIQEgBUEAOgAPQQAhAgNAIAAgAmsiBCAELQAAIAUtAA9xIAIgBnNBAWtBGHYiBEGAAXFyOgAAIAUgBS0ADyAEcjoADyACQQFqIgIgA0cNAAsLIAVBEGokACABDwsQCgALogwCBX8CfiMAQZAEayIJJAAgCCAHIAlBkANqEG5BACEIIAZBH0sEQEEgIQcDQCAFIAhqIAlBkANqEG0gByIIQSBqIgcgBk0NAAsLIAYgCEEQciIHTwRAA0AgBSAIaiIIKAAAIQsgCCgABCEMIAgoAAghDSAIKAAMIQggCSAJKQLoAzcDiAQgCSAJKQLgAzcDgAQgCSAJKQLQAzcD8AIgCSAJKQLYAzcD+AIgCSAJKQLgAzcD4AIgCSAJKQLoAzcD6AIgCUHwA2oiCiAJQfACaiAJQeACahAFIAkgCSkC+AM3AugDIAkgCSkC8AM3AuADIAkgCSkCwAM3A9ACIAkgCSkCyAM3A9gCIAkgCSkC0AM3A8ACIAkgCSkC2AM3A8gCIAogCUHQAmogCUHAAmoQBSAJIAkpAvgDNwLYAyAJIAkpAvADNwLQAyAJIAkpArADNwOwAiAJIAkpArgDNwO4AiAJIAkpAsADNwOgAiAJIAkpAsgDNwOoAiAKIAlBsAJqIAlBoAJqEAUgCSAJKQL4AzcCyAMgCSAJKQLwAzcCwAMgCSAJKQKgAzcDkAIgCSAJKQKoAzcDmAIgCSAJKQKwAzcDgAIgCSAJKQK4AzcDiAIgCiAJQZACaiAJQYACahAFIAkgCSkC+AM3ArgDIAkgCSkC8AM3ArADIAkgCSkDkAM3A/ABIAkgCSkDmAM3A/gBIAkgCSkCoAM3A+ABIAkgCSkCqAM3A+gBIAogCUHwAWogCUHgAWoQBSAJIAkpAvgDNwKoAyAJIAkpAvADNwKgAyAJIAkpA4AENwPQASAJIAkpA4gENwPYASAJIAkpA5ADNwPAASAJIAkpA5gDNwPIASAKIAlB0AFqIAlBwAFqEAUgCSAIIAkoAvwDczYCnAMgCSANIAkoAvgDczYCmAMgCSAMIAkoAvQDczYClAMgCSALIAkoAvADczYCkAMgByIIQRBqIgcgBk0NAAsLIAZBD3EiBwRAQRAgB2siCwRAIAlBgANqIAdyQQAgC/wLAAsgBwRAIAlBgANqIAUgCGogB/wKAAALIAkoAoADIQUgCSgChAMhByAJKAKIAyEIIAkoAowDIQsgCSAJKQPoAyIONwOIBCAJIAkpA+ADIg83A4AEIAkgCSkD0AM3A7ABIAkgCSkD2AM3A7gBIAkgDzcDoAEgCSAONwOoASAJQfADaiIKIAlBsAFqIAlBoAFqEAUgCSAJKQL4AzcD6AMgCSAJKQLwAzcD4AMgCSAJKQPAAzcDkAEgCSAJKQPIAzcDmAEgCSAJKQPQAzcDgAEgCSAJKQPYAzcDiAEgCiAJQZABaiAJQYABahAFIAkgCSkC+AM3A9gDIAkgCSkC8AM3A9ADIAkgCSkDsAM3A3AgCSAJKQO4AzcDeCAJIAkpA8ADNwNgIAkgCSkDyAM3A2ggCiAJQfAAaiAJQeAAahAFIAkgCSkC+AM3A8gDIAkgCSkC8AM3A8ADIAkgCSkDoAM3A1AgCSAJKQOoAzcDWCAJIAkpA7ADNwNAIAkgCSkDuAM3A0ggCiAJQdAAaiAJQUBrEAUgCSAJKQL4AzcDuAMgCSAJKQLwAzcDsAMgCSAJKQOQAzcDMCAJIAkpA5gDNwM4IAkgCSkDoAM3AyAgCSAJKQOoAzcDKCAKIAlBMGogCUEgahAFIAkgCSkC+AM3A6gDIAkgCSkC8AM3A6ADIAkgCSkDgAQ3AxAgCSAJKQOIBDcDGCAJIAkpA5ADNwMAIAkgCSkDmAM3AwggCiAJQRBqIAkQBSAJIAsgCSgC/ANzNgKcAyAJIAggCSgC+ANzNgKYAyAJIAcgCSgC9ANzNgKUAyAJIAUgCSgC8ANzNgKQAwtBECEIQQAhByAEQRBPBEADQCAAIAdqIAMgB2ogCUGQA2oQbCAIIgdBEGoiCCAETQ0ACwsCQCAEQQ9xIgVFDQBBECAFayIIBEAgCUGAA2ogBXJBACAI/AsACyAFRSIIRQRAIAlBgANqIAMgB2ogBfwKAAALIAlBgARqIgMgCUGAA2ogCUGQA2oQbCAIDQAgACAHaiADIAX8CgAACyABIAIgBq0gBK0gCUGQA2oQayAJQZAEaiQAQQAL+Q0BI38jACIMIRIgDEHgAWtBYHEiCyQAIAggByALQeAAahB1QQAhByAGQT9LBEBBwAAhCANAIAUgB2ogC0HgAGoQdCAIIgdBQGsiCCAGTQ0ACwsgBiAHQSByIghPBEADQCAFIAdqIAtB4ABqED8gCCIHQSBqIgggBk0NAAsLIAZBH3EiDARAQSAgDGsiCARAIAtBQGsgDHJBACAI/AsACyAMBEAgC0FAayAFIAdqIAz8CgAACyALQUBrIAtB4ABqED8LAkAgAARAQSAhBUEAIQcgAkEgSQ0BA0AgACAHaiABIAdqIAtB4ABqEHAgBSIHQSBqIgUgAk0NAAsMAQtBICEFQQAhByACQSBJDQADQCALQSBqIAEgB2ogC0HgAGoQcCAFIgdBIGoiBSACTQ0ACwsgAkEfcSIFBEAgACAHaiALQSBqIAAbIRsgASAHaiEBIAtB4ABqIQojAEHAAmsiCSQAIAlBgAJqIAVqIRNBICAFayIURSIcRQRAIBNBACAU/AsACyAFRSIdRQRAIAlBgAJqIAEgBfwKAAALIAooAhAhHiAKKAIwIR8gCigCFCEgIAooAjQhISAKKAIYISIgCigCOCEjIAooAhwhJCAKKAI8ISUgCigCICEVIAooAlAhJiAKKAJwIScgCigCYCEWIAooAiQhFyAKKAJUISggCigCdCEpIAooAmQhGCAKKAIoIRkgCigCWCEqIAooAnghKyAKKAJoIRogCSgCgAIhDSAJKAKEAiEOIAkoAogCIQ8gCSgCjAIhECAJKAKQAiERIAkoApQCIQwgCSgCmAIhCCAJIAooAiwiByAKKAJsIgEgCigCfHEgCigCXCAJKAKcAnNzczYCnAIgCSAZIBogK3EgCCAqc3NzNgKYAiAJIBcgGCApcSAMIChzc3M2ApQCIAkgFSAWICdxIBEgJnNzczYCkAIgCSABIAcgJXEgECAkc3NzNgKMAiAJIBogGSAjcSAPICJzc3M2AogCIAkgGCAXICFxIA4gIHNzczYChAIgCSAWIBUgH3EgDSAec3NzNgKAAiAcRQRAIBNBACAU/AsACyAdRQRAIBsgCUGAAmogBfwKAAALIAkoApwCIQ8gCSgCmAIhECAJKAKUAiERIAkoApACIQwgCSgCgAIhCCAJKAKEAiEHIAkoAogCIQUgCSgCjAIhASAJIAopAng3A7gCIAkgCikCcDcDsAIgCSAKKQJgNwPwASAJIAopAmg3A/gBIAkgCikCcDcD4AEgCSAKKQJ4NwPoASAJQaACaiINIAlB8AFqIAlB4AFqEAUgCiAJKQKoAjcCeCAKIAkpAqACNwJwIAkgCikCUDcD0AEgCSAKKQJYNwPYASAJIAopAmA3A8ABIAkgCikCaDcDyAEgDSAJQdABaiAJQcABahAFIAogCSkCqAI3AmggCiAJKQKgAjcCYCAJIApBQGsiDikCADcDsAEgCSAKKQJINwO4ASAJIAopAlA3A6ABIAkgCikCWDcDqAEgDSAJQbABaiAJQaABahAFIAogCSkCqAI3AlggCiAJKQKgAjcCUCAJIAopAjA3A5ABIAkgCikCODcDmAEgCSAOKQIANwOAASAJIAopAkg3A4gBIA0gCUGQAWogCUGAAWoQBSAKIAkpAqgCNwJIIA4gCSkCoAI3AgAgCSAKKQIgNwNwIAkgCikCKDcDeCAJIAopAjA3A2AgCSAKKQI4NwNoIA0gCUHwAGogCUHgAGoQBSAKIAkpAqgCNwI4IAogCSkCoAI3AjAgCSAKKQIQNwNQIAkgCikCGDcDWCAJIAopAiA3A0AgCSAKKQIoNwNIIA0gCUHQAGogCUFAaxAFIAogCSkCqAI3AiggCiAJKQKgAjcCICAJIAopAgA3AzAgCSAKKQIINwM4IAkgCikCEDcDICAJIAopAhg3AyggDSAJQTBqIAlBIGoQBSAKIAkpAqgCNwIYIAogCSkCoAI3AhAgCSAJKQOwAjcDECAJIAkpA7gCNwMYIAkgCikCADcDACAJIAopAgg3AwggDSAJQRBqIAkQBSAKIAkpAqgCNwIIIAogCSkCoAI3AgAgCiABIAooAgxzNgIMIAogBSAKKAIIczYCCCAKIAcgCigCBHM2AgQgCiAIIAooAgBzNgIAIA4gDCAOKAIAczYCACAKIBEgCigCRHM2AkQgCiAQIAooAkhzNgJIIAogDyAKKAJMczYCTCAJQcACaiQACyALIAQgBq0gAq0gC0HgAGoQckF/IQcCQAJAAkACfwJAAkAgBEEQaw4RAAMDAwMDAwMDAwMDAwMDAwEDCyALIAMQKwwBCyALIAMQTAsiB0UNAQsgAEUNASACRQ0BIABBACAC/AsAIBIkACAHDwtBACEHCyASJAAgBwvhAgEDfyMAIgkgCUHAAWtBYHEiCSQAIAggByAJQUBrEHVBACEHIAZBP0sEQEHAACEIA0AgBSAHaiAJQUBrEHQgCCIHQUBrIgggBk0NAAsLIAYgB0EgciIITwRAA0AgBSAHaiAJQUBrED8gCCIHQSBqIgggBk0NAAsLIAZBH3EiCARAQSAgCGsiCwRAIAlBIGogCHJBACAL/AsACyAIBEAgCUEgaiAFIAdqIAj8CgAACyAJQSBqIAlBQGsQPwtBICEFQQAhByAEQSBPBEADQCAAIAdqIAMgB2ogCUFAaxBzIAUiB0EgaiIFIARNDQALCwJAIARBH3EiBUUNAEEgIAVrIggEQCAJQSBqIAVyQQAgCPwLAAsgBUUiCEUEQCAJQSBqIAMgB2ogBfwKAAALIAkgCUEgaiAJQUBrEHMgCA0AIAAgB2ogCSAF/AoAAAsgASACIAatIAStIAlBQGsQciQAQQAL5gQBBX8jAEHwAGsiBiQAIAJCAFIEQCAGIAUpABg3AxggBiAFKQAQNwMQIAYgBSkACDcDCCAGIAUpAAA3AwAgBiADKQAANwNgIAYgBDwAaCAGIARCOIg8AG8gBiAEQjCIPABuIAYgBEIoiDwAbSAGIARCIIg8AGwgBiAEQhiIPABrIAYgBEIQiDwAaiAGIARCCIg8AGkCQCACQsAAWgRAA0BBACEFIAZBIGogBkHgAGogBhBAA0AgACAFaiAGQSBqIgcgBWotAAAgASAFai0AAHM6AAAgACAFQQFyIgNqIAMgB2otAAAgASADai0AAHM6AAAgBUECaiIFQcAARw0ACyAGIAYtAGhBAWoiAzoAaCAGIAYtAGkgA0EIdmoiAzoAaSAGIAYtAGogA0EIdmoiAzoAaiAGIAYtAGsgA0EIdmoiAzoAayAGIAYtAGwgA0EIdmoiAzoAbCAGIAYtAG0gA0EIdmoiAzoAbSAGIAYtAG4gA0EIdmoiAzoAbiAGIAYtAG8gA0EIdmo6AG8gAUFAayEBIABBQGshACACQkB8IgJCP1YNAAsgAlANAQtBACEFIAZBIGogBkHgAGogBhBAIAJCAVIEQCACpyIDQQFxIANBPnEhCUEAIQMDQCAAIAVqIAZBIGoiCiAFai0AACABIAVqLQAAczoAACAAIAVBAXIiB2ogByAKai0AACABIAdqLQAAczoAACAFQQJqIQUgA0ECaiIDIAlHDQALRQ0BCyAAIAVqIAZBIGogBWotAAAgASAFai0AAHM6AAALIAZBIGpBwAAQByAGQSAQBwsgBkHwAGokAEEAC/4DAgd/AX4jAEHwAGsiBCQAIAFCAFIEQCAEIAMpABg3AxggBCADKQAQNwMQIAQgAykACDcDCCAEIAMpAAA3AwAgAikAACELIARCADcDaCAEIAs3A2ACQCABQsAAWgRAA0AgACAEQeAAaiAEEEAgBCAELQBoQQFqIgI6AGggBCAELQBpIAJBCHZqIgI6AGkgBCAELQBqIAJBCHZqIgI6AGogBCAELQBrIAJBCHZqIgI6AGsgBCAELQBsIAJBCHZqIgI6AGwgBCAELQBtIAJBCHZqIgI6AG0gBCAELQBuIAJBCHZqIgI6AG4gBCAELQBvIAJBCHZqOgBvIABBQGshACABQkB8IgFCP1YNAAsgAVANAQtBACECIARBIGogBEHgAGogBBBAIAGnIgZBA3EhB0EAIQMgAUIEWgRAIAZBPHEhCEEAIQYDQCAAIANqIARBIGoiCSIFIANqLQAAOgAAIAAgA0EBciIKaiAFIApqLQAAOgAAIAAgA0ECciIFaiAFIAlqLQAAOgAAIAAgA0EDciIFaiAEQSBqIAVqLQAAOgAAIANBBGohAyAGQQRqIgYgCEcNAAsgB0UNAQsDQCAAIANqIARBIGogA2otAAA6AAAgA0EBaiEDIAJBAWoiAiAHRw0ACwsgBEEgakHAABAHIARBIBAHCyAEQfAAaiQAQQALhgYBFH8jAEGwAmsiAiQAIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAIAEtABA6ABAgACABLQAROgARIAAgAS0AEjoAEiAAIAEtABM6ABMgACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiABLQAfIQEgACAALQAAQfgBcToAACAAIAFBP3FBwAByOgAfIAJBMGogABBCIAIoAoABIQEgAigCWCEDIAIoAoQBIQQgAigCXCEFIAIoAogBIQYgAigCYCEHIAIoAowBIQggAigCZCEJIAIoApABIQogAigCaCELIAIoApQBIQwgAigCbCENIAIoApgBIQ4gAigCcCEPIAIoApwBIRAgAigCdCERIAIoAqABIRIgAigCeCETIAIgAigCfCIUIAIoAqQBIhVqNgKkAiACIBIgE2o2AqACIAIgECARajYCnAIgAiAOIA9qNgKYAiACIAwgDWo2ApQCIAIgCiALajYCkAIgAiAIIAlqNgKMAiACIAYgB2o2AogCIAIgBCAFajYChAIgAiABIANqNgKAAiACIBUgFGs2AvQBIAIgEiATazYC8AEgAiAQIBFrNgLsASACIA4gD2s2AugBIAIgDCAN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AsQBIAMgBCAMajYCwAEgAyAHIA9qNgLMASADQeAAaiIaIANBMGoiDCADQfABaiIFEAYgA0HAAWoiBCAEIAMQBiAMIAMQBCADIAUQBCADKALAASECIAMoAmAhBiADKALEASEKIAMoAmQhByADKALIASEIIAMoAmghCSADKALMASELIAMoAmwhDSADKALQASEXIAMoAnAhDiADKALUASEPIAMoAnQhECADKALYASEUIAMoAnghESADKALcASESIAMoAnwhEyADKALgASEVIAMoAoABIRggAyADKALkASIZIAMoAoQBIhtqNgK0ASADIBUgGGo2ArABIAMgEiATajYCrAEgAyARIBRqNgKoASADIA8gEGo2AqQBIAMgDiAXajYCoAEgAyALIA1qNgKcASADIAggCWo2ApgBIAMgByAKajYClAEgAyACIAZqNgKQASADIBsgGWs2AuQBIAMgGCAVazYC4AEgAyATIBJrNgLcASADIBEgFGs2AtgBIAMgECAPazYC1AEgAyAOIBdrNgLQASADIA0gC2s2AswBIAMgCSAIazYCyAEgAyAHIAprNgLEASADIAYgAms2AsABIAUgAyAMEAYgAygCSCECIAMoAhghDiADKAJEIQYgAygCFCEPIAMoAkAhCiADKAIQIRAgAygCPCEHIAMoAgwhFCADKAI4IQggAygCCCERIAMoAjQhCSADKAIEIRIgAygCVCELIAMoAiQhEyADKAIwIQ0gAygCACEVIAMoAkwhFyADKAIcIRggAyADKAIgIAMoAlAiGWsiGzYCICADIBggF2siGDYCHCADIBUgDWsiFTYCACADIBMgC2siEzYCJCADIBIgCWsiEjYCBCADIBEgCGsiETYCCCADIBQgB2siFDYCDCADIBAgCmsiEDYCECADIA8gBmsiDzYCFCADIA4gAmsiDjYCGCAEIAQQBCADQZABaiIcIBwQBCADIBkgG6xCwrYHfiAYrELCtgd+IkBCgICACHwiQkIZh3wiQSBBQoCAgBB8IkFCgICA4A+DfadqNgJQIAMgAiAOrELCtgd+IA+sQsK2B34iRkKAgIAIfCJHQhmHfCJDIENCgICAEHwiQ0KAgIDgD4N9p2o2AkggAyAKIBCsQsK2B34gFKxCwrYHfiJIQoCAgAh8IklCGYd8IkQgREKAgIAQfCJEQoCAgOAPg32najYCQCADIAggEaxCwrYHfiASrELCtgd+IkpCgICACHwiS0IZh3wiRSBFQoCAgBB8IkVCgICA4A+DfadqNgI4IAMgCyATrELCtgd+IkwgQUIaiHwgTEKAgIAIfCJBQoCAgPAPg32najYCVCADIBcgQ0IaiCBAfCBCQoCAgPAPg32najYCTCADIAYgREIaiCBGfCBHQoCAgPAPg32najYCRCADIAcgRUIaiCBIfCBJQoCAgPAPg32najYCPCADIAkgSiBLQoCAgPAPg30gQUIZh0ITfiAVrELCtgd+fCJAQoCAgBB8IkJCGoh8p2o2AjQgAyANIEAgQkKAgIDgD4N9p2o2AjAgAUEBayECIBogA0GgAmogBBAGIAQgAyAMEAYgAQ0ACyADKAKQASEXIAMoAvABIQIgAygClAEhDiADKAL0ASEMIAMoApgBIQ8gAygC+AEhBiADKAKcASEQIAMoAvwBIQogAygCoAEhFCADKAKAAiEHIAMoAqQBIREgAygChAIhCCADKAKoASESIAMoAogCIQkgAygCrAEhEyADKAKMAiELIAMoArABIRUgAygCkAIhDSADQQAgFmsiASADKAKUAiIWIAMoArQBc3EgFnM2ApQCIAMgDSANIBVzIAFxczYCkAIgAyALIAsgE3MgAXFzNgKMAiADIAkgCSAScyABcXM2AogCIAMgCCAIIBFzIAFxczYChAIgAyAHIAcgFHMgAXFzNgKAAiADIAogCiAQcyABcXM2AvwBIAMgBiAGIA9zIAFxczYC+AEgAyAMIAwgDnMgAXFzNgL0ASADIAIgAiAXcyABcXM2AvABIAMoAsABIQIgAygCYCENIAMoAsQBIRYgAygCZCEXIAMoAsgBIQwgAygCaCEOIAMoAswBIQYgAygCbCEPIAMoAtABIQogAygCcCEQIAMoAtQBIQcgAygCdCEUIAMoAtgBIQggAygCeCERIAMoAtwBIQkgAygCfCESIAMoAuABIQsgAygCgAEhEyADIAMoAuQBIhUgAygChAFzIAFxIBVzNgLkASADIAsgCyATcyABcXM2AuABIAMgCSAJIBJzIAFxczYC3AEgAyAIIAggEXMgAXFzNgLYASADIAcgByAUcyABcXM2AtQBIAMgCiAKIBBzIAFxczYC0AEgAyAGIAYgD3MgAXFzNgLMASADIAwgDCAOcyABcXM2AsgB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JyAFLQADczoAJyAAIAAtACggBS0ABHM6ACggACAALQApIAUtAAVzOgApIAAgAC0AKiAFLQAGczoAKiAAIAAtACsgBS0AB3M6ACsgCRBxAkAgB0ECcUUEQCAJQQQQKEUNAQsgBSAAKQAYNwP4AiAFIAApABA3A/ACIAUgACkACDcD6AIgBSAAKQAANwPgAiAFIAApACQ3A4ADIAVB4AJqIgEgAUIoIAlBACAAQfS5AigCABEOABogACAFKQP4AjcAGCAAIAUpA/ACNwAQIAAgBSkD6AI3AAggACAFKQPgAjcAACAFKQOAAyEKIABBATYAICAAIAo3ACQLIAIEQCACIAs3AwALQQAhDSADRQ0AIAMgBzoAAAsgBUGQA2okACANDAELEAoACwvhBQECfgJ/IAStIAWtQiCGhCEKIAetIAitQiCGhCELIwBBgANrIgQkACACBEAgAkIANwMACyAKQu////8PVARAIARBEGoiCELAACAAQSBqIgcgABAmIARB0ABqIgUgCEG8uQIoAgARAQAaIAhBwAAQByAFIAYgC0HAuQIoAgARAAAaIAVB0LMCQgAgC31CD4NBwLkCKAIAEQAAGiAEQgA3AxAgBEIANwNIIARCADcDQCAEQgA3AzggBEIANwMwIARCADcDKCAEQgA3AyAgBEIANwMYIAQgCToAECAIIAhCwAAgB0EBIAAQJyAFIAhCwABBwLkCKAIAEQAAGiABIAQtABA6AAAgAUEBaiIBIAMgCiAHQQIgABAnIAUgASAKQcC5AigCABEAABogBUHQswIgCkIPg0HAuQIoAgARAAAaIAQgCzcDCCAFIARBCGoiA0IIQcC5AigCABEAABogBCAKQkB9NwMIIAUgA0IIQcC5AigCABEAABogBSABIAqnaiIBQcS5AigCABEBABogBUGAAhAHIAAgAC0AJCABLQAAczoAJCAAIAAtACUgAS0AAXM6ACUgACAALQAmIAEtAAJzOgAmIAAgAC0AJyABLQADczoAJyAAIAAtACggAS0ABHM6ACggACAALQApIAEtAAVzOgApIAAgAC0AKiABLQAGczoAKiAAIAAtACsgAS0AB3M6ACsgBxBxAkAgCUECcUUEQCAHQQQQKEUNAQsgBCAAKQAYNwPoAiAEIAApABA3A+ACIAQgACkACDcD2AIgBCAAKQAANwPQAiAEIAAp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C6dqQRBrIAYgDCAJIAoQgwEhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQgwELWQECfgJ/IAatIAetQiCGhCEMIAOtIAStQiCGhCILQvD///8PVARAIAAgACALp2pBACACIAsgBSAMIAkgChCEARogAQRAIAEgC0IQfDcDAAtBAAwBCxAKAAsLJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEIQBC1kBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQhQEaIAEEQCABIAtCEHw3AwALQQAMAQsQCgALCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxCFAQtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkHkuQIoAgARCgAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQeS5AigCABEKACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQCgALIAAgAUEgIAMgDKcgBiANpyAKIAtB4LkCKAIAEQoAC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQuD///8PWg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQeC5AigCABEKACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxAKAAsLWQECfiAHrSAIrUIghoQhC0F/IQECQCADrSAErUIghoQiDELf////D1YNACALQt////8PVg0AIAAgAiAMpyAFQSAgBiALpyAJIApB3LkCKAIAEQoAIQELIAELgAEBA34gB60gCK1CIIaEIQxBfyECAkAgBK0gBa1CIIaE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//8HSw0AIAEgA0EBdE0NAEEAIQEgAwR/A0AgACABQQF0aiIEIAEgAmotAAAiBUEPcSIGQQh0IAZB9v8DakGAsgNxakGArgFqQQh2OgABIAQgBUEEdiIEIARB9v8DakEIdkHZAXFqQdcAajoAACABQQFqIgEgA0cNAAsgA0EBdAVBAAsgAGpBADoAACAADwsQCgALCgAgACABIAIQMQsIACAAIAEQWwtaAQF/IwBBQGoiAyQAIAMgAkIgEC8aIAEgAykDGDcAGCABIAMpAxA3ABAgASADKQMINwAIIAEgAykDADcAACADQcAAEAcgACABQcy5AigCABEBACADQUBrJAALCwAgACABIAIQgQELCwAgACABIAIQigELCwAgACABIAIQiwELCQAgACABEI0BCwsAIAAgASACEI4BCwUAQcMICwQAQQwLJwEBfyMAQUBqIgMkACAAIAMQHCABIANCwAAgAkEBEF0gA0FAayQACykBAX8jAEFAaiIEJAAgACAEEBwgASACIARCwAAgA0EBEF4gBEFAayQACwgAIAAQJUEAC7sBAgJ/A34jAEHAAWsiAiQAIAJBIBAVIAEgAkIgEC8aIAEgAS0AAEH4AXE6AAAgASABLQAfQT9xQcAAcjoAHyACQSBqIgMgARBCIAAgAxBDIAEgAikDGDcAGCABIAIpAxA3ABAgASACKQMINwAIIAEgAikDADcAACAAKQAAIQQgACkACCEFIAApABAhBiABIAApABg3ADggASAGNwAwIAEgBTcAKCABIAQ3ACAgAkEgEAcgAkHAAWokAEEAC7YBAgF/A34jAEGgAWsiAyQAIAEgAkIgEC8aIAEgAS0AAEH4AXE6AAAgASABLQAfQT9xQcAAcjoAHyADIAEQQiAAIAMQQyACKQAAIQQgAikACCEFIAIpABAhBiABIAIpABg3ABggASAGNwAQIAEgBTcACCABIAQ3AAAgACkAACEEIAApAAghBSAAKQAQIQYgASAAKQAYNwA4IAEgBjcAMCABIAU3ACggASAENwAgIANBoAFqJABBAAsFAEG/fwsKACAAIAEQYEEAC20BAX8jAEFAaiICJAAgAiABQiAQLxogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAcgAkFAayQAQQALohYCFX8ofiMAQYACayIDJABBfyETAkAgARBYDQAgA0HgAGoiBCABEHkNACMAQYAQayICJAAgAkGABWoiASAEEBIgAiAEKQIgNwPgAiACIAQpAhg3A9gCIAIgBCkCEDcD0AIgAiAEKQIINwPIAiACIAQpAgA3A8ACIAIgBCkCKDcD6AIgAiAEKQIwNwPwAiACIAQpAjg3A/gCIAIgBEFAaykCADcDgAMgAiAEKQJINwOIAyACIAQpAlA3A5ADIAIgBCkCWDcDmAMgAiAEKQJgNwOgAyACIAQpAmg3A6gDIAIgBCkCcDcDsAMgAkHgA2oiBSACQcACaiIJECIgAkGgAWoiBCAFIAJB2ARqIgYQBiACQcgBaiACQYgEaiIHIAJBsARqIggQBiACQfABaiAIIAYQBiACQZgCaiAFIAcQBiAFIAQgARATIAkgBSAGEAYgAkHoAmoiCiAHIAgQBiACQZADaiILIAggBhAGIAJBuANqIgwgBSAHEAYgAkGgBmoiASAJEBIgBSAEIAEQEyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBwAdqIgEgCRASIAUgBCABEBMgCSAFIAYQBiAKIAcgCBAGIAsgCCAGEAYgDCAFIAcQBiACQeAIaiIBIAkQEiAFIAQgARATIAkgBSAGEAYgCiAHIAgQBiALIAggBhAGIAwgBSAHEAYgAkGACmoiASAJEBIgBSAEIAEQEyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBoAtqIgEgCRASIAUgBCABEBMgCSAFIAYQBiAKIAcgCBAGIAsgCCAGEAYgDCAFIAcQBiACQcAMaiIBIAkQEiAFIAQgARATIAkgBSAGEAYgCiAHIAgQBiALIAggBhAGIAwgBSAHEAYgAkHgDWogCRASIAJCADcDICACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwAgAkIANwIsIAJBATYCKCACQgA3AjQgAkIANwI8IAJCADcCRCACQoCAgIAQNwJMIAJB1ABqQQBBzAD8CwAgAkH4AGohCSACQdgPaiEPIAJBsA9qIRAgAkHQAGohDSACQShqIQ5B/AEhBANAIAIgAikDIDcDqA8gAiACKQMYNwOgDyACIAIpAxA3A5gPIAIgAikDCDcDkA8gAiACKQMANwOIDyAQIA4pAiA3AiAgECAOKQIYNwIYIBAgDikCEDcCECAQIA4pAgg3AgggECAOKQIANwIAIA8gDSkCIDcCICAPIA0pAhg3AhggDyANKQIQNwIQIA8gDSkCCDcCCCAPIA0pAgA3AgAgBCIBQZCFAmosAAAhESACQeADaiIFIAJBiA9qECICQCARQQBKBEAgAkHAAmoiBCAFIAYQBiAKIAcgCBAGIAsgCCAGEAYgDCAFIAcQBiAFIAQgAkGABWogEUH+AXFBAXZBoAFsahATDAELIBFBAE4NACACQcACaiIEIAJB4ANqIgUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAUgBCACQYAFakEAIBFrQf4BcUEBdkGgAWxqEHcLIAIgAkHgA2oiEiAGEAYgDiAHIAgQBiANIAggBhAGIAkgEiAHEAYgAUEBayEEIAENAAsgAigCKCEUIAIoAlAhFSACKAIsIRYgAigCVCEGIAIoAjAhByACKAJYIQggAigCNCEKIAIoAlwhCyACKAI4IQwgAigCYCENIAIoAjwhDiACKAJkIQ8gAigCQCEQIAIoAmghESACKAJEIQUgAigCbCEJIAIoAkghBCACKAJwIQEgAiACKAJMIAIoAnRrNgKkBSACIAQgAWs2AqAFIAIgBSAJazYCnAUgAiAQIBFrNgKYBSACIA4gD2s2ApQFIAIgDCANazYCkAUgAiAKIAtrNgKMBSACIAcgCGs2AogFIAIgFiAGazYChAUgAiAUIBVrNgKABSASIAIQGiASQSAQKCEEIBIgAkGABWoQGiASQSAQKCACQYAQaiQAIARxRQ0AQQAhEyADQQAgAygCrAEiBms2AiQgA0EAIAMoAqgBIgxrNgIgIANBACADKAKkASIHazYCHCADQQAgAygCoAEiBWs2AhggA0EAIAMoApwBIghrNgIUIANBACADKAKYASIJazYCECADQQAgAygClAEiCms2AgwgA0EAIAMoApABIgRrNgIIIANBACADKAKMASILazYCBCADQQEgAygCiAEiAWs2AgAgAyADEEQgAyADKAIEIg2sIh8gCEEBdKwiKX4gAzQCACIZIAWsIhp+fCADKAIIIg6sIiEgCawiG358IAMoAgwiD6wiIyAKQQF0rCIqfnwgAygCECIQrCIlIASsIhx+fCADKAIUIhGsIisgC0EBdKwiLH58IAMoAhgiBawiNSABQQFqrCIdfnwgAygCHCIJQRNsrCIkIAZBAXSsIi1+fCADKAIgIgRBE2ysIiIgDKwiHn58IAMoAiQiAUETbKwiICAHQQF0rCIufnwgGyAffiAZIAisIi9+fCAhIAqsIjB+fCAcICN+fCAlIAusIjF+fCAdICt+fCAFQRNsrCImIAasIjJ+fCAeICR+fCAiIAesIjN+fCAaICB+fCAfICp+IBkgG358IBwgIX58ICMgLH58IB0gJX58IBFBE2ysIjQgLX58IB4gJn58ICQgLn58IBogIn58ICAgKX58IjdCgICAEHwiOEIah3wiOUKAgIAIfCI6QhmHfCIXIBdCgICAEHwiJ0KAgIDgD4N9PgJIIAMgHyAsfiAZIBx+fCAdICF+fCAPQRNsrCIYIC1+fCAQQRNsrCIoIB5+fCAuIDR+fCAaICZ+fCAkICl+fCAbICJ+fCAgICp+fCAdIB9+IBkgMX58IA5BE2ysIhcgMn58IBggHn58ICggM358IBogNH58ICYgL358IBsgJH58ICIgMH58IBwgIH58IA1BE2ysIC1+IBkgHX58IBcgHn58IBggLn58IBogKH58ICkgNH58IBsgJn58ICQgKn58IBwgIn58ICAgLH58IjtCgICAEHwiPEIah3wiPUKAgIAIfCI+QhmHfCIXIBdCgICAEHwiGEKAgIDgD4N9PgI4IAMgGiAffiAZIDN+fCAhIC9+fCAbICN+fCAlIDB+fCAcICt+fCAxIDV+fCAJrCI2IB1+fCAiIDJ+fCAeICB+fCAnQhqHfCIXIBdCgICACHwiJ0KAgIDwD4N9PgJMIAMgHCAffiAZIDB+fCAhIDF+fCAdICN+fCAoIDJ+fCAeIDR+fCAmIDN+fCAaICR+fCAiIC9+fCAbICB+fCAYQhqHfCIXIBdCgICACHwiGEKAgIDwD4N9PgI8IAMgHyAufiAZIB5+fCAaICF+fCAjICl+fCAbICV+fCAqICt+fCAcIDV+fCAsIDZ+fCAErCIoIB1+fCAgIC1+fCAnQhmHfCIXIBdCgICAEHwiJ0KAgIDgD4N9PgJQIAMgOSA6QoCAgPAPg30gNyA4QoCAgGCDfSAYQhmHfCIYQoCAgBB8IhdCGoh8PgJEIAMgGCAXQoCAgOAPg30+AkAgAyAeIB9+IBkgMn58ICEgM358IBogI358ICUgL358IBsgK358IDAgNX58IBwgNn58ICggMX58IAGsIB1+fCAnQhqHfCIXIBdCgICACHwiF0KAgIDwD4N9PgJUIAMgPSA+QoCAgPAPg30gOyA8QoCAgGCDfSAXQhmHQhN+fCIYQoCAgBB8IhdCGoh8PgI0IAMgGCAXQoCAgOAPg30+AjAgACADQTBqEBoLIANBgAJqJAAgEwsLACAAIAEgAhCGAQsEAEEECwQAQRoLBQBBrwoLDAAgACABIAIQYkEACxIAIAAgASACQZS6AigCABEEAAsSACAAIAEgAkGQugIoAgARBAALEgAgACABIAJBjLoCKAIAEQQACxQAIAAgASACIANBiLoCKAIAEQsACxIAIAAgASACQYS6AigCABEEAAsUACAAIAEgAiADQYC6AigCABELAAsSACAAIAEgAkH8uQIoAgARBAALtAEBAX8gACABKAAAQf///x9xNgIAIAAgASgAA0ECdkGD/v8fcTYCBCAAIAEoAAZBBHZB/4H/H3E2AgggACABKAAJQQZ2Qf//wB9xNgIMIAEoAAwhAiAAQgA3AhQgAEIANwIcIABBADYCJCAAIAJBCHZB//8/cTYCECAAIAEoABA2AiggACABKAAUNgIsIAAgASgAGDYCMCABKAAcIQEgAEEAOgBQIABCADcDOCAAIAE2AjRBAAvFKAELfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBB1MACKAIAIgRBECAAQQtqQfgDcSAAQQtJGyIGQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiA0EDdCIBQfzAAmoiACABKAKEwQIiAigCCCIFRgRAQdTAAiAEQX4gA3dxNgIADAELIAUgADYCDCAAIAU2AggLIAJBCGohACACIAFBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkHcwAIoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgNBA3QiAUH8wAJqIgIgASgChMECIgAoAggiBUYEQEHUwAIgBEF+IAN3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgASAGayIFQQFyNgIEIAAgAWogBTYCACAIBEAgCEF4cUH8wAJqIQFB6MACKAIAIQIC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QZAIaiEUIANBgAhqIRUgA0GgCGohFkEAIQdBACEIA0AgAyADKAKMByACczYCrAUgAyANQf8BcSATQRh0IhcgD0H/AXFBEHRyIA5B/wFxQQh0cnIiBCADKAKIB3M2AqgFIAMgCkH/AXEgEkEYdCIYIAxB/wFxQRB0ciALQf8BcUEIdHJyIgkgAygChAdzNgKkBSADIBFB/wFxIAZBGHQiGSAIQf8BcUEQdHIgB0H/AXFBCHRyciIQIAMoAoAHczYCoAUgAyADKALcBSACczYCnAUgAyADKALYBSAEczYCmAUgAyADKALUBSAJczYClAUgAyADKALQBSAQczYCkAUgAyADKQOoBTcD+AQgAyADKQOgBTcD8AQgAyADKQKYBzcD6AQgAyADKQKQBzcD4AQgA0GABWoiBCADQfAEaiADQeAEahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A9AEIAMgAykDmAU3A9gEIAMgAykC4AU3A8AEIAMgAykC6AU3A8gEIAQgA0HQBGogA0HABGoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwOwBCADIAMpA6gFNwO4BCADIAMpAqAHNwOgBCADIAMpAqgHNwOoBCAEIANBsARqIANBoARqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcDkAQgAyADKQOYBTcDmAQgAyADKQLwBTcDgAQgAyADKQL4BTcDiAQgBCADQZAEaiADQYAEahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A/ADIAMgAykDqAU3A/gDIAMgAykCsAc3A+ADIAMgAykCuAc3A+gDIAQgA0HwA2ogA0HgA2oQBSADIAMpAogFNwOoBSADIAMpAoAFNwOgBSADIAMpA5AFNwPQAyADIAMpA5gFNwPYAyADIAMpAoAGNwPAAyADIAMpAogGNwPIAyAEIANB0ANqIANBwANqEAUgAyADKQKIBTcDmAUgAyADKQKABTcDkAUgAyADKQOgBTcDsAMgAyADKQOoBTcDuAMgAyADKQLABzcDoAMgAyADKQLIBzcDqAMgBCADQbADaiADQaADahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A5ADIAMgAykDmAU3A5gDIAMgAykCkAY3A4ADIAMgAykCmAY3A4gDIAQgA0GQA2ogA0GAA2oQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwPwAiADIAMpA6gFNwP4AiADIAMpAtAHNwPgAiADIAMpAtgHNwPoAiAEIANB8AJqIANB4AJqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcD0AIgAyADKQOYBTcD2AIgAyADKQKgBjcDwAIgAyADKQKoBjcDyAIgBCADQdACaiADQcACahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A7ACIAMgAykDqAU3A7gCIAMgAykC4Ac3A6ACIAMgAykC6Ac3A6gCIAQgA0GwAmogA0GgAmoQBSADIAMpAogFNwOoBSADIAMpAoAFNwOgBSADIAMpA5AFNwOQAiADIAMpA5gFNwOYAiADIAMpArAGNwOAAiADIAMpArgGNwOIAiAEIANBkAJqIANBgAJqEAUgAyADKQKIBTcDmAUgAyADKQKABTcDkAUgAyADKQOgBTcD8AEgAyADKQOoBTcD+AEgAyADKQLwBzcD4AEgAyADKQL4BzcD6AEgBCADQfABaiADQeABahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A9ABIAMgAykDmAU3A9gBIAMgAykCwAY3A8ABIAMgAykCyAY3A8gBIAQgA0HQAWogA0HAAWoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwOwASADIAMpA6gFNwO4ASADIBUpAgA3A6ABIAMgFSkCCDcDqAEgBCADQbABaiADQaABahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A5ABIAMgAykDmAU3A5gBIAMgAykC0AY3A4ABIAMgAykC2AY3A4gBIAQgA0GQAWogA0GAAWoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwNwIAMgAykDqAU3A3ggAyAUKQIANwNgIAMgFCkCCDcDaCAEIANB8ABqIANB4ABqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcDUCADIAMpA5gFNwNYIAMgAykC4AY3A0AgAyADKQLoBjcDSCAEIANB0ABq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BzcD6AMgBCADQfADaiADQeADahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A9ADIAMgAykDmAU3A9gDIAMgAykCgAY3A8ADIAMgAykCiAY3A8gDIAQgA0HQA2ogA0HAA2oQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwOwAyADIAMpA6gFNwO4AyADIAMpAsAHNwOgAyADIAMpAsgHNwOoAyAEIANBsANqIANBoANqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcDkAMgAyADKQOYBTcDmAMgAyADKQKQBjcDgAMgAyADKQKYBjcDiAMgBCADQZADaiADQYADahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A/ACIAMgAykDqAU3A/gCIAMgAykC0Ac3A+ACIAMgAykC2Ac3A+gCIAQgA0HwAmogA0HgAmoQBSADIAMpAogFNwOoBSADIAMpAoAFNwOgBSADIAMpA5AFNwPQAiADIAMpA5gFNwPYAiADIAMpAqAGNwPAAiADIAMpAqgGNwPIAiAEIANB0AJqIANBwAJqEAUgAyADKQKIBTcDmAUgAyADKQKABTcDkAUgAyADKQOgBTcDsAIgAyADKQOoBTcDuAIgAyADKQLgBzcDoAIgAyADKQLoBzcDqAIgBCADQbACaiADQaACahAFIAMgAykCiAU3A6gFIAMgAykCgAU3A6AFIAMgAykDkAU3A5ACIAMgAykDmAU3A5gCIAMgAykCsAY3A4ACIAMgAykCuAY3A4gCIAQgA0GQAmogA0GAAmoQBSADIAMpAogFNwOYBSADIAMpAoAFNwOQBSADIAMpA6AFNwPwASADIAMpA6gFNwP4ASADIAMpAvAHNwPgASADIAMpAvgHNwPoASAEIANB8AFqIANB4AFqEAUgAyADKQKIBTcDqAUgAyADKQKABTcDoAUgAyADKQOQBTcD0AEgAyADKQOYBTcD2AEgAyADKQLABjcDwAEgAyADKQLIBjcDyAEgBCADQdABaiADQcABahAFIAMgAykCiAU3A5gFIAMgAykCgAU3A5AFIAMgAykDoAU3A7ABIAMgAykDqAU3A7gBIAMgFSkCADcDoAEgAyAVKQIINwOoASAEIANBsAFqIANBoAFqEAUg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AiAEIAMtAAdB2gBzOgDHAiAEIAMtAAhB2gBzOgDIAiAEIAMtAAlB2gBzOgDJAiAEIAMtAApB2gBzOgDKAiAEIAMtAAtB2gBzOgDLAiAEIAMtAAxB2gBzOgDMAiAEIAMtAA1B2gBzOgDNAiAEIAMtAA5B2gBzOgDOAiAEIAMtAA9B2gBzOgDPAiAJIARBwAJqEBELIAAgAikACDcACCAAIAIpAAA3AAAgBEHgBWogAiAEQYAEahCJASABKAAIIQIgASgADCEDIAEoAAAhBSAEIAQoAuQFIgYgASgABCAEKALUAnNzNgLUBSAEIAQoAuAFIgEgBSAEKALQAnNzNgLQBSAEIAQoAuwFIgUgAyAEKALcAnNzNgLcBSAEIAQoAugFIgMgAiAEKALYAnNzNgLYBSAEIAQpA9AFNwOwAiAEIAQpA9gFNwO4AiAEIAQpA+gCNwOoAiAEIAQpA+ACNwOgAiAEQcAFaiICIARBsAJqIARBoAJqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDkAIgBCAKNwOYAiAEIAQpA/ACNwOAAiAEIAQpA/gCNwOIAiACIARBkAJqIARBgAJqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcD8AEgBCAKNwP4ASAEIAQpA4ADNwPgASAEIAQpA4gDNwPoASACIARB8AFqIARB4AFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcD0AEgBCAKNwPYASAEIAQpA5ADNwPAASAEIAQpA5gDNwPIASACIARB0AFqIARBwAFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDsAEgBCAKNwO4ASAEIAQpAqADNwOgASAEIAQpAqgDNwOoASACIARBsAFqIARBoAFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDkAEgBCAKNwOYASAEIAQpA7ADNwOAASAEIAQpA7gDNwOIASACIARBkAFqIARBgAFqEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDcCAEIAo3A3ggBCAEKQPAAzcDYCAEIAQpA8gDNwNoIAIgBEHwAGogBEHgAGoQBSAEIAQpAsgFIgo3A9gFIAQgBCkCwAUiCzcD0AUgBCALNwNQIAQgCjcDWCAEIAQpA9ADNwNAIAQgBCkD2AM3A0ggAiAEQdAAaiAEQUBrEAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDMCAEIAo3AzggBCAEKQPgAzcDICAEIAQpA+gDNwMoIAIgBEEwaiAEQSBqEAUgBCAFIAQoAvwDczYCvAUgBCADIAQoAvgDczYCuAUgBCAGIAQoAvQDczYCtAUgBCABIAQoAvADczYCsAUgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAQgCzcDECAEIAo3AxggBCAEKQK4BTcDCCAEIAQpArAFNwMAIAIgBEEQaiAEECEgBCAEKQLIBSIKNwPYBSAEIAQpAsAFIgs3A9AFIAAgCjcAGCAAIAs3ABAgBEHwBWokAAvZDgIHfwJ+IwBBkAZrIgMkACADQdACaiIEIAIQESADIAEvAAAiAjYC0AQgAyABLwACIgY2AtQEIAMgAS8ABCIHNgLYBCADIAEvAAYiCDYC3AQgAyADKQLQBDcDwAIgAyADKQLYBDcDyAIgAyADKALAAhAINgLABCADIAMoAsQCEAg2AsQEIAMgAygCyAIQCDYCyAQgAyADKALMAhAINgLMBCADQeAEaiIFIARBsAH8CgAAIAUQViABKAAQIQQgASgAFCEFIAEoAAghCSADIAYgASgADCADKAKEBnNzNgK0BCADIAIgCSADKAKABnNzNgKwBCADIAggBSADKAKMBnNzNgK8BCADIAcgBCADKAKIBnNzNgK4BCADIAMoAsQEIAMoAvQFczYClAQgAyADKALABCADKALwBXM2ApAEIAMoAvgFIQEgAygCyAQhBCADIAMoAswEIAMoAvwFczYCnAQgAyABIARzNgKYBCADIAMpA7gENwO4AiADIAMpA7AENwOwAiADIAMpApgENwOoAiADIAMpApAENwOgAiADQaAEaiIBIANBsAJqIANBoAJqEAsgAyADKQKoBCIKNwO4BCADIAMpAqAEIgs3A7AEIAMgAygCxAQgAygC5AVzNgKUBCADIAMoAsAEIAMoAuAFczYCkAQgAyADKALMBCADKALsBXM2ApwEIAMgAygCyAQgAygC6AVzNgKYBCADIAo3A5gCIAMgCzcDkAIgAyADKQKYBDcDiAIgAyADKQKQBDcDgAIgASADQZACaiADQYACahALIAMgAykCqAQiCjcDuAQgAyADKQKgBCILNwOwBCADIAMoAsQEIAMoAtQFczYClAQgAyADKALABCADKALQBXM2ApAEIAMgAygCzAQgAygC3AVzNgKcBCADIAMoAsgEIAMoAtgFczYCmAQgAyAKNwP4ASADIAs3A/ABIAMgAykCmAQ3A+gBIAMgAykCkAQ3A+ABIAEgA0HwAWogA0HgAWoQCyADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyADKALEBCADKALEBXM2ApQEIAMgAygCwAQgAygCwAVzNgKQBCADIAMoAswEIAMoAswFczYCnAQgAyADKALIBCADKALIBXM2ApgEIAMgCjcD2AEgAyALNwPQASADIAMpApgENwPIASADIAMpApAENwPAASABIANB0AFqIANBwAFqEAsgAyADKQKoBCIKNwO4BCADIAMpAqAEIgs3A7AEIAMgAygCxAQgAygCtAVzNgKUBCADIAMoAsAEIAMoArAFczYCkAQgAyADKALMBCADKAK8BXM2ApwEIAMgAygCyAQgAygCuAVzNgKYBCADIAo3A7gBIAMgCzcDsAEgAyADKQKYBDcDqAEgAyADKQKQBDcDoAEgASADQbABaiADQaABahALIAMgAykCqAQiCjcDuAQgAyADKQKgBCILNwOwBCADIAMoAsQEIAMoAqQFczYClAQgAyADKALABCADKAKgBXM2ApAEIAMgAygCzAQgAygCrAVzNgKcBCADIAMoAsgEIAMoAqgFczYCmAQgAyAKNwOYASADIAs3A5ABIAMgAykCmAQ3A4gBIAMgAykCkAQ3A4ABIAEgA0GQAWogA0GAAWoQCyADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyADKALEBCADKAKUBXM2ApQEIAMgAygCwAQgAygCkAVzNgKQBCADIAMoAswEIAMoApwFczYCnAQgAyADKALIBCADKAKYBXM2ApgEIAMgCjcDeCADIAs3A3AgAyADKQKYBDcDaCADIAMpApAENwNgIAEgA0HwAGogA0HgAGoQCyADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyADKALEBCADKAKEBXM2ApQEIAMgAygCwAQgAygCgAVzNgKQBCADIAMoAswEIAMoAowFczYCnAQgAyADKALIBCADKAKIBXM2ApgEIAMgCjcDWCADIAs3A1AgAyADKQKYBDcDSCADIAMpApAENwNAIAEgA0HQAGogA0FAaxALIAMgAykCqAQiCjcDuAQgAyADKQKgBCILNwOwBCADIAMoAsQEIAMoAvQEczYClAQgAyADKALABCADKALwBHM2ApAEIAMgAygCzAQgAygC/ARzNgKcBCADIAMoAsgEIAMoAvgEczYCmAQgAyAKNwM4IAMgCzcDMCADIAMpApgENwMoIAMgAykCkAQ3AyAgASADQTBqIANBIGoQCyADIAggAygC7ARzNgKMBCADIAcgAygC6ARzNgKIBCADIAYgAygC5ARzNgKEBCADIAIgAygC4ARzNgKABCADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgAyALNwMQIAMgCjcDGCADIAMpAogENwMIIAMgAykCgAQ3AwAgASADQRBqIAMQVSADIAMpAqgEIgo3A7gEIAMgAykCoAQiCzcDsAQgACAKNwAIIAAgCzcAACADQZAGaiQAC8oMAgZ/An4jAEGwBGsiBCQAIARBwAJqIAMQESAAIAIpAAA3AAAgAi8ABCEDIAIvAAYhBSACLwAAIQYgASgACCEHIAEoAAwhCCABKAAAIQkgBCACLwACIgIgASgABCAEKALEAnNzNgKkBCAEIAYgCSAEKALAAnNzNgKgBCAEIAUgCCAEKALMAnNzNgKsBCAEIAMgByAEKALIAnNzNgKoBCAEIAIgBCgC1AJzNgKEBCAEIAYgBCgC0AJzNgKABCAEIAUgBCgC3AJzNgKMBCAEIAMgBCgC2AJzNgKIBCAEIAQpA6gENwO4AiAEIAQpA6AENwOwAiAEIAQpAogENwOoAiAEIAQpAoAENwOgAiAEQZAEaiIBIARBsAJqIARBoAJqEAUgBCAFIAQoAuwCczYCjAQgBCADIAQoAugCczYCiAQgBCACIAQoAuQCczYChAQgBCAGIAQoAuACczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDkAIgBCAKNwOYAiAEIAQpAogENwOIAiAEIAQpAoAENwOAAiABIARBkAJqIARBgAJqEAUgBCAFIAQoAvwCczYCjAQgBCADIAQoAvgCczYCiAQgBCACIAQoAvQCczYChAQgBCAGIAQoAvACczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcD8AEgBCAKNwP4ASAEIAQpAogENwPoASAEIAQpAoAENwPgASABIARB8AFqIARB4AFqEAUgBCAFIAQoAowDczYCjAQgBCADIAQoAogDczYCiAQgBCACIAQoAoQDczYChAQgBCAGIAQoAoADczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcD0AEgBCAKNwPYASAEIAQpAogENwPIASAEIAQpAoAENwPAASABIARB0AFqIARBwAFqEAUgBCAFIAQoApwDczYCjAQgBCADIAQoApgDczYCiAQgBCACIAQoApQDczYChAQgBCAGIAQoApADczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDsAEgBCAKNwO4ASAEIAQpAogENwOoASAEIAQpAoAENwOgASABIARBsAFqIARBoAFqEAUgBCAFIAQoAqwDczYCjAQgBCADIAQoAqgDczYCiAQgBCACIAQoAqQDczYChAQgBCAGIAQoAqADczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDkAEgBCAKNwOYASAEIAQpAogENwOIASAEIAQpAoAENwOAASABIARBkAFqIARBgAFqEAUgBCAFIAQoArwDczYCjAQgBCADIAQoArgDczYCiAQgBCACIAQoArQDczYChAQgBCAGIAQoArADczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDcCAEIAo3A3ggBCAEKQKIBDcDaCAEIAQpAoAENwNgIAEgBEHwAGogBEHgAGoQBSAEIAUgBCgCzANzNgKMBCAEIAMgBCgCyANzNgKIBCAEIAIgBCgCxANzNgKEBCAEIAYgBCgCwANzNgKABCAEIAQpApgEIgo3A6gEIAQgBCkCkAQiCzcDoAQgBCALNwNQIAQgCjcDWCAEIAQpAogENwNIIAQgBCkCgAQ3A0AgASAEQdAAaiAEQUBrEAUgBCAFIAQoAtwDczYCjAQgBCADIAQoAtgDczYCiAQgBCACIAQoAtQDczYChAQgBCAGIAQoAtADczYCgAQgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDMCAEIAo3AzggBCAEKQKIBDcDKCAEIAQpAoAENwMgIAEgBEEwaiAEQSBqEAUgBCAFIAQoAuwDczYC/AMgBCADIAQoAugDczYC+AMgBCACIAQoAuQDczYC9AMgBCAGIAQoAuADczYC8AMgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAQgCzcDECAEIAo3AxggBCAEKQL4AzcDCCAEIAQpAvADNwMAIAEgBEEQaiAEECEgBCAEKQKYBCIKNwOoBCAEIAQpApAEIgs3A6AEIAAgCjcAECAAIAs3AAggBEGwBGokAAvZBwIDfwJ+IwBBwAVrIgMkACADQcACaiIEIAIQESADQZAEaiICIARBsAH8CgAAIAIQViABKAAIIQIgASgADCEEIAEoAAAhBSADIAMoArQFIAEoAARzNgKEBCADIAUgAygCsAVzNgKABCADIAQgAygCvAVzNgKMBCADIAIgAygCuAVzNgKIBCADIAMpA6AFNwOgAiADIAMpA6gFNwOoAiADIAMpA4AENwOwAiADIAMpA4gENwO4AiADQfADaiIBIANBsAJqIANBoAJqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDkAIgAyAGNwOYAiADIAMpA5AFNwOAAiADIAMpA5gFNwOIAiABIANBkAJqIANBgAJqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcD8AEgAyAGNwP4ASADIAMpA4AFNwPgASADIAMpA4gFNwPoASABIANB8AFqIANB4AFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcD0AEgAyAGNwPYASADIAMpA/AENwPAASADIAMpA/gENwPIASABIANB0AFqIANBwAFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDsAEgAyAGNwO4ASADIAMpA+AENwOgASADIAMpA+gENwOoASABIANBsAFqIANBoAFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDkAEgAyAGNwOYASADIAMpA9AENwOAASADIAMpA9gENwOIASABIANBkAFqIANBgAFqEAsgAyADKQL4AyIGNwOIBCADIAMpAvADIgc3A4AEIAMgBzcDcCADIAY3A3ggAyADKQPABDcDYCADIAMpA8gENwNo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AL3irP9xQtb/yj4t/2ZACP9OrhD+hXVE/wBBsBMLAQEAQdATC7ABJuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQAQY8VC/zwARCFO4wBvfEk//glwwFg3DcAt0w+/8NCPQAyTKQB4aRM/0w9o/91Ph8AUZFA/3ZBDgCic9b/BoouAHzm9P8Kio8ANBrCALj0TACBjykBvvQT/3uqev9igUQAedWTAFZlHv+hZ5sAjFlD/+/lvgFDC7UAxvCJ/u5FvP/qcTz/Jf85/0Wytv6A0LMAdhp9/gMH1v/xMk3/VcvF/9OH+v8ZMGT/u9W0/hFYaQBT0Z4BBXNiAASuPP6rN27/2bUR/xS8qgCSnGb+V9au/3J6mwHpLKoAfwjvAdbs6gCvBdsAMWo9/wZC0P8Cam7/UeoT/9drwP9Dl+4AEyps/+VVcQEyRIf/EWoJADJnAf9QAagBI5ge/xCouQE4Wej/ZdL8ACn6RwDMqk//Di7v/1BN7wC91kv/EY35ACZQTP++VXUAVuSqAJzY0AHDz6T/lkJM/6/hEP+NUGIBTNvyAMaicgAu2pgAmyvx/pugaP+yCfz+ZG7UAA4FpwDp76P/HJedAWWSCv/+nkb+R/nkAFgeMgBEOqD/vxhoAYFCgf/AMlX/CLOK/yb6yQBzUKAAg+ZxAH1YkwBaRMcA/UyeABz/dgBx+v4AQksuAObaKwDleLoBlEQrAIh87gG7a8X/VDX2/zN0/v8zu6UAAhGvAEJUoAH3Oh4AI0E1/kXsvwAthvUBo3vdACBuFP80F6UAutZHAOmwYADy7zYBOVmKAFMAVP+IoGQAXI54/mh8vgC1sT7/+ilVAJiCKgFg/PYAl5c//u+FPgAgOJwALae9/46FswGDVtMAu7OW/vqqDv9EcRX/3ro7/0IH8QFFBkgAVpxs/jenWQBtNNv+DbAX/8Qsav/vlUf/pIx9/5+tAQAzKecAkT4hAIpvXQG5U0UAkHMuAGGXEP8Y5BoA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zLwm/vVzNP+/cUn+v2xF/xZF9QEXy7IAqmOqAEH4bwAlbJn/QCVFAABYPv5ZlJD/v0TgAfEnNQApy+3/kX7C/90q/f8ZY5cAYf3fAUpzMf8Gr0j/O7DLAHy3+QHk5GMAgQzP/qjAw//MsBD+mOqrAE0lVf8heIf/jsLjAR/WOgDVu33/6C48/750Kv6XshP/Mz7t/szswQDC6DwArCKd/70QuP5nA1//jekk/ikZC/8Vw6YAdvUtAEPVlf+fDBL/u6TjAaAZBQAMTsMBK8XhADCOKf7Emzz/38cSAZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQYyHAgsBAQBBsIcCCwEBAEHQhwILgSvg63p8O0G4rhZW4/rxn8Rq2gmN65wysf2GYgUWX0m4AF+clbyjUIwksdCxVZyD71sERFzEWByOhtgiTt3QnxFX7P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/AAECBAgQIECAGzYAAAAAAMZjY6X4fHyE7nd3mfZ7e43/8vIN1mtrvd5vb7GRxcVUYDAwUAIBAQPOZ2epVisrfef+/hm119diTaur5ux2dpqPyspFH4KCnYnJyUD6fX2H7/r6FbJZWeuOR0fJ+/DwC0Gtreyz1NRnX6Ki/UWvr+ojnJy/U6Sk9+RycpabwMBbdbe3wuH9/Rw9k5OuTCYmamw2Nlp+Pz9B9ff3AoPMzE9oNDRcUaWl9NHl5TT58fEI4nFxk6vY2HNiMTFTKhUVPwgEBAyVx8dSRiMjZZ3Dw14wGBgoN5aWoQoFBQ8vmpq1DgcHCSQSEjYb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\"),A((await async function(A,g,C){return async function(A,g){try{var C=await async function(A){return function(A){if(ArrayBuffer.isView(A))return A;if(A==F&&E)return new Uint8Array(E);if(I)return I(A);throw\"both async and sync fetching of the wasm failed\"}(A)}(A);return await WebAssembly.instantiate(C,g)}catch(A){M(`failed to asynchronously prepare wasm: ${A}`),Y(A)}}(g,C)}(0,F,C)).instance))}(),function(){function A(){g.calledRun=!0,U||(G=!0,i?.(g),g.onRuntimeInitialized?.(),function(){if(g.postRun)for(\"function\"==typeof g.postRun&&(g.postRun=[g.postRun]);g.postRun.length;)H(g.postRun.shift());N(K)}())}!function(){if(g.preRun)for(\"function\"==typeof g.preRun&&(g.preRun=[g.preRun]);g.preRun.length;)f(g.preRun.shift());N(a)}(),g.setStatus?(g.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>g.setStatus(\"\"),1),A()},1)):A()}(),G?g:new Promise((A,I)=>{i=A,D=I})}export default A;\n","import e from\"libsodium\";let r;const t={};if(void 0===globalThis.crypto||\"function\"!=typeof globalThis.crypto.getRandomValues)throw new Error(\"globalThis.crypto.getRandomValues is not available. The ESM build of libsodium requires a secure random source (available in all browsers and Node.js 19+).\");const a=\"function\"==typeof(_=e)?_:null!=_&&\"function\"==typeof _.default?_.default:null;var _;const n=function(e){return null!=e&&void 0!==e.ready?e:null!=e&&null!=e.default&&void 0!==e.default.ready?e.default:null}(e),s=(null!=a?a({getRandomValue:function(){var e=new Uint32Array(1);return globalThis.crypto.getRandomValues(e),e[0]>>>0}}):null!=n?n.ready.then(function(){return n}):Promise.reject(new Error(\"Unsupported libsodium ESM export shape\"))).then(function(e){r=e,t.libsodium=r,function(){if(r._sodium_init()<0)throw new Error(\"libsodium was not correctly initialized.\");for(var e=[\"crypto_aead_aegis128l_decrypt\",\"crypto_aead_aegis128l_decrypt_detached\",\"crypto_aead_aegis128l_encrypt\",\"crypto_aead_aegis128l_encrypt_detached\",\"crypto_aead_aegis128l_keygen\",\"crypto_aead_aegis256_decrypt\",\"crypto_aead_aegis256_decrypt_detached\",\"crypto_aead_aegis256_encrypt\",\"crypto_aead_aegis256_encrypt_detached\",\"crypto_aead_aegis256_keygen\",\"crypto_aead_chacha20poly1305_decrypt\",\"crypto_aead_chacha20poly1305_decrypt_detached\",\"crypto_aead_chacha20poly1305_encrypt\",\"crypto_aead_chacha20poly1305_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_decrypt\",\"crypto_aead_chacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_encrypt\",\"crypto_aead_chacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_chacha20poly1305_ietf_keygen\",\"crypto_aead_chacha20poly1305_keygen\",\"crypto_aead_xchacha20poly1305_ietf_decrypt\",\"crypto_aead_xchacha20poly1305_ietf_decrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_encrypt\",\"crypto_aead_xchacha20poly1305_ietf_encrypt_detached\",\"crypto_aead_xchacha20poly1305_ietf_keygen\",\"crypto_auth\",\"crypto_auth_hmacsha256\",\"crypto_auth_hmacsha256_final\",\"crypto_auth_hmacsha256_init\",\"crypto_auth_hmacsha256_keygen\",\"crypto_auth_hmacsha256_update\",\"crypto_auth_hmacsha256_verify\",\"crypto_auth_hmacsha512\",\"crypto_auth_hmacsha512256\",\"crypto_auth_hmacsha512256_final\",\"crypto_auth_hmacsha512256_init\",\"crypto_auth_hmacsha512256_keygen\",\"crypto_auth_hmacsha512256_update\",\"crypto_auth_hmacsha512256_verify\",\"crypto_auth_hmacsha512_final\",\"crypto_auth_hmacsha512_init\",\"crypto_auth_hmacsha512_keygen\",\"crypto_auth_hmacsha512_update\",\"crypto_auth_hmacsha512_verify\",\"crypto_auth_keygen\",\"crypto_auth_verify\",\"crypto_box_beforenm\",\"crypto_box_curve25519xchacha20poly1305_beforenm\",\"crypto_box_curve25519xchacha20poly1305_detached\",\"crypto_box_curve25519xchacha20poly1305_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_easy\",\"crypto_box_curve25519xchacha20poly1305_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_keypair\",\"crypto_box_curve25519xchacha20poly1305_open_detached\",\"crypto_box_curve25519xchacha20poly1305_open_detached_afternm\",\"crypto_box_curve25519xchacha20poly1305_open_easy\",\"crypto_box_curve25519xchacha20poly1305_open_easy_afternm\",\"crypto_box_curve25519xchacha20poly1305_seal\",\"crypto_box_curve25519xchacha20poly1305_seal_open\",\"crypto_box_curve25519xchacha20poly1305_seed_keypair\",\"crypto_box_detached\",\"crypto_box_easy\",\"crypto_box_easy_afternm\",\"crypto_box_keypair\",\"crypto_box_open_detached\",\"crypto_box_open_easy\",\"crypto_box_open_easy_afternm\",\"crypto_box_seal\",\"crypto_box_seal_open\",\"crypto_box_seed_keypair\",\"crypto_core_ed25519_add\",\"crypto_core_ed25519_from_hash\",\"crypto_core_ed25519_from_uniform\",\"crypto_core_ed25519_is_valid_point\",\"crypto_core_ed25519_random\",\"crypto_core_ed25519_scalar_add\",\"crypto_core_ed25519_scalar_complement\",\"crypto_core_ed25519_scalar_invert\",\"crypto_core_ed25519_scalar_mul\",\"crypto_core_ed25519_scalar_negate\",\"crypto_core_ed25519_scalar_random\",\"crypto_core_ed25519_scalar_reduce\",\"crypto_core_ed25519_scalar_sub\",\"crypto_core_ed25519_sub\",\"crypto_core_hchacha20\",\"crypto_core_hsalsa20\",\"crypto_core_ristretto255_add\",\"crypto_core_ristretto255_from_hash\",\"crypto_core_ristretto255_is_valid_point\",\"crypto_core_ristretto255_random\",\"crypto_core_ristretto255_scalar_add\",\"crypto_core_ristretto255_scalar_complement\",\"crypto_core_ristretto255_scalar_invert\",\"crypto_core_ristretto255_scalar_mul\",\"crypto_core_ristretto255_scalar_negate\",\"crypto_core_ristretto255_scalar_random\",\"crypto_core_ristretto255_scalar_reduce\",\"crypto_core_ristretto255_scalar_sub\",\"crypto_core_ristretto255_sub\",\"crypto_generichash\",\"crypto_generichash_blake2b_salt_personal\",\"crypto_generichash_final\",\"crypto_generichash_init\",\"crypto_generichash_keygen\",\"crypto_generichash_update\",\"crypto_hash\",\"crypto_hash_sha256\",\"crypto_hash_sha256_final\",\"crypto_hash_sha256_init\",\"crypto_hash_sha256_update\",\"crypto_hash_sha3256\",\"crypto_hash_sha3256_final\",\"crypto_hash_sha3256_init\",\"crypto_hash_sha3256_update\",\"crypto_hash_sha3512\",\"crypto_hash_sha3512_final\",\"crypto_hash_sha3512_init\",\"crypto_hash_sha3512_update\",\"crypto_hash_sha512\",\"crypto_hash_sha512_final\",\"crypto_hash_sha512_init\",\"crypto_hash_sha512_update\",\"crypto_ipcrypt_decrypt\",\"crypto_ipcrypt_encrypt\",\"crypto_ipcrypt_keygen\",\"crypto_ipcrypt_nd_decrypt\",\"crypto_ipcrypt_nd_encrypt\",\"crypto_ipcrypt_nd_keygen\",\"crypto_ipcrypt_ndx_decrypt\",\"crypto_ipcrypt_ndx_encrypt\",\"crypto_ipcrypt_ndx_keygen\",\"crypto_ipcrypt_pfx_decrypt\",\"crypto_ipcrypt_pfx_encrypt\",\"crypto_ipcrypt_pfx_keygen\",\"crypto_kdf_derive_from_key\",\"crypto_kdf_keygen\",\"crypto_kem_dec\",\"crypto_kem_enc\",\"crypto_kem_keypair\",\"crypto_kem_mlkem768_dec\",\"crypto_kem_mlkem768_enc\",\"crypto_kem_mlkem768_enc_deterministic\",\"crypto_kem_mlkem768_keypair\",\"crypto_kem_mlkem768_seed_keypair\",\"crypto_kem_primitive\",\"crypto_kem_seed_keypair\",\"crypto_kem_xwing_dec\",\"crypto_kem_xwing_enc\",\"crypto_kem_xwing_enc_deterministic\",\"crypto_kem_xwing_keypair\",\"crypto_kem_xwing_seed_keypair\",\"crypto_kx_client_session_keys\",\"crypto_kx_keypair\",\"crypto_kx_seed_keypair\",\"crypto_kx_server_session_keys\",\"crypto_onetimeauth\",\"crypto_onetimeauth_final\",\"crypto_onetimeauth_init\",\"crypto_onetimeauth_keygen\",\"crypto_onetimeauth_update\",\"crypto_onetimeauth_verify\",\"crypto_pwhash\",\"crypto_pwhash_scryptsalsa208sha256\",\"crypto_pwhash_scryptsalsa208sha256_ll\",\"crypto_pwhash_scryptsalsa208sha256_str\",\"crypto_pwhash_scryptsalsa208sha256_str_verify\",\"crypto_pwhash_str\",\"crypto_pwhash_str_needs_rehash\",\"crypto_pwhash_str_verify\",\"crypto_scalarmult\",\"crypto_scalarmult_base\",\"crypto_scalarmult_ed25519\",\"crypto_scalarmult_ed25519_base\",\"crypto_scalarmult_ed25519_base_noclamp\",\"crypto_scalarmult_ed25519_noclamp\",\"crypto_scalarmult_ristretto255\",\"crypto_scalarmult_ristretto255_base\",\"crypto_secretbox_detached\",\"crypto_secretbox_easy\",\"crypto_secretbox_keygen\",\"crypto_secretbox_open_detached\",\"crypto_secretbox_open_easy\",\"crypto_secretstream_xchacha20poly1305_init_pull\",\"crypto_secretstream_xchacha20poly1305_init_push\",\"crypto_secretstream_xchacha20poly1305_keygen\",\"crypto_secretstream_xchacha20poly1305_pull\",\"crypto_secretstream_xchacha20poly1305_push\",\"crypto_secretstream_xchacha20poly1305_rekey\",\"crypto_shorthash\",\"crypto_shorthash_keygen\",\"crypto_shorthash_siphashx24\",\"crypto_sign\",\"crypto_sign_detached\",\"crypto_sign_ed25519_pk_to_curve25519\",\"crypto_sign_ed25519_sk_to_curve25519\",\"crypto_sign_ed25519_sk_to_pk\",\"crypto_sign_ed25519_sk_to_seed\",\"crypto_sign_final_create\",\"crypto_sign_final_verify\",\"crypto_sign_init\",\"crypto_sign_keypair\",\"crypto_sign_open\",\"crypto_sign_seed_keypair\",\"crypto_sign_update\",\"crypto_sign_verify_detached\",\"crypto_stream_chacha20\",\"crypto_stream_chacha20_ietf_xor\",\"crypto_stream_chacha20_ietf_xor_ic\",\"crypto_stream_chacha20_keygen\",\"crypto_stream_chacha20_xor\",\"crypto_stream_chacha20_xor_ic\",\"crypto_stream_keygen\",\"crypto_stream_xchacha20_keygen\",\"crypto_stream_xchacha20_xor\",\"crypto_stream_xchacha20_xor_ic\",\"crypto_xof_shake128\",\"crypto_xof_shake128_init\",\"crypto_xof_shake128_init_with_domain\",\"crypto_xof_shake128_squeeze\",\"crypto_xof_shake128_update\",\"crypto_xof_shake256\",\"crypto_xof_shake256_init\",\"crypto_xof_shake256_init_with_domain\",\"crypto_xof_shake256_squeeze\",\"crypto_xof_shake256_update\",\"crypto_xof_turboshake128\",\"crypto_xof_turboshake128_init\",\"crypto_xof_turboshake128_init_with_domain\",\"crypto_xof_turboshake128_squeeze\",\"crypto_xof_turboshake128_update\",\"crypto_xof_turboshake256\",\"crypto_xof_turboshake256_init\",\"crypto_xof_turboshake256_init_with_domain\",\"crypto_xof_turboshake256_squeeze\",\"crypto_xof_turboshake256_update\",\"randombytes_buf\",\"randombytes_buf_deterministic\",\"randombytes_close\",\"randombytes_random\",\"randombytes_set_implementation\",\"randombytes_stir\",\"randombytes_uniform\",\"sodium_bin2ip\",\"sodium_ip2bin\",\"sodium_version_string\"],a=[C,R,P,X,D,G,F,V,q,H,z,W,j,J,Q,Z,$,ee,re,te,ae,_e,ne,se,ce,pe,oe,he,ye,ie,le,ue,de,ve,ge,be,fe,me,ke,xe,Ee,Te,Se,we,Ye,Be,Ke,Ae,Ie,Me,Ne,Le,Ue,Oe,Ce,Re,Pe,Xe,De,Ge,Fe,Ve,qe,He,ze,We,je,Je,Qe,Ze,$e,er,rr,tr,ar,_r,nr,sr,cr,pr,or,hr,yr,ir,lr,ur,dr,vr,gr,br,fr,mr,kr,xr,Er,Tr,Sr,wr,Yr,Br,Kr,Ar,Ir,Mr,Nr,Lr,Ur,Or,Cr,Rr,Pr,Xr,Dr,Gr,Fr,Vr,qr,Hr,zr,Wr,jr,Jr,Qr,Zr,$r,et,rt,tt,at,_t,nt,st,ct,pt,ot,ht,yt,it,lt,ut,dt,vt,gt,bt,ft,mt,kt,xt,Et,Tt,St,wt,Yt,Bt,Kt,At,It,Mt,Nt,Lt,Ut,Ot,Ct,Rt,Pt,Xt,Dt,Gt,Ft,Vt,qt,Ht,zt,Wt,jt,Jt,Qt,Zt,$t,ea,ra,ta,aa,_a,na,sa,ca,pa,oa,ha,ya,ia,la,ua,da,va,ga,ba,fa,ma,ka,xa,Ea,Ta,Sa,wa,Ya,Ba,Ka,Aa,Ia,Ma,Na,La,Ua,Oa,Ca,Ra,Pa,Xa,Da,Ga,Fa,Va,qa,Ha,za,Wa,ja,Ja,Qa,Za,$a,e_,r_,t_,a_,__,n_,s_,c_,p_,o_,h_,y_],_=0;_<a.length;_++)\"function\"==typeof r[\"_\"+e[_]]&&(t[e[_]]=a[_]);var n=[\"SODIUM_LIBRARY_VERSION_MAJOR\",\"SODIUM_LIBRARY_VERSION_MINOR\",\"crypto_aead_aegis128l_ABYTES\",\"crypto_aead_aegis128l_KEYBYTES\",\"crypto_aead_aegis128l_MESSAGEBYTES_MAX\",\"crypto_aead_aegis128l_NPUBBYTES\",\"crypto_aead_aegis128l_NSECBYTES\",\"crypto_aead_aegis256_ABYTES\",\"crypto_aead_aegis256_KEYBYTES\",\"crypto_aead_aegis256_MESSAGEBYTES_MAX\",\"crypto_aead_aegis256_NPUBBYTES\",\"crypto_aead_aegis256_NSECBYTES\",\"crypto_aead_aes256gcm_ABYTES\",\"crypto_aead_aes256gcm_KEYBYTES\",\"crypto_aead_aes256gcm_MESSAGEBYTES_MAX\",\"crypto_aead_aes256gcm_NPUBBYTES\",\"crypto_aead_aes256gcm_NSECBYTES\",\"crypto_aead_chacha20poly1305_ABYTES\",\"crypto_aead_chacha20poly1305_IETF_ABYTES\",\"crypto_aead_chacha20poly1305_IETF_KEYBYTES\",\"crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_IETF_NPUBBYTES\",\"crypto_aead_chacha20poly1305_IETF_NSECBYTES\",\"crypto_aead_chacha20poly1305_KEYBYTES\",\"crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_NPUBBYTES\",\"crypto_aead_chacha20poly1305_NSECBYTES\",\"crypto_aead_chacha20poly1305_ietf_ABYTES\",\"crypto_aead_chacha20poly1305_ietf_KEYBYTES\",\"crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX\",\"crypto_aead_chacha20poly1305_ietf_NPUBBYTES\",\"crypto_aead_chacha20poly1305_ietf_NSECBYTES\",\"crypto_aead_xchacha20poly1305_IETF_ABYTES\",\"crypto_aead_xchacha20poly1305_IETF_KEYBYTES\",\"crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX\",\"crypto_aead_xchacha20poly1305_IETF_NPUBBYTES\",\"crypto_aead_xchacha20poly1305_IETF_NSECBYTES\",\"crypto_aead_xchacha20poly1305_ietf_ABYTES\",\"crypto_aead_xchacha20poly1305_ietf_KEYBYTES\",\"crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX\",\"crypto_aead_xchacha20poly1305_ietf_NPUBBYTES\",\"crypto_aead_xchacha20poly1305_ietf_NSECBYTES\",\"crypto_auth_BYTES\",\"crypto_auth_KEYBYTES\",\"crypto_auth_hmacsha256_BYTES\",\"crypto_auth_hmacsha256_KEYBYTES\",\"crypto_auth_hmacsha512256_BYTES\",\"crypto_auth_hmacsha512256_KEYBYTES\",\"crypto_auth_hmacsha512_BYTES\",\"crypto_auth_hmacsha512_KEYBYTES\",\"crypto_box_BEFORENMBYTES\",\"crypto_box_MACBYTES\",\"crypto_box_MESSAGEBYTES_MAX\",\"crypto_box_NONCEBYTES\",\"crypto_box_PUBLICKEYBYTES\",\"crypto_box_SEALBYTES\",\"crypto_box_SECRETKEYBYTES\",\"crypto_box_SEEDBYTES\",\"crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES\",\"crypto_box_curve25519xchacha20poly1305_MACBYTES\",\"crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_box_curve25519xchacha20poly1305_NONCEBYTES\",\"crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES\",\"crypto_box_curve25519xchacha20poly1305_SEALBYTES\",\"crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES\",\"crypto_box_curve25519xchacha20poly1305_SEEDBYTES\",\"crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES\",\"crypto_box_curve25519xsalsa20poly1305_MACBYTES\",\"crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX\",\"crypto_box_curve25519xsalsa20poly1305_NONCEBYTES\",\"crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES\",\"crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES\",\"crypto_box_curve25519xsalsa20poly1305_SEEDBYTES\",\"crypto_core_ed25519_BYTES\",\"crypto_core_ed25519_HASHBYTES\",\"crypto_core_ed25519_NONREDUCEDSCALARBYTES\",\"crypto_core_ed25519_SCALARBYTES\",\"crypto_core_ed25519_UNIFORMBYTES\",\"crypto_core_hchacha20_CONSTBYTES\",\"crypto_core_hchacha20_INPUTBYTES\",\"crypto_core_hchacha20_KEYBYTES\",\"crypto_core_hchacha20_OUTPUTBYTES\",\"crypto_core_hsalsa20_CONSTBYTES\",\"crypto_core_hsalsa20_INPUTBYTES\",\"crypto_core_hsalsa20_KEYBYTES\",\"crypto_core_hsalsa20_OUTPUTBYTES\",\"crypto_core_ristretto255_BYTES\",\"crypto_core_ristretto255_HASHBYTES\",\"crypto_core_ristretto255_NONREDUCEDSCALARBYTES\",\"crypto_core_ristretto255_SCALARBYTES\",\"crypto_core_salsa2012_CONSTBYTES\",\"crypto_core_salsa2012_INPUTBYTES\",\"crypto_core_salsa2012_KEYBYTES\",\"crypto_core_salsa2012_OUTPUTBYTES\",\"crypto_core_salsa208_CONSTBYTES\",\"crypto_core_salsa208_INPUTBYTES\",\"crypto_core_salsa208_KEYBYTES\",\"crypto_core_salsa208_OUTPUTBYTES\",\"crypto_core_salsa20_CONSTBYTES\",\"crypto_core_salsa20_INPUTBYTES\",\"crypto_core_salsa20_KEYBYTES\",\"crypto_core_salsa20_OUTPUTBYTES\",\"crypto_generichash_BYTES\",\"crypto_generichash_BYTES_MAX\",\"crypto_generichash_BYTES_MIN\",\"crypto_generichash_KEYBYTES\",\"crypto_generichash_KEYBYTES_MAX\",\"crypto_generichash_KEYBYTES_MIN\",\"crypto_generichash_blake2b_BYTES\",\"crypto_generichash_blake2b_BYTES_MAX\",\"crypto_generichash_blake2b_BYTES_MIN\",\"crypto_generichash_blake2b_KEYBYTES\",\"crypto_generichash_blake2b_KEYBYTES_MAX\",\"crypto_generichash_blake2b_KEYBYTES_MIN\",\"crypto_generichash_blake2b_PERSONALBYTES\",\"crypto_generichash_blake2b_SALTBYTES\",\"crypto_hash_BYTES\",\"crypto_hash_sha256_BYTES\",\"crypto_hash_sha3256_BYTES\",\"crypto_hash_sha3512_BYTES\",\"crypto_hash_sha512_BYTES\",\"crypto_ipcrypt_BYTES\",\"crypto_ipcrypt_KEYBYTES\",\"crypto_ipcrypt_NDX_INPUTBYTES\",\"crypto_ipcrypt_NDX_KEYBYTES\",\"crypto_ipcrypt_NDX_OUTPUTBYTES\",\"crypto_ipcrypt_NDX_TWEAKBYTES\",\"crypto_ipcrypt_ND_INPUTBYTES\",\"crypto_ipcrypt_ND_KEYBYTES\",\"crypto_ipcrypt_ND_OUTPUTBYTES\",\"crypto_ipcrypt_ND_TWEAKBYTES\",\"crypto_ipcrypt_PFX_BYTES\",\"crypto_ipcrypt_PFX_KEYBYTES\",\"crypto_kdf_BYTES_MAX\",\"crypto_kdf_BYTES_MIN\",\"crypto_kdf_CONTEXTBYTES\",\"crypto_kdf_KEYBYTES\",\"crypto_kdf_blake2b_BYTES_MAX\",\"crypto_kdf_blake2b_BYTES_MIN\",\"crypto_kdf_blake2b_CONTEXTBYTES\",\"crypto_kdf_blake2b_KEYBYTES\",\"crypto_kdf_hkdf_sha256_BYTES_MAX\",\"crypto_kdf_hkdf_sha256_BYTES_MIN\",\"crypto_kdf_hkdf_sha256_KEYBYTES\",\"crypto_kdf_hkdf_sha512_BYTES_MAX\",\"crypto_kdf_hkdf_sha512_BYTES_MIN\",\"crypto_kdf_hkdf_sha512_KEYBYTES\",\"crypto_kem_CIPHERTEXTBYTES\",\"crypto_kem_PUBLICKEYBYTES\",\"crypto_kem_SECRETKEYBYTES\",\"crypto_kem_SEEDBYTES\",\"crypto_kem_SHAREDSECRETBYTES\",\"crypto_kem_mlkem768_CIPHERTEXTBYTES\",\"crypto_kem_mlkem768_PUBLICKEYBYTES\",\"crypto_kem_mlkem768_SECRETKEYBYTES\",\"crypto_kem_mlkem768_SEEDBYTES\",\"crypto_kem_mlkem768_SHAREDSECRETBYTES\",\"crypto_kem_xwing_CIPHERTEXTBYTES\",\"crypto_kem_xwing_PUBLICKEYBYTES\",\"crypto_kem_xwing_SECRETKEYBYTES\",\"crypto_kem_xwing_SEEDBYTES\",\"crypto_kem_xwing_SHAREDSECRETBYTES\",\"crypto_kx_PUBLICKEYBYTES\",\"crypto_kx_SECRETKEYBYTES\",\"crypto_kx_SEEDBYTES\",\"crypto_kx_SESSIONKEYBYTES\",\"crypto_onetimeauth_BYTES\",\"crypto_onetimeauth_KEYBYTES\",\"crypto_onetimeauth_poly1305_BYTES\",\"crypto_onetimeauth_poly1305_KEYBYTES\",\"crypto_pwhash_ALG_ARGON2I13\",\"crypto_pwhash_ALG_ARGON2ID13\",\"crypto_pwhash_ALG_DEFAULT\",\"crypto_pwhash_BYTES_MAX\",\"crypto_pwhash_BYTES_MIN\",\"crypto_pwhash_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_MEMLIMIT_MAX\",\"crypto_pwhash_MEMLIMIT_MIN\",\"crypto_pwhash_MEMLIMIT_MODERATE\",\"crypto_pwhash_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_OPSLIMIT_MAX\",\"crypto_pwhash_OPSLIMIT_MIN\",\"crypto_pwhash_OPSLIMIT_MODERATE\",\"crypto_pwhash_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_PASSWD_MAX\",\"crypto_pwhash_PASSWD_MIN\",\"crypto_pwhash_SALTBYTES\",\"crypto_pwhash_STRBYTES\",\"crypto_pwhash_argon2i_BYTES_MAX\",\"crypto_pwhash_argon2i_BYTES_MIN\",\"crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2i_MEMLIMIT_MAX\",\"crypto_pwhash_argon2i_MEMLIMIT_MIN\",\"crypto_pwhash_argon2i_MEMLIMIT_MODERATE\",\"crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2i_OPSLIMIT_MAX\",\"crypto_pwhash_argon2i_OPSLIMIT_MIN\",\"crypto_pwhash_argon2i_OPSLIMIT_MODERATE\",\"crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_argon2i_PASSWD_MAX\",\"crypto_pwhash_argon2i_PASSWD_MIN\",\"crypto_pwhash_argon2i_SALTBYTES\",\"crypto_pwhash_argon2i_STRBYTES\",\"crypto_pwhash_argon2id_BYTES_MAX\",\"crypto_pwhash_argon2id_BYTES_MIN\",\"crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2id_MEMLIMIT_MAX\",\"crypto_pwhash_argon2id_MEMLIMIT_MIN\",\"crypto_pwhash_argon2id_MEMLIMIT_MODERATE\",\"crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_argon2id_OPSLIMIT_MAX\",\"crypto_pwhash_argon2id_OPSLIMIT_MIN\",\"crypto_pwhash_argon2id_OPSLIMIT_MODERATE\",\"crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_argon2id_PASSWD_MAX\",\"crypto_pwhash_argon2id_PASSWD_MIN\",\"crypto_pwhash_argon2id_SALTBYTES\",\"crypto_pwhash_argon2id_STRBYTES\",\"crypto_pwhash_scryptsalsa208sha256_BYTES_MAX\",\"crypto_pwhash_scryptsalsa208sha256_BYTES_MIN\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN\",\"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN\",\"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE\",\"crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX\",\"crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN\",\"crypto_pwhash_scryptsalsa208sha256_SALTBYTES\",\"crypto_pwhash_scryptsalsa208sha256_STRBYTES\",\"crypto_scalarmult_BYTES\",\"crypto_scalarmult_SCALARBYTES\",\"crypto_scalarmult_curve25519_BYTES\",\"crypto_scalarmult_curve25519_SCALARBYTES\",\"crypto_scalarmult_ed25519_BYTES\",\"crypto_scalarmult_ed25519_SCALARBYTES\",\"crypto_scalarmult_ristretto255_BYTES\",\"crypto_scalarmult_ristretto255_SCALARBYTES\",\"crypto_secretbox_KEYBYTES\",\"crypto_secretbox_MACBYTES\",\"crypto_secretbox_MESSAGEBYTES_MAX\",\"crypto_secretbox_NONCEBYTES\",\"crypto_secretbox_xchacha20poly1305_KEYBYTES\",\"crypto_secretbox_xchacha20poly1305_MACBYTES\",\"crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretbox_xchacha20poly1305_NONCEBYTES\",\"crypto_secretbox_xsalsa20poly1305_KEYBYTES\",\"crypto_secretbox_xsalsa20poly1305_MACBYTES\",\"crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretbox_xsalsa20poly1305_NONCEBYTES\",\"crypto_secretstream_xchacha20poly1305_ABYTES\",\"crypto_secretstream_xchacha20poly1305_HEADERBYTES\",\"crypto_secretstream_xchacha20poly1305_KEYBYTES\",\"crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX\",\"crypto_secretstream_xchacha20poly1305_TAG_FINAL\",\"crypto_secretstream_xchacha20poly1305_TAG_MESSAGE\",\"crypto_secretstream_xchacha20poly1305_TAG_PUSH\",\"crypto_secretstream_xchacha20poly1305_TAG_REKEY\",\"crypto_shorthash_BYTES\",\"crypto_shorthash_KEYBYTES\",\"crypto_shorthash_siphash24_BYTES\",\"crypto_shorthash_siphash24_KEYBYTES\",\"crypto_shorthash_siphashx24_BYTES\",\"crypto_shorthash_siphashx24_KEYBYTES\",\"crypto_sign_BYTES\",\"crypto_sign_MESSAGEBYTES_MAX\",\"crypto_sign_PUBLICKEYBYTES\",\"crypto_sign_SECRETKEYBYTES\",\"crypto_sign_SEEDBYTES\",\"crypto_sign_ed25519_BYTES\",\"crypto_sign_ed25519_MESSAGEBYTES_MAX\",\"crypto_sign_ed25519_PUBLICKEYBYTES\",\"crypto_sign_ed25519_SECRETKEYBYTES\",\"crypto_sign_ed25519_SEEDBYTES\",\"crypto_stream_KEYBYTES\",\"crypto_stream_MESSAGEBYTES_MAX\",\"crypto_stream_NONCEBYTES\",\"crypto_stream_chacha20_IETF_KEYBYTES\",\"crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_IETF_NONCEBYTES\",\"crypto_stream_chacha20_KEYBYTES\",\"crypto_stream_chacha20_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_NONCEBYTES\",\"crypto_stream_chacha20_ietf_KEYBYTES\",\"crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX\",\"crypto_stream_chacha20_ietf_NONCEBYTES\",\"crypto_stream_salsa2012_KEYBYTES\",\"crypto_stream_salsa2012_MESSAGEBYTES_MAX\",\"crypto_stream_salsa2012_NONCEBYTES\",\"crypto_stream_salsa208_KEYBYTES\",\"crypto_stream_salsa208_MESSAGEBYTES_MAX\",\"crypto_stream_salsa208_NONCEBYTES\",\"crypto_stream_salsa20_KEYBYTES\",\"crypto_stream_salsa20_MESSAGEBYTES_MAX\",\"crypto_stream_salsa20_NONCEBYTES\",\"crypto_stream_xchacha20_KEYBYTES\",\"crypto_stream_xchacha20_MESSAGEBYTES_MAX\",\"crypto_stream_xchacha20_NONCEBYTES\",\"crypto_stream_xsalsa20_KEYBYTES\",\"crypto_stream_xsalsa20_MESSAGEBYTES_MAX\",\"crypto_stream_xsalsa20_NONCEBYTES\",\"crypto_verify_16_BYTES\",\"crypto_verify_32_BYTES\",\"crypto_verify_64_BYTES\",\"crypto_xof_shake128_BLOCKBYTES\",\"crypto_xof_shake128_STATEBYTES\",\"crypto_xof_shake256_BLOCKBYTES\",\"crypto_xof_shake256_STATEBYTES\",\"crypto_xof_turboshake128_BLOCKBYTES\",\"crypto_xof_turboshake128_STATEBYTES\",\"crypto_xof_turboshake256_BLOCKBYTES\",\"crypto_xof_turboshake256_STATEBYTES\"];for(_=0;_<n.length;_++)\"function\"==typeof(c=r[\"_\"+n[_].toLowerCase()])&&(t[n[_]]=c());var s=[\"SODIUM_VERSION_STRING\",\"crypto_kem_PRIMITIVE\",\"crypto_pwhash_STRPREFIX\",\"crypto_pwhash_argon2i_STRPREFIX\",\"crypto_pwhash_argon2id_STRPREFIX\",\"crypto_pwhash_scryptsalsa208sha256_STRPREFIX\"];for(_=0;_<s.length;_++){var c;\"function\"==typeof(c=r[\"_\"+s[_].toLowerCase()])&&(t[s[_]]=r.UTF8ToString(c()))}}();var a=new Uint8Array([98,97,108,108,115]),_=t.randombytes_buf(t.crypto_secretbox_NONCEBYTES),n=t.randombytes_buf(t.crypto_secretbox_KEYBYTES),s=t.crypto_secretbox_easy(a,_,n),c=t.crypto_secretbox_open_easy(s,_,n);if(!t.memcmp(a,c))throw new Error(\"Initialization self-test failed\")});function c(){return Object.keys(t).sort()}function p(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be incremented\");for(var r=256,t=0,a=e.length;t<a;t++)r>>=8,r+=e[t],e[t]=255&r}function o(e,r){if(!(e instanceof Uint8Array&&r instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be added\");var t=e.length,a=0,_=0;if(r.length!==e.length)throw new TypeError(\"Arguments must have the same length\");for(_=0;_<t;_++)a>>=8,a+=e[_]+r[_],e[_]=255&a}function h(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be checked\");for(var r=0,t=0,a=e.length;t<a;t++)r|=e[t];return 0===r}function y(e){if(!(e instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be wiped\");for(var r=0,t=e.length;r<t;r++)e[r]=0}function i(e,r){if(!(e instanceof Uint8Array&&r instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==r.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var t=0,a=0,_=e.length;a<_;a++)t|=e[a]^r[a];return 0===t}function l(e,r){if(!(e instanceof Uint8Array&&r instanceof Uint8Array))throw new TypeError(\"Only Uint8Array instances can be compared\");if(e.length!==r.length)throw new TypeError(\"Only instances of identical length can be compared\");for(var t=0,a=1,_=e.length;_-- >0;)t|=r[_]-e[_]>>8&a,a&=(r[_]^e[_])-1>>8;return t+t+a-1}function u(e,t){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((t|=0)<=0)throw new Error(\"block size must be > 0\");var a,_=[],n=A(4),s=1,c=0,p=0|e.length,o=new B(p+t);_.push(n),_.push(o.address);for(var h=o.address,y=o.address+p+t;h<y;h++)r.HEAPU8[h]=e[c],c+=s=1&~((65535&((p-=s)>>>48|p>>>32|p>>>16|p))-1>>16);return 0!==r._sodium_pad(n,o.address,e.length,t,o.length)&&N(_,\"internal error\"),o.length=r.getValue(n,\"i32\"),a=o.to_Uint8Array(),M(_),a}function d(e,t){if(!(e instanceof Uint8Array))throw new TypeError(\"buffer must be a Uint8Array\");if((t|=0)<=0)throw new Error(\"block size must be > 0\");var a=[],_=K(e),n=A(4);return a.push(_),a.push(n),0!==r._sodium_unpad(n,_,e.length,t)&&N(a,\"unsupported/invalid padding\"),e=(e=new Uint8Array(e)).subarray(0,r.getValue(n,\"i32\")),M(a),e}function v(e){if(\"function\"==typeof TextEncoder)return(new TextEncoder).encode(e);e=unescape(encodeURIComponent(e));for(var r=new Uint8Array(e.length),t=0,a=e.length;t<a;t++)r[t]=e.charCodeAt(t);return r}function g(e){if(\"function\"==typeof TextDecoder)return new TextDecoder(\"utf-8\",{fatal:!0}).decode(e);var r=8192,t=Math.ceil(e.length/r);if(t<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,e)))}catch(e){throw new TypeError(\"The encoded data was not valid.\")}for(var a=\"\",_=0,n=0;n<t;n++){var s=Array.prototype.slice.call(e,n*r+_,(n+1)*r+_);if(0!==s.length){var c,p=s.length,o=0;do{var h=s[--p];h>=240?(o=4,c=!0):h>=224?(o=3,c=!0):h>=192?(o=2,c=!0):h<128&&(o=1,c=!0)}while(!c);for(var y=o-(s.length-p),i=0;i<y;i++)_--,s.pop();a+=g(s)}}return a}function b(e){var t,a=[],_=new B((e=O(a,e,\"input\")).length/2),n=K(e),s=A(4);return a.push(n),a.push(_.address),a.push(s),0!==r._sodium_hex2bin(_.address,_.length,n,e.length,0,0,s)&&N(a,\"invalid input\"),r.getValue(s,\"i32\")-n!==e.length&&N(a,\"incomplete input\"),t=_.to_Uint8Array(),M(a),t}function f(e){e=O(null,e,\"input\");for(var r,t,a,_=\"\",n=0;n<e.length;n++)a=87+(t=15&e[n])+(t-10>>8&-39)<<8|87+(r=e[n]>>>4)+(r-10>>8&-39),_+=String.fromCharCode(255&a)+String.fromCharCode(a>>>8);return _}var m={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function k(e){if(void 0===e)return m.URLSAFE_NO_PADDING;if(e!==m.ORIGINAL&&e!==m.ORIGINAL_NO_PADDING&&e!==m.URLSAFE&&e!==m.URLSAFE_NO_PADDING)throw new Error(\"unsupported base64 variant\");return e}function x(e,t){t=k(t);var a,_=[],n=new B(3*(e=O(_,e,\"input\")).length/4),s=K(e),c=A(4),p=A(4);return _.push(s),_.push(n.address),_.push(c),_.push(p),0!==r._sodium_base642bin(n.address,n.length,s,e.length,0,c,p,t)&&N(_,\"invalid input\"),r.getValue(p,\"i32\")-s!==e.length&&N(_,\"incomplete input\"),n.length=r.getValue(c,\"i32\"),a=n.to_Uint8Array(),M(_),a}function E(e,t){t=k(t);var a=[];e=O(a,e,\"input\");var _,n=0|Math.floor(e.length/3),s=e.length-3*n,c=4*n+(0!==s?2&t?2+(s>>>1):4:0),p=new B(c+1),o=K(e);return a.push(o),a.push(p.address),0===r._sodium_bin2base64(p.address,p.length,o,e.length,t)&&N(a,\"conversion failed\"),p.length=c,_=g(p.to_Uint8Array()),M(a),_}function T(){return[\"uint8array\",\"text\",\"hex\",\"base64\"]}function S(e,r){var t=r||\"uint8array\";if(!w(t))throw new Error(t+\" output format is not available\");if(e instanceof B){if(\"uint8array\"===t)return e.to_Uint8Array();if(\"text\"===t)return g(e.to_Uint8Array());if(\"hex\"===t)return f(e.to_Uint8Array());if(\"base64\"===t)return E(e.to_Uint8Array(),m.URLSAFE_NO_PADDING);throw new Error('What is output format \"'+t+'\"?')}if(\"object\"==typeof e){for(var a=Object.keys(e),_={},n=0;n<a.length;n++)_[a[n]]=S(e[a[n]],t);return _}if(\"string\"==typeof e)return e;throw new TypeError(\"Cannot format output\")}function w(e){for(var r=[\"uint8array\",\"text\",\"hex\",\"base64\"],t=0;t<r.length;t++)if(r[t]===e)return!0;return!1}function Y(e){if(e){if(\"string\"!=typeof e)throw new TypeError(\"When defined, the output format must be a string\");if(!w(e))throw new Error(e+\" is not a supported output format\")}}function B(e){this.length=e,this.address=A(e)}function K(e){var t=A(e.length);return r.HEAPU8.set(e,t),t}function A(e){var t=r._malloc(e);if(0===t)throw{message:\"_malloc() failed\",length:e};return t}function I(e){r._free(e)}function M(e){if(e)for(var r=0;r<e.length;r++)I(e[r])}function N(e,r){throw M(e),new Error(r)}function L(e,r){throw M(e),new TypeError(r)}function U(e,r,t){null==r&&L(e,t+\" cannot be null or undefined\")}function O(e,r,t){return U(e,r,t),r instanceof Uint8Array?r:\"string\"==typeof r?v(r):void L(e,\"unsupported input type for \"+t)}function C(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_aegis128l_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_aegis128l_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_aegis128l_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_aegis128l_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_aegis128l_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function R(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_aead_aegis128l_abytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_aegis128l_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_aegis128l_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_aegis128l_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function P(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis128l_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis128l_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_aegis128l_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_aegis128l_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function X(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis128l_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis128l_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_aegis128l_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_aegis128l_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function D(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_aegis128l_keybytes()),_=a.address;t.push(_),r._crypto_aead_aegis128l_keygen(_);var n=S(a,e);return M(t),n}function G(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_aegis256_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_aegis256_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_aegis256_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_aegis256_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_aegis256_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function F(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_aead_aegis256_abytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_aegis256_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_aegis256_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_aegis256_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function V(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis256_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis256_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_aegis256_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_aegis256_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function q(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_aegis256_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_aegis256_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_aegis256_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_aegis256_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function H(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_aegis256_keybytes()),_=a.address;t.push(_),r._crypto_aead_aegis256_keygen(_);var n=S(a,e);return M(t),n}function z(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_chacha20poly1305_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_chacha20poly1305_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_chacha20poly1305_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function W(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_box_macbytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_chacha20poly1305_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_chacha20poly1305_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_chacha20poly1305_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function j(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_chacha20poly1305_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_chacha20poly1305_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function J(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_chacha20poly1305_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_chacha20poly1305_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function Q(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_chacha20poly1305_ietf_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_chacha20poly1305_ietf_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_chacha20poly1305_ietf_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function Z(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_box_macbytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_chacha20poly1305_ietf_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function $(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_chacha20poly1305_ietf_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_chacha20poly1305_ietf_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function ee(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_chacha20poly1305_ietf_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_chacha20poly1305_ietf_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function re(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_chacha20poly1305_ietf_keybytes()),_=a.address;t.push(_),r._crypto_aead_chacha20poly1305_ietf_keygen(_);var n=S(a,e);return M(t),n}function te(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_chacha20poly1305_keybytes()),_=a.address;t.push(_),r._crypto_aead_chacha20poly1305_keygen(_);var n=S(a,e);return M(t),n}function ae(e,t,a,_,n,s){var c=[];Y(s);var p=null;null!=e&&(p=K(e=O(c,e,\"secret_nonce\")),e.length,c.push(p)),t=O(c,t,\"ciphertext\");var o,h=r._crypto_aead_xchacha20poly1305_ietf_abytes(),y=t.length;y<h&&L(c,\"ciphertext is too short\"),o=K(t),c.push(o);var i=null,l=0;null!=a&&(i=K(a=O(c,a,\"additional_data\")),l=a.length,c.push(i)),_=O(c,_,\"public_nonce\");var u,d=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==d&&L(c,\"invalid public_nonce length\"),u=K(_),c.push(u),n=O(c,n,\"key\");var v,g=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==g&&L(c,\"invalid key length\"),v=K(n),c.push(v);var b=new B(y-r._crypto_aead_xchacha20poly1305_ietf_abytes()|0),f=b.address;if(c.push(f),0===r._crypto_aead_xchacha20poly1305_ietf_decrypt(f,null,p,o,y,0,i,l,0,u,v)){var m=S(b,s);return M(c),m}N(c,\"ciphertext cannot be decrypted using that key\")}function _e(e,t,a,_,n,s,c){var p=[];Y(c);var o=null;null!=e&&(o=K(e=O(p,e,\"secret_nonce\")),e.length,p.push(o));var h=K(t=O(p,t,\"ciphertext\")),y=t.length;p.push(h),a=O(p,a,\"mac\");var i,l=0|r._crypto_box_macbytes();a.length!==l&&L(p,\"invalid mac length\"),i=K(a),p.push(i);var u=null,d=0;null!=_&&(u=K(_=O(p,_,\"additional_data\")),d=_.length,p.push(u)),n=O(p,n,\"public_nonce\");var v,g=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();n.length!==g&&L(p,\"invalid public_nonce length\"),v=K(n),p.push(v),s=O(p,s,\"key\");var b,f=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();s.length!==f&&L(p,\"invalid key length\"),b=K(s),p.push(b);var m=new B(0|y),k=m.address;if(p.push(k),0===r._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(k,o,h,y,0,i,u,d,0,v,b)){var x=S(m,c);return M(p),x}N(p,\"ciphertext cannot be decrypted using that key\")}function ne(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(o+r._crypto_aead_xchacha20poly1305_ietf_abytes()|0),b=g.address;if(c.push(b),0===r._crypto_aead_xchacha20poly1305_ietf_encrypt(b,null,p,o,0,h,y,0,i,l,d)){var f=S(g,s);return M(c),f}N(c,\"invalid usage\")}function se(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"message\")),o=e.length;c.push(p);var h=null,y=0;null!=t&&(h=K(t=O(c,t,\"additional_data\")),y=t.length,c.push(h));var i=null;null!=a&&(i=K(a=O(c,a,\"secret_nonce\")),a.length,c.push(i)),_=O(c,_,\"public_nonce\");var l,u=0|r._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==u&&L(c,\"invalid public_nonce length\"),l=K(_),c.push(l),n=O(c,n,\"key\");var d,v=0|r._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==v&&L(c,\"invalid key length\"),d=K(n),c.push(d);var g=new B(0|o),b=g.address;c.push(b);var f=new B(0|r._crypto_aead_xchacha20poly1305_ietf_abytes()),m=f.address;if(c.push(m),0===r._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(b,m,null,p,o,0,h,y,0,i,l,d)){var k=S({ciphertext:g,mac:f},s);return M(c),k}N(c,\"invalid usage\")}function ce(e){var t=[];Y(e);var a=new B(0|r._crypto_aead_xchacha20poly1305_ietf_keybytes()),_=a.address;t.push(_),r._crypto_aead_xchacha20poly1305_ietf_keygen(_);var n=S(a,e);return M(t),n}function pe(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function oe(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_hmacsha256_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_hmacsha256_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth_hmacsha256(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function he(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_auth_hmacsha256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_auth_hmacsha256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function ye(e,t){var a=[];Y(t);var _=null,n=0;null!=e&&(_=K(e=O(a,e,\"key\")),n=e.length,a.push(_));var s=new B(208).address;if(!(0|r._crypto_auth_hmacsha256_init(s,_,n))){var c=s;return M(a),c}N(a,\"invalid usage\")}function ie(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_hmacsha256_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha256_keygen(_);var n=S(a,e);return M(t),n}function le(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_auth_hmacsha256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function ue(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha256_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_hmacsha256_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_hmacsha256_verify(n,c,p,0,o));return M(_),y}function de(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_hmacsha512_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_hmacsha512_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth_hmacsha512(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ve(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_auth_hmacsha512256_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_auth_hmacsha512256_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_auth_hmacsha512256(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ge(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_auth_hmacsha512256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_auth_hmacsha512256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function be(e,t){var a=[];Y(t);var _=null,n=0;null!=e&&(_=K(e=O(a,e,\"key\")),n=e.length,a.push(_));var s=new B(416).address;if(!(0|r._crypto_auth_hmacsha512256_init(s,_,n))){var c=s;return M(a),c}N(a,\"invalid usage\")}function fe(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_hmacsha512256_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha512256_keygen(_);var n=S(a,e);return M(t),n}function me(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_auth_hmacsha512256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function ke(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha512256_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_hmacsha512256_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_hmacsha512256_verify(n,c,p,0,o));return M(_),y}function xe(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_auth_hmacsha512_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_auth_hmacsha512_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Ee(e,t){var a=[];Y(t);var _=null,n=0;null!=e&&(_=K(e=O(a,e,\"key\")),n=e.length,a.push(_));var s=new B(416).address;if(!(0|r._crypto_auth_hmacsha512_init(s,_,n))){var c=s;return M(a),c}N(a,\"invalid usage\")}function Te(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_hmacsha512_keybytes()),_=a.address;t.push(_),r._crypto_auth_hmacsha512_keygen(_);var n=S(a,e);return M(t),n}function Se(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_auth_hmacsha512_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function we(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_hmacsha512_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_hmacsha512_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_hmacsha512_verify(n,c,p,0,o));return M(_),y}function Ye(e){var t=[];Y(e);var a=new B(0|r._crypto_auth_keybytes()),_=a.address;t.push(_),r._crypto_auth_keygen(_);var n=S(a,e);return M(t),n}function Be(e,t,a){var _=[];e=O(_,e,\"tag\");var n,s=0|r._crypto_auth_bytes();e.length!==s&&L(_,\"invalid tag length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_auth_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_auth_verify(n,c,p,0,o));return M(_),y}function Ke(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s=0|r._crypto_box_publickeybytes();e.length!==s&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_box_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_box_beforenmbytes()),h=o.address;if(_.push(h),!(0|r._crypto_box_beforenm(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function Ae(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();e.length!==s&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes()),h=o.address;if(_.push(h),!(0|r._crypto_box_curve25519xchacha20poly1305_beforenm(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function Ie(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;s.push(v);var g=new B(0|r._crypto_box_curve25519xchacha20poly1305_macbytes()),b=g.address;if(s.push(b),!(0|r._crypto_box_curve25519xchacha20poly1305_detached(v,b,c,p,0,o,y,l))){var f=S({ciphertext:d,mac:g},n);return M(s),f}N(s,\"invalid usage\")}function Me(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;n.push(l);var u=new B(0|r._crypto_box_curve25519xchacha20poly1305_macbytes()),d=u.address;if(n.push(d),!(0|r._crypto_box_curve25519xchacha20poly1305_detached_afternm(l,d,s,c,0,p,h))){var v=S({ciphertext:i,mac:u},_);return M(n),v}N(n,\"invalid usage\")}function Ne(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(p+r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),v=d.address;if(s.push(v),!(0|r._crypto_box_curve25519xchacha20poly1305_easy(v,c,p,0,o,y,l))){var g=S(d,n);return M(s),g}N(s,\"invalid usage\")}function Le(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c+r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_curve25519xchacha20poly1305_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ue(e){var t=[];Y(e);var a=new B(0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),s=n.address;t.push(s),r._crypto_box_curve25519xchacha20poly1305_keypair(_,s);var c=S({publicKey:a,privateKey:n,keyType:\"curve25519\"},e);return M(t),c}function Oe(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"ciphertext\")),o=e.length;c.push(p),t=O(c,t,\"mac\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_macbytes();t.length!==y&&L(c,\"invalid mac length\"),h=K(t),c.push(h),a=O(c,a,\"nonce\");var i,l=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();a.length!==l&&L(c,\"invalid nonce length\"),i=K(a),c.push(i),_=O(c,_,\"publicKey\");var u,d=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();_.length!==d&&L(c,\"invalid publicKey length\"),u=K(_),c.push(u),n=O(c,n,\"privateKey\");var v,g=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();n.length!==g&&L(c,\"invalid privateKey length\"),v=K(n),c.push(v);var b=new B(0|o),f=b.address;if(c.push(f),!(0|r._crypto_box_curve25519xchacha20poly1305_open_detached(f,p,h,o,0,i,u,v))){var m=S(b,s);return M(c),m}N(c,\"incorrect key pair for the given ciphertext\")}function Ce(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"ciphertext\")),p=e.length;s.push(c),t=O(s,t,\"mac\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_macbytes();t.length!==h&&L(s,\"invalid mac length\"),o=K(t),s.push(o),a=O(s,a,\"nonce\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();a.length!==i&&L(s,\"invalid nonce length\"),y=K(a),s.push(y),_=O(s,_,\"sharedKey\");var l,u=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();_.length!==u&&L(s,\"invalid sharedKey length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;if(s.push(v),!(0|r._crypto_box_curve25519xchacha20poly1305_open_detached_afternm(v,c,o,p,0,y,l))){var g=S(d,n);return M(s),g}N(s,\"incorrect secret key for the given ciphertext\")}function Re(e,t,a,_,n){var s=[];Y(n),e=O(s,e,\"ciphertext\");var c,p=r._crypto_box_curve25519xchacha20poly1305_macbytes(),o=e.length;o<p&&L(s,\"ciphertext is too short\"),c=K(e),s.push(c),t=O(s,t,\"nonce\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==y&&L(s,\"invalid nonce length\"),h=K(t),s.push(h),a=O(s,a,\"publicKey\");var i,l=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==l&&L(s,\"invalid publicKey length\"),i=K(a),s.push(i),_=O(s,_,\"privateKey\");var u,d=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==d&&L(s,\"invalid privateKey length\"),u=K(_),s.push(u);var v=new B(o-r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),g=v.address;if(s.push(g),!(0|r._crypto_box_curve25519xchacha20poly1305_open_easy(g,c,o,0,h,i,u))){var b=S(v,n);return M(s),b}N(s,\"incorrect key pair for the given ciphertext\")}function Pe(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"ciphertext\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_curve25519xchacha20poly1305_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c-r._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_curve25519xchacha20poly1305_open_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"incorrect secret key for the given ciphertext\")}function Xe(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"publicKey\");var c,p=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==p&&L(_,\"invalid publicKey length\"),c=K(t),_.push(c);var o=new B(s+r._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),h=o.address;_.push(h),r._crypto_box_curve25519xchacha20poly1305_seal(h,n,s,0,c);var y=S(o,a);return M(_),y}function De(e,t,a,_){var n=[];Y(_),e=O(n,e,\"ciphertext\");var s,c=r._crypto_box_curve25519xchacha20poly1305_sealbytes(),p=e.length;p<c&&L(n,\"ciphertext is too short\"),s=K(e),n.push(s),t=O(n,t,\"publicKey\");var o,h=0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==h&&L(n,\"invalid publicKey length\"),o=K(t),n.push(o),a=O(n,a,\"secretKey\");var y,i=0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes();a.length!==i&&L(n,\"invalid secretKey length\"),y=K(a),n.push(y);var l=new B(p-r._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),u=l.address;n.push(u),r._crypto_box_curve25519xchacha20poly1305_seal_open(u,s,p,0,o,y);var d=S(l,_);return M(n),d}function Ge(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_box_curve25519xchacha20poly1305_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_box_curve25519xchacha20poly1305_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_box_curve25519xchacha20poly1305_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"x25519\"};return M(a),h}N(a,\"invalid usage\")}function Fe(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;s.push(v);var g=new B(0|r._crypto_box_macbytes()),b=g.address;if(s.push(b),!(0|r._crypto_box_detached(v,b,c,p,0,o,y,l))){var f=S({ciphertext:d,mac:g},n);return M(s),f}N(s,\"invalid usage\")}function Ve(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_box_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),a=O(s,a,\"publicKey\");var y,i=0|r._crypto_box_publickeybytes();a.length!==i&&L(s,\"invalid publicKey length\"),y=K(a),s.push(y),_=O(s,_,\"privateKey\");var l,u=0|r._crypto_box_secretkeybytes();_.length!==u&&L(s,\"invalid privateKey length\"),l=K(_),s.push(l);var d=new B(p+r._crypto_box_macbytes()|0),v=d.address;if(s.push(v),!(0|r._crypto_box_easy(v,c,p,0,o,y,l))){var g=S(d,n);return M(s),g}N(s,\"invalid usage\")}function qe(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c+r._crypto_box_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function He(e){var t=[];Y(e);var a=new B(0|r._crypto_box_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_box_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_box_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"x25519\"};return M(t),c}N(t,\"internal error\")}function ze(e,t,a,_,n,s){var c=[];Y(s);var p=K(e=O(c,e,\"ciphertext\")),o=e.length;c.push(p),t=O(c,t,\"mac\");var h,y=0|r._crypto_box_macbytes();t.length!==y&&L(c,\"invalid mac length\"),h=K(t),c.push(h),a=O(c,a,\"nonce\");var i,l=0|r._crypto_box_noncebytes();a.length!==l&&L(c,\"invalid nonce length\"),i=K(a),c.push(i),_=O(c,_,\"publicKey\");var u,d=0|r._crypto_box_publickeybytes();_.length!==d&&L(c,\"invalid publicKey length\"),u=K(_),c.push(u),n=O(c,n,\"privateKey\");var v,g=0|r._crypto_box_secretkeybytes();n.length!==g&&L(c,\"invalid privateKey length\"),v=K(n),c.push(v);var b=new B(0|o),f=b.address;if(c.push(f),!(0|r._crypto_box_open_detached(f,p,h,o,0,i,u,v))){var m=S(b,s);return M(c),m}N(c,\"incorrect key pair for the given ciphertext\")}function We(e,t,a,_,n){var s=[];Y(n),e=O(s,e,\"ciphertext\");var c,p=r._crypto_box_macbytes(),o=e.length;o<p&&L(s,\"ciphertext is too short\"),c=K(e),s.push(c),t=O(s,t,\"nonce\");var h,y=0|r._crypto_box_noncebytes();t.length!==y&&L(s,\"invalid nonce length\"),h=K(t),s.push(h),a=O(s,a,\"publicKey\");var i,l=0|r._crypto_box_publickeybytes();a.length!==l&&L(s,\"invalid publicKey length\"),i=K(a),s.push(i),_=O(s,_,\"privateKey\");var u,d=0|r._crypto_box_secretkeybytes();_.length!==d&&L(s,\"invalid privateKey length\"),u=K(_),s.push(u);var v=new B(o-r._crypto_box_macbytes()|0),g=v.address;if(s.push(g),!(0|r._crypto_box_open_easy(g,c,o,0,h,i,u))){var b=S(v,n);return M(s),b}N(s,\"incorrect key pair for the given ciphertext\")}function je(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"ciphertext\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_box_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"sharedKey\");var h,y=0|r._crypto_box_beforenmbytes();a.length!==y&&L(n,\"invalid sharedKey length\"),h=K(a),n.push(h);var i=new B(c-r._crypto_box_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_box_open_easy_afternm(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"incorrect secret key for the given ciphertext\")}function Je(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"publicKey\");var c,p=0|r._crypto_box_publickeybytes();t.length!==p&&L(_,\"invalid publicKey length\"),c=K(t),_.push(c);var o=new B(s+r._crypto_box_sealbytes()|0),h=o.address;if(_.push(h),!(0|r._crypto_box_seal(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function Qe(e,t,a,_){var n=[];Y(_),e=O(n,e,\"ciphertext\");var s,c=r._crypto_box_sealbytes(),p=e.length;p<c&&L(n,\"ciphertext is too short\"),s=K(e),n.push(s),t=O(n,t,\"publicKey\");var o,h=0|r._crypto_box_publickeybytes();t.length!==h&&L(n,\"invalid publicKey length\"),o=K(t),n.push(o),a=O(n,a,\"privateKey\");var y,i=0|r._crypto_box_secretkeybytes();a.length!==i&&L(n,\"invalid privateKey length\"),y=K(a),n.push(y);var l=new B(p-r._crypto_box_sealbytes()|0),u=l.address;if(n.push(u),!(0|r._crypto_box_seal_open(u,s,p,0,o,y))){var d=S(l,_);return M(n),d}N(n,\"incorrect key pair for the given ciphertext\")}function Ze(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_box_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_box_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_box_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_box_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"x25519\"};return M(a),h}N(a,\"invalid usage\")}function $e(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ed25519_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ed25519_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ed25519_add(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function er(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"r\"));e.length,a.push(_);var n=new B(0|r._crypto_core_ed25519_bytes()),s=n.address;if(a.push(s),!(0|r._crypto_core_ed25519_from_hash(s,_))){var c=S(n,t);return M(a),c}N(a,\"invalid usage\")}function rr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"r\"));e.length,a.push(_);var n=new B(0|r._crypto_core_ed25519_bytes()),s=n.address;if(a.push(s),!(0|r._crypto_core_ed25519_from_uniform(s,_))){var c=S(n,t);return M(a),c}N(a,\"invalid usage\")}function tr(e,t){var a=[];Y(t),e=O(a,e,\"repr\");var _,n=0|r._crypto_core_ed25519_bytes();e.length!==n&&L(a,\"invalid repr length\"),_=K(e),a.push(_);var s=1==(0|r._crypto_core_ed25519_is_valid_point(_));return M(a),s}function ar(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ed25519_bytes()),_=a.address;t.push(_),r._crypto_core_ed25519_random(_);var n=S(a,e);return M(t),n}function _r(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ed25519_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ed25519_scalar_add(h,n,c);var y=S(o,a);return M(_),y}function nr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ed25519_scalar_complement(c,_);var p=S(s,t);return M(a),p}function sr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_core_ed25519_scalar_invert(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid reciprocate\")}function cr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ed25519_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ed25519_scalar_mul(h,n,c);var y=S(o,a);return M(_),y}function pr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ed25519_scalar_negate(c,_);var p=S(s,t);return M(a),p}function or(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ed25519_scalarbytes()),_=a.address;t.push(_),r._crypto_core_ed25519_scalar_random(_);var n=S(a,e);return M(t),n}function hr(e,t){var a=[];Y(t),e=O(a,e,\"sample\");var _,n=0|r._crypto_core_ed25519_nonreducedscalarbytes();e.length!==n&&L(a,\"invalid sample length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ed25519_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ed25519_scalar_reduce(c,_);var p=S(s,t);return M(a),p}function yr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ed25519_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ed25519_scalar_sub(h,n,c);var y=S(o,a);return M(_),y}function ir(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ed25519_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ed25519_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ed25519_sub(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function lr(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_core_hchacha20_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"privateKey\");var p,o=0|r._crypto_core_hchacha20_keybytes();t.length!==o&&L(n,\"invalid privateKey length\"),p=K(t),n.push(p);var h=null;null!=a&&(h=K(a=O(n,a,\"constant\")),a.length,n.push(h));var y=new B(0|r._crypto_core_hchacha20_outputbytes()),i=y.address;if(n.push(i),!(0|r._crypto_core_hchacha20(i,s,p,h))){var l=S(y,_);return M(n),l}N(n,\"invalid usage\")}function ur(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_core_hsalsa20_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"privateKey\");var p,o=0|r._crypto_core_hsalsa20_keybytes();t.length!==o&&L(n,\"invalid privateKey length\"),p=K(t),n.push(p);var h=null;null!=a&&(h=K(a=O(n,a,\"constant\")),a.length,n.push(h));var y=new B(0|r._crypto_core_hsalsa20_outputbytes()),i=y.address;if(n.push(i),!(0|r._crypto_core_hsalsa20(i,s,p,h))){var l=S(y,_);return M(n),l}N(n,\"invalid usage\")}function dr(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ristretto255_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ristretto255_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ristretto255_add(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function vr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"r\"));e.length,a.push(_);var n=new B(0|r._crypto_core_ristretto255_bytes()),s=n.address;if(a.push(s),!(0|r._crypto_core_ristretto255_from_hash(s,_))){var c=S(n,t);return M(a),c}N(a,\"invalid usage\")}function gr(e,t){var a=[];Y(t),e=O(a,e,\"repr\");var _,n=0|r._crypto_core_ristretto255_bytes();e.length!==n&&L(a,\"invalid repr length\"),_=K(e),a.push(_);var s=1==(0|r._crypto_core_ristretto255_is_valid_point(_));return M(a),s}function br(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ristretto255_bytes()),_=a.address;t.push(_),r._crypto_core_ristretto255_random(_);var n=S(a,e);return M(t),n}function fr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ristretto255_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ristretto255_scalar_add(h,n,c);var y=S(o,a);return M(_),y}function mr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ristretto255_scalar_complement(c,_);var p=S(s,t);return M(a),p}function kr(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_core_ristretto255_scalar_invert(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid reciprocate\")}function xr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ristretto255_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ristretto255_scalar_mul(h,n,c);var y=S(o,a);return M(_),y}function Er(e,t){var a=[];Y(t),e=O(a,e,\"s\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid s length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ristretto255_scalar_negate(c,_);var p=S(s,t);return M(a),p}function Tr(e){var t=[];Y(e);var a=new B(0|r._crypto_core_ristretto255_scalarbytes()),_=a.address;t.push(_),r._crypto_core_ristretto255_scalar_random(_);var n=S(a,e);return M(t),n}function Sr(e,t){var a=[];Y(t),e=O(a,e,\"sample\");var _,n=0|r._crypto_core_ristretto255_nonreducedscalarbytes();e.length!==n&&L(a,\"invalid sample length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_scalarbytes()),c=s.address;a.push(c),r._crypto_core_ristretto255_scalar_reduce(c,_);var p=S(s,t);return M(a),p}function wr(e,t,a){var _=[];Y(a),e=O(_,e,\"x\");var n,s=0|r._crypto_core_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid x length\"),n=K(e),_.push(n),t=O(_,t,\"y\");var c,p=0|r._crypto_core_ristretto255_scalarbytes();t.length!==p&&L(_,\"invalid y length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_scalarbytes()),h=o.address;_.push(h),r._crypto_core_ristretto255_scalar_sub(h,n,c);var y=S(o,a);return M(_),y}function Yr(e,t,a){var _=[];Y(a),e=O(_,e,\"p\");var n,s=0|r._crypto_core_ristretto255_bytes();e.length!==s&&L(_,\"invalid p length\"),n=K(e),_.push(n),t=O(_,t,\"q\");var c,p=0|r._crypto_core_ristretto255_bytes();t.length!==p&&L(_,\"invalid q length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_core_ristretto255_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_core_ristretto255_sub(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"input is an invalid element\")}function Br(e,t,a,_){var n=[];Y(_),U(n,e,\"hash_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(n,\"hash_length must be an unsigned integer\");var s=K(t=O(n,t,\"message\")),c=t.length;n.push(s);var p=null,o=0;null!=a&&(p=K(a=O(n,a,\"key\")),o=a.length,n.push(p));var h=new B(e|=0),y=h.address;if(n.push(y),!(0|r._crypto_generichash(y,e,s,c,0,p,o))){var i=S(h,_);return M(n),i}N(n,\"invalid usage\")}function Kr(e,t,a,_,n){var s=[];Y(n),U(s,e,\"subkey_len\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(s,\"subkey_len must be an unsigned integer\");var c=null,p=0;null!=t&&(c=K(t=O(s,t,\"key\")),p=t.length,s.push(c));var o=null,h=0;null!=a&&(a=O(s,a,\"id\"),h=0|r._crypto_generichash_blake2b_saltbytes(),a.length!==h&&L(s,\"invalid id length\"),o=K(a),s.push(o));var y=null,i=0;null!=_&&(_=O(s,_,\"ctx\"),i=0|r._crypto_generichash_blake2b_personalbytes(),_.length!==i&&L(s,\"invalid ctx length\"),y=K(_),s.push(y));var l=new B(0|e),u=l.address;if(s.push(u),!(0|r._crypto_generichash_blake2b_salt_personal(u,e,null,0,0,c,p,o,y))){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Ar(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"hash_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"hash_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_generichash_final(e,s,t))){var c=(r._free(e),S(n,a));return M(_),c}N(_,\"invalid usage\")}function Ir(e,t,a){var _=[];Y(a);var n=null,s=0;null!=e&&(n=K(e=O(_,e,\"key\")),s=e.length,_.push(n)),U(_,t,\"hash_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"hash_length must be an unsigned integer\");var c=new B(357).address;if(!(0|r._crypto_generichash_init(c,n,s,t))){var p=c;return M(_),p}N(_,\"invalid usage\")}function Mr(e){var t=[];Y(e);var a=new B(0|r._crypto_generichash_keybytes()),_=a.address;t.push(_),r._crypto_generichash_keygen(_);var n=S(a,e);return M(t),n}function Nr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_generichash_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Lr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash(c,_,n,0))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Ur(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha256_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha256(c,_,n,0))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Or(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Cr(e){var t=[];Y(e);var a=new B(104).address;if(!(0|r._crypto_hash_sha256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Rr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Pr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha3256_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha3256(c,_,n))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Xr(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha3256_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha3256_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Dr(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_hash_sha3256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Gr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha3256_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Fr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha3512_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha3512(c,_,n))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Vr(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha3512_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha3512_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function qr(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_hash_sha3512_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Hr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha3512_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function zr(e,t){var a=[];Y(t);var _=K(e=O(a,e,\"message\")),n=e.length;a.push(_);var s=new B(0|r._crypto_hash_sha512_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_hash_sha512(c,_,n,0))){var p=S(s,t);return M(a),p}N(a,\"invalid usage\")}function Wr(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_hash_sha512_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_hash_sha512_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function jr(e){var t=[];Y(e);var a=new B(208).address;if(!(0|r._crypto_hash_sha512_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Jr(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_hash_sha512_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Qr(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_decrypt(h,n,c);var y=S(o,a);return M(_),y}function Zr(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_encrypt(h,n,c);var y=S(o,a);return M(_),y}function $r(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_keygen(_);var n=S(a,e);return M(t),n}function et(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_nd_outputbytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_nd_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_nd_inputbytes()),h=o.address;_.push(h),r._crypto_ipcrypt_nd_decrypt(h,n,c);var y=S(o,a);return M(_),y}function rt(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_ipcrypt_nd_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"tweak\");var p,o=0|r._crypto_ipcrypt_nd_tweakbytes();t.length!==o&&L(n,\"invalid tweak length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_ipcrypt_nd_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_ipcrypt_nd_outputbytes()),l=i.address;n.push(l),r._crypto_ipcrypt_nd_encrypt(l,s,p,h);var u=S(i,_);return M(n),u}function tt(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_nd_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_nd_keygen(_);var n=S(a,e);return M(t),n}function at(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_ndx_outputbytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_ndx_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_ndx_inputbytes()),h=o.address;_.push(h),r._crypto_ipcrypt_ndx_decrypt(h,n,c);var y=S(o,a);return M(_),y}function _t(e,t,a,_){var n=[];Y(_),e=O(n,e,\"input\");var s,c=0|r._crypto_ipcrypt_ndx_inputbytes();e.length!==c&&L(n,\"invalid input length\"),s=K(e),n.push(s),t=O(n,t,\"tweak\");var p,o=0|r._crypto_ipcrypt_ndx_tweakbytes();t.length!==o&&L(n,\"invalid tweak length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_ipcrypt_ndx_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_ipcrypt_ndx_outputbytes()),l=i.address;n.push(l),r._crypto_ipcrypt_ndx_encrypt(l,s,p,h);var u=S(i,_);return M(n),u}function nt(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_ndx_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_ndx_keygen(_);var n=S(a,e);return M(t),n}function st(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_pfx_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_pfx_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_pfx_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_pfx_decrypt(h,n,c);var y=S(o,a);return M(_),y}function ct(e,t,a){var _=[];Y(a),e=O(_,e,\"input\");var n,s=0|r._crypto_ipcrypt_pfx_bytes();e.length!==s&&L(_,\"invalid input length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_ipcrypt_pfx_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_ipcrypt_pfx_bytes()),h=o.address;_.push(h),r._crypto_ipcrypt_pfx_encrypt(h,n,c);var y=S(o,a);return M(_),y}function pt(e){var t=[];Y(e);var a=new B(0|r._crypto_ipcrypt_pfx_keybytes()),_=a.address;t.push(_),r._crypto_ipcrypt_pfx_keygen(_);var n=S(a,e);return M(t),n}function ot(e,t,a,_,n){var s=[];Y(n),U(s,e,\"subkey_len\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(s,\"subkey_len must be an unsigned integer\"),U(s,t,\"subkey_id\");var c,p=0;if(\"bigint\"==typeof t&&t>=BigInt(0)){const e=t>>BigInt(32);e>BigInt(4294967295)&&L(s,\"subkey_id cannot be more than 64 bits\"),p=Number(e),c=Number(t&BigInt(4294967295))}else\"number\"==typeof t&&(0|t)===t&&t>=0?c=t:L(s,\"subkey_id must be an unsigned integer or bigint\");\"string\"!=typeof a&&L(s,\"ctx must be a string\"),(a=v(a+\"\\0\")).length-1!==r._crypto_kdf_contextbytes()&&L(s,\"invalid ctx length\");var o=K(a);a.length,s.push(o),_=O(s,_,\"key\");var h,y=0|r._crypto_kdf_keybytes();_.length!==y&&L(s,\"invalid key length\"),h=K(_),s.push(h);var i=new B(0|e),l=i.address;s.push(l),r._crypto_kdf_derive_from_key(l,e,c,p,o,h);var u=S(i,n);return M(s),u}function ht(e){var t=[];Y(e);var a=new B(0|r._crypto_kdf_keybytes()),_=a.address;t.push(_),r._crypto_kdf_keygen(_);var n=S(a,e);return M(t),n}function yt(e,t,a){var _=[];Y(a),e=O(_,e,\"ciphertext\");var n,s=0|r._crypto_kem_ciphertextbytes();e.length!==s&&L(_,\"invalid ciphertext length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_kem_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_kem_sharedsecretbytes()),h=o.address;if(_.push(h),!(0|r._crypto_kem_dec(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function it(e,t){var a=[];Y(t),e=O(a,e,\"publicKey\");var _,n=0|r._crypto_kem_publickeybytes();e.length!==n&&L(a,\"invalid publicKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_ciphertextbytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_sharedsecretbytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_enc(c,o,_))){var h=S({ciphertext:s,sharedSecret:p},t);return M(a),h}N(a,\"invalid usage\")}function lt(e){var t=[];Y(e);var a=new B(0|r._crypto_kem_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kem_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kem_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"xwing\"};return M(t),c}N(t,\"internal error\")}function ut(e,t,a){var _=[];Y(a),e=O(_,e,\"ciphertext\");var n,s=0|r._crypto_kem_mlkem768_ciphertextbytes();e.length!==s&&L(_,\"invalid ciphertext length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_kem_mlkem768_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_kem_mlkem768_sharedsecretbytes()),h=o.address;if(_.push(h),!(0|r._crypto_kem_mlkem768_dec(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function dt(e,t){var a=[];Y(t),e=O(a,e,\"publicKey\");var _,n=0|r._crypto_kem_mlkem768_publickeybytes();e.length!==n&&L(a,\"invalid publicKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_mlkem768_ciphertextbytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_mlkem768_sharedsecretbytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_mlkem768_enc(c,o,_))){var h=S({ciphertext:s,sharedSecret:p},t);return M(a),h}N(a,\"invalid usage\")}function vt(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s,c=0|r._crypto_kem_mlkem768_publickeybytes();e.length!==c&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),32!==(t=O(_,t,\"seed\")).length&&L(_,\"invalid seed length\"),s=K(t),_.push(s);var p=new B(0|r._crypto_kem_mlkem768_ciphertextbytes()),o=p.address;_.push(o);var h=new B(0|r._crypto_kem_mlkem768_sharedsecretbytes()),y=h.address;if(_.push(y),!(0|r._crypto_kem_mlkem768_enc_deterministic(o,y,n,s))){var i=S({ciphertext:p,sharedSecret:h},a);return M(_),i}N(_,\"invalid usage\")}function gt(e){var t=[];Y(e);var a=new B(0|r._crypto_kem_mlkem768_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kem_mlkem768_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kem_mlkem768_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"ml-kem-768\"};return M(t),c}N(t,\"internal error\")}function bt(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kem_mlkem768_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_mlkem768_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_mlkem768_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_mlkem768_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"ml-kem-768\"};return M(a),h}N(a,\"invalid usage\")}function ft(){var e=r._crypto_kem_primitive(),t=r.UTF8ToString(e);return M([]),t}function mt(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kem_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"xwing\"};return M(a),h}N(a,\"invalid usage\")}function kt(e,t,a){var _=[];Y(a),e=O(_,e,\"ciphertext\");var n,s=0|r._crypto_kem_xwing_ciphertextbytes();e.length!==s&&L(_,\"invalid ciphertext length\"),n=K(e),_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_kem_xwing_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_kem_xwing_sharedsecretbytes()),h=o.address;if(_.push(h),!(0|r._crypto_kem_xwing_dec(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function xt(e,t){var a=[];Y(t),e=O(a,e,\"publicKey\");var _,n=0|r._crypto_kem_xwing_publickeybytes();e.length!==n&&L(a,\"invalid publicKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_xwing_ciphertextbytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_xwing_sharedsecretbytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_xwing_enc(c,o,_))){var h=S({ciphertext:s,sharedSecret:p},t);return M(a),h}N(a,\"invalid usage\")}function Et(e,t,a){var _=[];Y(a),e=O(_,e,\"publicKey\");var n,s,c=0|r._crypto_kem_xwing_publickeybytes();e.length!==c&&L(_,\"invalid publicKey length\"),n=K(e),_.push(n),64!==(t=O(_,t,\"seed\")).length&&L(_,\"invalid seed length\"),s=K(t),_.push(s);var p=new B(0|r._crypto_kem_xwing_ciphertextbytes()),o=p.address;_.push(o);var h=new B(0|r._crypto_kem_xwing_sharedsecretbytes()),y=h.address;if(_.push(y),!(0|r._crypto_kem_xwing_enc_deterministic(o,y,n,s))){var i=S({ciphertext:p,sharedSecret:h},a);return M(_),i}N(_,\"invalid usage\")}function Tt(e){var t=[];Y(e);var a=new B(0|r._crypto_kem_xwing_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kem_xwing_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kem_xwing_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"xwing\"};return M(t),c}N(t,\"internal error\")}function St(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kem_xwing_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kem_xwing_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kem_xwing_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kem_xwing_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"xwing\"};return M(a),h}N(a,\"invalid usage\")}function wt(e,t,a,_){var n=[];Y(_),e=O(n,e,\"clientPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&L(n,\"invalid clientPublicKey length\"),s=K(e),n.push(s),t=O(n,t,\"clientSecretKey\");var p,o=0|r._crypto_kx_secretkeybytes();t.length!==o&&L(n,\"invalid clientSecretKey length\"),p=K(t),n.push(p),a=O(n,a,\"serverPublicKey\");var h,y=0|r._crypto_kx_publickeybytes();a.length!==y&&L(n,\"invalid serverPublicKey length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_kx_sessionkeybytes()),l=i.address;n.push(l);var u=new B(0|r._crypto_kx_sessionkeybytes()),d=u.address;if(n.push(d),!(0|r._crypto_kx_client_session_keys(l,d,s,p,h))){var v=S({sharedRx:i,sharedTx:u},_);return M(n),v}N(n,\"invalid usage\")}function Yt(e){var t=[];Y(e);var a=new B(0|r._crypto_kx_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_kx_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_kx_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"x25519\"};return M(t),c}N(t,\"internal error\")}function Bt(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_kx_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_kx_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_kx_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_kx_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"x25519\"};return M(a),h}N(a,\"internal error\")}function Kt(e,t,a,_){var n=[];Y(_),e=O(n,e,\"serverPublicKey\");var s,c=0|r._crypto_kx_publickeybytes();e.length!==c&&L(n,\"invalid serverPublicKey length\"),s=K(e),n.push(s),t=O(n,t,\"serverSecretKey\");var p,o=0|r._crypto_kx_secretkeybytes();t.length!==o&&L(n,\"invalid serverSecretKey length\"),p=K(t),n.push(p),a=O(n,a,\"clientPublicKey\");var h,y=0|r._crypto_kx_publickeybytes();a.length!==y&&L(n,\"invalid clientPublicKey length\"),h=K(a),n.push(h);var i=new B(0|r._crypto_kx_sessionkeybytes()),l=i.address;n.push(l);var u=new B(0|r._crypto_kx_sessionkeybytes()),d=u.address;if(n.push(d),!(0|r._crypto_kx_server_session_keys(l,d,s,p,h))){var v=S({sharedRx:i,sharedTx:u},_);return M(n),v}N(n,\"invalid usage\")}function At(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_onetimeauth_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_onetimeauth_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_onetimeauth(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function It(e,t){var a=[];Y(t),U(a,e,\"state_address\");var _=new B(0|r._crypto_onetimeauth_bytes()),n=_.address;if(a.push(n),!(0|r._crypto_onetimeauth_final(e,n))){var s=(r._free(e),S(_,t));return M(a),s}N(a,\"invalid usage\")}function Mt(e,t){var a=[];Y(t);var _=null;null!=e&&(_=K(e=O(a,e,\"key\")),e.length,a.push(_));var n=new B(144).address;if(!(0|r._crypto_onetimeauth_init(n,_))){var s=n;return M(a),s}N(a,\"invalid usage\")}function Nt(e){var t=[];Y(e);var a=new B(0|r._crypto_onetimeauth_keybytes()),_=a.address;t.push(_),r._crypto_onetimeauth_keygen(_);var n=S(a,e);return M(t),n}function Lt(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_onetimeauth_update(e,n,s)&&N(_,\"invalid usage\"),M(_)}function Ut(e,t,a){var _=[];e=O(_,e,\"hash\");var n,s=0|r._crypto_onetimeauth_bytes();e.length!==s&&L(_,\"invalid hash length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"key\");var o,h=0|r._crypto_onetimeauth_keybytes();a.length!==h&&L(_,\"invalid key length\"),o=K(a),_.push(o);var y=!(0|r._crypto_onetimeauth_verify(n,c,p,0,o));return M(_),y}function Ot(e,t,a,_,n,s,c){var p=[];Y(c),U(p,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(p,\"keyLength must be an unsigned integer\");var o=K(t=O(p,t,\"password\")),h=t.length;p.push(o),a=O(p,a,\"salt\");var y,i=0|r._crypto_pwhash_saltbytes();a.length!==i&&L(p,\"invalid salt length\"),y=K(a),p.push(y),U(p,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(p,\"opsLimit must be an unsigned integer\"),U(p,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&L(p,\"memLimit must be an unsigned integer\"),U(p,s,\"algorithm\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&L(p,\"algorithm must be an unsigned integer\");var l=new B(0|e),u=l.address;if(p.push(u),!(0|r._crypto_pwhash(u,e,0,o,h,0,y,_,0,n,s))){var d=S(l,c);return M(p),d}N(p,\"invalid usage\")}function Ct(e,t,a,_,n,s){var c=[];Y(s),U(c,e,\"keyLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(c,\"keyLength must be an unsigned integer\");var p=K(t=O(c,t,\"password\")),o=t.length;c.push(p),a=O(c,a,\"salt\");var h,y=0|r._crypto_pwhash_scryptsalsa208sha256_saltbytes();a.length!==y&&L(c,\"invalid salt length\"),h=K(a),c.push(h),U(c,_,\"opsLimit\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(c,\"opsLimit must be an unsigned integer\"),U(c,n,\"memLimit\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&L(c,\"memLimit must be an unsigned integer\");var i=new B(0|e),l=i.address;if(c.push(l),!(0|r._crypto_pwhash_scryptsalsa208sha256(l,e,0,p,o,0,h,_,0,n))){var u=S(i,s);return M(c),u}N(c,\"invalid usage\")}function Rt(e,t,a,_,n,s,c){var p=[];Y(c);var o=K(e=O(p,e,\"password\")),h=e.length;p.push(o);var y=K(t=O(p,t,\"salt\")),i=t.length;p.push(y),U(p,a,\"opsLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(p,\"opsLimit must be an unsigned integer\"),U(p,_,\"r\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(p,\"r must be an unsigned integer\"),U(p,n,\"p\"),(\"number\"!=typeof n||(0|n)!==n||n<0)&&L(p,\"p must be an unsigned integer\"),U(p,s,\"keyLength\"),(\"number\"!=typeof s||(0|s)!==s||s<0)&&L(p,\"keyLength must be an unsigned integer\");var l=new B(0|s),u=l.address;if(p.push(u),!(0|r._crypto_pwhash_scryptsalsa208sha256_ll(o,h,y,i,a,0,_,n,u,s))){var d=S(l,c);return M(p),d}N(p,\"invalid usage\")}function Pt(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"password\")),c=e.length;n.push(s),U(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(n,\"opsLimit must be an unsigned integer\"),U(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(n,\"memLimit must be an unsigned integer\");var p=new B(0|r._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(n.push(p),!(0|r._crypto_pwhash_scryptsalsa208sha256_str(p,s,c,0,t,0,a))){var o=r.UTF8ToString(p);return M(n),o}N(n,\"invalid usage\")}function Xt(e,t,a){var _=[];Y(a),\"string\"!=typeof e&&L(_,\"hashed_password must be a string\");var n=K(e=v(e+\"\\0\"));e.length,_.push(n);var s=K(t=O(_,t,\"password\")),c=t.length;_.push(s);var p=!(0|r._crypto_pwhash_scryptsalsa208sha256_str_verify(n,s,c,0));return M(_),p}function Dt(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"password\")),c=e.length;n.push(s),U(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(n,\"opsLimit must be an unsigned integer\"),U(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(n,\"memLimit must be an unsigned integer\");var p=new B(0|r._crypto_pwhash_strbytes()).address;if(n.push(p),!(0|r._crypto_pwhash_str(p,s,c,0,t,0,a))){var o=r.UTF8ToString(p);return M(n),o}N(n,\"invalid usage\")}function Gt(e,t,a,_){var n=[];Y(_),\"string\"!=typeof e&&L(n,\"hashed_password must be a string\");var s=K(e=v(e+\"\\0\"));e.length,n.push(s),U(n,t,\"opsLimit\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(n,\"opsLimit must be an unsigned integer\"),U(n,a,\"memLimit\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(n,\"memLimit must be an unsigned integer\");var c=!!(0|r._crypto_pwhash_str_needs_rehash(s,t,0,a));return M(n),c}function Ft(e,t,a){var _=[];Y(a),\"string\"!=typeof e&&L(_,\"hashed_password must be a string\");var n=K(e=v(e+\"\\0\"));e.length,_.push(n);var s=K(t=O(_,t,\"password\")),c=t.length;_.push(s);var p=!(0|r._crypto_pwhash_str_verify(n,s,c,0));return M(_),p}function Vt(e,t,a){var _=[];Y(a),e=O(_,e,\"privateKey\");var n,s=0|r._crypto_scalarmult_scalarbytes();e.length!==s&&L(_,\"invalid privateKey length\"),n=K(e),_.push(n),t=O(_,t,\"publicKey\");var c,p=0|r._crypto_scalarmult_bytes();t.length!==p&&L(_,\"invalid publicKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"weak public key\")}function qt(e,t){var a=[];Y(t),e=O(a,e,\"privateKey\");var _,n=0|r._crypto_scalarmult_scalarbytes();e.length!==n&&L(a,\"invalid privateKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_base(c,_))){var p=S(s,t);return M(a),p}N(a,\"unknown error\")}function Ht(e,t,a){var _=[];Y(a),e=O(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid n length\"),n=K(e),_.push(n),t=O(_,t,\"p\");var c,p=0|r._crypto_scalarmult_ed25519_bytes();t.length!==p&&L(_,\"invalid p length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult_ed25519(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid point or scalar is 0\")}function zt(e,t){var a=[];Y(t),e=O(a,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid scalar length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_ed25519_base(c,_))){var p=S(s,t);return M(a),p}N(a,\"scalar is 0\")}function Wt(e,t){var a=[];Y(t),e=O(a,e,\"scalar\");var _,n=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==n&&L(a,\"invalid scalar length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_ed25519_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_ed25519_base_noclamp(c,_))){var p=S(s,t);return M(a),p}N(a,\"scalar is 0\")}function jt(e,t,a){var _=[];Y(a),e=O(_,e,\"n\");var n,s=0|r._crypto_scalarmult_ed25519_scalarbytes();e.length!==s&&L(_,\"invalid n length\"),n=K(e),_.push(n),t=O(_,t,\"p\");var c,p=0|r._crypto_scalarmult_ed25519_bytes();t.length!==p&&L(_,\"invalid p length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_ed25519_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult_ed25519_noclamp(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"invalid point or scalar is 0\")}function Jt(e,t,a){var _=[];Y(a),e=O(_,e,\"scalar\");var n,s=0|r._crypto_scalarmult_ristretto255_scalarbytes();e.length!==s&&L(_,\"invalid scalar length\"),n=K(e),_.push(n),t=O(_,t,\"element\");var c,p=0|r._crypto_scalarmult_ristretto255_bytes();t.length!==p&&L(_,\"invalid element length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_scalarmult_ristretto255_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_scalarmult_ristretto255(h,n,c))){var y=S(o,a);return M(_),y}N(_,\"result is identity element\")}function Qt(e,t){var a=[];Y(t),e=O(a,e,\"scalar\");var _,n=0|r._crypto_core_ristretto255_scalarbytes();e.length!==n&&L(a,\"invalid scalar length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_core_ristretto255_bytes()),c=s.address;if(a.push(c),!(0|r._crypto_scalarmult_ristretto255_base(c,_))){var p=S(s,t);return M(a),p}N(a,\"scalar is 0\")}function Zt(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_secretbox_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_secretbox_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;n.push(l);var u=new B(0|r._crypto_secretbox_macbytes()),d=u.address;if(n.push(d),!(0|r._crypto_secretbox_detached(l,d,s,c,0,p,h))){var v=S({mac:u,cipher:i},_);return M(n),v}N(n,\"invalid usage\")}function $t(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_secretbox_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_secretbox_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(c+r._crypto_secretbox_macbytes()|0),l=i.address;if(n.push(l),!(0|r._crypto_secretbox_easy(l,s,c,0,p,h))){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function ea(e){var t=[];Y(e);var a=new B(0|r._crypto_secretbox_keybytes()),_=a.address;t.push(_),r._crypto_secretbox_keygen(_);var n=S(a,e);return M(t),n}function ra(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"ciphertext\")),p=e.length;s.push(c),t=O(s,t,\"mac\");var o,h=0|r._crypto_secretbox_macbytes();t.length!==h&&L(s,\"invalid mac length\"),o=K(t),s.push(o),a=O(s,a,\"nonce\");var y,i=0|r._crypto_secretbox_noncebytes();a.length!==i&&L(s,\"invalid nonce length\"),y=K(a),s.push(y),_=O(s,_,\"key\");var l,u=0|r._crypto_secretbox_keybytes();_.length!==u&&L(s,\"invalid key length\"),l=K(_),s.push(l);var d=new B(0|p),v=d.address;if(s.push(v),!(0|r._crypto_secretbox_open_detached(v,c,o,p,0,y,l))){var g=S(d,n);return M(s),g}N(s,\"wrong secret key for the given ciphertext\")}function ta(e,t,a,_){var n=[];Y(_),e=O(n,e,\"ciphertext\");var s,c=r._crypto_secretbox_macbytes(),p=e.length;p<c&&L(n,\"ciphertext is too short\"),s=K(e),n.push(s),t=O(n,t,\"nonce\");var o,h=0|r._crypto_secretbox_noncebytes();t.length!==h&&L(n,\"invalid nonce length\"),o=K(t),n.push(o),a=O(n,a,\"key\");var y,i=0|r._crypto_secretbox_keybytes();a.length!==i&&L(n,\"invalid key length\"),y=K(a),n.push(y);var l=new B(p-r._crypto_secretbox_macbytes()|0),u=l.address;if(n.push(u),!(0|r._crypto_secretbox_open_easy(u,s,p,0,o,y))){var d=S(l,_);return M(n),d}N(n,\"wrong secret key for the given ciphertext\")}function aa(e,t,a){var _=[];Y(a),e=O(_,e,\"header\");var n,s=0|r._crypto_secretstream_xchacha20poly1305_headerbytes();e.length!==s&&L(_,\"invalid header length\"),n=K(e),_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_secretstream_xchacha20poly1305_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(52).address;if(!(0|r._crypto_secretstream_xchacha20poly1305_init_pull(o,n,c))){var h=o;return M(_),h}N(_,\"invalid usage\")}function _a(e,t){var a=[];Y(t),e=O(a,e,\"key\");var _,n=0|r._crypto_secretstream_xchacha20poly1305_keybytes();e.length!==n&&L(a,\"invalid key length\"),_=K(e),a.push(_);var s=new B(52).address,c=new B(0|r._crypto_secretstream_xchacha20poly1305_headerbytes()),p=c.address;if(a.push(p),!(0|r._crypto_secretstream_xchacha20poly1305_init_push(s,p,_))){var o={state:s,header:S(c,t)};return M(a),o}N(a,\"invalid usage\")}function na(e){var t=[];Y(e);var a=new B(0|r._crypto_secretstream_xchacha20poly1305_keybytes()),_=a.address;t.push(_),r._crypto_secretstream_xchacha20poly1305_keygen(_);var n=S(a,e);return M(t),n}function sa(e,t,a,_){var n=[];Y(_),U(n,e,\"state_address\"),t=O(n,t,\"cipher\");var s,c=r._crypto_secretstream_xchacha20poly1305_abytes(),p=t.length;p<c&&L(n,\"cipher is too short\"),s=K(t),n.push(s);var o=null,h=0;null!=a&&(o=K(a=O(n,a,\"ad\")),h=a.length,n.push(o));var y=new B(p-r._crypto_secretstream_xchacha20poly1305_abytes()|0),i=y.address;n.push(i);var l,u=(l=A(1),n.push(l),(u=0===r._crypto_secretstream_xchacha20poly1305_pull(e,i,0,l,s,p,0,o,h)&&{tag:r.HEAPU8[l],message:y})&&{message:S(u.message,_),tag:u.tag});return M(n),u}function ca(e,t,a,_,n){var s=[];Y(n),U(s,e,\"state_address\");var c=K(t=O(s,t,\"message_chunk\")),p=t.length;s.push(c);var o=null,h=0;null!=a&&(o=K(a=O(s,a,\"ad\")),h=a.length,s.push(o)),U(s,_,\"tag\"),(\"number\"!=typeof _||(0|_)!==_||_<0)&&L(s,\"tag must be an unsigned integer\");var y=new B(p+r._crypto_secretstream_xchacha20poly1305_abytes()|0),i=y.address;if(s.push(i),!(0|r._crypto_secretstream_xchacha20poly1305_push(e,i,0,c,p,0,o,h,0,_))){var l=S(y,n);return M(s),l}N(s,\"invalid usage\")}function pa(e,t){var a=[];return Y(t),U(a,e,\"state_address\"),r._crypto_secretstream_xchacha20poly1305_rekey(e),M(a),!0}function oa(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_shorthash_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_shorthash_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_shorthash(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ha(e){var t=[];Y(e);var a=new B(0|r._crypto_shorthash_keybytes()),_=a.address;t.push(_),r._crypto_shorthash_keygen(_);var n=S(a,e);return M(t),n}function ya(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"key\");var c,p=0|r._crypto_shorthash_siphashx24_keybytes();t.length!==p&&L(_,\"invalid key length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_shorthash_siphashx24_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_shorthash_siphashx24(h,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ia(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_sign_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(e.length+r._crypto_sign_bytes()|0),h=o.address;if(_.push(h),!(0|r._crypto_sign(h,null,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function la(e,t,a){var _=[];Y(a);var n=K(e=O(_,e,\"message\")),s=e.length;_.push(n),t=O(_,t,\"privateKey\");var c,p=0|r._crypto_sign_secretkeybytes();t.length!==p&&L(_,\"invalid privateKey length\"),c=K(t),_.push(c);var o=new B(0|r._crypto_sign_bytes()),h=o.address;if(_.push(h),!(0|r._crypto_sign_detached(h,null,n,s,0,c))){var y=S(o,a);return M(_),y}N(_,\"invalid usage\")}function ua(e,t){var a=[];Y(t),e=O(a,e,\"edPk\");var _,n=0|r._crypto_sign_publickeybytes();e.length!==n&&L(a,\"invalid edPk length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_pk_to_curve25519(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function da(e,t){var a=[];Y(t),e=O(a,e,\"edSk\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&L(a,\"invalid edSk length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_scalarmult_scalarbytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_sk_to_curve25519(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function va(e,t){var a=[];Y(t),e=O(a,e,\"privateKey\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&L(a,\"invalid privateKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_sign_publickeybytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_sk_to_pk(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function ga(e,t){var a=[];Y(t),e=O(a,e,\"privateKey\");var _,n=0|r._crypto_sign_secretkeybytes();e.length!==n&&L(a,\"invalid privateKey length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_sign_seedbytes()),c=s.address;if(a.push(c),!(0|r._crypto_sign_ed25519_sk_to_seed(c,_))){var p=S(s,t);return M(a),p}N(a,\"invalid key\")}function ba(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),t=O(_,t,\"privateKey\");var n,s=0|r._crypto_sign_secretkeybytes();t.length!==s&&L(_,\"invalid privateKey length\"),n=K(t),_.push(n);var c=new B(0|r._crypto_sign_bytes()),p=c.address;if(_.push(p),!(0|r._crypto_sign_final_create(e,p,null,n))){var o=(r._free(e),S(c,a));return M(_),o}N(_,\"invalid usage\")}function fa(e,t,a,_){var n=[];Y(_),U(n,e,\"state_address\"),t=O(n,t,\"signature\");var s,c=0|r._crypto_sign_bytes();t.length!==c&&L(n,\"invalid signature length\"),s=K(t),n.push(s),a=O(n,a,\"publicKey\");var p,o=0|r._crypto_sign_publickeybytes();a.length!==o&&L(n,\"invalid publicKey length\"),p=K(a),n.push(p);var h=!(0|r._crypto_sign_final_verify(e,s,p));return M(n),h}function ma(e){var t=[];Y(e);var a=new B(208).address;if(!(0|r._crypto_sign_init(a))){var _=a;return M(t),_}N(t,\"internal error\")}function ka(e){var t=[];Y(e);var a=new B(0|r._crypto_sign_publickeybytes()),_=a.address;t.push(_);var n=new B(0|r._crypto_sign_secretkeybytes()),s=n.address;if(t.push(s),!(0|r._crypto_sign_keypair(_,s))){var c={publicKey:S(a,e),privateKey:S(n,e),keyType:\"ed25519\"};return M(t),c}N(t,\"internal error\")}function xa(e,t,a){var _=[];Y(a),e=O(_,e,\"signedMessage\");var n,s=r._crypto_sign_bytes(),c=e.length;c<s&&L(_,\"signedMessage is too short\"),n=K(e),_.push(n),t=O(_,t,\"publicKey\");var p,o=0|r._crypto_sign_publickeybytes();t.length!==o&&L(_,\"invalid publicKey length\"),p=K(t),_.push(p);var h=new B(c-r._crypto_sign_bytes()|0),y=h.address;if(_.push(y),!(0|r._crypto_sign_open(y,null,n,c,0,p))){var i=S(h,a);return M(_),i}N(_,\"incorrect signature for the given public key\")}function Ea(e,t){var a=[];Y(t),e=O(a,e,\"seed\");var _,n=0|r._crypto_sign_seedbytes();e.length!==n&&L(a,\"invalid seed length\"),_=K(e),a.push(_);var s=new B(0|r._crypto_sign_publickeybytes()),c=s.address;a.push(c);var p=new B(0|r._crypto_sign_secretkeybytes()),o=p.address;if(a.push(o),!(0|r._crypto_sign_seed_keypair(c,o,_))){var h={publicKey:S(s,t),privateKey:S(p,t),keyType:\"ed25519\"};return M(a),h}N(a,\"invalid usage\")}function Ta(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_sign_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Sa(e,t,a){var _=[];e=O(_,e,\"signature\");var n,s=0|r._crypto_sign_bytes();e.length!==s&&L(_,\"invalid signature length\"),n=K(e),_.push(n);var c=K(t=O(_,t,\"message\")),p=t.length;_.push(c),a=O(_,a,\"publicKey\");var o,h=0|r._crypto_sign_publickeybytes();a.length!==h&&L(_,\"invalid publicKey length\"),o=K(a),_.push(o);var y=!(0|r._crypto_sign_verify_detached(n,c,p,0,o));return M(_),y}function wa(e,t,a,_){var n=[];Y(_),U(n,e,\"outLength\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(n,\"outLength must be an unsigned integer\"),t=O(n,t,\"key\");var s,c=0|r._crypto_stream_chacha20_keybytes();t.length!==c&&L(n,\"invalid key length\"),s=K(t),n.push(s),a=O(n,a,\"nonce\");var p,o=0|r._crypto_stream_chacha20_noncebytes();a.length!==o&&L(n,\"invalid nonce length\"),p=K(a),n.push(p);var h=new B(0|e),y=h.address;n.push(y),r._crypto_stream_chacha20(y,e,0,p,s);var i=S(h,_);return M(n),i}function Ya(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"input_message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_stream_chacha20_ietf_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_stream_chacha20_ietf_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;if(n.push(l),0===r._crypto_stream_chacha20_ietf_xor(l,s,c,0,p,h)){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ba(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"input_message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_stream_chacha20_ietf_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),U(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(s,\"nonce_increment must be an unsigned integer\"),_=O(s,_,\"key\");var y,i=0|r._crypto_stream_chacha20_ietf_keybytes();_.length!==i&&L(s,\"invalid key length\"),y=K(_),s.push(y);var l=new B(0|p),u=l.address;if(s.push(u),0===r._crypto_stream_chacha20_ietf_xor_ic(u,c,p,0,o,a,y)){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Ka(e){var t=[];Y(e);var a=new B(0|r._crypto_stream_chacha20_keybytes()),_=a.address;t.push(_),r._crypto_stream_chacha20_keygen(_);var n=S(a,e);return M(t),n}function Aa(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"input_message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_stream_chacha20_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_stream_chacha20_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;if(n.push(l),0===r._crypto_stream_chacha20_xor(l,s,c,0,p,h)){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ia(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"input_message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_stream_chacha20_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),U(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(s,\"nonce_increment must be an unsigned integer\"),_=O(s,_,\"key\");var y,i=0|r._crypto_stream_chacha20_keybytes();_.length!==i&&L(s,\"invalid key length\"),y=K(_),s.push(y);var l=new B(0|p),u=l.address;if(s.push(u),0===r._crypto_stream_chacha20_xor_ic(u,c,p,0,o,a,0,y)){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Ma(e){var t=[];Y(e);var a=new B(0|r._crypto_stream_keybytes()),_=a.address;t.push(_),r._crypto_stream_keygen(_);var n=S(a,e);return M(t),n}function Na(e){var t=[];Y(e);var a=new B(0|r._crypto_stream_xchacha20_keybytes()),_=a.address;t.push(_),r._crypto_stream_xchacha20_keygen(_);var n=S(a,e);return M(t),n}function La(e,t,a,_){var n=[];Y(_);var s=K(e=O(n,e,\"input_message\")),c=e.length;n.push(s),t=O(n,t,\"nonce\");var p,o=0|r._crypto_stream_xchacha20_noncebytes();t.length!==o&&L(n,\"invalid nonce length\"),p=K(t),n.push(p),a=O(n,a,\"key\");var h,y=0|r._crypto_stream_xchacha20_keybytes();a.length!==y&&L(n,\"invalid key length\"),h=K(a),n.push(h);var i=new B(0|c),l=i.address;if(n.push(l),0===r._crypto_stream_xchacha20_xor(l,s,c,0,p,h)){var u=S(i,_);return M(n),u}N(n,\"invalid usage\")}function Ua(e,t,a,_,n){var s=[];Y(n);var c=K(e=O(s,e,\"input_message\")),p=e.length;s.push(c),t=O(s,t,\"nonce\");var o,h=0|r._crypto_stream_xchacha20_noncebytes();t.length!==h&&L(s,\"invalid nonce length\"),o=K(t),s.push(o),U(s,a,\"nonce_increment\"),(\"number\"!=typeof a||(0|a)!==a||a<0)&&L(s,\"nonce_increment must be an unsigned integer\"),_=O(s,_,\"key\");var y,i=0|r._crypto_stream_xchacha20_keybytes();_.length!==i&&L(s,\"invalid key length\"),y=K(_),s.push(y);var l=new B(0|p),u=l.address;if(s.push(u),0===r._crypto_stream_xchacha20_xor_ic(u,c,p,0,o,a,0,y)){var d=S(l,n);return M(s),d}N(s,\"invalid usage\")}function Oa(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_shake128(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function Ca(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_shake128_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Ra(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_shake128_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function Pa(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_shake128_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function Xa(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_shake128_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Da(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_shake256(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function Ga(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_shake256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Fa(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_shake256_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function Va(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_shake256_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function qa(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_shake256_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Ha(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_turboshake128(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function za(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_turboshake128_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function Wa(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_turboshake128_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function ja(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_turboshake128_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function Ja(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_turboshake128_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function Qa(e,t,a){var _=[];Y(a),U(_,e,\"out_length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"out_length must be an unsigned integer\");var n=K(t=O(_,t,\"message\")),s=t.length;_.push(n);var c=new B(e|=0),p=c.address;if(_.push(p),!(0|r._crypto_xof_turboshake256(p,e,n,s,0))){var o=S(c,a);return M(_),o}N(_,\"invalid usage\")}function Za(e){var t=[];Y(e);var a=new B(256).address;if(!(0|r._crypto_xof_turboshake256_init(a))){var _=a;return M(t),_}N(t,\"invalid usage\")}function $a(e,t){var a=[];Y(t),U(a,e,\"domain\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"domain must be an unsigned integer\");var _=new B(256).address;if(!(0|r._crypto_xof_turboshake256_init_with_domain(_,e))){var n=_;return M(a),n}N(a,\"invalid usage\")}function e_(e,t,a){var _=[];Y(a),U(_,e,\"state_address\"),U(_,t,\"out_length\"),(\"number\"!=typeof t||(0|t)!==t||t<0)&&L(_,\"out_length must be an unsigned integer\");var n=new B(t|=0),s=n.address;if(_.push(s),!(0|r._crypto_xof_turboshake256_squeeze(e,s,t))){var c=S(n,a);return M(_),c}N(_,\"invalid usage\")}function r_(e,t,a){var _=[];Y(a),U(_,e,\"state_address\");var n=K(t=O(_,t,\"message_chunk\")),s=t.length;_.push(n),0|r._crypto_xof_turboshake256_update(e,n,s,0)&&N(_,\"invalid usage\"),M(_)}function t_(e,t){var a=[];Y(t),U(a,e,\"length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"length must be an unsigned integer\");var _=new B(0|e),n=_.address;a.push(n),r._randombytes_buf(n,e);var s=S(_,t);return M(a),s}function a_(e,t,a){var _=[];Y(a),U(_,e,\"length\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(_,\"length must be an unsigned integer\"),t=O(_,t,\"seed\");var n,s=0|r._randombytes_seedbytes();t.length!==s&&L(_,\"invalid seed length\"),n=K(t),_.push(n);var c=new B(0|e),p=c.address;_.push(p),r._randombytes_buf_deterministic(p,e,n);var o=S(c,a);return M(_),o}function __(e){Y(e),r._randombytes_close()}function n_(e){Y(e);var t=r._randombytes_random()>>>0;return M([]),t}function s_(e,t){var a=[];Y(t);for(var _=r._malloc(24),n=0;n<6;n++)r.setValue(_+4*n,r.Runtime.addFunction(e[[\"implementation_name\",\"random\",\"stir\",\"uniform\",\"buf\",\"close\"][n]]),\"i32\");0|r._randombytes_set_implementation(_)&&N(a,\"unsupported implementation\"),M(a)}function c_(e){Y(e),r._randombytes_stir()}function p_(e,t){var a=[];Y(t),U(a,e,\"upper_bound\"),(\"number\"!=typeof e||(0|e)!==e||e<0)&&L(a,\"upper_bound must be an unsigned integer\");var _=r._randombytes_uniform(e)>>>0;return M(a),_}function o_(e){var t,a=[];16!==(e=O(a,e,\"bin\")).length&&L(a,\"invalid bin length\"),t=K(e),a.push(t);var _=new B(46).address;if(a.push(_),0!==r._sodium_bin2ip(_,46,t)){var n=r.UTF8ToString(_);return M(a),n}N(a,\"conversion failed\")}function h_(e,t){var a=[];Y(t),\"string\"!=typeof e&&L(a,\"ip must be a string\");var _=K(e=v(e+\"\\0\")),n=e.length-1;a.push(_);var s=new B(16),c=s.address;if(a.push(c),!(0|r._sodium_ip2bin(c,_,n))){var p=S(s,t);return M(a),p}N(a,\"invalid IP address\")}function y_(){var e=r._sodium_version_string(),t=r.UTF8ToString(e);return M([]),t}B.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(r.HEAPU8.subarray(this.address,this.address+this.length)),e},t.add=o,t.base64_variants=m,t.compare=l,t.from_base64=x,t.from_hex=b,t.from_string=v,t.increment=p,t.is_zero=h,t.memcmp=i,t.memzero=y,t.output_formats=T,t.pad=u,t.unpad=d,t.ready=s,t.symbols=c,t.to_base64=E,t.to_hex=f,t.to_string=g;export default t;export{s as ready,o as add,l as compare,x as from_base64,b as from_hex,v as from_string,p as increment,h as is_zero,i as memcmp,y as memzero,u as pad,d as unpad,c as symbols,E as to_base64,f as to_hex,g as to_string,T as output_formats,m as base64_variants,r as libsodium};\n","import sodium from 'libsodium-wrappers';\n\n// Versioned envelope for at-rest secrets. The `version` field carries 'v1'\n// today; rotating the key or swapping the algorithm bumps to 'v2' without\n// touching existing rows. A cipher instance only knows how to read/write the\n// version it owns — older versions get migrated lazily when read.\nexport const SECRET_CIPHER_VERSION = 'v1';\n\n// The encrypted envelope this lib PRODUCES. nonce/ciphertext are framework-free\n// Uint8Array so the cipher stays SDK-consumable (no Node Buffer dependency in\n// the public output). Callers that need a Node Buffer (e.g. the drizzle/\n// postgres-js `bytea` write path in apps/api) convert with `Buffer.from(...)`\n// at their own boundary.\nexport interface EncryptedSecret {\n version: typeof SECRET_CIPHER_VERSION;\n nonce: Uint8Array;\n ciphertext: Uint8Array;\n}\n\n// The envelope this lib ACCEPTS on decrypt. nonce/ciphertext are typed as\n// ArrayBufferView so a Node Buffer read straight off a `bytea` column (Buffer\n// is an ArrayBufferView) decrypts without any conversion at the call site.\nexport interface DecryptableSecret {\n version: string;\n nonce: ArrayBufferView;\n ciphertext: ArrayBufferView;\n}\n\nexport interface SecretCipher {\n encrypt(plaintext: string): EncryptedSecret;\n decrypt(envelope: DecryptableSecret): string;\n}\n\n// libsodium reads keys/nonces/ciphertext as Uint8Array. A Node Buffer is a\n// Uint8Array view over a (possibly larger) pooled ArrayBuffer, so it must be\n// re-wrapped to honour its byteOffset/byteLength rather than handing libsodium\n// the whole backing buffer.\nfunction toUint8Array(view: ArrayBufferView): Uint8Array {\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n}\n\n/**\n * Decode a base64-encoded 32-byte key into a Uint8Array suitable for\n * `createSecretCipher`. Throws if it does not decode to exactly\n * `crypto_secretbox_KEYBYTES` (32) bytes.\n *\n * IMPORTANT: `sodium.ready` MUST have resolved before calling this, because it\n * reaches into the libsodium WASM module (`sodium.from_base64`,\n * `sodium.crypto_secretbox_KEYBYTES`). Calling it before the WASM has loaded\n * throws an opaque `Cannot read properties of undefined (reading '_malloc')`.\n * Prefer passing the base64 string straight to `createSecretCipher`, which\n * awaits `sodium.ready` and only then decodes — see `createSecretCipher`.\n */\nexport function decodeKey(base64: string): Uint8Array {\n const decoded = sodium.from_base64(base64, sodium.base64_variants.ORIGINAL);\n if (decoded.length !== sodium.crypto_secretbox_KEYBYTES) {\n throw new Error(\n `secret key must decode to ${sodium.crypto_secretbox_KEYBYTES} bytes (got ${decoded.length}). Generate with \\`openssl rand -base64 32\\`.`,\n );\n }\n return decoded;\n}\n\n/**\n * Build a key-parameterized libsodium `crypto_secretbox` cipher.\n *\n * The 32-byte `key` is a constructor argument — there is no global master key\n * and no framework coupling. `sodium.ready` (the async WASM load) is awaited\n * once here so the returned `encrypt`/`decrypt` are synchronous and safe to\n * call immediately.\n *\n * The key may be a raw `Uint8Array` OR a base64 string. Passing the base64\n * string is the SAFE option for boot-time callers: any base64 decode (which\n * touches the libsodium WASM module) happens INSIDE this function, AFTER\n * `await sodium.ready` has resolved. Decoding the key yourself with\n * `decodeKey(...)` and passing the bytes is only safe once `sodium.ready` has\n * already resolved somewhere in the process — on a cold boot it throws an\n * opaque WASM error, because `decodeKey`'s argument is evaluated before this\n * function gets a chance to await `sodium.ready`.\n */\nexport async function createSecretCipher(key: Uint8Array | string): Promise<SecretCipher> {\n await sodium.ready;\n // Decode a base64 key only AFTER `sodium.ready` so the WASM module is loaded\n // (decodeKey reaches into libsodium). This is the regression the boot-time\n // ordering bug exposed: an eager `decodeKey(raw)` argument ran before ready.\n const keyBytes = typeof key === 'string' ? decodeKey(key) : key;\n if (keyBytes.length !== sodium.crypto_secretbox_KEYBYTES) {\n throw new Error(\n `secret cipher key must be ${sodium.crypto_secretbox_KEYBYTES} bytes (got ${keyBytes.length}).`,\n );\n }\n\n return {\n encrypt(plaintext: string): EncryptedSecret {\n const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);\n const ciphertext = sodium.crypto_secretbox_easy(\n sodium.from_string(plaintext),\n nonce,\n keyBytes,\n );\n return {\n version: SECRET_CIPHER_VERSION,\n nonce,\n ciphertext,\n };\n },\n\n decrypt(envelope: DecryptableSecret): string {\n if (envelope.version !== SECRET_CIPHER_VERSION) {\n throw new Error(`Unsupported secret version: ${envelope.version}`);\n }\n const plaintext = sodium.crypto_secretbox_open_easy(\n toUint8Array(envelope.ciphertext),\n toUint8Array(envelope.nonce),\n keyBytes,\n );\n return sodium.to_string(plaintext);\n },\n };\n}\n","import { createSecretCipher, type SecretCipher } from '@stackbone/crypto';\nimport { type Sql } from 'postgres';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { err, ok, type Result } from '../../../result';\nimport { type DatabaseModule } from '../database/database';\n\n// `client.secrets` — AGENT-LOCAL. The agent reads its own secrets straight out\n// of `stackbone_platform.secrets` (the canonical agent-DB store) over the\n// shared `client.database` pool and decrypts them with the per-agent key\n// (`STACKBONE_SECRET_KEY`) via `@stackbone/crypto`. There is no control-plane\n// HTTP round-trip anymore: the agent owns its data.\n//\n// The agent legitimately reads `is_system` rows too — the saga writes platform\n// credentials (OpenRouter / R2) as `is_system = true`, and an agent needs them\n// at runtime even though Studio hides them from the creator. So this facade\n// does NOT filter on `is_system`.\n//\n// Connection ownership: like `client.rag`, this surface reaches the underlying\n// `postgres-js` `Sql` through `client.database.shared().$client` so the agent\n// process opens exactly one pool against `STACKBONE_POSTGRES_URL`.\n\ninterface SecretEnvelopeRow {\n version: string;\n nonce: Uint8Array;\n ciphertext: Uint8Array;\n}\n\nexport class SecretsFacade {\n private _cipher?: SecretCipher;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /**\n * Lazy accessor for `client.database`. The facade pulls the shared\n * `postgres-js` `Sql` via `getDatabase().shared().$client` — never\n * reaching into a sibling module's implementation file.\n */\n private readonly _getDatabase: () => DatabaseModule,\n ) {}\n\n async get(name: string): Promise<Result<string>> {\n if (!name.trim()) {\n return err({ code: 'secrets_invalid_request', message: '`name` is required.' });\n }\n const cipher = await this.cipher();\n if (cipher.error) return err(cipher.error);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n let rows: SecretEnvelopeRow[];\n try {\n rows = await sql.data<SecretEnvelopeRow[]>`\n SELECT version, nonce, ciphertext\n FROM stackbone_platform.secrets\n WHERE name = ${name}\n LIMIT 1\n `;\n } catch (cause) {\n return err({\n code: 'secrets_unavailable',\n message: `Failed to read secret \\`${name}\\` from the agent database.`,\n cause,\n });\n }\n const row = rows[0];\n if (!row) {\n return err({\n code: 'secrets_not_found',\n message: `Secret \\`${name}\\` is not registered for this agent.`,\n meta: { name },\n });\n }\n try {\n return ok(cipher.data.decrypt(row));\n } catch (cause) {\n return err({\n code: 'secrets_decrypt_failed',\n message: `Failed to decrypt secret \\`${name}\\`.`,\n cause,\n });\n }\n }\n\n /**\n * Names absent from the agent come back as omissions in the response — the\n * returned map only contains entries the agent DB actually has. Callers that\n * need \"all-or-nothing\" semantics should diff the keys.\n */\n async getMany(names: string[]): Promise<Result<Record<string, string>>> {\n if (!Array.isArray(names) || names.length === 0) {\n return err({\n code: 'secrets_invalid_request',\n message: '`names` must be a non-empty array.',\n });\n }\n const cipher = await this.cipher();\n if (cipher.error) return err(cipher.error);\n const sql = this.sql();\n if (sql.error) return err(sql.error);\n\n let rows: (SecretEnvelopeRow & { name: string })[];\n try {\n rows = await sql.data<(SecretEnvelopeRow & { name: string })[]>`\n SELECT name, version, nonce, ciphertext\n FROM stackbone_platform.secrets\n WHERE name = ANY(${names})\n `;\n } catch (cause) {\n return err({\n code: 'secrets_unavailable',\n message: 'Failed to read secrets from the agent database.',\n cause,\n });\n }\n const values: Record<string, string> = {};\n for (const row of rows) {\n try {\n values[row.name] = cipher.data.decrypt(row);\n } catch (cause) {\n return err({\n code: 'secrets_decrypt_failed',\n message: `Failed to decrypt secret \\`${row.name}\\`.`,\n cause,\n });\n }\n }\n return ok(values);\n }\n\n // Built once per facade, after `sodium.ready`. The base64 key is handed\n // straight to `createSecretCipher` (it awaits the WASM load before decoding).\n private async cipher(): Promise<Result<SecretCipher>> {\n if (this._cipher) return ok(this._cipher);\n const key = this._resolved.secretKey;\n if (!key) {\n return err({\n code: 'secrets_not_configured',\n message: 'Cannot read agent secrets — `STACKBONE_SECRET_KEY` is not set in the container.',\n });\n }\n try {\n this._cipher = await createSecretCipher(key);\n return ok(this._cipher);\n } catch (cause) {\n return err({\n code: 'secrets_not_configured',\n message: 'Failed to build the per-agent secret cipher from `STACKBONE_SECRET_KEY`.',\n cause,\n });\n }\n }\n\n private sql(): Result<Sql> {\n try {\n return ok(this._getDatabase().shared().$client);\n } catch (cause) {\n const code = (cause as { code?: string } | null)?.code;\n if (code === 'database_not_configured') {\n return err({\n code: 'database_not_configured',\n message: (cause as Error).message,\n cause,\n });\n }\n return err({\n code: 'secrets_unavailable',\n message: 'Agent database handle unavailable.',\n cause,\n });\n }\n }\n}\n","import OpenAI from 'openai';\nimport type {\n ChatCompletion,\n ChatCompletionChunk,\n ChatCompletionCreateParamsNonStreaming,\n ChatCompletionCreateParamsStreaming,\n CreateEmbeddingResponse,\n EmbeddingCreateParams,\n} from 'openai/resources';\nimport type { Stream } from 'openai/streaming';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type SdkErrorCode } from '../../../errors/codes';\nimport { err, ok, type Result, type SdkError } from '../../../result';\n\n/**\n * Public surface behind `client.ai`. Wraps the official `openai` SDK with a\n * `baseURL` override pointing to OpenRouter, so 300+ models are reachable\n * with a single, OpenAI-compatible API.\n *\n * Lazy: the underlying `OpenAI` client is built on the first method call\n * (or the first time a sub-namespace is touched) so env vars mutated after\n * `createClient()` are still picked up — same pattern as `DatabaseModule`.\n *\n * Error model: every method returns `Result<T>`. Upstream `APIError`s are\n * mapped to `SdkError` with stable `ai_*` codes. For streaming, the\n * `Result` envelope only covers connection establishment; once the stream\n * is open, mid-flight errors propagate through the iterator — callers must\n * wrap their `for await` loop in `try/catch`. Aborts via `signal.abort()`\n * surface as `ai_aborted` in non-streaming requests; in streaming, the\n * iterator simply terminates (the upstream SDK swallows the abort).\n *\n * Test override: pass `clientOverride` to inject a pre-built `OpenAI`\n * instance (or a stand-in) instead of letting the module build one. The\n * override flows to all four namespaces — `models.list()` included —\n * and to the cross-surface `shared()` accessor.\n *\n * Shared-handles pattern: `shared(): Result<OpenAI>` is the canonical\n * accessor cross-surface SDK consumers (RAG today, memory tomorrow) use\n * to reach the single OpenRouter client. Same instance every call; one\n * credential, one base URL, one retry policy, one error shape. See\n * README + CHANGELOG.\n */\nexport class AiModule {\n private _openai: OpenAI | null = null;\n private _chat: { completions: ChatCompletionsNamespace } | null = null;\n private _embeddings: EmbeddingsNamespace | null = null;\n private _images: ImagesNamespace | null = null;\n private _models: ModelsNamespace | null = null;\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n clientOverride?: OpenAI,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n if (clientOverride) this._openai = clientOverride;\n this._gate = gate ?? createModuleGate('ai', _resolved);\n }\n\n get chat(): { completions: ChatCompletionsNamespace } {\n this._chat ??= {\n completions: new ChatCompletionsNamespace(() => this.shared(), this._gate),\n };\n return this._chat;\n }\n\n get embeddings(): EmbeddingsNamespace {\n this._embeddings ??= new EmbeddingsNamespace(() => this.shared(), this._gate);\n return this._embeddings;\n }\n\n get images(): ImagesNamespace {\n this._images ??= new ImagesNamespace(() => this.shared(), this._gate);\n return this._images;\n }\n\n get models(): ModelsNamespace {\n this._models ??= new ModelsNamespace(() => this.shared(), this._gate);\n return this._models;\n }\n\n /**\n * Canonical accessor for the **shared-handles pattern** on the AI\n * surface. Returns the lazily-constructed OpenRouter-flavoured `OpenAI`\n * client backing `client.ai`. Cross-surface SDK consumers (RAG today,\n * memory tomorrow) call this — never instantiate a parallel `OpenAI`\n * client — to keep credential resolution, base-URL routing, retry /\n * timeout policy, and token accounting on a single instance.\n *\n * Contract: same input → same instance. Calling `shared()` twice in\n * the same process (with the same `ResolvedConfig`) returns the same\n * reference. The Result envelope surfaces `openrouter_key_missing`\n * when `OPENROUTER_API_KEY` is unset, matching the rest of the\n * `client.ai.*` API; the gate is intentionally NOT consulted here\n * (surfaces that gate behaviour gate it at their own call sites).\n *\n * The constructor's `clientOverride` flows through this accessor too,\n * so tests that inject a fake `OpenAI` see consistent behaviour across\n * `chat / embeddings / images / models` and any cross-surface\n * consumer.\n */\n shared(): Result<OpenAI> {\n if (this._openai) return ok(this._openai);\n const apiKey = resolveApiKey(this._resolved);\n if (!apiKey) return missingKeyError();\n this._openai = new OpenAI({\n apiKey,\n baseURL: resolveBaseUrl(this._resolved),\n defaultHeaders: STACKBONE_DEFAULT_HEADERS,\n });\n return ok(this._openai);\n }\n}\n\nclass ChatCompletionsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n create(\n params: ChatCompletionCreateParamsStreaming,\n options?: RequestOptions,\n ): Promise<Result<Stream<ChatCompletionChunk>>>;\n create(\n params: ChatCompletionCreateParamsNonStreaming,\n options?: RequestOptions,\n ): Promise<Result<ChatCompletion>>;\n async create(\n params: ChatCompletionCreateParamsNonStreaming | ChatCompletionCreateParamsStreaming,\n options?: RequestOptions,\n ): Promise<Result<ChatCompletion | Stream<ChatCompletionChunk>>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n return wrapCall(this._getClient, params.model, (client) =>\n client.chat.completions.create(params, { signal: options?.signal }),\n );\n }\n}\n\nclass EmbeddingsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n async create(\n params: EmbeddingCreateParams,\n options?: RequestOptions,\n ): Promise<Result<CreateEmbeddingResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const model = typeof params.model === 'string' ? params.model : undefined;\n return wrapCall(this._getClient, model, (client) =>\n client.embeddings.create(params, { signal: options?.signal }),\n );\n }\n}\n\nexport interface ImageGenerateParams {\n model: string;\n prompt: string;\n /** Forwarded to OpenRouter as `image_config`. Use for aspect ratio, size, etc. */\n imageConfig?: Record<string, unknown>;\n}\n\nexport interface ImagesResponse {\n created: number;\n data: GeneratedImage[];\n}\n\nexport interface GeneratedImage {\n /** Original `data:image/...;base64,...` URL as returned by OpenRouter. */\n url: string;\n /** Base64 payload extracted from the data URL. */\n b64Json?: string;\n /** MIME type parsed from the data URL prefix. */\n mimeType?: string;\n}\n\nclass ImagesNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n /**\n * OpenRouter does not implement the OpenAI `/v1/images/generations`\n * endpoint. Image models are reached via `/v1/chat/completions` with\n * `modalities: ['image']`, and the resulting image is returned as a\n * non-standard `message.images[]` array of base64 data URLs. This method\n * encapsulates that quirk and surfaces an OpenAI-shaped response so\n * agent code does not need to know.\n *\n * If the model does not return any images (wrong model, content policy,\n * etc.) this returns an `ai_no_image_generated` error rather than an\n * empty success — surfacing the failure to the caller instead of\n * silently producing zero images.\n */\n async generate(\n params: ImageGenerateParams,\n options?: RequestOptions,\n ): Promise<Result<ImagesResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const body: OpenRouterImageRequest = {\n model: params.model,\n messages: [{ role: 'user', content: params.prompt }],\n modalities: ['image', 'text'],\n ...(params.imageConfig ? { image_config: params.imageConfig } : {}),\n };\n const completion = await wrapCall(this._getClient, params.model, (client) =>\n client.chat.completions.create(body as ChatCompletionCreateParamsNonStreaming, {\n signal: options?.signal,\n }),\n );\n if (completion.error) return completion;\n const data = extractImages(completion.data);\n if (data.length === 0) {\n return err({\n code: 'ai_no_image_generated',\n message: `Model ${params.model} did not return any images. Make sure the model supports image output via OpenRouter.`,\n meta: { model: params.model },\n });\n }\n return ok({ created: completion.data.created, data });\n }\n}\n\nexport interface OpenRouterModel {\n id: string;\n name?: string;\n description?: string;\n context_length?: number;\n pricing?: Record<string, unknown>;\n architecture?: Record<string, unknown>;\n supported_parameters?: string[];\n}\n\nexport interface ModelsListResponse {\n data: OpenRouterModel[];\n}\n\nclass ModelsNamespace {\n constructor(\n private readonly _getClient: () => Result<OpenAI>,\n private readonly _gate: ModuleGate,\n ) {}\n\n /**\n * Calls `GET ${baseURL}/models` directly with `fetch` — the upstream\n * `openai.models.list()` parses the response into OpenAI's `Model` type\n * which discards OpenRouter-specific fields (`pricing`, `context_length`,\n * `supported_parameters`, `architecture`). Going through `fetch` keeps\n * the full payload.\n *\n * Reuses the cached `OpenAI` instance (built lazily by `AiModule`) so\n * the resolved `apiKey` and `baseURL` are consistent with the rest of\n * the namespaces — and any `clientOverride` injected for tests applies\n * here too.\n */\n async list(options?: RequestOptions): Promise<Result<ModelsListResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n const clientResult = this._getClient();\n if (clientResult.error) return clientResult;\n const { apiKey, baseURL } = clientResult.data;\n const baseUrl = baseURL.replace(/\\/+$/, '');\n const init: RequestInit = {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n ...STACKBONE_DEFAULT_HEADERS,\n },\n };\n if (options?.signal) init.signal = options.signal;\n try {\n const response = await fetch(`${baseUrl}/models`, init);\n if (!response.ok) {\n const body = (await response.json().catch(() => ({}))) as {\n error?: { message?: string };\n };\n return err({\n code: codeForStatus(response.status),\n message: body.error?.message ?? `HTTP ${response.status}`,\n meta: { status: response.status },\n });\n }\n const json = (await response.json()) as ModelsListResponse;\n return ok(json);\n } catch (raw) {\n return err(mapApiError(raw));\n }\n }\n}\n\ninterface RequestOptions {\n signal?: AbortSignal;\n}\n\ninterface OpenRouterImageRequest {\n model: string;\n messages: ChatCompletionCreateParamsNonStreaming['messages'];\n modalities: ('text' | 'audio' | 'image')[];\n image_config?: Record<string, unknown>;\n}\n\nconst STACKBONE_DEFAULT_HEADERS = {\n 'HTTP-Referer': 'https://stackbone.ai',\n 'X-Title': 'Stackbone Agent Platform',\n} as const;\n\nconst OPENROUTER_DEFAULT_BASE_URL = 'https://openrouter.ai/api/v1';\n\nconst OPENROUTER_KEY_MISSING_MESSAGE =\n 'Cannot reach OpenRouter — set `OPENROUTER_API_KEY` in the container or pass `openrouterKey` to `createClient({...})`.';\n\nfunction missingKeyError<T = never>(): Result<T> {\n return err({\n code: 'openrouter_key_missing',\n message: OPENROUTER_KEY_MISSING_MESSAGE,\n });\n}\n\nfunction resolveApiKey(resolved: ResolvedConfig): string | undefined {\n return resolved.openrouterKey;\n}\n\nfunction resolveBaseUrl(resolved: ResolvedConfig): string {\n return resolved.openrouterBaseUrl ?? OPENROUTER_DEFAULT_BASE_URL;\n}\n\nasync function wrapCall<T>(\n getClient: () => Result<OpenAI>,\n model: string | undefined,\n fn: (client: OpenAI) => Promise<T>,\n): Promise<Result<T>> {\n const clientResult = getClient();\n if (clientResult.error) return clientResult;\n try {\n return ok(await fn(clientResult.data));\n } catch (raw) {\n return err(mapApiError(raw, model));\n }\n}\n\ninterface OpenRouterImageItem {\n type?: string;\n image_url?: { url?: string };\n}\n\nconst DATA_URL_RE = /^data:(image\\/[a-zA-Z0-9.+-]+);base64,(.*)$/;\n\nfunction extractImages(completion: ChatCompletion): GeneratedImage[] {\n const message = completion.choices[0]?.message as\n | (ChatCompletion['choices'][number]['message'] & {\n images?: OpenRouterImageItem[];\n })\n | undefined;\n const rawImages = message?.images ?? [];\n const out: GeneratedImage[] = [];\n for (const img of rawImages) {\n const url = img?.image_url?.url;\n if (!url) continue;\n const match = DATA_URL_RE.exec(url);\n if (match && match[1] && match[2]) {\n out.push({ url, mimeType: match[1], b64Json: match[2] });\n } else {\n out.push({ url });\n }\n }\n return out;\n}\n\n/**\n * OpenRouter HTTP statuses surface as `ai_*` codes from the catalog. This is\n * the `ai` surface's local equivalent of the `<prefix>_<reason>` mapping\n * `HttpClient` runs for the control-plane facades — `client.ai` talks to\n * OpenRouter directly via the upstream OpenAI SDK, so the transport is not\n * involved, but the wire-level shape stays inside the same catalog.\n */\nfunction codeForStatus(status: number): SdkErrorCode {\n if (status === 401) return 'ai_unauthorized';\n if (status === 402) return 'ai_credits_exhausted';\n if (status === 403) return 'ai_forbidden';\n if (status === 408) return 'ai_timeout';\n if (status === 422 || status === 400) return 'ai_validation_error';\n if (status === 429) return 'ai_rate_limited';\n if (status === 451) return 'ai_moderation_blocked';\n return 'ai_provider_error';\n}\n\nfunction mapApiError(raw: unknown, model?: string): SdkError {\n if (raw instanceof OpenAI.APIError) {\n const meta: Record<string, unknown> = { status: raw.status };\n if (model) meta['model'] = model;\n if (raw.code != null) meta['openrouterCode'] = raw.code;\n if (raw.type != null) meta['openrouterType'] = raw.type;\n\n if (raw instanceof OpenAI.APIUserAbortError) {\n return { code: 'ai_aborted', message: raw.message, cause: raw, meta };\n }\n if (raw instanceof OpenAI.APIConnectionTimeoutError) {\n return { code: 'ai_timeout', message: raw.message, cause: raw, meta };\n }\n if (raw instanceof OpenAI.APIConnectionError) {\n return { code: 'ai_network_error', message: raw.message, cause: raw, meta };\n }\n return {\n code: raw.status != null ? codeForStatus(raw.status) : 'ai_provider_error',\n message: raw.message,\n cause: raw,\n meta,\n };\n }\n return {\n code: 'ai_network_error',\n message: raw instanceof Error ? raw.message : String(raw),\n cause: raw,\n };\n}\n","import {\n DeleteObjectCommand,\n GetObjectCommand,\n ListObjectsV2Command,\n PutObjectCommand,\n S3Client,\n type ListObjectsV2CommandOutput,\n} from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { err, ok, type Result, type SdkError } from '../../../result';\n\nexport interface StorageObject {\n key: string;\n size: number;\n lastModified?: Date;\n etag?: string;\n}\n\nexport interface UploadOptions {\n contentType?: string;\n metadata?: Record<string, string>;\n}\n\nexport interface ListOptions {\n prefix?: string;\n /** Maximum number of objects to return per page. Must be > 0. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface SignedUrlOptions {\n /** Seconds until the URL expires. Defaults to 3600 (1h). */\n expiresIn?: number;\n /** Only honoured by `getSignedUploadUrl` — pinned into the signature so the uploader must send a matching `Content-Type`. */\n contentType?: string;\n}\n\nexport interface SignedUrl {\n url: string;\n expiresAt: Date;\n}\n\nexport type StorageBody = Blob | Uint8Array | string;\n\ninterface S3Settings {\n client: S3Client;\n endpoint: string;\n bucket: string;\n agentId: string;\n}\n\ninterface ResolvedKey extends S3Settings {\n /** Multi-tenant key sent to S3 — `${agentId}/${bucketName}/${userKey}`. */\n fullKey: string;\n}\n\nconst DEFAULT_SIGNED_URL_TTL_SECONDS = 3600;\n\n/**\n * Public surface behind `client.storage`. Wraps `@aws-sdk/client-s3` against\n * R2 (prod) or MinIO (dev). Exposes a bucket-scoped API via `from(bucket)`.\n *\n * Multi-tenancy: every key is prefixed with `agentId/bucket/` before hitting\n * S3. Credentials are scoped to the agent's physical bucket (env `S3_BUCKET`),\n * and the `bucket` argument is a logical namespace the agent uses to organise\n * its own objects. The full prefixed key is an internal detail — public\n * methods accept and return the user-facing key (without prefix). Metadata\n * tracking in `_storage_objects` (Neon) is out-of-scope for this iteration.\n *\n * Memory note: `download()` materialises the whole object as a `Blob` in\n * memory. For agents that need to stream large objects, prefer\n * `getSignedDownloadUrl()` and `fetch()` the URL directly to consume the\n * stream incrementally.\n */\nexport class StorageModule {\n private _s3: S3Client | null = null;\n private readonly _gate: ModuleGate;\n\n constructor(\n private readonly _resolved: ResolvedConfig,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('storage', _resolved);\n }\n\n from(bucket: string): StorageBucket {\n return new StorageBucket(bucket, () => this.settings(), this._gate);\n }\n\n private settings(): Result<S3Settings> {\n const accessKeyId = this._resolved.s3AccessKeyId;\n const secretAccessKey = this._resolved.s3SecretAccessKey;\n const endpoint = this._resolved.s3Endpoint;\n const bucket = this._resolved.s3Bucket;\n const agentId = this._resolved.agentId;\n const region = this._resolved.s3Region;\n\n if (!accessKeyId || !secretAccessKey || !endpoint) {\n return err({\n code: 's3_credentials_missing',\n message: S3_CREDENTIALS_MISSING_MESSAGE,\n });\n }\n if (!bucket) {\n return err({ code: 's3_bucket_missing', message: S3_BUCKET_MISSING_MESSAGE });\n }\n if (!agentId) {\n return err({ code: 'agent_id_missing', message: AGENT_ID_MISSING_MESSAGE });\n }\n\n this._s3 ??= new S3Client({\n endpoint,\n region,\n forcePathStyle: true,\n credentials: { accessKeyId, secretAccessKey },\n });\n return ok({ client: this._s3, endpoint, bucket, agentId });\n }\n}\n\nexport class StorageBucket {\n constructor(\n private readonly bucketName: string,\n private readonly resolveSettings: () => Result<S3Settings>,\n private readonly gate: ModuleGate,\n ) {}\n\n async upload(\n key: string,\n body: StorageBody,\n options?: UploadOptions,\n ): Promise<Result<{ key: string; etag?: string }>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n const response = await client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: fullKey,\n Body: body,\n ContentType: options?.contentType,\n Metadata: options?.metadata,\n }),\n );\n const etag = stripEtag(response.ETag);\n return ok(etag === undefined ? { key } : { key, etag });\n } catch (cause) {\n return err(toStorageError('Upload failed', cause));\n }\n }\n\n async download(key: string): Promise<Result<Blob>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n const response = await client.send(new GetObjectCommand({ Bucket: bucket, Key: fullKey }));\n const body = response.Body;\n if (!body) {\n return err({\n code: 's3_empty_response',\n message: `S3 returned an empty body for ${fullKey}`,\n });\n }\n const bytes = await body.transformToByteArray();\n // `transformToByteArray` returns a plain ArrayBuffer-backed Uint8Array.\n // Its generic upper bound (`ArrayBufferLike`) includes `SharedArrayBuffer`,\n // which `BlobPart` rejects, so narrow it for the Blob slot.\n return ok(\n new Blob([bytes as Uint8Array<ArrayBuffer>], {\n type: response.ContentType ?? 'application/octet-stream',\n }),\n );\n } catch (cause) {\n return err(toStorageError('Download failed', cause));\n }\n }\n\n async list(\n options?: ListOptions,\n ): Promise<Result<{ objects: readonly StorageObject[]; nextCursor?: string }>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(options?.prefix ?? '');\n if (resolved.error) return err(resolved.error);\n const { client, bucket, agentId, fullKey: basePrefix } = resolved.data;\n const limit = options?.limit;\n if (limit !== undefined && limit <= 0) {\n return err({\n code: 's3_invalid_argument',\n message: '`limit` must be a positive integer',\n });\n }\n try {\n const response: ListObjectsV2CommandOutput = await client.send(\n new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: basePrefix,\n ...(limit !== undefined ? { MaxKeys: limit } : {}),\n ...(options?.cursor ? { ContinuationToken: options.cursor } : {}),\n }),\n );\n const stripPrefix = `${agentId}/${this.bucketName}/`;\n const objects: StorageObject[] = (response.Contents ?? []).map((item) => {\n const itemKey = item.Key?.startsWith(stripPrefix)\n ? item.Key.slice(stripPrefix.length)\n : (item.Key ?? '');\n const obj: StorageObject = { key: itemKey, size: item.Size ?? 0 };\n if (item.LastModified) obj.lastModified = item.LastModified;\n const etag = stripEtag(item.ETag);\n if (etag) obj.etag = etag;\n return obj;\n });\n const nextCursor =\n response.IsTruncated && response.NextContinuationToken\n ? response.NextContinuationToken\n : undefined;\n return ok(nextCursor === undefined ? { objects } : { objects, nextCursor });\n } catch (cause) {\n return err(toStorageError('List failed', cause));\n }\n }\n\n async remove(key: string): Promise<Result<{ key: string }>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n try {\n await client.send(new DeleteObjectCommand({ Bucket: bucket, Key: fullKey }));\n return ok({ key });\n } catch (cause) {\n return err(toStorageError('Delete failed', cause));\n }\n }\n\n /**\n * Returns the canonical S3-style URL for an object. Pure URL-builder — no\n * S3 round-trip — so this method intentionally bypasses the contract gate.\n * Whether the URL is publicly fetchable depends on the bucket policy; for\n * private buckets, use `getSignedDownloadUrl` instead.\n */\n getPublicUrl(key: string): Result<string> {\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { endpoint, bucket, fullKey } = resolved.data;\n const base = endpoint.replace(/\\/+$/, '');\n return ok(`${base}/${bucket}/${encodeS3Key(fullKey)}`);\n }\n\n async getSignedUploadUrl(key: string, options?: SignedUrlOptions): Promise<Result<SignedUrl>> {\n return this.signUrl(\n key,\n options,\n 'Signing upload URL failed',\n ({ bucket, fullKey }) =>\n new PutObjectCommand({ Bucket: bucket, Key: fullKey, ContentType: options?.contentType }),\n );\n }\n\n async getSignedDownloadUrl(key: string, options?: SignedUrlOptions): Promise<Result<SignedUrl>> {\n return this.signUrl(\n key,\n options,\n 'Signing download URL failed',\n ({ bucket, fullKey }) => new GetObjectCommand({ Bucket: bucket, Key: fullKey }),\n );\n }\n\n private async signUrl(\n key: string,\n options: SignedUrlOptions | undefined,\n failureMessage: string,\n buildCommand: (args: {\n bucket: string;\n fullKey: string;\n }) => PutObjectCommand | GetObjectCommand,\n ): Promise<Result<SignedUrl>> {\n const gateResult = await this.gate();\n if (gateResult.error) return err(gateResult.error);\n const resolved = this.resolve(key);\n if (resolved.error) return err(resolved.error);\n const { client, bucket, fullKey } = resolved.data;\n const expiresIn = options?.expiresIn ?? DEFAULT_SIGNED_URL_TTL_SECONDS;\n try {\n const url = await getSignedUrl(client, buildCommand({ bucket, fullKey }), { expiresIn });\n return ok({ url, expiresAt: new Date(Date.now() + expiresIn * 1000) });\n } catch (cause) {\n return err(toStorageError(failureMessage, cause));\n }\n }\n\n /**\n * Resolves S3 settings, validates the user key, and prefixes it with\n * `${agentId}/${bucketName}/`. Rejects path-traversal segments (`..`) so a\n * caller-controlled key cannot escape the agent's namespace.\n */\n private resolve(key: string): Result<ResolvedKey> {\n const settings = this.resolveSettings();\n if (settings.error) return err(settings.error);\n const normalisedKey = key.replace(/^\\/+/, '');\n if (/(^|\\/)\\.\\.(\\/|$)/.test(normalisedKey)) {\n return err({\n code: 's3_invalid_key',\n message: `Invalid storage key: path traversal segments are not allowed (received \"${key}\")`,\n });\n }\n const { agentId } = settings.data;\n const fullKey = normalisedKey\n ? `${agentId}/${this.bucketName}/${normalisedKey}`\n : `${agentId}/${this.bucketName}/`;\n return ok({ ...settings.data, fullKey });\n }\n}\n\nconst S3_CREDENTIALS_MISSING_MESSAGE =\n 'Cannot reach object storage — set `STACKBONE_S3_ACCESS_KEY`, `STACKBONE_S3_SECRET_KEY`, and `STACKBONE_S3_ENDPOINT` in the container or pass `s3` to `createClient({...})`.';\nconst S3_BUCKET_MISSING_MESSAGE =\n 'No storage bucket configured — set `STACKBONE_S3_BUCKET` in the container or pass `s3.bucket` to `createClient({...})`.';\nconst AGENT_ID_MISSING_MESSAGE =\n 'No agent identity configured — set `STACKBONE_AGENT_ID` in the container or pass `agentId` to `createClient({...})`.';\n\nfunction stripEtag(etag: string | undefined): string | undefined {\n return etag?.replace(/^\"|\"$/g, '');\n}\n\nfunction encodeS3Key(key: string): string {\n return key.split('/').map(encodeURIComponent).join('/');\n}\n\ninterface AwsServiceErrorShape {\n $metadata?: { httpStatusCode?: number };\n $fault?: 'client' | 'server';\n}\n\nfunction toStorageError(message: string, cause: unknown): SdkError {\n if (cause instanceof Error) {\n const aws = cause as Error & AwsServiceErrorShape;\n const meta: Record<string, unknown> = { name: aws.name };\n if (aws.$metadata?.httpStatusCode !== undefined) {\n meta['httpStatusCode'] = aws.$metadata.httpStatusCode;\n }\n if (aws.$fault) meta['fault'] = aws.$fault;\n return {\n code: 's3_error',\n message: `${message}: ${cause.message}`,\n cause,\n meta,\n };\n }\n return { code: 's3_error', message, cause };\n}\n","import type { ChatCompletionMessageParam } from 'openai/resources';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { notImplemented, type Result } from '../../../result';\n\n/**\n * Where a memory lives. Default `'user'`. `'session'` is short-lived and\n * collapsed (or dropped) by `endSession()`; `'agent'` is shared across every\n * user of the agent.\n */\nexport type MemoryScope = 'user' | 'session' | 'agent';\n\n/**\n * Either raw text or an OpenAI-shaped conversation. The future mem0 backend\n * accepts both: strings ingest verbatim, message arrays are summarised into\n * one or more facts.\n */\nexport type MemoryContent = string | ChatCompletionMessageParam[];\n\nexport interface AddMemoryRequest {\n userId: string;\n /** Conversation/session bucket. Required when `scope: 'session'`. */\n sessionId?: string;\n /** Default `'user'`. */\n scope?: MemoryScope;\n metadata?: Record<string, unknown>;\n}\n\nexport interface MemoryItem {\n id: string;\n content: string;\n userId: string;\n sessionId?: string;\n scope: MemoryScope;\n metadata?: Record<string, unknown>;\n /** ISO 8601 UTC timestamp. */\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface SearchMemoryOptions {\n userId?: string;\n sessionId?: string;\n /** 1..100. Default 10. */\n limit?: number;\n /** Minimum cosine similarity in [0, 1]. Hits below this are dropped. */\n threshold?: number;\n /** Metadata predicates AND-ed to the semantic match. */\n filters?: Record<string, unknown>;\n /** Restrict the search to a subset of scopes. Default: every scope. */\n includeScopes?: readonly MemoryScope[];\n}\n\nexport interface MemoryHit extends MemoryItem {\n /** Cosine similarity in [0, 1]. */\n score: number;\n}\n\nexport interface ListMemoryRequest {\n userId: string;\n /** 1..100. Default 50. */\n limit?: number;\n cursor?: string;\n}\n\nexport interface ListMemoryResult {\n items: readonly MemoryItem[];\n nextCursor?: string;\n}\n\nexport interface UpdateMemoryOptions {\n content?: string;\n /** Shallow-merged onto the existing metadata (mem0 semantics). */\n metadata?: Record<string, unknown>;\n}\n\nexport interface DeleteAllMemoryRequest {\n userId: string;\n}\n\nexport type MemoryHistoryEvent = 'created' | 'updated' | 'accessed' | 'deleted';\n\nexport interface MemoryHistoryEntry {\n id: string;\n memoryId: string;\n event: MemoryHistoryEvent;\n /** ISO 8601 UTC timestamp. */\n at: string;\n /** Identifier of who triggered the event (user id, agent id, etc.). */\n actor?: string;\n /** Content snapshot before the event. Only set for `updated`/`deleted`. */\n before?: string;\n /** Content snapshot after the event. Only set for `created`/`updated`. */\n after?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface EndSessionOptions {\n /** Persist session-scoped facts to long-term (`'user'`) memory before closing. Default `true`. */\n persist?: boolean;\n}\n\nexport interface EndSessionResult {\n sessionId: string;\n /** Number of session memories promoted to long-term storage. `0` when `persist: false`. */\n persisted: number;\n}\n\n/**\n * `client.memory` — long-term memory for the agent. The first iteration is a\n * scaffolding placeholder: every method returns `not_implemented`. The real\n * backend will be mem0 (`mem0ApiKey` / `MEM0_API_KEY`) and the public surface\n * defined here is the contract callers can already type against.\n *\n * Contract gating: not gated. Memory targets mem0 (a non-Stackbone partner),\n * so there is no Stackbone Agent Protocol capability to assert against. No\n * entry in `MODULE_CAPABILITIES` per the rule documented in\n * `contract/capability-registry.ts`. When/if the runtime moves to a\n * Stackbone-served backend we add the capability and wire the gate.\n */\nexport class MemoryModule {\n constructor(_resolved: ResolvedConfig) {\n // Constructor signature accepts ResolvedConfig for parity with the gated\n // surfaces. Runtime is not built yet (see class header comment).\n }\n\n async add(_content: MemoryContent, _request: AddMemoryRequest): Promise<Result<MemoryItem>> {\n return notImplemented('memory.add');\n }\n\n async search(\n _query: string,\n _options?: SearchMemoryOptions,\n ): Promise<Result<readonly MemoryHit[]>> {\n return notImplemented('memory.search');\n }\n\n async delete(_memoryId: string): Promise<Result<{ id: string }>> {\n return notImplemented('memory.delete');\n }\n\n async deleteAll(_request: DeleteAllMemoryRequest): Promise<Result<{ deleted: number }>> {\n return notImplemented('memory.deleteAll');\n }\n\n async get(_memoryId: string): Promise<Result<MemoryItem>> {\n return notImplemented('memory.get');\n }\n\n async list(_request: ListMemoryRequest): Promise<Result<ListMemoryResult>> {\n return notImplemented('memory.list');\n }\n\n async update(_memoryId: string, _options: UpdateMemoryOptions): Promise<Result<MemoryItem>> {\n return notImplemented('memory.update');\n }\n\n async history(_memoryId: string): Promise<Result<readonly MemoryHistoryEntry[]>> {\n return notImplemented('memory.history');\n }\n\n async endSession(\n _sessionId: string,\n _options?: EndSessionOptions,\n ): Promise<Result<EndSessionResult>> {\n return notImplemented('memory.endSession');\n }\n}\n","import {\n type ListSchedulesResponse,\n listSchedulesResponseSchema,\n type PublishJobResponse,\n publishJobResponseSchema,\n type ScheduleJobResponse,\n scheduleJobResponseSchema,\n type UnscheduleJobResponse,\n unscheduleJobResponseSchema,\n} from '@stackbone/validators';\n\nimport { type ResolvedConfig } from '../../../config';\nimport { createModuleGate, type ModuleGate } from '../../../contract/module-gate';\nimport { type ErrorMapping, type HttpClient } from '../../../lib/http-client';\nimport { err, type Result } from '../../../result';\n\n/**\n * Base path of the control-plane job-enqueue surface implemented by the\n * BullMQ dispatcher (`apps/api/src/modules/agent-jobs`). Relative to the\n * configured `STACKBONE_API_URL` (the `HttpClient` resolves it against the\n * base URL), so the wire path is `${STACKBONE_API_URL}/api/v1/agent/queues/*`.\n */\nconst QUEUES_BASE = 'api/v1/agent/queues';\n\n/** Every queues method remaps HTTP statuses onto `queues_*` domain codes. */\nconst ERROR_MAPPING: ErrorMapping = { prefix: 'queues' };\n\n/**\n * Enqueue a one-shot (or deferred) job. The opaque `payload` is whatever the\n * agent's `receive` handler expects — the core never inspects it.\n */\nexport interface PublishRequest {\n /** Opaque job name (e.g. `send-email`). Surfaced in the Studio inspector. */\n name: string;\n /** Opaque job payload — JSON-serialisable; the core forwards it untouched. */\n payload: unknown;\n /** Per-job override of the platform retry default. Omitted → platform default. */\n retries?: number;\n /** Deferred delivery in milliseconds. Omitted / 0 → immediate. */\n delay?: number;\n /** Idempotency hint — a duplicate publish with the same key collapses to one job. */\n deduplicationId?: string;\n}\n\n/** Register / update a dynamic per-installation cron schedule. */\nexport interface ScheduleRequest {\n /** Schedule name, unique per install. Re-scheduling the same name updates it in place. */\n name: string;\n /** Opaque payload delivered on every fire. */\n payload: unknown;\n /** Cron expression evaluated by the dispatcher. */\n cron: string;\n /** IANA timezone the cron pattern runs in. Defaults to UTC. */\n tz?: string;\n /** Per-job override of the platform retry default. */\n retries?: number;\n}\n\n/** Cancel a previously registered schedule by name. */\nexport interface UnscheduleRequest {\n name: string;\n}\n\n/**\n * `client.queues` — the agent's handle on the BullMQ-backed job system. The\n * agent never touches Redis: each method makes an authenticated call to the\n * control plane (the dispatcher owns the queue + the clock).\n *\n * - `publish` enqueues a one-shot job (optionally deferred via `delay`, with a\n * per-job `retries` override and an optional `deduplicationId`).\n * - `schedule` / `unschedule` manage dynamic per-user cron schedules.\n * - `listSchedules` lists the install's active schedules.\n *\n * Authentication reuses the existing `STACKBONE_AGENT_JWT` channel injected at\n * provisioning (the `HttpClient` attaches the bearer + install header), so the\n * core scopes every enqueue to the agent's own install.\n *\n * Contract gating: every method awaits the `queues.jobs` module gate before\n * touching the network, so a stale datapath / missing capability surfaces as\n * a gating error rather than a failed POST.\n */\nexport class QueuesModule {\n private readonly _gate: ModuleGate;\n\n constructor(\n resolved: ResolvedConfig,\n private readonly _http: HttpClient,\n /** Test seam — see `ModuleGate`. Defaults to the lazy contract gate. */\n gate?: ModuleGate,\n ) {\n this._gate = gate ?? createModuleGate('queues', resolved);\n }\n\n async publish(request: PublishRequest): Promise<Result<PublishJobResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n\n // Drop undefined knobs so the strict request schema on the core sees only\n // the fields the caller actually set.\n const body: Record<string, unknown> = { name: request.name, payload: request.payload };\n if (request.retries !== undefined) body['retries'] = request.retries;\n if (request.delay !== undefined) body['delay'] = request.delay;\n if (request.deduplicationId !== undefined) body['deduplicationId'] = request.deduplicationId;\n\n return this._http.request<PublishJobResponse>({\n method: 'POST',\n path: `${QUEUES_BASE}/publish`,\n body,\n responseSchema: publishJobResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n }\n\n async schedule(request: ScheduleRequest): Promise<Result<ScheduleJobResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n\n const body: Record<string, unknown> = {\n name: request.name,\n payload: request.payload,\n cron: request.cron,\n };\n if (request.tz !== undefined) body['tz'] = request.tz;\n if (request.retries !== undefined) body['retries'] = request.retries;\n\n return this._http.request<ScheduleJobResponse>({\n method: 'POST',\n path: `${QUEUES_BASE}/schedule`,\n body,\n responseSchema: scheduleJobResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n }\n\n async unschedule(request: UnscheduleRequest): Promise<Result<UnscheduleJobResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n\n return this._http.request<UnscheduleJobResponse>({\n method: 'POST',\n path: `${QUEUES_BASE}/unschedule`,\n body: { name: request.name },\n responseSchema: unscheduleJobResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n }\n\n async listSchedules(): Promise<Result<ListSchedulesResponse>> {\n const gateResult = await this._gate();\n if (gateResult.error) return err(gateResult.error);\n\n return this._http.request<ListSchedulesResponse>({\n method: 'GET',\n path: `${QUEUES_BASE}/schedules`,\n responseSchema: listSchedulesResponseSchema,\n errorMapping: ERROR_MAPPING,\n });\n }\n}\n","import type { ContractResponse } from '@stackbone/validators';\n\nimport { type ClientConfig, resolveConfig, type ResolvedConfig } from './config';\nimport { type ContractStore, createContractStore } from './contract/contract-handshake';\nimport { createModuleGate } from './contract/module-gate';\nimport { HttpClient } from './lib/http-client';\nimport { ApprovalFacade } from './surfaces/agent-local/approval/approval';\nimport { ConfigFacade } from './surfaces/agent-local/config/config';\nimport { DatabaseModule } from './surfaces/agent-local/database/database';\nimport { PromptsFacade } from './surfaces/agent-local/prompts/prompts';\nimport { RagModule } from './surfaces/agent-local/rag/rag';\nimport { SecretsFacade } from './surfaces/agent-local/secrets/secrets';\nimport { AiModule } from './surfaces/external/ai/ai';\nimport { StorageModule } from './surfaces/external/storage/storage';\nimport { MemoryModule } from './surfaces/pending/memory/memory';\nimport { QueuesModule } from './surfaces/pending/queues/queues';\n\n/**\n * The live agent surfaces exposed to the creator's code through a single\n * `createClient()` entry point. The folder layout under `src/surfaces/`\n * groups each surface by where its state lives:\n *\n * - `surfaces/agent-local/` — Postgres branch owned by the agent\n * (`database`, `rag`, `secrets`, `config`, `approval`). `secrets`,\n * `config` and `approval` moved here from the control plane: the agent now\n * reads its secrets/config and records HITL pauses directly against its own\n * `stackbone_platform.*` tables (decrypting secrets with the per-agent key),\n * with no control-plane round-trip. The approval RESUME callback stays\n * Studio-signed and is reconciled locally by `approval.verify()`.\n * - `surfaces/external/` — managed partner SDKs the SDK wraps directly\n * (`ai` / OpenRouter, `storage` / S3 + R2 / MinIO). Observability is not a\n * creator surface: agent code observes runs through the handler-scoped\n * `ctx.logger` (and plain `console.*`, which the wrapper captures and\n * correlates), while the platform primitives live in the\n * `@stackbone/sdk/observability` subpath the runtime wires directly.\n * - `surfaces/control-plane/` — thin HTTP calls to Stackbone's control\n * plane (none today after secrets/config/approval moved agent-local).\n * - `surfaces/pending/` — public surface is stable but the runtime is\n * not built yet. They are wired as live `client.X` accessors so MVP\n * agent code can be authored against the eventual contract today; each\n * method returns `Result<{ error: { code: \"not_implemented\" } }>` until\n * the backing runtime ships. Today: queues, memory.\n *\n * Each accessor builds its surface on first access and caches it — env\n * vars and partner SDK init costs are paid only when the agent actually\n * touches that surface.\n *\n * Capability gating: every surface listed in `MODULE_CAPABILITIES` builds\n * its `ModuleGate` against the per-client `ContractStore` owned by this\n * instance — two clients constructed in the same process do NOT share\n * handshake cache or suppression-warning state. See\n * `contract/capability-registry.ts` for the membership rule.\n */\nexport class StackboneClient {\n private _database?: DatabaseModule;\n private _storage?: StorageModule;\n private _ai?: AiModule;\n private _rag?: RagModule;\n private _approval?: ApprovalFacade;\n private _secrets?: SecretsFacade;\n private _config?: ConfigFacade;\n private _queues?: QueuesModule;\n private _memory?: MemoryModule;\n private _prompts?: PromptsFacade;\n private _httpClient?: HttpClient;\n private readonly _contractStore: ContractStore;\n\n constructor(private readonly resolved: ResolvedConfig) {\n this._contractStore = createContractStore(resolved);\n }\n\n private http(): HttpClient {\n this._httpClient ??= new HttpClient(this.resolved);\n return this._httpClient;\n }\n\n get database(): DatabaseModule {\n this._database ??= new DatabaseModule(\n this.resolved,\n createModuleGate('database', this.resolved, this._contractStore),\n );\n return this._database;\n }\n\n get storage(): StorageModule {\n this._storage ??= new StorageModule(\n this.resolved,\n createModuleGate('storage', this.resolved, this._contractStore),\n );\n return this._storage;\n }\n\n get ai(): AiModule {\n this._ai ??= new AiModule(\n this.resolved,\n undefined,\n createModuleGate('ai', this.resolved, this._contractStore),\n );\n return this._ai;\n }\n\n get rag(): RagModule {\n this._rag ??= new RagModule(\n this.resolved,\n () => this.database,\n () => this.ai,\n createModuleGate('rag', this.resolved, this._contractStore),\n );\n return this._rag;\n }\n\n get approval(): ApprovalFacade {\n this._approval ??= new ApprovalFacade(this.resolved, () => this.database);\n return this._approval;\n }\n\n get secrets(): SecretsFacade {\n this._secrets ??= new SecretsFacade(this.resolved, () => this.database);\n return this._secrets;\n }\n\n get config(): ConfigFacade {\n this._config ??= new ConfigFacade(this.resolved, () => this.database);\n return this._config;\n }\n\n /**\n * Live surface — the agent's handle on the BullMQ-backed job system.\n * `publish` / `schedule` / `unschedule` / `listSchedules` make authenticated\n * calls to the control-plane dispatcher (`/api/v1/agent/queues/*`); the\n * agent never touches Redis. Gated against `queues.jobs` so the\n * handshake-blocked / capability-missing paths are exercised the same way\n * as the other gated surfaces.\n */\n get queues(): QueuesModule {\n this._queues ??= new QueuesModule(\n this.resolved,\n this.http(),\n createModuleGate('queues', this.resolved, this._contractStore),\n );\n return this._queues;\n }\n\n /**\n * Pending surface — runtime not built. Every method returns\n * `not_implemented`. Mem0 is a third-party integration, not a Stackbone\n * Agent Protocol capability, so this surface is intentionally not gated.\n */\n get memory(): MemoryModule {\n this._memory ??= new MemoryModule(this.resolved);\n return this._memory;\n }\n\n /**\n * Live agent-local surface — reads prompts from `stackbone_platform.prompts`\n * in the agent DB over the shared `client.database` pool and compiles\n * templates with the local `@stackbone/prompt-compiler`. Constructed with\n * the same `(resolved, () => this.database)` shape as `secrets`/`config`;\n * like them it is NOT wired to the control-plane handshake gate (it talks to\n * the agent's own tables, not a control-plane datapath).\n */\n get prompts(): PromptsFacade {\n this._prompts ??= new PromptsFacade(this.resolved, () => this.database);\n return this._prompts;\n }\n\n /**\n * Read-only view of the most recently resolved Stackbone Agent Protocol\n * contract for this client's `stackboneApiUrl`. Returns `null` until a\n * handshake has resolved successfully (the handshake fires lazily on the\n * first gated module call — slices #4/#5). Synchronous, never throws,\n * performs no fetches.\n *\n * Backed by this client's own `ContractStore`, so two `StackboneClient`\n * instances see independent `client.contract` views even when they point\n * at the same baseUrl.\n */\n get contract(): ContractResponse | null {\n return this._contractStore.peek(this.resolved.stackboneApiUrl);\n }\n}\n\nexport function createClient(config: ClientConfig = {}): StackboneClient {\n return new StackboneClient(resolveConfig(config));\n}\n","/**\n * The single source of truth for every `code` an `SdkError` may carry on the\n * `Result` envelope returned from a public SDK method. The README contract\n * (and every creator who pattern-matches on `result.error.code`) is driven by\n * this catalog — adding a new code means editing this file, and **only** this\n * file. The compiler then refuses to ship any `SdkError({ code: '<unknown>' })`\n * downstream.\n *\n * Shape:\n * - `SDK_ERROR_CODE_PREFIXES` declares each prefix family and the suffixes\n * it owns. `<prefix>` + `_<reason>` is the wire-level code.\n * - `SDK_ERROR_CODES_STANDALONE` declares the freestanding codes that don't\n * follow the `<prefix>_<reason>` rule (`not_implemented`, the various\n * `*_missing` setup-bug codes, the `capability_*` / `contract_*` shapes).\n * - `SdkErrorCode` is the union projected from both. Pass it to `err({...})`\n * and the constructor rejects any literal that isn't in this catalog.\n *\n * Stability contract: the wire-level shape of every code in this catalog is\n * part of the README's public error table. Codes are added behind a minor;\n * codes are removed behind a major and the CHANGELOG. Spelling tweaks (even\n * typos) wait for a major — fix the catalog and the call site together.\n */\n\n/**\n * Prefix families. Each entry maps a `<prefix>` to the tuple of `<reason>`\n * suffixes the SDK can emit under it. Two-step structure (object of tuples)\n * is what powers the typed projection at the bottom of this file: the\n * `as const` makes both the prefix names and the suffix strings into literal\n * types so `SdkErrorCode` collapses to a finite string union.\n */\nexport const SDK_ERROR_CODE_PREFIXES = {\n /**\n * `client.ai` — wraps the OpenAI SDK pointed at OpenRouter. Status codes\n * come from `codeForStatus` in `ai.ts` plus the fetch-error mapper.\n */\n ai: [\n 'aborted',\n 'credits_exhausted',\n 'forbidden',\n 'moderation_blocked',\n 'network_error',\n 'no_image_generated',\n 'provider_error',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'validation_error',\n ],\n\n /**\n * `client.storage` — wraps `@aws-sdk/client-s3` against R2/MinIO. Most\n * failures collapse into `s3_error` with the AWS metadata on `meta`; the\n * specific codes below are the early validation paths.\n */\n s3: [\n 'bucket_missing',\n 'credentials_missing',\n 'empty_response',\n 'error',\n 'invalid_argument',\n 'invalid_key',\n ],\n\n /**\n * `client.rag` — the agent-local retrieval pipeline. `invalid_request` is\n * the validation rail; the rest map specific Postgres / embedder failures\n * the README documents.\n */\n rag: [\n 'dim_mismatch',\n 'embedding_failed',\n 'embedding_model_unsupported',\n 'error',\n 'ingest_cancelled',\n 'invalid_request',\n 'job_insert_failed',\n 'jobs_error',\n 'schema_missing',\n ],\n\n /**\n * `client.approval` — AGENT-LOCAL DB facade plus the HMAC verify helper.\n * The request/cancel/get/list codes (`persist_failed`, `cancel_failed`,\n * `unavailable`) come from the direct write/read against\n * `stackbone_platform.approvals`; the verify-specific codes\n * (`invalid_signature`, etc.) are emitted locally.\n */\n approval: [\n 'cancel_failed',\n 'forbidden',\n 'invalid_payload',\n 'invalid_request',\n 'invalid_response',\n 'invalid_signature',\n 'not_found',\n 'persist_failed',\n 'rate_limited',\n 'signature_expired',\n 'signing_key_missing',\n 'timeout',\n 'tool_execute_failed',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.secrets` — AGENT-LOCAL facade. Reads `stackbone_platform.secrets`\n * over the shared `client.database` pool and decrypts with the per-agent\n * key. `not_configured` covers a missing `STACKBONE_SECRET_KEY`;\n * `decrypt_failed` covers a key/envelope mismatch; `unavailable` covers a\n * failed DB read.\n */\n secrets: [\n 'already_exists',\n 'decrypt_failed',\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'not_configured',\n 'not_found',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.config` — AGENT-LOCAL facade, reads the singleton\n * `stackbone_platform.agent_config` row over the shared `client.database`\n * pool.\n */\n config: [\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'not_found',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.queues` — the agent → control plane job-enqueue surface. Every\n * method (`publish`, `schedule`, `unschedule`, `listSchedules`) POSTs/GETs\n * the BullMQ dispatcher endpoints over `HttpClient`, so the full\n * status→domain remap (`queues_unauthorized`, `queues_not_found`,\n * `queues_unavailable`, …) is in play. The agent never touches Redis — it\n * only calls these endpoints.\n */\n queues: [\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'not_found',\n 'rate_limited',\n 'timeout',\n 'unauthorized',\n 'unavailable',\n ],\n\n /**\n * `client.prompts` — AGENT-LOCAL facade. Reads\n * `stackbone_platform.prompts` / `prompt_versions` over the shared\n * `client.database` pool and compiles templates with the local\n * `@stackbone/prompt-compiler` (Mustache subset). `not_configured` covers a\n * missing prompts schema (the `42P01` \"run `stackbone db migrate up`\" hint);\n * `not_found` covers an absent / soft-deleted key; `missing_var` is the\n * compile-time diagnostic when a `{{var}}` has no value; `unavailable`\n * covers a failed DB read; `already_exists` covers a duplicate `create`.\n */\n prompts: [\n 'already_exists',\n 'invalid_request',\n 'missing_var',\n 'not_configured',\n 'not_found',\n 'unavailable',\n ],\n\n /**\n * `client.memory` — reserved. The README documents the prefix; today the\n * pending surface returns `not_implemented` for every method so no\n * `memory_*` codes are emitted yet. Kept as an empty bucket so the\n * catalog matches the README table verbatim.\n */\n memory: [] as readonly string[],\n\n /**\n * Transport-level error family — `HttpClient` emits these when no\n * facade-specific `errorMapping.prefix` is configured, or when the\n * failure is pre-/post-HTTP (DNS, abort, body parse).\n */\n http: [\n 'aborted',\n 'client_error',\n 'forbidden',\n 'invalid_request',\n 'invalid_response',\n 'network_error',\n 'not_found',\n 'parse_error',\n 'rate_limited',\n 'request_failed',\n 'server_error',\n 'timeout',\n 'unauthorized',\n ],\n\n /**\n * `client.database` (and its cross-surface consumers) — the setup-bug\n * surface stays under one prefix so creators can pattern-match on\n * `database_*` regardless of whether the failure came from the database\n * module, RAG, or the observability run-cost hook.\n */\n database: ['not_configured'],\n\n /**\n * Observability — the run-cost rollup hook in `@stackbone/sdk/observability`\n * (wired by the runtime, not a creator surface) emits this when its post-run\n * Postgres write fails; everything else either returns ok or surfaces through\n * the `database_*` family above.\n */\n observability: ['close_run_failed'],\n\n /**\n * Contract handshake / gating family — emitted by the per-client\n * `ContractStore` and consumed by every gated facade as a hard error.\n * Documented for creators in the gating section of the SDK ADRs.\n */\n contract: ['malformed', 'unreachable', 'version_unsupported'],\n\n /**\n * Capability gating family — the single code is the table-driven block\n * the gate returns when the negotiated contract lacks the required\n * capability. The shape lives in `@stackbone/validators`; the SDK widens\n * it into `SdkError` verbatim.\n */\n capability: ['unavailable'],\n} as const satisfies Record<string, readonly string[]>;\n\n/**\n * Freestanding codes — they don't follow the `<prefix>_<reason>` rule, so\n * they live as full literals here. Two families:\n *\n * - `not_implemented` for the pending surfaces' stubbed methods.\n * - `*_missing` for the setup-bug rail every facade checks before its\n * first network call (`STACKBONE_API_URL`, `STACKBONE_AGENT_ID`,\n * `OPENROUTER_API_KEY`, `STACKBONE_POSTGRES_URL`).\n */\nexport const SDK_ERROR_CODES_STANDALONE = [\n 'agent_id_missing',\n 'database_url_missing',\n 'not_implemented',\n 'openrouter_key_missing',\n 'stackbone_api_url_missing',\n] as const;\n\n/**\n * Type-level projection: `<prefix>_<reason>` for every entry of\n * `SDK_ERROR_CODE_PREFIXES`, plus the standalone codes. The trick is the\n * second mapped-tuple step: `(typeof SDK_ERROR_CODE_PREFIXES)[P][number]`\n * collapses the tuple to the union of its suffixes, then template-string\n * inference builds the full code.\n */\ntype Prefix = keyof typeof SDK_ERROR_CODE_PREFIXES;\n\ntype PrefixedCode<P extends Prefix = Prefix> = {\n [K in P]: `${K}_${(typeof SDK_ERROR_CODE_PREFIXES)[K][number]}`;\n}[P];\n\nexport type SdkErrorCode = PrefixedCode | (typeof SDK_ERROR_CODES_STANDALONE)[number];\n\n/**\n * Runtime mirror of `SdkErrorCode`. Powers the exhaustiveness check the\n * contract test uses to confirm every code emitted by `HttpClient` (and\n * every catalog suffix the SDK declares) is reachable from a `Set`-level\n * lookup. The order of construction is deliberate: the catalog above is the\n * declaration surface; this `Set` is a derived shape, not a parallel list.\n */\n// Built as a `Set<string>` so the type-guard below can call `has()` with an\n// untyped wire string; the public export narrows to `ReadonlySet<SdkErrorCode>`\n// so callers outside this file can't accidentally `has()` something arbitrary\n// and have it type-check.\nconst ALL_CODES = new Set<string>(SDK_ERROR_CODES_STANDALONE);\nfor (const [prefix, reasons] of Object.entries(SDK_ERROR_CODE_PREFIXES)) {\n for (const reason of reasons) {\n ALL_CODES.add(`${prefix}_${reason}`);\n }\n}\n\nexport const SDK_ERROR_CODES: ReadonlySet<SdkErrorCode> = ALL_CODES as ReadonlySet<SdkErrorCode>;\n\n/**\n * Type guard for callers that receive a raw string from the wire (e.g. a\n * decoded JSON body) and want to narrow it to the catalog. Returns false\n * for any unknown code so the caller can decide whether to re-throw,\n * fall back, or surface the raw string.\n */\nexport function isSdkErrorCode(code: string): code is SdkErrorCode {\n return ALL_CODES.has(code);\n}\n\n/**\n * Prefix names exposed as a tuple for the `errorMapping.prefix` slot on\n * `HttpClient.request`. Statically tying the transport's prefix to the\n * catalog keeps `<prefix>_<reason>` emissions inside `SdkErrorCode` —\n * adding a new prefix means adding it here AND a `<prefix>_invalid_request`\n * / `<prefix>_invalid_response` / standard status-mapped suffix to the\n * catalog above.\n */\nexport type SdkErrorPrefix = Prefix;\n","import type { z } from 'zod';\n\nimport type { StackboneClient } from '../client';\n\nimport type { Logger } from './logger';\n\n/**\n * The data the wrapper hands to the creator's `run` function. F5 widens the\n * shape from F1's bare `{ input }` to the full per-invocation context:\n *\n * - `signal` is a fresh `AbortSignal` per invocation. The wrapper aborts\n * it when the deadline expires; the handler is expected to honour it\n * on cancellable work (fetches, DB queries, model calls).\n * - `invocationId` / `runId` come straight from the parsed envelope.\n * - `client` is the **same** `StackboneClient` instance for every\n * invocation in the process, so sub-modules can keep their internal\n * pools warm.\n * - `logger` is a child of the wrapper's structured logger already\n * bound to `invocationId` and `runId`, so the handler does not have to\n * pass them on every line. The actual JSON format lands in F6.\n */\nexport interface InvokeContext<I extends z.ZodType> {\n input: z.infer<I>;\n signal: AbortSignal;\n invocationId: string;\n runId: string;\n client: StackboneClient;\n logger: Logger;\n}\n\n/**\n * The synchronous `invoke` capability. Mirrors the wrapper's three HTTP verbs\n * (`/invoke`, `/health`, `/schema`): `invoke` is the only request path, its\n * `output` is the `/invoke` response body, and its schemas drive `/schema`.\n *\n * The fields are deliberately enumerated (no `[k: string]: unknown` escape\n * hatch) so the precise type the creator gets from `defineAgent` rejects\n * unknown keys on the block at compile time.\n */\nexport interface InvokeCapability<I extends z.ZodType, O extends z.ZodType> {\n /** Zod schema for the parsed `/invoke` request body. */\n input: I;\n /** Zod schema for the `/invoke` response body. */\n output: O;\n /** Creator-supplied handler. Returns either the parsed output or a promise of it. */\n run: (ctx: InvokeContext<I>) => z.infer<O> | Promise<z.infer<O>>;\n /** Optional per-invocation timeout in milliseconds. */\n timeoutMs?: number;\n}\n\n/**\n * A named **job handler** — a sibling of `invoke` at the top level of the spec,\n * reached asynchronously via `client.queues.publish({ name })` (the BullMQ\n * dispatcher pushes the job back to `/invoke` with that name; the wrapper routes\n * it here instead of to `invoke.run`).\n *\n * Same shape as `invoke` with one difference: `output` is **optional**. A job is\n * fire-and-forget — the dispatcher only checks the 2xx, the return value is\n * journalled, not delivered to a caller. Declaring `output` self-validates the\n * job's result; omitting it lets `run` return anything (or nothing).\n */\nexport interface JobCapability<I extends z.ZodType, O extends z.ZodType = z.ZodType> {\n /** Zod schema for the job payload (`publish`'s `payload`, revalidated here). */\n input: I;\n /** Optional Zod schema for the job's return value. Validated + journalled, never returned. */\n output?: O;\n /** Creator-supplied job handler. May return nothing — the result is not delivered. */\n run: (ctx: InvokeContext<I>) => z.infer<O> | void | Promise<z.infer<O> | void>;\n /** Optional per-job timeout in milliseconds. */\n timeoutMs?: number;\n}\n\n/**\n * Loose, non-generic view of a single capability (invoke or a job handler).\n * The wrapper / `loadSpec` read the spec through this — the precise per-handler\n * typing lives on the value `defineAgent` returns to the creator, not here.\n *\n * `run` is a method signature (not an arrow property) on purpose: it makes the\n * parameter bivariant so every concrete `InvokeCapability` / `JobCapability`\n * (whose `run` is typed against its own narrow input) is assignable to it, which\n * is what lets `AgentSpec` carry a string index signature of capabilities.\n */\nexport interface AnyCapability {\n input: z.ZodType;\n output?: z.ZodType | undefined;\n run(ctx: InvokeContext<z.ZodType>): unknown;\n timeoutMs?: number | undefined;\n}\n\n/**\n * The declarative shape every Stackbone agent returns from `src/index.ts`, as\n * the wrapper / `loadSpec` consume it: the **loose runtime view**. Every\n * capability — `invoke` and each named job handler — is an `AnyCapability`\n * (`output` optional, `run` loose). `invoke` is required; the string index\n * carries the job handlers, reached by name through the BullMQ dispatcher.\n *\n * The precise per-handler typing (each `ctx.input` inferred, `invoke.output`\n * required) lives on the value `defineAgent` returns, which is assignable to\n * this. At runtime `invoke.output` is always present — the spec seed forces it —\n * so the wrapper reads it behind a small guard.\n */\nexport interface AgentSpec {\n /** The synchronous entry: the `/invoke` response + the `GET /schema` source. */\n invoke: AnyCapability;\n /** Named job handlers, reached via `client.queues.publish({ name })`. */\n [name: string]: AnyCapability;\n}\n\n/**\n * Top-level keys the platform owns. A job handler may not use these names.\n * Only `invoke` for now; the contract adds `health` / `schema` / `events` /\n * `schedules` here if/when they become declarable capabilities (see the named\n * job handlers ADR).\n */\nexport const RESERVED_HANDLER_NAMES = ['invoke'] as const;\n\n/** Keys allowed on any capability block (invoke or a job handler). */\nconst KNOWN_CAPABILITY_KEYS = ['input', 'output', 'run', 'timeoutMs'] as const;\n\n/**\n * Hard ceiling on any capability's `timeoutMs`. The platform saga kills the\n * Machine before the wrapper would time out at higher values, so a creator\n * declaring a 10-minute timeout would publish a contract the runtime cannot\n * keep. Surface that conflict at boot instead of as a mysterious mid-invocation\n * SIGKILL in production.\n */\nexport const INVOKE_TIMEOUT_HARD_CAP_MS = 300_000;\n\n/**\n * One handler block, generic **directly** on its input Zod schema `I`. `input: I`\n * is a single-level type parameter (not a nested indexed access like\n * `S['input']`), which is the shape TypeScript can invert when reading the spec\n * literal back — so every handler's `ctx.input` is inferred from its own schema.\n * `output` stays loose (`z.ZodType`) and `run`'s return is `unknown`: a handler's\n * result is validated against `output` at runtime (the wrapper), not at the type\n * layer, so output inference is not needed for the contract to hold.\n */\ntype HandlerBlock<I extends z.ZodType> = {\n input: I;\n output?: z.ZodType;\n run: (ctx: InvokeContext<I>) => unknown | Promise<unknown>;\n timeoutMs?: number;\n};\n\n/**\n * Per-key precise shape of the spec the creator writes. `T` maps each handler\n * name to its **input** schema; `[K in keyof T]: HandlerBlock<T[K]>` is a\n * homomorphic mapped type whose value (`input: T[K]`) is a single-level access,\n * so TypeScript infers `T` back from the literal and keeps the concrete key\n * names. The `& { invoke: ... }` arm makes `invoke` required and forces its\n * `output` to be present (a job's `output` is optional).\n */\ntype AgentSpecParam<T extends Record<string, z.ZodType>> = {\n [K in keyof T]: HandlerBlock<T[K]>;\n} & { invoke: { input: z.ZodType; output: z.ZodType } };\n\n/**\n * Anchor + guard for `defineAgent`:\n *\n * 1. **Inference anchor** — each handler (`invoke` and every named job) infers\n * its own `ctx.input` from its `input` schema. The creator never repeats a\n * type.\n * 2. **Boot-time invariant** — `invoke` is required; every other top-level key\n * must be a valid handler object reached via `client.queues.publish({ name })`.\n * The TypeScript signature already shapes this; the runtime guard is the\n * safety net for creators forcing a shape through `as any`.\n *\n * Returns the spec verbatim so callers can `export default defineAgent({...})`\n * and the wrapper can read the same object back through dynamic import.\n */\nexport function defineAgent<T extends Record<string, z.ZodType>>(\n spec: AgentSpecParam<T>,\n): { [K in keyof T]: HandlerBlock<T[K]> } {\n if (spec === null || typeof spec !== 'object') {\n throw new TypeError('defineAgent: spec must be a non-null object');\n }\n\n const record = spec as Record<string, unknown>;\n const topLevelKeys = Object.keys(record);\n\n // `invoke` is required and reserved — the synchronous entry the platform calls\n // on a direct /invoke and the schema `GET /schema` advertises.\n const invoke = record['invoke'];\n if (invoke === undefined || invoke === null || typeof invoke !== 'object') {\n throw new TypeError(\n 'defineAgent: missing `invoke` block. Every agent must declare `defineAgent({ invoke: {...} })`.',\n );\n }\n\n // Every other top-level key is a named job handler reached via\n // `client.queues.publish({ name })`. Collect the ones that are not even a\n // handler object first, so a typo'd or stray key is reported in one aggregate\n // message (mirrors how the old closed whitelist listed every offender).\n const jobKeys = topLevelKeys.filter((key) => key !== 'invoke');\n const notHandlers = jobKeys.filter((key) => !looksLikeHandler(record[key]));\n if (notHandlers.length > 0) {\n throw new TypeError(\n `defineAgent: top-level key(s) ${notHandlers.join(', ')} are not valid handlers. ` +\n 'Besides the reserved `invoke`, every top-level key must be a job handler ' +\n '`{ input, run, output?, timeoutMs? }` reached via client.queues.publish({ name }).',\n );\n }\n\n // Validate the inner shape of `invoke` and every job handler uniformly.\n for (const key of topLevelKeys) {\n assertCapabilityShape(key, record[key]);\n }\n\n return spec;\n}\n\n/** A value is handler-ish when it is an object exposing a `run` function. */\nfunction looksLikeHandler(value: unknown): boolean {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { run?: unknown }).run === 'function'\n );\n}\n\n/**\n * Assert one capability block (`invoke` or a job handler) is well-formed: only\n * known keys, a `run` function, and a `timeoutMs` (when set) that is finite and\n * under the hard cap. Throws a `name`-tagged error so the offending block is\n * obvious in the boot log.\n */\nfunction assertCapabilityShape(name: string, capability: unknown): void {\n if (typeof capability !== 'object' || capability === null) {\n throw new TypeError(`defineAgent: \\`${name}\\` must be a handler object.`);\n }\n\n const unknownKeys = Object.keys(capability).filter(\n (key) => !(KNOWN_CAPABILITY_KEYS as readonly string[]).includes(key),\n );\n if (unknownKeys.length > 0) {\n throw new TypeError(\n `defineAgent: unknown key(s) on \\`${name}\\`: ${unknownKeys.join(', ')}. ` +\n `Allowed keys are: ${KNOWN_CAPABILITY_KEYS.join(', ')}.`,\n );\n }\n\n if (typeof (capability as { run?: unknown }).run !== 'function') {\n throw new TypeError(`defineAgent: \\`${name}.run\\` must be a function.`);\n }\n\n const timeoutMs = (capability as { timeoutMs?: unknown }).timeoutMs;\n if (timeoutMs !== undefined) {\n if (typeof timeoutMs !== 'number' || !Number.isFinite(timeoutMs)) {\n throw new TypeError(\n `defineAgent: \\`${name}.timeoutMs\\` must be a finite number of milliseconds.`,\n );\n }\n if (timeoutMs > INVOKE_TIMEOUT_HARD_CAP_MS) {\n throw new RangeError(\n `defineAgent: \\`${name}.timeoutMs\\` (${timeoutMs}) exceeds the ${INVOKE_TIMEOUT_HARD_CAP_MS}ms hard cap. ` +\n 'The platform saga terminates the Machine above 5 minutes, so a higher timeout would publish a contract the wrapper cannot honour.',\n );\n }\n }\n}\n","// Structured logger the runtime v2 wrapper hands to creator code via\n// `InvokeContext.logger`. F5 shipped the binding interface only; F6 lands the\n// real implementation: one NDJSON line per call written to stdout (or any\n// injectable writable-like sink), with bindings accumulated through `child()`\n// so the per-invocation `invocationId` / `runId` ride along without the\n// handler having to thread them.\n//\n// Deliberately a tiny custom writer (no `pino`): the wrapper PRD pins a fixed\n// shape (`ts`, `msg`, `level`, plus bindings + per-call meta) and the\n// destination is always `process.stdout`. Adding a dependency would buy us a\n// transport ecosystem we explicitly do not want at this layer — the OTLP\n// follow-up will add OTEL alongside this fallback.\n\n/**\n * Structured fields the wrapper, an upstream consumer, or a handler can\n * attach to a single log line. Values are `unknown` because the wrapper\n * does not enforce a schema — the destination decides how to serialise\n * each value.\n */\nexport type LoggerBindings = Record<string, unknown>;\n\n/**\n * The handler-facing logger. Every method takes a human-readable message\n * plus an optional bag of structured fields the destination merges with\n * the bindings already set by the wrapper (typically `invocationId` and\n * `runId`).\n *\n * F5 wired the binding contract only; F6 replaces the stub implementation\n * with the JSON/STACKBONE_MODE-aware variant. Keeping the surface here\n * (instead of in the CLI) lets the SDK ship a typed seam creators can\n * reference from their own tests.\n */\nexport interface Logger {\n /** Fine-grained diagnostic information. */\n debug(msg: string, meta?: LoggerBindings): void;\n /** Routine progress information. */\n info(msg: string, meta?: LoggerBindings): void;\n /** Recoverable problem the handler still resolved. */\n warn(msg: string, meta?: LoggerBindings): void;\n /** Unrecoverable failure the handler is about to report. */\n error(msg: string, meta?: LoggerBindings): void;\n /**\n * Returns a new logger that merges `bindings` into every subsequent\n * log line. The original logger is left untouched.\n */\n child(bindings: LoggerBindings): Logger;\n}\n\n/**\n * Minimal writable surface the structured logger drains into. Both\n * `process.stdout` and arbitrary test doubles satisfy it — every consumer\n * only needs `write(string): unknown`.\n */\nexport interface LogSink {\n write(chunk: string): unknown;\n}\n\nexport interface StructuredLoggerOptions {\n /** Output stream. Defaults to `process.stdout` for production use. */\n stream?: LogSink;\n /** Initial bindings every line inherits (e.g. process-wide metadata). */\n bindings?: LoggerBindings;\n /** Clock seam for the `ts` field. Defaults to `() => new Date()`. */\n now?: () => Date;\n}\n\ntype Level = 'debug' | 'info' | 'warn' | 'error';\n\nconst writeLine = (\n stream: LogSink,\n level: Level,\n msg: string,\n bindings: LoggerBindings,\n meta: LoggerBindings,\n now: () => Date,\n): void => {\n // Per-call meta wins over bindings so a handler can override an inherited\n // field on a specific line without rebuilding a child logger.\n const record = { ts: now().toISOString(), level, msg, ...bindings, ...meta };\n stream.write(`${JSON.stringify(record)}\\n`);\n};\n\n/**\n * Builds a structured `Logger` that emits one NDJSON line per call. Output\n * shape is fixed by the wrapper PRD: `{ ts, level, msg, ...bindings,\n * ...meta }`. The wrapper layers extra fields on top via `child()`\n * (`invocationId`, `runId`, `latencyMs`, `status`).\n */\nexport const createStructuredLogger = (opts: StructuredLoggerOptions = {}): Logger => {\n const stream: LogSink = opts.stream ?? process.stdout;\n const now = opts.now ?? (() => new Date());\n const baseBindings: LoggerBindings = opts.bindings ?? {};\n\n const build = (bindings: LoggerBindings): Logger => ({\n debug: (msg, meta = {}) => writeLine(stream, 'debug', msg, bindings, meta, now),\n info: (msg, meta = {}) => writeLine(stream, 'info', msg, bindings, meta, now),\n warn: (msg, meta = {}) => writeLine(stream, 'warn', msg, bindings, meta, now),\n error: (msg, meta = {}) => writeLine(stream, 'error', msg, bindings, meta, now),\n child: (extra) => build({ ...bindings, ...extra }),\n });\n\n return build(baseBindings);\n};\n","// Process-wide invocation context, propagated with `AsyncLocalStorage`.\n//\n// The runtime request handler wraps each `capability.run(...)` in this context\n// (see `@stackbone/agent-server`'s `request-handler`), so any code running\n// inside an invoke — the creator's handler, the SDK's own loggers, a stray\n// `console.log` — can recover the active `invocationId` / `runId` without the\n// handler having to thread them through every call.\n//\n// Why an ALS and not a plain module variable: the agent process serves invokes\n// concurrently (the node:http adapter does not serialise requests). A single\n// mutable \"current invocation\" would be clobbered the moment two invokes\n// overlap. `AsyncLocalStorage` keeps a separate store per async call tree, so\n// each invoke's logs stay correlated to the right run even under concurrency.\n//\n// `invocationId` is the value the canonical logs call `trace_id` (the control\n// plane mints it once per invoke and threads it through the envelope); `runId`\n// is the run the invoke belongs to.\n\nimport { AsyncLocalStorage } from 'node:async_hooks';\n\nexport interface InvocationContext {\n /** The envelope's `invocationId` — surfaced on log lines as `trace_id`. */\n readonly invocationId: string;\n /** The run this invoke belongs to — surfaced on log lines as `run_id`. */\n readonly runId: string;\n /**\n * The handler this invoke routed to — `invoke` for a direct entry or the\n * named job handler (e.g. `demo-log-job`) the dispatcher delivered to.\n * Surfaced on log lines as `handler` so the Studio logs trail can tell which\n * entrypoint emitted each line. Optional so a caller that binds a context\n * without routing info (older tests, lifecycle hooks) still type-checks.\n */\n readonly handler?: string;\n}\n\nconst storage = new AsyncLocalStorage<InvocationContext>();\n\n/**\n * Runs `fn` with `context` bound as the active invocation. The context stays\n * available to every synchronous and asynchronous continuation rooted in this\n * call (i.e. across `await`s inside `fn`). Returns whatever `fn` returns.\n */\nexport function runWithInvocationContext<T>(context: InvocationContext, fn: () => T): T {\n return storage.run(context, fn);\n}\n\n/**\n * Returns the active invocation context, or `undefined` when called outside any\n * invoke (process boot, lifecycle events, tests that don't set one up).\n */\nexport function getInvocationContext(): InvocationContext | undefined {\n return storage.getStore();\n}\n","// Bridges raw `console.*` calls made *during an invoke* into the same\n// structured NDJSON the runtime wrapper already emits, stamped with the active\n// `run_id` / `trace_id`.\n//\n// Why this exists: creators reach for `console.log` out of habit. Those lines\n// are captured by the runner straight off the subprocess's stdout/stderr, so\n// without help they arrive as bare text with no run correlation — you can see\n// the line but not which run produced it. By reading the ambient invocation\n// context (see `invocation-context`) and re-emitting through the canonical\n// `createStructuredLogger`, every in-invoke `console.log` becomes a normal\n// correlated log line, indistinguishable from `ctx.logger.info(...)`.\n//\n// Outside an invoke (process boot, lifecycle, anything before the first\n// `/invoke`) there is no context, so the originals run untouched and boot\n// output stays human-readable.\n\nimport { format } from 'node:util';\n\nimport { getInvocationContext } from './invocation-context';\nimport { createStructuredLogger, type LogSink } from './logger';\n\n/** The subset of the global `console` this bridge replaces. */\nexport interface ConsoleLike {\n log: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n}\n\nexport interface InstallConsoleCaptureOptions {\n /** Console object to patch. Defaults to the global `console`. Test seam. */\n console?: ConsoleLike;\n /** Sink for `log` / `info` / `debug`. Defaults to `process.stdout`. Test seam. */\n stdout?: LogSink;\n /** Sink for `warn` / `error`. Defaults to `process.stderr`. Test seam. */\n stderr?: LogSink;\n /** Clock for the `ts` field. Defaults to `() => new Date()`. Test seam. */\n now?: () => Date;\n}\n\n// Guards against double-patching: a second install would capture the already\n// patched method as its \"original\" and the restore would only peel one layer.\nconst patched = new WeakSet<object>();\n\n/**\n * Replaces `console.log/info/debug/warn/error` so that, while an invocation\n * context is active, each call is re-emitted as a structured log line carrying\n * `run_id` / `trace_id`. Returns a function that restores the originals.\n * Calling it twice on the same console is a no-op (returns a no-op restore).\n */\nexport function installInvocationConsoleCapture(\n options: InstallConsoleCaptureOptions = {},\n): () => void {\n const target: ConsoleLike = options.console ?? (console as unknown as ConsoleLike);\n if (patched.has(target)) return () => undefined;\n patched.add(target);\n\n const loggerOptions = options.now ? { now: options.now } : {};\n const stdoutLogger = createStructuredLogger({\n stream: options.stdout ?? process.stdout,\n ...loggerOptions,\n });\n const stderrLogger = createStructuredLogger({\n stream: options.stderr ?? process.stderr,\n ...loggerOptions,\n });\n\n const original: ConsoleLike = {\n log: target.log.bind(target),\n info: target.info.bind(target),\n warn: target.warn.bind(target),\n error: target.error.bind(target),\n debug: target.debug.bind(target),\n };\n\n type Level = 'debug' | 'info' | 'warn' | 'error';\n const bridge =\n (\n logger: ReturnType<typeof createStructuredLogger>,\n level: Level,\n passthrough: ConsoleLike['log'],\n ) =>\n (...args: unknown[]): void => {\n const ctx = getInvocationContext();\n if (!ctx) {\n passthrough(...args);\n return;\n }\n logger[level](format(...args), {\n run_id: ctx.runId,\n trace_id: ctx.invocationId,\n // Stamp the routed handler (invoke / a named job) when the context\n // carries it, so a bare `console.log` is attributable to its entrypoint\n // in the Studio logs trail just like `ctx.logger` lines are.\n ...(ctx.handler !== undefined ? { handler: ctx.handler } : {}),\n });\n };\n\n target.log = bridge(stdoutLogger, 'info', original.log);\n target.info = bridge(stdoutLogger, 'info', original.info);\n target.debug = bridge(stdoutLogger, 'debug', original.debug);\n target.warn = bridge(stderrLogger, 'warn', original.warn);\n target.error = bridge(stderrLogger, 'error', original.error);\n\n return () => {\n target.log = original.log;\n target.info = original.info;\n target.warn = original.warn;\n target.error = original.error;\n target.debug = original.debug;\n patched.delete(target);\n };\n}\n","import { createSecretCipher, type SecretCipher } from '@stackbone/crypto';\nimport postgres from 'postgres';\n\n// Boot-time helper: rehydrate the agent's system (`is_system = true`) secrets\n// from `stackbone_platform.secrets` into `process.env` BEFORE the agent bundle\n// is imported. The SDK reads its credentials (OpenRouter / R2 / Axiom) from\n// `process.env` under its OWN expected names at `createClient()` time, so this\n// step decrypts each system row with the per-agent key and maps the stored name\n// to the SDK env name.\n//\n// ORDERING INVARIANT: callers MUST run this before importing the creator's\n// bundle, because a starter may construct `StackboneClient` at module top level\n// and `resolveConfig` snapshots `process.env` at that moment. Rehydrating after\n// the import leaves a top-level client with empty credentials.\n//\n// Driver: this reader uses `postgres-js` — the SAME TCP driver `client.database`\n// / `client.secrets` use. It is the universal one: it reaches the plain local\n// Postgres in `stackbone dev`, the self-host box, and Neon over TCP alike. The\n// cloud harness keeps a separate `@neondatabase/serverless` (HTTP) reader for\n// its serverless boot path, but reuses the mapping below so the two cannot drift.\n\n// Stored-name -> SDK-env-name map. Identity entries are listed explicitly so\n// the EXHAUSTIVE set `config.ts:resolveConfig` reads is covered and a missing\n// mapping is caught by the spec rather than silently falling back to a wrong\n// default in production. The stored names are exactly what the provisioning\n// saga (cloud) and `seedSystemSecrets` (dev) write into the agent DB.\nexport const STORED_TO_SDK_ENV: Readonly<Record<string, string>> = {\n // Storage (R2/S3) — `client.storage` reads the `STACKBONE_S3_*` names; the\n // saga stores them under the AWS/S3 names.\n AWS_ACCESS_KEY_ID: 'STACKBONE_S3_ACCESS_KEY',\n AWS_SECRET_ACCESS_KEY: 'STACKBONE_S3_SECRET_KEY',\n S3_ENDPOINT: 'STACKBONE_S3_ENDPOINT',\n S3_BUCKET: 'STACKBONE_S3_BUCKET',\n S3_REGION: 'STACKBONE_S3_REGION',\n // OpenRouter (`client.ai`) — identity.\n OPENROUTER_API_KEY: 'OPENROUTER_API_KEY',\n OPENROUTER_BASE_URL: 'OPENROUTER_BASE_URL',\n // Axiom (observability) — identity.\n AXIOM_TOKEN: 'AXIOM_TOKEN',\n};\n\n/** Encrypted envelope row as stored in `stackbone_platform.secrets`. */\nexport interface SystemSecretRow {\n name: string;\n version: string;\n nonce: Buffer | Uint8Array;\n ciphertext: Buffer | Uint8Array;\n}\n\n/**\n * Maps the `is_system` rows to the SDK env names, decrypting ONLY the rows that\n * have a known mapping, then derives two env-only channels. Existing values are\n * never overwritten (an explicit container/Machine override always wins). The\n * SDK env names this call populated are returned (sorted) so the caller can log\n * an observable, value-free \"what got rehydrated\" line — values are never\n * logged. Shared by both the cloud neon reader and the postgres-js reader so\n * they cannot drift on the mapping.\n *\n * Decryption is lazy on purpose: an unmapped stored row is skipped WITHOUT\n * decrypting it, so a non-envelope row (e.g. a probe row a stubbed query\n * returns) never throws. The two derived channels:\n * - `STACKBONE_POSTGRES_URL` from `databaseUrl` (the SDK's `client.database`\n * reads this name; the cloud harness's own Neon driver keeps `DATABASE_URL`).\n * - `STACKBONE_APPROVAL_SIGNING_KEY` from `HMAC_SECRET` so the SDK's approval\n * callback verifier reconciles with the signer (which signs with the same\n * boot-bundle HMAC).\n */\nexport function rehydrateSystemSecretsRows(\n env: NodeJS.ProcessEnv,\n rows: readonly SystemSecretRow[],\n cipher: SecretCipher,\n databaseUrl: string,\n): string[] {\n const applied: string[] = [];\n const assignIfUnset = (name: string, value: string): void => {\n if (env[name] !== undefined) return; // explicit override wins\n env[name] = value;\n applied.push(name);\n };\n\n for (const row of rows) {\n const target = STORED_TO_SDK_ENV[row.name];\n if (!target) continue; // unmapped stored row — skip without decrypting\n assignIfUnset(\n target,\n cipher.decrypt({ version: row.version, nonce: row.nonce, ciphertext: row.ciphertext }),\n );\n }\n\n assignIfUnset('STACKBONE_POSTGRES_URL', databaseUrl);\n const hmac = env['HMAC_SECRET'];\n if (hmac) assignIfUnset('STACKBONE_APPROVAL_SIGNING_KEY', hmac);\n\n return applied.sort();\n}\n\n/**\n * Reads the `is_system` rows from `stackbone_platform.secrets`. Injectable so\n * tests run against a stub without a real Postgres; production opens a\n * short-lived `postgres-js` connection (see `loadSystemSecretsIntoEnv`).\n */\nexport type SystemSecretsReader = () => Promise<SystemSecretRow[]>;\n\nexport interface LoadSystemSecretsArgs {\n /** Connection string for the agent's Postgres (`STACKBONE_POSTGRES_URL`). */\n readonly databaseUrl: string;\n /** Per-agent base64 key the rows are decrypted with (`STACKBONE_SECRET_KEY`). */\n readonly secretKey: string;\n /** Target env to populate. Defaults to `process.env`. */\n readonly env?: NodeJS.ProcessEnv;\n /** Override the row reader (tests inject a stub). */\n readonly reader?: SystemSecretsReader;\n}\n\nconst SYSTEM_SECRETS_QUERY = `\n SELECT name, version, nonce, ciphertext\n FROM stackbone_platform.secrets\n WHERE is_system = true\n`;\n\n// Opens a short-lived single connection, reads the is_system rows, closes it.\n// Standalone (not the shared `client.database` pool) because rehydration runs\n// before any client exists and should not leave a lingering pool behind.\nasync function readWithPostgresJs(databaseUrl: string): Promise<SystemSecretRow[]> {\n const sql = postgres(databaseUrl, { max: 1 });\n try {\n const rows = await sql.unsafe(SYSTEM_SECRETS_QUERY);\n return rows as unknown as SystemSecretRow[];\n } finally {\n await sql.end({ timeout: 5 });\n }\n}\n\n/**\n * Reads every `is_system` row from the agent's Postgres via `postgres-js`,\n * decrypts each with the per-agent key, and rehydrates them into `env` under\n * the SDK's expected names. Used by the `stackbone dev` emulator and the\n * self-host runtime entry to give the agent the same credentials the cloud\n * harness rehydrates — without depending on a Neon HTTP endpoint, which local\n * dev does not have.\n */\nexport async function loadSystemSecretsIntoEnv(args: LoadSystemSecretsArgs): Promise<string[]> {\n const env = args.env ?? process.env;\n const cipher = await createSecretCipher(args.secretKey);\n const read = args.reader ?? (() => readWithPostgresJs(args.databaseUrl));\n const rows = await read();\n return rehydrateSystemSecretsRows(env, rows, cipher, args.databaseUrl);\n}\n","// The symmetric request/response envelope every `POST /invoke` call uses.\n//\n// The shape lives here (in `@stackbone/sdk`) rather than next to the wrapper\n// so a future ADR can promote it to a dedicated `runtime-contract` lib\n// without rewriting consumers. The dispatcher in the platform and the\n// wrapper in the CLI both speak this envelope verbatim.\n//\n// Reserved error codes are part of the contract. Creators may attach their\n// own `code` to thrown errors (duck-typed), but if that code collides with\n// a reserved one the wrapper falls back to `HANDLER_ERROR` so the platform\n// can keep relying on the reserved codes meaning exactly what they say.\nimport { z } from 'zod';\n\n/**\n * Reserved error codes. Order is intentional: keep them flat (string) so\n * the envelope JSON stays trivial to inspect.\n *\n * F2 owns `VALIDATION_ERROR` and `HANDLER_ERROR`. `TIMEOUT_ERROR` is\n * declared here so the collision check is stable across slices — the F5\n * timeout slice will start emitting it without needing to amend the\n * envelope contract.\n */\nexport const RESERVED_ERROR_CODES = ['VALIDATION_ERROR', 'HANDLER_ERROR', 'TIMEOUT_ERROR'] as const;\n\nexport type ReservedErrorCode = (typeof RESERVED_ERROR_CODES)[number];\n\n/**\n * HTTP header carrying `invocationId` so the dispatcher can correlate\n * requests without parsing the JSON body.\n */\nexport const INVOCATION_ID_HEADER = 'X-Stackbone-Invocation-Id';\n\n/**\n * HTTP header carrying `runId` so the dispatcher can correlate requests\n * across approval callbacks, log lookups, and trace spans without parsing\n * the JSON body.\n */\nexport const RUN_ID_HEADER = 'X-Stackbone-Run-Id';\n\n/**\n * Envelope a client (the platform dispatcher, the local emulator, or a\n * curl smoke test) sends to `POST /invoke`. `payload` is unknown at this\n * layer — the wrapper revalidates it against `spec.invoke.input` before\n * handing it to the creator's `run`.\n */\nexport const invokeRequestSchema = z.object({\n invocationId: z.string().min(1),\n runId: z.string().min(1),\n payload: z.unknown(),\n});\n\nexport type InvokeRequest = z.infer<typeof invokeRequestSchema>;\n\n/**\n * Error portion of a failure envelope. `issues` mirrors Zod's `ZodIssue[]`\n * shape verbatim so the dispatcher can render the same field-level paths\n * an SDK consumer would see locally.\n */\nexport interface InvokeEnvelopeError {\n code: string;\n message: string;\n issues?: z.ZodIssue[];\n}\n\n/**\n * Success envelope returned by `/invoke`. `TResult` is left generic so the\n * wrapper can wrap the parsed output without paying for an extra type\n * assertion at the call site.\n */\nexport interface InvokeSuccessEnvelope<TResult = unknown> {\n invocationId: string;\n runId: string;\n result: TResult;\n}\n\n/**\n * Failure envelope returned by `/invoke`. Keeps `invocationId` and `runId`\n * at the top level so a client can correlate a 4xx/5xx with the request\n * without inspecting `error.issues`.\n */\nexport interface InvokeErrorEnvelope {\n invocationId: string;\n runId: string;\n error: InvokeEnvelopeError;\n}\n\nexport type InvokeResponse<TResult = unknown> =\n | InvokeSuccessEnvelope<TResult>\n | InvokeErrorEnvelope;\n\n/**\n * True when `code` is one of the reserved tokens the wrapper owns. Used by\n * the duck-typed error path: a creator that throws an error tagged with a\n * reserved code falls back to `HANDLER_ERROR` so reserved codes always\n * mean what the platform expects.\n */\nexport const isReservedErrorCode = (code: string): code is ReservedErrorCode =>\n (RESERVED_ERROR_CODES as readonly string[]).includes(code);\n","// `schema-introspection` walks a Zod schema's internal `_zod.def` tree to\n// classify it against the runtime v2 wrapper's \"JSON-Schema-serialisable\n// subset\" rule. The wrapper PRD splits offending constructs into two buckets:\n//\n// - **Fatal**: `.transform()`, `.preprocess()`, `.coerce.*` — these change\n// the shape between the declared input and the value the handler sees,\n// so the public catalog would describe one shape and the wrapper would\n// enforce another. Boot must abort before the HTTP port binds.\n// - **Warning**: `.refine()`, `.superRefine()`, recursive `z.lazy()` —\n// these are runtime-only rules that cannot round-trip to JSON Schema.\n// The wrapper boots, the rule still runs at invoke time, the catalog\n// just won't render it.\n//\n// The walk runs once at boot. Its output is the cached `{ input, output }`\n// pair the wrapper serves from `GET /schema` plus the diagnostics list the\n// caller uses to decide between `throw` and `console.warn`.\n//\n// Why this lives in `@stackbone/sdk` (and not in the CLI): Studio Playground,\n// the catalog type generator, and breaking-change detection will all want\n// the same classification later. The CLI just wraps it with the boot-time\n// fatal/warn decision.\nimport { z } from 'zod';\n\n/**\n * Which half of the contract the diagnostic belongs to. The wrapper's error\n * message names the half so the creator can find the offending field\n * immediately (\"input.user.email\", not just \"user.email\").\n */\nexport type SchemaHalf = 'input' | 'output';\n\n/**\n * Constructs the wrapper either rejects outright or warns about. Listed\n * verbatim so a future ADR can extend the union without changing the type\n * shape downstream consumers rely on.\n */\nexport type FatalConstruct = 'transform' | 'preprocess' | 'coerce';\nexport type WarnConstruct = 'refine' | 'lazy';\n\nexport interface SchemaDiagnostic<Construct extends string> {\n half: SchemaHalf;\n /** Dotted JSON pointer-ish path: `email`, `user.address.street`, `items[]`. */\n path: string;\n construct: Construct;\n}\n\nexport interface AgentSchemaPair {\n input: z.ZodType;\n output: z.ZodType;\n}\n\nexport interface SchemaIntrospectionResult {\n fatal: SchemaDiagnostic<FatalConstruct>[];\n warnings: SchemaDiagnostic<WarnConstruct>[];\n schemas: {\n input: JsonSchemaDocument;\n output: JsonSchemaDocument;\n };\n}\n\n/**\n * JSON Schema 2020-12 document. We intentionally keep this loose — Zod's\n * `toJSONSchema` returns an arbitrary structure and the wrapper only needs\n * to serialise it verbatim to the catalog. A future ADR can tighten this\n * to a generated type once the catalog has a real consumer.\n */\nexport interface JsonSchemaDocument {\n $schema?: string;\n type?: string | string[];\n properties?: Record<string, JsonSchemaDocument>;\n required?: string[];\n // Catch-all for the rest of the 2020-12 vocabulary so consumers can read\n // `items`, `$ref`, etc. without a cast.\n [key: string]: unknown;\n}\n\n/**\n * Internal accumulator. The walker mutates this in place so we can collect\n * every diagnostic in one pass — stopping at the first match would force\n * the creator into a fix-recompile-rerun loop for unrelated issues.\n */\ninterface WalkAccumulator {\n fatal: SchemaDiagnostic<FatalConstruct>[];\n warnings: SchemaDiagnostic<WarnConstruct>[];\n /** Tracks visited `lazy` defs so a recursive cycle does not loop forever. */\n visitedLazy: WeakSet<object>;\n}\n\n/**\n * The structural shape we read from Zod's internals. Zod 4 exposes its def\n * tree under `_zod.def`; the shape varies per type so we treat it as an\n * arbitrary record and narrow per branch.\n */\ntype ZodDefLike = Record<string, unknown> & { type?: string };\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object';\n\nconst getDef = (node: unknown): ZodDefLike | null => {\n if (!isObject(node)) return null;\n const internal = (node as { _zod?: { def?: unknown } })._zod;\n if (!isObject(internal)) return null;\n const def = internal.def;\n return isObject(def) ? (def as ZodDefLike) : null;\n};\n\n/**\n * Joins a parent path segment with a child key, picking the right separator\n * so consumers can copy/paste the path into a Zod schema spec.\n */\nconst join = (parent: string, child: string | number): string => {\n if (parent === '') return String(child);\n if (typeof child === 'number') return `${parent}[${child}]`;\n return `${parent}.${child}`;\n};\n\n/**\n * Walks the Zod def tree under `node`, recording fatal/warn diagnostics into\n * `acc`. The walker treats `pipe`, `optional`, `nullable`, `default`,\n * `array`, `object`, `union`, `intersection`, `record`, `tuple`, and `lazy`\n * as structural containers; every other type is a leaf (we still inspect\n * its `checks` and `coerce` flags).\n *\n * `path` is the dotted accessor; `half` is the input/output bucket; `acc`\n * is shared across both halves.\n */\nconst walk = (node: unknown, path: string, half: SchemaHalf, acc: WalkAccumulator): void => {\n const def = getDef(node);\n if (def === null) return;\n\n // Coerce flag — `z.coerce.number()` sets `coerce: true` on the leaf def.\n // We surface this BEFORE recursing so the diagnostic carries the field's\n // own path (not its parent's).\n if (def['coerce'] === true) {\n acc.fatal.push({ half, path, construct: 'coerce' });\n }\n\n // Checks (Zod 4 stores `.refine()` / `.superRefine()` as `check: 'custom'`\n // entries on the parent type's `checks` array; built-in constraints like\n // `.min()` use other tokens, so we filter to `custom` only).\n const checks = def['checks'];\n if (Array.isArray(checks)) {\n for (const check of checks) {\n const checkDef = getDef(check);\n if (checkDef !== null && checkDef['check'] === 'custom') {\n acc.warnings.push({ half, path, construct: 'refine' });\n // Only one warning per field is enough; chained refines collapse\n // into the same diagnostic since the catalog drops them all anyway.\n break;\n }\n }\n }\n\n switch (def.type) {\n case 'pipe': {\n // `.transform()` -> pipe(in: source, out: transform)\n // `.preprocess()` -> pipe(in: transform, out: target)\n const inDef = getDef(def['in']);\n const outDef = getDef(def['out']);\n if (outDef?.type === 'transform') {\n acc.fatal.push({ half, path, construct: 'transform' });\n } else if (inDef?.type === 'transform') {\n acc.fatal.push({ half, path, construct: 'preprocess' });\n }\n // Still recurse into the non-transform side so we surface nested\n // diagnostics underneath a `.transform()`/`.preprocess()` wrapper.\n if (inDef !== null && inDef.type !== 'transform') {\n walk(def['in'], path, half, acc);\n }\n if (outDef !== null && outDef.type !== 'transform') {\n walk(def['out'], path, half, acc);\n }\n return;\n }\n case 'object': {\n const shape = def['shape'];\n if (isObject(shape)) {\n for (const [key, child] of Object.entries(shape)) {\n walk(child, join(path, key), half, acc);\n }\n }\n return;\n }\n case 'array': {\n walk(def['element'], join(path, '[]' as unknown as number), half, acc);\n return;\n }\n case 'union': {\n const options = def['options'];\n if (Array.isArray(options)) {\n for (const option of options) {\n walk(option, path, half, acc);\n }\n }\n return;\n }\n case 'intersection': {\n walk(def['left'], path, half, acc);\n walk(def['right'], path, half, acc);\n return;\n }\n case 'record': {\n walk(def['keyType'], path, half, acc);\n walk(def['valueType'], path, half, acc);\n return;\n }\n case 'tuple': {\n const items = def['items'];\n if (Array.isArray(items)) {\n for (let i = 0; i < items.length; i++) {\n walk(items[i], join(path, i), half, acc);\n }\n }\n return;\n }\n case 'optional':\n case 'nullable':\n case 'default':\n case 'catch':\n case 'readonly':\n case 'nonoptional':\n case 'prefault':\n case 'promise': {\n walk(def['innerType'], path, half, acc);\n return;\n }\n case 'lazy': {\n // `z.lazy()` is a runtime construct that *can* round-trip to JSON\n // Schema via `$ref`, but the PRD pre-emptively flags it so creators\n // know the public catalog cannot render it faithfully. We also need\n // a cycle guard — walking a self-referential tree without one\n // overflows the stack.\n const lazyKey = isObject(node) ? node : null;\n if (lazyKey !== null) {\n if (acc.visitedLazy.has(lazyKey)) {\n return;\n }\n acc.visitedLazy.add(lazyKey);\n }\n acc.warnings.push({ half, path, construct: 'lazy' });\n const getter = def['getter'];\n if (typeof getter === 'function') {\n try {\n const resolved = (getter as () => unknown)();\n walk(resolved, path, half, acc);\n } catch {\n // A getter that throws on its first call is the creator's bug,\n // not ours; the regular Zod parse path will surface it at invoke\n // time. We skip the recursion and keep collecting siblings.\n }\n }\n return;\n }\n default:\n return;\n }\n};\n\n/**\n * Walks the agent's input/output schemas, classifies offending constructs,\n * and emits the JSON Schema 2020-12 documents the wrapper serves from\n * `GET /schema`. The function never throws — the caller decides what to do\n * with the fatal list.\n *\n * Derivation runs through Zod's native `z.toJSONSchema`. We pass\n * `unrepresentable: 'any'` so a `.refine()`-bearing string still surfaces as\n * a string (the catalog drops the constraint, the wrapper still runs it at\n * invoke time).\n */\nexport const analyzeAgentSchemas = (pair: AgentSchemaPair): SchemaIntrospectionResult => {\n const acc: WalkAccumulator = {\n fatal: [],\n warnings: [],\n visitedLazy: new WeakSet<object>(),\n };\n\n walk(pair.input, '', 'input', acc);\n walk(pair.output, '', 'output', acc);\n\n // `unrepresentable: 'any'` keeps `.transform()` etc. from throwing during\n // derivation — we already flagged them in `acc.fatal`, so the caller is\n // expected to abort before consuming `schemas`. We still return them so a\n // test can assert the shape directly.\n const inputJson = z.toJSONSchema(pair.input, { unrepresentable: 'any' });\n const outputJson = z.toJSONSchema(pair.output, { unrepresentable: 'any' });\n\n return {\n fatal: acc.fatal,\n warnings: acc.warnings,\n schemas: {\n input: inputJson as JsonSchemaDocument,\n output: outputJson as JsonSchemaDocument,\n },\n };\n};\n"]}