@agents24/node 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -4
- package/compatibility.json +10 -10
- package/dist/bff.cjs +204 -33
- package/dist/bff.cjs.map +1 -1
- package/dist/bff.d.cts +5 -3
- package/dist/bff.d.ts +5 -3
- package/dist/bff.js +204 -33
- package/dist/bff.js.map +1 -1
- package/dist/{client-6MWalxux.d.cts → client-CnOaaCVH.d.cts} +431 -71
- package/dist/{client-6MWalxux.d.ts → client-CnOaaCVH.d.ts} +431 -71
- package/dist/index.cjs +187 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +187 -45
- package/dist/index.js.map +1 -1
- package/dist/server.cjs +52 -6
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +14 -2
- package/dist/server.d.ts +14 -2
- package/dist/server.js +50 -7
- package/dist/server.js.map +1 -1
- package/dist/types/agents.d.ts +5 -4
- package/dist/types/agents.d.ts.map +1 -1
- package/dist/types/bff.d.ts +4 -2
- package/dist/types/bff.d.ts.map +1 -1
- package/dist/types/builders.d.ts +2 -0
- package/dist/types/builders.d.ts.map +1 -1
- package/dist/types/client-runtime-admin.d.ts +1 -1
- package/dist/types/client.d.ts +4 -0
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/embed.d.ts +5 -3
- package/dist/types/embed.d.ts.map +1 -1
- package/dist/types/errors.d.ts +10 -2
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/generated/instructions.d.ts +8 -0
- package/dist/types/generated/instructions.d.ts.map +1 -0
- package/dist/types/generated/manifest.d.ts +1 -1
- package/dist/types/generated/manifest.d.ts.map +1 -1
- package/dist/types/generated/resourceBundles.d.ts +4 -1
- package/dist/types/generated/resourceBundles.d.ts.map +1 -1
- package/dist/types/generated/resourcePolicies.d.ts +14 -0
- package/dist/types/generated/resourcePolicies.d.ts.map +1 -0
- package/dist/types/http.d.ts +0 -2
- package/dist/types/http.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/runs.d.ts +4 -2
- package/dist/types/runs.d.ts.map +1 -1
- package/dist/types/server.d.ts +13 -1
- package/dist/types/server.d.ts.map +1 -1
- package/dist/types/types.d.ts +384 -60
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/server.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/artifacts-runtime.mjs","../src/artifacts.ts","../src/server.ts"],"names":["defineArtifact","describeArtifactContract","createHash","createHmac","Buffer","timingSafeEqual","createServer"],"mappings":"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","file":"server.cjs","sourcesContent":["function schema(value) {\n if (value == null) return {};\n if (typeof value.toJSONSchema === \"function\") return value.toJSONSchema();\n if (typeof value.toJsonSchema === \"function\") return value.toJsonSchema();\n if (typeof value === \"object\") {\n if (typeof value.parse === \"function\" && typeof value.safeParse === \"function\" && value._zod) {\n throw new TypeError(\"Zod schemas must expose toJSONSchema(); install Zod v4 or pass z.toJSONSchema(schema)\");\n }\n return value;\n }\n throw new TypeError(\"schema must be a JSON Schema object or expose toJSONSchema()\");\n}\n\nfunction normalize(kind, definition = {}, handler) {\n const actualHandler = handler || definition.handler || definition.execute;\n const explicitName = String(definition.name || \"\").trim();\n const name = explicitName || String(actualHandler?.name || \"\").trim();\n const value = {\n name,\n kind,\n description: definition.description || \"\",\n input_schema: schema(definition.input_schema || definition.inputSchema || definition.input),\n output_schema: schema(definition.output_schema || definition.outputSchema || definition.output),\n config_schema: schema(definition.config_schema || definition.configSchema || definition.config),\n ui_schema: definition.ui_schema || definition.uiSchema || definition.ui || {},\n side_effects: definition.side_effects || definition.sideEffects || [],\n execution_mode: definition.execution_mode || definition.executionMode || \"interactive\",\n handler_ref: definition.handler_ref || definition.handlerRef || actualHandler?.name || name,\n handler: actualHandler,\n };\n Object.defineProperty(value, \"__agents24ExplicitName\", { value: Boolean(explicitName), enumerable: false });\n return value;\n}\n\nexport function tool(definition = {}, handler) {\n return normalize(\"tool\", definition, handler);\n}\n\nexport function agentNode(definition = {}, handler) {\n return normalize(\"agent_node\", definition, handler);\n}\n\nexport function ragOperator(definition = {}, handler) {\n return normalize(\"rag_operator\", definition, handler);\n}\n\nexport function toolset(definition = {}) {\n return {\n __agents24Toolset: true,\n name: String(definition.name || \"\").trim(),\n description: String(definition.description || \"\").trim(),\n tools: Array.isArray(definition.tools) ? definition.tools : [],\n };\n}\n\nfunction entries(input) {\n if (Array.isArray(input)) return input.map((item) => [null, item]);\n return input && typeof input === \"object\" ? Object.entries(input) : [];\n}\n\nfunction normalizedExports(definition) {\n const exports = [];\n const namesByObject = new Map();\n for (const source of [definition.tools, definition.agentNodes, definition.ragOperators]) {\n for (const [mappedName, raw] of entries(source)) {\n if (!raw || typeof raw !== \"object\") throw new TypeError(\"Artifact exports must use tool, agentNode, or ragOperator\");\n const name = raw.__agents24ExplicitName ? raw.name.trim() : String(mappedName || raw.name || \"\").trim();\n if (!name) throw new TypeError(\"Artifact exports require a name\");\n exports.push({ ...raw, name, handler_ref: raw.handler_ref || name });\n namesByObject.set(raw, [...(namesByObject.get(raw) || []), name]);\n }\n }\n const names = exports.map((item) => item.name);\n const duplicate = names.find((name, index) => names.indexOf(name) !== index);\n if (duplicate) throw new TypeError(`Duplicate artifact export name '${duplicate}'`);\n return { exports, namesByObject };\n}\n\nfunction normalizedToolsets(input, exports, namesByObject) {\n if (input == null) return [];\n if (Array.isArray(input) || typeof input !== \"object\") {\n throw new TypeError(\"TypeScript artifact toolsets must be an object keyed by stable source key\");\n }\n const tools = new Set(exports.filter((item) => item.kind === \"tool\").map((item) => item.name));\n const seenNames = new Set();\n return Object.entries(input).map(([key, value]) => {\n if (!key.trim()) throw new TypeError(\"Artifact toolset keys cannot be empty\");\n if (!value?.__agents24Toolset) throw new TypeError(`Toolset '${key}' must use toolset()`);\n if (!value.name || !value.description || !value.tools.length) {\n throw new TypeError(`Toolset '${key}' requires a name, description, and tool`);\n }\n const folded = value.name.toLocaleLowerCase();\n if (seenNames.has(folded)) throw new TypeError(`Duplicate artifact toolset name '${value.name}'`);\n seenNames.add(folded);\n const members = value.tools.map((reference) => {\n if (typeof reference === \"string\") return reference.trim();\n const aliases = namesByObject.get(reference) || [];\n if (aliases.length !== 1) throw new TypeError(`Toolset '${key}' contains an unresolved or ambiguous tool reference`);\n return aliases[0];\n });\n if (new Set(members).size !== members.length) throw new TypeError(`Toolset '${key}' contains duplicate tools`);\n for (const member of members) {\n if (!tools.has(member)) throw new TypeError(`Toolset '${key}' references missing or non-tool export '${member}'`);\n }\n return { key, name: value.name, description: value.description, tools: members };\n });\n}\n\nexport function defineArtifact(definition = {}) {\n const normalized = normalizedExports(definition);\n return {\n __agents24Artifact: true,\n exports: normalized.exports,\n toolsets: normalizedToolsets(definition.toolsets, normalized.exports, normalized.namesByObject),\n __agents24ToolsetsDeclared: definition.toolsets != null,\n };\n}\n\nexport function describeArtifact(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return artifact.exports.map(({ handler: _handler, ...item }) => item);\n}\n\nexport function describeArtifactContract(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return { exports: describeArtifact(artifact), toolsets: artifact.toolsets.map((item) => ({ ...item })) };\n}\n","// The executable implementation is JavaScript so the platform can inject the\n// exact same source into Worker describe/build sandboxes without transpilation.\n// @ts-expect-error package-internal JavaScript runtime has typed bindings below\nimport * as runtime from \"./artifacts-runtime.mjs\";\n\nexport type JsonSchemaSource = Record<string, unknown> | {\n toJSONSchema?: () => Record<string, unknown>;\n toJsonSchema?: () => Record<string, unknown>;\n};\n\nexport type ArtifactHandler = (\n input: unknown,\n config: Record<string, unknown>,\n context: Record<string, unknown>,\n) => unknown | Promise<unknown>;\n\nexport type ArtifactExportDefinition = {\n name?: string;\n description?: string;\n input_schema?: JsonSchemaSource;\n inputSchema?: JsonSchemaSource;\n input?: JsonSchemaSource;\n output_schema?: JsonSchemaSource;\n outputSchema?: JsonSchemaSource;\n output?: JsonSchemaSource;\n config_schema?: JsonSchemaSource;\n configSchema?: JsonSchemaSource;\n config?: JsonSchemaSource;\n ui_schema?: Record<string, unknown>;\n uiSchema?: Record<string, unknown>;\n ui?: Record<string, unknown>;\n side_effects?: string[];\n sideEffects?: string[];\n execution_mode?: string;\n executionMode?: string;\n handler_ref?: string;\n handlerRef?: string;\n handler?: ArtifactHandler;\n execute?: ArtifactHandler;\n};\n\nexport type ArtifactExport = {\n name: string;\n kind: \"tool\" | \"agent_node\" | \"rag_operator\";\n description: string;\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n config_schema: Record<string, unknown>;\n ui_schema: Record<string, unknown>;\n side_effects: string[];\n execution_mode: string;\n handler_ref: string;\n handler?: ArtifactHandler;\n readonly __agents24ExplicitName?: boolean;\n};\n\nexport type ArtifactToolset = {\n readonly __agents24Toolset: true;\n name: string;\n description: string;\n tools: Array<string | ArtifactExport>;\n};\n\nexport type ArtifactDefinition = {\n readonly __agents24Artifact: true;\n exports: ArtifactExport[];\n toolsets: Array<{ key: string; name: string; description: string; tools: string[] }>;\n readonly __agents24ToolsetsDeclared: boolean;\n};\n\nexport const tool = runtime.tool as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const agentNode = runtime.agentNode as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const ragOperator = runtime.ragOperator as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const toolset = runtime.toolset as (\n definition?: { name?: string; description?: string; tools?: Array<string | ArtifactExport> },\n) => ArtifactToolset;\nexport const defineArtifact = runtime.defineArtifact as (\n definition?: Record<string, unknown>,\n) => ArtifactDefinition;\nexport const describeArtifact = runtime.describeArtifact as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => Array<Omit<ArtifactExport, \"handler\">>;\nexport const describeArtifactContract = runtime.describeArtifactContract as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => {\n exports: Array<Omit<ArtifactExport, \"handler\">>;\n toolsets: ArtifactDefinition[\"toolsets\"];\n};\n","/// <reference types=\"node\" />\n\nimport { Buffer } from \"node:buffer\";\nimport { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\n\nimport {\n defineArtifact,\n describeArtifactContract,\n type ArtifactDefinition,\n type ArtifactExport,\n} from \"./artifacts.js\";\n\nexport type ArtifactInvokePayload = {\n run_id?: string;\n artifact_id?: string | null;\n revision_id?: string;\n export_name?: string;\n export_kind?: string;\n inputs?: unknown;\n config?: Record<string, unknown>;\n context?: Record<string, unknown>;\n};\n\nexport type ArtifactServerOptions = {\n exports: unknown;\n toolsets?: unknown;\n signingSecret: string;\n manifestPath?: string;\n invokePath?: string;\n};\n\nexport type ArtifactSignatureHeaders = {\n \"x-agents24-timestamp\": string;\n \"x-agents24-signature\": string;\n};\n\nconst DEFAULT_MANIFEST_PATH = \"/.well-known/agents24/artifact\";\nconst DEFAULT_HEALTH_PATH = \"/.well-known/agents24/artifact/health\";\nconst DEFAULT_INVOKE_PATH = \"/agents24/artifact/invoke\";\n\nfunction sorted(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sorted);\n if (value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).sort().reduce<Record<string, unknown>>((result, key) => {\n result[key] = sorted((value as Record<string, unknown>)[key]);\n return result;\n }, {});\n }\n return value;\n}\n\nfunction artifactFromExports(exportsValue: unknown, toolsetsValue?: unknown): ArtifactDefinition {\n if (exportsValue && typeof exportsValue === \"object\" && (exportsValue as { __agents24Artifact?: unknown }).__agents24Artifact) {\n if (toolsetsValue != null) throw new TypeError(\"Pass toolsets through defineArtifact or the toolsets option, not both\");\n return exportsValue as ArtifactDefinition;\n }\n if (Array.isArray(exportsValue)) {\n return defineArtifact({\n tools: Object.fromEntries((exportsValue as ArtifactExport[]).map((item, index) => [String(item.name || index), item])),\n toolsets: toolsetsValue,\n });\n }\n if (exportsValue && typeof exportsValue === \"object\") {\n const record = exportsValue as Record<string, unknown>;\n if (\"tools\" in record || \"agentNodes\" in record || \"ragOperators\" in record) {\n return defineArtifact({ ...record, toolsets: toolsetsValue ?? record.toolsets });\n }\n return defineArtifact({ tools: record, toolsets: toolsetsValue });\n }\n return defineArtifact({ toolsets: toolsetsValue });\n}\n\nfunction contractExport(item: Record<string, unknown>): Record<string, unknown> {\n return {\n export_name: item.export_name || item.name,\n export_kind: item.export_kind || item.kind,\n description: item.description || \"\",\n input_schema: item.input_schema || {},\n output_schema: item.output_schema || {},\n config_schema: item.config_schema || {},\n ui_schema: item.ui_schema || {},\n side_effects: item.side_effects || [],\n execution_mode: item.execution_mode || \"interactive\",\n handler_ref: item.handler_ref || item.name,\n metadata: item.metadata || {},\n };\n}\n\nfunction manifest(artifact: ArtifactDefinition): Record<string, unknown> {\n const described = describeArtifactContract(artifact);\n const contract = {\n schema_version: \"agents24.artifact.v1\",\n exports: described.exports.map((item) => contractExport(item)),\n ...(artifact.__agents24ToolsetsDeclared ? { toolsets: described.toolsets } : {}),\n };\n return {\n ...contract,\n manifest_hash: createHash(\"sha256\").update(JSON.stringify(sorted(contract))).digest(\"hex\"),\n };\n}\n\nfunction json(payload: unknown, init: ResponseInit = {}): Response {\n return new Response(JSON.stringify(payload), {\n ...init,\n headers: { \"content-type\": \"application/json\", ...(init.headers || {}) },\n });\n}\n\nexport function signArtifactPayload(input: {\n body: string;\n signingSecret: string;\n timestamp?: string | number;\n}): ArtifactSignatureHeaders {\n const timestamp = String(input.timestamp || Date.now());\n const signature = createHmac(\"sha256\", input.signingSecret).update(`${timestamp}.${input.body}`).digest(\"hex\");\n return { \"x-agents24-timestamp\": timestamp, \"x-agents24-signature\": `sha256=${signature}` };\n}\n\nexport function verifyArtifactSignature(input: {\n body: string;\n signingSecret: string;\n timestamp: string | null | undefined;\n signature: string | null | undefined;\n toleranceMs?: number;\n}): boolean {\n const timestamp = String(input.timestamp || \"\").trim();\n const signature = String(input.signature || \"\").trim();\n const parsed = Number(timestamp);\n if (!timestamp || !signature || !Number.isFinite(parsed)) return false;\n if (Math.abs(Date.now() - parsed) > (input.toleranceMs ?? 5 * 60 * 1000)) return false;\n const expected = signArtifactPayload({ body: input.body, signingSecret: input.signingSecret, timestamp })[\"x-agents24-signature\"];\n const actualBytes = Buffer.from(signature);\n const expectedBytes = Buffer.from(expected);\n return actualBytes.length === expectedBytes.length && timingSafeEqual(actualBytes, expectedBytes);\n}\n\nasync function requestBody(req: IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n return Buffer.concat(chunks);\n}\n\nasync function writeResponse(res: ServerResponse, response: Response): Promise<void> {\n res.statusCode = response.status;\n response.headers.forEach((value, key) => res.setHeader(key, value));\n res.end(Buffer.from(await response.arrayBuffer()));\n}\n\nexport function createArtifactServer(options: ArtifactServerOptions) {\n if (!options.signingSecret) throw new Error(\"createArtifactServer requires signingSecret\");\n const manifestPath = options.manifestPath || DEFAULT_MANIFEST_PATH;\n const healthPath = DEFAULT_HEALTH_PATH;\n const invokePath = options.invokePath || DEFAULT_INVOKE_PATH;\n let artifact = artifactFromExports(options.exports, options.toolsets);\n\n function setExports(next: unknown): void { artifact = artifactFromExports(next); }\n\n async function handleRequest(request: Request): Promise<Response> {\n const url = new URL(request.url);\n if (request.method === \"GET\" && url.pathname === healthPath) return json({ status: \"ok\", service: \"agents24-artifact\" });\n if (request.method === \"GET\" && url.pathname === manifestPath) return json(manifest(artifact));\n if (request.method !== \"POST\" || url.pathname !== invokePath) return json({ error: \"Not found\", code: \"NOT_FOUND\" }, { status: 404 });\n const body = await request.text();\n if (!verifyArtifactSignature({\n body,\n signingSecret: options.signingSecret,\n timestamp: request.headers.get(\"x-agents24-timestamp\"),\n signature: request.headers.get(\"x-agents24-signature\"),\n })) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact invocation signature\", code: \"INVALID_SIGNATURE\" } }, { status: 401 });\n }\n let payload: ArtifactInvokePayload;\n try { payload = JSON.parse(body) as ArtifactInvokePayload; }\n catch { return json({ status: \"failed\", error: { message: \"Invalid JSON body\", code: \"INVALID_JSON\" } }, { status: 400 }); }\n const exportName = String(payload.export_name || \"default\");\n const selected = artifact.exports.find((item) => item.name === exportName);\n if (!selected) return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' was not found`, code: \"EXPORT_NOT_FOUND\" } });\n if (selected.kind !== \"tool\") return json({ status: \"failed\", error: { message: \"Self-hosted artifact server can invoke tool exports only\", code: \"UNSUPPORTED_EXPORT_KIND\" } });\n if (typeof selected.handler !== \"function\") return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' has no handler`, code: \"HANDLER_NOT_FOUND\" } });\n const started = Date.now();\n try {\n const result = await selected.handler(payload.inputs, payload.config || {}, payload.context || {});\n return json({\n status: \"completed\", result, error: null, duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n } catch (error) {\n return json({\n status: \"failed\",\n error: { message: error instanceof Error ? error.message : String(error), code: \"HANDLER_FAILED\" },\n duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n }\n }\n\n async function nodeHandler(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const body = await requestBody(req);\n const request = new Request(`http://${req.headers.host || \"127.0.0.1\"}${req.url || \"/\"}`, {\n method: req.method,\n headers: req.headers as HeadersInit,\n body: body.length ? body.toString(\"utf8\") : undefined,\n });\n await writeResponse(res, await handleRequest(request));\n }\n\n function listen(port = 0, hostname = \"127.0.0.1\"): Promise<Server> {\n const server = createServer((req, res) => {\n void nodeHandler(req, res).catch((error) => {\n res.statusCode = 500;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify({ status: \"failed\", error: { message: String(error), code: \"SERVER_ERROR\" } }));\n });\n });\n return new Promise((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, hostname, () => { server.off(\"error\", reject); resolve(server); });\n });\n }\n\n return {\n manifestPath, healthPath, invokePath, setExports,\n manifest: () => manifest(artifact), handleRequest, nodeHandler, listen,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/artifacts-runtime.mjs","../src/artifacts.ts","../src/server.ts"],"names":["defineArtifact","describeArtifactContract","createHash","createHmac","Buffer","timingSafeEqual","body","payload","createServer"],"mappings":";;;;;;;;;AAuDA,SAAS,QAAQ,KAAA,EAAO;AACtB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AACjE,EAAA,OAAO,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,OAAA,CAAQ,KAAK,IAAI,EAAC;AACvE;AAEA,SAAS,kBAAkB,UAAA,EAAY;AACrC,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAI;AAC9B,EAAA,KAAA,MAAW,MAAA,IAAU,CAAC,UAAA,CAAW,KAAA,EAAO,WAAW,UAAA,EAAY,UAAA,CAAW,YAAY,CAAA,EAAG;AACvF,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,GAAG,CAAA,IAAK,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC/C,MAAA,IAAI,CAAC,OAAO,OAAO,GAAA,KAAQ,UAAU,MAAM,IAAI,UAAU,2DAA2D,CAAA;AACpH,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,sBAAA,GAAyB,GAAA,CAAI,IAAA,CAAK,IAAA,EAAK,GAAI,MAAA,CAAO,UAAA,IAAc,GAAA,CAAI,IAAA,IAAQ,EAAE,EAAE,IAAA,EAAK;AACtG,MAAA,IAAI,CAAC,IAAA,EAAM,MAAM,IAAI,UAAU,iCAAiC,CAAA;AAChE,MAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,GAAG,GAAA,EAAK,MAAM,WAAA,EAAa,GAAA,CAAI,WAAA,IAAe,IAAA,EAAM,CAAA;AACnE,MAAA,aAAA,CAAc,GAAA,CAAI,GAAA,EAAK,CAAC,GAAI,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,IAAK,EAAC,EAAI,IAAI,CAAC,CAAA;AAAA,IAClE;AAAA,EACF;AACA,EAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,IAAI,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,EAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,KAAM,KAAK,CAAA;AAC3E,EAAA,IAAI,WAAW,MAAM,IAAI,SAAA,CAAU,CAAA,gCAAA,EAAmC,SAAS,CAAA,CAAA,CAAG,CAAA;AAClF,EAAA,OAAO,EAAE,SAAS,aAAA,EAAc;AAClC;AAEA,SAAS,kBAAA,CAAmB,KAAA,EAAO,OAAA,EAAS,aAAA,EAAe;AACzD,EAAA,IAAI,KAAA,IAAS,IAAA,EAAM,OAAO,EAAC;AAC3B,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAO,UAAU,QAAA,EAAU;AACrD,IAAA,MAAM,IAAI,UAAU,2EAA2E,CAAA;AAAA,EACjG;AACA,EAAA,MAAM,QAAQ,IAAI,GAAA,CAAI,OAAA,CAAQ,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,MAAM,EAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7F,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAI;AAC1B,EAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACjD,IAAA,IAAI,CAAC,GAAA,CAAI,IAAA,IAAQ,MAAM,IAAI,UAAU,uCAAuC,CAAA;AAC5E,IAAA,IAAI,CAAC,OAAO,iBAAA,EAAmB,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,oBAAA,CAAsB,CAAA;AACxF,IAAA,IAAI,CAAC,MAAM,IAAA,IAAQ,CAAC,MAAM,WAAA,IAAe,CAAC,KAAA,CAAM,KAAA,CAAM,MAAA,EAAQ;AAC5D,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,wCAAA,CAA0C,CAAA;AAAA,IAC/E;AACA,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,iBAAA,EAAkB;AAC5C,IAAA,IAAI,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,CAAA,iCAAA,EAAoC,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAChG,IAAA,SAAA,CAAU,IAAI,MAAM,CAAA;AACpB,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,SAAA,KAAc;AAC7C,MAAA,IAAI,OAAO,SAAA,KAAc,QAAA,EAAU,OAAO,UAAU,IAAA,EAAK;AACzD,MAAA,MAAM,OAAA,GAAU,aAAA,CAAc,GAAA,CAAI,SAAS,KAAK,EAAC;AACjD,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,oDAAA,CAAsD,CAAA;AACnH,MAAA,OAAO,QAAQ,CAAC,CAAA;AAAA,IAClB,CAAC,CAAA;AACD,IAAA,IAAI,IAAI,GAAA,CAAI,OAAO,CAAA,CAAE,IAAA,KAAS,OAAA,CAAQ,MAAA,EAAQ,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,0BAAA,CAA4B,CAAA;AAC7G,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,yCAAA,EAA4C,MAAM,CAAA,CAAA,CAAG,CAAA;AAAA,IAClH;AACA,IAAA,OAAO,EAAE,KAAK,IAAA,EAAM,KAAA,CAAM,MAAM,WAAA,EAAa,KAAA,CAAM,WAAA,EAAa,KAAA,EAAO,OAAA,EAAQ;AAAA,EACjF,CAAC,CAAA;AACH;AAEO,SAAS,cAAA,CAAe,UAAA,GAAa,EAAC,EAAG;AAC9C,EAAA,MAAM,UAAA,GAAa,kBAAkB,UAAU,CAAA;AAC/C,EAAA,OAAO;AAAA,IACL,kBAAA,EAAoB,IAAA;AAAA,IACpB,SAAS,UAAA,CAAW,OAAA;AAAA,IACpB,UAAU,kBAAA,CAAmB,UAAA,CAAW,UAAU,UAAA,CAAW,OAAA,EAAS,WAAW,aAAa,CAAA;AAAA,IAC9F,0BAAA,EAA4B,WAAW,QAAA,IAAY;AAAA,GACrD;AACF;AAEO,SAAS,iBAAiB,KAAA,EAAO;AACtC,EAAA,MAAM,QAAA,GAAW,SAAS,KAAA,CAAM,kBAAA,GAAqB,QAAQ,cAAA,CAAe,KAAA,IAAS,EAAE,CAAA;AACvF,EAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,EAAE,SAAS,QAAA,EAAU,GAAG,IAAA,EAAK,KAAM,IAAI,CAAA;AACtE;AAEO,SAAS,yBAAyB,KAAA,EAAO;AAC9C,EAAA,MAAM,QAAA,GAAW,SAAS,KAAA,CAAM,kBAAA,GAAqB,QAAQ,cAAA,CAAe,KAAA,IAAS,EAAE,CAAA;AACvF,EAAA,OAAO,EAAE,OAAA,EAAS,gBAAA,CAAiB,QAAQ,GAAG,QAAA,EAAU,QAAA,CAAS,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,GAAO,CAAA,EAAE;AACzG;;;ACzCO,IAAMA,eAAAA,GAAyB,cAAA;AAM/B,IAAMC,yBAAAA,GAAmC,wBAAA;;;ACrDhD,IAAM,qBAAA,GAAwB,gCAAA;AAC9B,IAAM,mBAAA,GAAsB,uCAAA;AAC5B,IAAM,mBAAA,GAAsB,uCAAA;AAC5B,IAAM,mBAAA,GAAsB,2BAAA;AACrB,IAAM,6BAAA,GAAgC;AAE7C,SAAS,OAAO,KAAA,EAAyB;AACvC,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA,CAAM,IAAI,MAAM,CAAA;AACjD,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,IAAA,OAAO,MAAA,CAAO,KAAK,KAAgC,CAAA,CAAE,MAAK,CAAE,MAAA,CAAgC,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAC3G,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAQ,KAAA,CAAkC,GAAG,CAAC,CAAA;AAC5D,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,cAAuB,aAAA,EAA6C;AAC/F,EAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,KAAiB,QAAA,IAAa,aAAkD,kBAAA,EAAoB;AAC7H,IAAA,IAAI,aAAA,IAAiB,IAAA,EAAM,MAAM,IAAI,UAAU,uEAAuE,CAAA;AACtH,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/B,IAAA,OAAOD,eAAAA,CAAe;AAAA,MACpB,OAAO,MAAA,CAAO,WAAA,CAAa,YAAA,CAAkC,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU,CAAC,MAAA,CAAO,KAAK,IAAA,IAAQ,KAAK,CAAA,EAAG,IAAI,CAAC,CAAC,CAAA;AAAA,MACrH,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACA,EAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,KAAiB,QAAA,EAAU;AACpD,IAAA,MAAM,MAAA,GAAS,YAAA;AACf,IAAA,IAAI,OAAA,IAAW,MAAA,IAAU,YAAA,IAAgB,MAAA,IAAU,kBAAkB,MAAA,EAAQ;AAC3E,MAAA,OAAOA,eAAAA,CAAe,EAAE,GAAG,MAAA,EAAQ,UAAU,aAAA,IAAiB,MAAA,CAAO,UAAU,CAAA;AAAA,IACjF;AACA,IAAA,OAAOA,gBAAe,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,eAAe,CAAA;AAAA,EAClE;AACA,EAAA,OAAOA,eAAAA,CAAe,EAAE,QAAA,EAAU,aAAA,EAAe,CAAA;AACnD;AAEA,SAAS,eAAe,IAAA,EAAwD;AAC9E,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,IACtC,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,IACtC,WAAA,EAAa,KAAK,WAAA,IAAe,EAAA;AAAA,IACjC,YAAA,EAAc,IAAA,CAAK,YAAA,IAAgB,EAAC;AAAA,IACpC,aAAA,EAAe,IAAA,CAAK,aAAA,IAAiB,EAAC;AAAA,IACtC,aAAA,EAAe,IAAA,CAAK,aAAA,IAAiB,EAAC;AAAA,IACtC,SAAA,EAAW,IAAA,CAAK,SAAA,IAAa,EAAC;AAAA,IAC9B,YAAA,EAAc,IAAA,CAAK,YAAA,IAAgB,EAAC;AAAA,IACpC,cAAA,EAAgB,KAAK,cAAA,IAAkB,aAAA;AAAA,IACvC,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,IACtC,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY;AAAC,GAC9B;AACF;AAEA,SAAS,QAAA,CAAS,UAA8B,QAAA,EAA2D;AACzG,EAAA,MAAM,SAAA,GAAYC,0BAAyB,QAAQ,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,cAAA,EAAgB,sBAAA;AAAA,IAChB,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAClC,OAAA,EAAS,UAAU,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,IAC7D,GAAI,SAAS,0BAAA,GAA6B,EAAE,UAAU,SAAA,CAAU,QAAA,KAAa;AAAC,GAChF;AACA,EAAA,OAAO;AAAA,IACL,GAAG,QAAA;AAAA,IACH,aAAA,EAAeC,iBAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAC,CAAC,CAAA,CAAE,OAAO,KAAK;AAAA,GAC3F;AACF;AAEA,SAAS,IAAA,CAAK,OAAA,EAAkB,IAAA,GAAqB,EAAC,EAAa;AACjE,EAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AAAA,IAC3C,GAAG,IAAA;AAAA,IACH,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAoB,GAAI,IAAA,CAAK,OAAA,IAAW,EAAC;AAAG,GACxE,CAAA;AACH;AAEO,SAAS,oBAAoB,KAAA,EAIP;AAC3B,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,SAAA,IAAa,IAAA,CAAK,KAAK,CAAA;AACtD,EAAA,MAAM,SAAA,GAAYC,iBAAA,CAAW,QAAA,EAAU,KAAA,CAAM,aAAa,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,SAAS,IAAI,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA,CAAE,OAAO,KAAK,CAAA;AAC7G,EAAA,OAAO,EAAE,sBAAA,EAAwB,SAAA,EAAW,sBAAA,EAAwB,CAAA,OAAA,EAAU,SAAS,CAAA,CAAA,EAAG;AAC5F;AAEO,SAAS,wBAAwB,KAAA,EAM5B;AACV,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,SAAA,IAAa,EAAE,EAAE,IAAA,EAAK;AACrD,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,SAAA,IAAa,EAAE,EAAE,IAAA,EAAK;AACrD,EAAA,MAAM,MAAA,GAAS,OAAO,SAAS,CAAA;AAC/B,EAAA,IAAI,CAAC,aAAa,CAAC,SAAA,IAAa,CAAC,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA;AACjE,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,EAAI,GAAI,MAAM,CAAA,IAAK,KAAA,CAAM,WAAA,IAAe,CAAA,GAAI,EAAA,GAAK,GAAA,CAAA,EAAO,OAAO,KAAA;AACjF,EAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,aAAA,EAAe,KAAA,CAAM,aAAA,EAAe,SAAA,EAAW,CAAA,CAAE,sBAAsB,CAAA;AAChI,EAAA,MAAM,WAAA,GAAcC,aAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AACzC,EAAA,MAAM,aAAA,GAAgBA,aAAA,CAAO,IAAA,CAAK,QAAQ,CAAA;AAC1C,EAAA,OAAO,YAAY,MAAA,KAAW,aAAA,CAAc,MAAA,IAAUC,sBAAA,CAAgB,aAAa,aAAa,CAAA;AAClG;AAEO,SAAS,gCAAgC,KAAA,EAGrC;AACT,EAAA,MAAM,KAAA,GAAQF,iBAAA,CAAW,QAAA,EAAU,KAAA,CAAM,aAAa,CAAA,CACnD,MAAA,CAAO,CAAA,EAAG,6BAA6B,IAAI,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA,CAC5D,OAAO,KAAK,CAAA;AACf,EAAA,OAAO,UAAU,KAAK,CAAA,CAAA;AACxB;AAEO,SAAS,gCAAgC,KAAA,EAIpC;AACV,EAAA,MAAM,QAAA,GAAWC,aAAA,CAAO,IAAA,CAAK,+BAAA,CAAgC,KAAK,CAAC,CAAA;AACnE,EAAA,MAAM,SAASA,aAAA,CAAO,IAAA,CAAK,OAAO,KAAA,CAAM,KAAA,IAAS,EAAE,CAAC,CAAA;AACpD,EAAA,OAAO,OAAO,MAAA,KAAW,QAAA,CAAS,MAAA,IAAUC,sBAAA,CAAgB,QAAQ,QAAQ,CAAA;AAC9E;AAEA,eAAe,YAAY,GAAA,EAAuC;AAChE,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,WAAA,MAAiB,KAAA,IAAS,GAAA,EAAK,MAAA,CAAO,IAAA,CAAKD,aAAA,CAAO,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA,GAAQA,aAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AAC9F,EAAA,OAAOA,aAAA,CAAO,OAAO,MAAM,CAAA;AAC7B;AAEA,eAAe,aAAA,CAAc,KAAqB,QAAA,EAAmC;AACnF,EAAA,GAAA,CAAI,aAAa,QAAA,CAAS,MAAA;AAC1B,EAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAC,KAAA,EAAO,QAAQ,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,KAAK,CAAC,CAAA;AAClE,EAAA,GAAA,CAAI,IAAIA,aAAA,CAAO,IAAA,CAAK,MAAM,QAAA,CAAS,WAAA,EAAa,CAAC,CAAA;AACnD;AAEO,SAAS,qBAAqB,OAAA,EAAgC;AACnE,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,aAAA;AACrC,EAAA,IAAI,QAAA,KAAa,iBAAiB,CAAC,OAAA,CAAQ,eAAe,MAAM,IAAI,MAAM,6CAA6C,CAAA;AACvH,EAAA,MAAM,YAAA,GAAe,QAAQ,YAAA,IAAgB,qBAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,mBAAA;AACnB,EAAA,MAAM,UAAA,GAAa,mBAAA;AACnB,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,mBAAA;AACzC,EAAA,IAAI,QAAA,GAAW,mBAAA,CAAoB,OAAA,CAAQ,OAAA,EAAS,QAAQ,QAAQ,CAAA;AAEpE,EAAA,SAAS,WAAW,IAAA,EAAqB;AAAE,IAAA,QAAA,GAAW,oBAAoB,IAAI,CAAA;AAAA,EAAG;AAEjF,EAAA,eAAe,cAAc,OAAA,EAAqC;AAChE,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,KAAA,IAAS,GAAA,CAAI,QAAA,KAAa,UAAA,EAAY,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,qBAAqB,CAAA;AACvH,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,KAAA,IAAS,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc,OAAO,IAAA,CAAK,QAAA,CAAS,QAAA,EAAU,QAAQ,CAAC,CAAA;AACvG,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,MAAA,IAAU,GAAA,CAAI,aAAa,UAAA,EAAY;AAC5D,MAAA,MAAME,KAAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,MAAA,IAAI,QAAA,KAAa,aAAA,IAAiB,CAAC,uBAAA,CAAwB;AAAA,QACzD,IAAA,EAAAA,KAAAA;AAAA,QACA,aAAA,EAAe,QAAQ,aAAA,IAAiB,EAAA;AAAA,QACxC,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB,CAAA;AAAA,QACrD,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB;AAAA,OACtD,CAAA,EAAG;AACF,QAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,yCAAA,EAA2C,IAAA,EAAM,qBAAoB,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,MAC7I;AACA,MAAA,IAAIC,QAAAA;AACJ,MAAA,IAAI;AAAE,QAAAA,QAAAA,GAAU,IAAA,CAAK,KAAA,CAAMD,KAAI,CAAA;AAAA,MAAiD,CAAA,CAAA,MAC1E;AAAE,QAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,gBAAe,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,MAAG;AAC3H,MAAA,MAAM,YAAY,MAAA,CAAOC,QAAAA,EAAS,SAAA,IAAa,EAAE,EAAE,IAAA,EAAK;AACxD,MAAA,MAAM,UAAU,MAAA,CAAOA,QAAAA,EAAS,OAAA,IAAW,EAAE,EAAE,IAAA,EAAK;AACpD,MAAA,IAAI,YAAY,6BAAA,IAAiC,SAAA,CAAU,SAAS,EAAA,IAAM,SAAA,CAAU,SAAS,GAAA,EAAK;AAChG,QAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,yCAAA,EAA2C,IAAA,EAAM,mBAAkB,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,MAC3I;AACA,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,IAAA;AAAA,QACR,SAAA,EAAW,QAAA;AAAA,QACX,SAAA;AAAA,QACA,KAAA,EAAO,QAAA,KAAa,aAAA,GAChB,+BAAA,CAAgC,EAAE,SAAA,EAAW,aAAA,EAAe,OAAA,CAAQ,aAAA,IAAiB,EAAA,EAAI,CAAA,GACzF;AAAA,OACL,CAAA;AAAA,IACH;AACA,IAAA,IAAI,QAAQ,MAAA,KAAW,MAAA,IAAU,GAAA,CAAI,QAAA,KAAa,YAAY,OAAO,IAAA,CAAK,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,WAAA,IAAe,EAAE,MAAA,EAAQ,KAAK,CAAA;AACpI,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,IAAI,QAAA,KAAa,aAAA,IAAiB,CAAC,uBAAA,CAAwB;AAAA,MACzD,IAAA;AAAA,MACA,aAAA,EAAe,QAAQ,aAAA,IAAiB,EAAA;AAAA,MACxC,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB,CAAA;AAAA,MACrD,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB;AAAA,KACtD,CAAA,EAAG;AACF,MAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,uCAAA,EAAyC,IAAA,EAAM,qBAAoB,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC3I;AACA,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI;AAAE,MAAA,OAAA,GAAU,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,IAA4B,CAAA,CAAA,MACrD;AAAE,MAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,gBAAe,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,IAAG;AAC3H,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,OAAA,CAAQ,WAAA,IAAe,SAAS,CAAA;AAC1D,IAAA,MAAM,QAAA,GAAW,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,UAAU,CAAA;AACzE,IAAA,IAAI,CAAC,QAAA,EAAU,OAAO,IAAA,CAAK,EAAE,QAAQ,QAAA,EAAU,KAAA,EAAO,EAAE,OAAA,EAAS,oBAAoB,UAAU,CAAA,eAAA,CAAA,EAAmB,IAAA,EAAM,kBAAA,IAAsB,CAAA;AAC9I,IAAA,IAAI,QAAA,CAAS,IAAA,KAAS,MAAA,EAAQ,OAAO,KAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,EAAE,OAAA,EAAS,0DAAA,EAA4D,IAAA,EAAM,yBAAA,IAA6B,CAAA;AAC/K,IAAA,IAAI,OAAO,QAAA,CAAS,OAAA,KAAY,YAAY,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,EAAE,SAAS,CAAA,iBAAA,EAAoB,UAAU,oBAAoB,IAAA,EAAM,mBAAA,IAAuB,CAAA;AAC7K,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AACzB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAA,IAAU,EAAC,EAAG,OAAA,CAAQ,OAAA,IAAW,EAAE,CAAA;AACjG,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,WAAA;AAAA,QAAa,MAAA;AAAA,QAAQ,KAAA,EAAO,IAAA;AAAA,QAAM,WAAA,EAAa,IAAA,CAAK,GAAA,EAAI,GAAI,OAAA;AAAA,QACpE,SAAA,EAAW,sBAAA;AAAA,QAAwB,mBAAA,EAAqB,QAAQ,MAAA,IAAU,IAAA;AAAA,QAAM,QAAQ,EAAC;AAAA,QACzF,gBAAA,EAAkB,EAAE,QAAA,EAAU,sBAAA;AAAuB,OACtD,CAAA;AAAA,IACH,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,QAAA;AAAA,QACR,KAAA,EAAO,EAAE,OAAA,EAAS,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,EAAM,gBAAA,EAAiB;AAAA,QACjG,WAAA,EAAa,IAAA,CAAK,GAAA,EAAI,GAAI,OAAA;AAAA,QAC1B,SAAA,EAAW,sBAAA;AAAA,QAAwB,mBAAA,EAAqB,QAAQ,MAAA,IAAU,IAAA;AAAA,QAAM,QAAQ,EAAC;AAAA,QACzF,gBAAA,EAAkB,EAAE,QAAA,EAAU,sBAAA;AAAuB,OACtD,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,eAAe,WAAA,CAAY,KAAsB,GAAA,EAAoC;AACnF,IAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,GAAG,CAAA;AAClC,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,CAAA,OAAA,EAAU,GAAA,CAAI,OAAA,CAAQ,IAAA,IAAQ,WAAW,CAAA,EAAG,GAAA,CAAI,GAAA,IAAO,GAAG,CAAA,CAAA,EAAI;AAAA,MACxF,QAAQ,GAAA,CAAI,MAAA;AAAA,MACZ,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,MAAM,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,GAAI;AAAA,KAC7C,CAAA;AACD,IAAA,MAAM,aAAA,CAAc,GAAA,EAAK,MAAM,aAAA,CAAc,OAAO,CAAC,CAAA;AAAA,EACvD;AAEA,EAAA,SAAS,MAAA,CAAO,IAAA,GAAO,CAAA,EAAG,QAAA,GAAW,WAAA,EAA8B;AACjE,IAAA,MAAM,MAAA,GAASC,iBAAA,CAAa,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxC,MAAA,KAAK,YAAY,GAAA,EAAK,GAAG,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAU;AAC1C,QAAA,GAAA,CAAI,UAAA,GAAa,GAAA;AACjB,QAAA,GAAA,CAAI,SAAA,CAAU,gBAAgB,kBAAkB,CAAA;AAChD,QAAA,GAAA,CAAI,IAAI,IAAA,CAAK,SAAA,CAAU,EAAE,MAAA,EAAQ,UAAU,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,EAAM,cAAA,EAAe,EAAG,CAAC,CAAA;AAAA,MACvG,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,MAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM,CAAA;AAC3B,MAAA,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,QAAA,EAAU,MAAM;AAAE,QAAA,MAAA,CAAO,GAAA,CAAI,SAAS,MAAM,CAAA;AAAG,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MAAG,CAAC,CAAA;AAAA,IACvF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IAAc,UAAA;AAAA,IAAY,UAAA;AAAA,IAAY,UAAA;AAAA,IAAY,UAAA;AAAA,IAClD,QAAA,EAAU,MAAM,QAAA,CAAS,QAAA,EAAU,QAAQ,CAAA;AAAA,IAAG,aAAA;AAAA,IAAe,WAAA;AAAA,IAAa;AAAA,GAC5E;AACF","file":"server.cjs","sourcesContent":["function schema(value) {\n if (value == null) return {};\n if (typeof value.toJSONSchema === \"function\") return value.toJSONSchema();\n if (typeof value.toJsonSchema === \"function\") return value.toJsonSchema();\n if (typeof value === \"object\") {\n if (typeof value.parse === \"function\" && typeof value.safeParse === \"function\" && value._zod) {\n throw new TypeError(\"Zod schemas must expose toJSONSchema(); install Zod v4 or pass z.toJSONSchema(schema)\");\n }\n return value;\n }\n throw new TypeError(\"schema must be a JSON Schema object or expose toJSONSchema()\");\n}\n\nfunction normalize(kind, definition = {}, handler) {\n const actualHandler = handler || definition.handler || definition.execute;\n const explicitName = String(definition.name || \"\").trim();\n const name = explicitName || String(actualHandler?.name || \"\").trim();\n const value = {\n name,\n kind,\n description: definition.description || \"\",\n input_schema: schema(definition.input_schema || definition.inputSchema || definition.input),\n output_schema: schema(definition.output_schema || definition.outputSchema || definition.output),\n config_schema: schema(definition.config_schema || definition.configSchema || definition.config),\n ui_schema: definition.ui_schema || definition.uiSchema || definition.ui || {},\n side_effects: definition.side_effects || definition.sideEffects || [],\n execution_mode: definition.execution_mode || definition.executionMode || \"interactive\",\n handler_ref: definition.handler_ref || definition.handlerRef || actualHandler?.name || name,\n handler: actualHandler,\n };\n Object.defineProperty(value, \"__agents24ExplicitName\", { value: Boolean(explicitName), enumerable: false });\n return value;\n}\n\nexport function tool(definition = {}, handler) {\n return normalize(\"tool\", definition, handler);\n}\n\nexport function agentNode(definition = {}, handler) {\n return normalize(\"agent_node\", definition, handler);\n}\n\nexport function ragOperator(definition = {}, handler) {\n return normalize(\"rag_operator\", definition, handler);\n}\n\nexport function toolset(definition = {}) {\n return {\n __agents24Toolset: true,\n name: String(definition.name || \"\").trim(),\n description: String(definition.description || \"\").trim(),\n tools: Array.isArray(definition.tools) ? definition.tools : [],\n };\n}\n\nfunction entries(input) {\n if (Array.isArray(input)) return input.map((item) => [null, item]);\n return input && typeof input === \"object\" ? Object.entries(input) : [];\n}\n\nfunction normalizedExports(definition) {\n const exports = [];\n const namesByObject = new Map();\n for (const source of [definition.tools, definition.agentNodes, definition.ragOperators]) {\n for (const [mappedName, raw] of entries(source)) {\n if (!raw || typeof raw !== \"object\") throw new TypeError(\"Artifact exports must use tool, agentNode, or ragOperator\");\n const name = raw.__agents24ExplicitName ? raw.name.trim() : String(mappedName || raw.name || \"\").trim();\n if (!name) throw new TypeError(\"Artifact exports require a name\");\n exports.push({ ...raw, name, handler_ref: raw.handler_ref || name });\n namesByObject.set(raw, [...(namesByObject.get(raw) || []), name]);\n }\n }\n const names = exports.map((item) => item.name);\n const duplicate = names.find((name, index) => names.indexOf(name) !== index);\n if (duplicate) throw new TypeError(`Duplicate artifact export name '${duplicate}'`);\n return { exports, namesByObject };\n}\n\nfunction normalizedToolsets(input, exports, namesByObject) {\n if (input == null) return [];\n if (Array.isArray(input) || typeof input !== \"object\") {\n throw new TypeError(\"TypeScript artifact toolsets must be an object keyed by stable source key\");\n }\n const tools = new Set(exports.filter((item) => item.kind === \"tool\").map((item) => item.name));\n const seenNames = new Set();\n return Object.entries(input).map(([key, value]) => {\n if (!key.trim()) throw new TypeError(\"Artifact toolset keys cannot be empty\");\n if (!value?.__agents24Toolset) throw new TypeError(`Toolset '${key}' must use toolset()`);\n if (!value.name || !value.description || !value.tools.length) {\n throw new TypeError(`Toolset '${key}' requires a name, description, and tool`);\n }\n const folded = value.name.toLocaleLowerCase();\n if (seenNames.has(folded)) throw new TypeError(`Duplicate artifact toolset name '${value.name}'`);\n seenNames.add(folded);\n const members = value.tools.map((reference) => {\n if (typeof reference === \"string\") return reference.trim();\n const aliases = namesByObject.get(reference) || [];\n if (aliases.length !== 1) throw new TypeError(`Toolset '${key}' contains an unresolved or ambiguous tool reference`);\n return aliases[0];\n });\n if (new Set(members).size !== members.length) throw new TypeError(`Toolset '${key}' contains duplicate tools`);\n for (const member of members) {\n if (!tools.has(member)) throw new TypeError(`Toolset '${key}' references missing or non-tool export '${member}'`);\n }\n return { key, name: value.name, description: value.description, tools: members };\n });\n}\n\nexport function defineArtifact(definition = {}) {\n const normalized = normalizedExports(definition);\n return {\n __agents24Artifact: true,\n exports: normalized.exports,\n toolsets: normalizedToolsets(definition.toolsets, normalized.exports, normalized.namesByObject),\n __agents24ToolsetsDeclared: definition.toolsets != null,\n };\n}\n\nexport function describeArtifact(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return artifact.exports.map(({ handler: _handler, ...item }) => item);\n}\n\nexport function describeArtifactContract(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return { exports: describeArtifact(artifact), toolsets: artifact.toolsets.map((item) => ({ ...item })) };\n}\n","// The executable implementation is JavaScript so the platform can inject the\n// exact same source into Worker describe/build sandboxes without transpilation.\n// @ts-expect-error package-internal JavaScript runtime has typed bindings below\nimport * as runtime from \"./artifacts-runtime.mjs\";\n\nexport type JsonSchemaSource = Record<string, unknown> | {\n toJSONSchema?: () => Record<string, unknown>;\n toJsonSchema?: () => Record<string, unknown>;\n};\n\nexport type ArtifactHandler = (\n input: unknown,\n config: Record<string, unknown>,\n context: Record<string, unknown>,\n) => unknown | Promise<unknown>;\n\nexport type ArtifactExportDefinition = {\n name?: string;\n description?: string;\n input_schema?: JsonSchemaSource;\n inputSchema?: JsonSchemaSource;\n input?: JsonSchemaSource;\n output_schema?: JsonSchemaSource;\n outputSchema?: JsonSchemaSource;\n output?: JsonSchemaSource;\n config_schema?: JsonSchemaSource;\n configSchema?: JsonSchemaSource;\n config?: JsonSchemaSource;\n ui_schema?: Record<string, unknown>;\n uiSchema?: Record<string, unknown>;\n ui?: Record<string, unknown>;\n side_effects?: string[];\n sideEffects?: string[];\n execution_mode?: string;\n executionMode?: string;\n handler_ref?: string;\n handlerRef?: string;\n handler?: ArtifactHandler;\n execute?: ArtifactHandler;\n};\n\nexport type ArtifactExport = {\n name: string;\n kind: \"tool\" | \"agent_node\" | \"rag_operator\";\n description: string;\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n config_schema: Record<string, unknown>;\n ui_schema: Record<string, unknown>;\n side_effects: string[];\n execution_mode: string;\n handler_ref: string;\n handler?: ArtifactHandler;\n readonly __agents24ExplicitName?: boolean;\n};\n\nexport type ArtifactToolset = {\n readonly __agents24Toolset: true;\n name: string;\n description: string;\n tools: Array<string | ArtifactExport>;\n};\n\nexport type ArtifactDefinition = {\n readonly __agents24Artifact: true;\n exports: ArtifactExport[];\n toolsets: Array<{ key: string; name: string; description: string; tools: string[] }>;\n readonly __agents24ToolsetsDeclared: boolean;\n};\n\nexport const tool = runtime.tool as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const agentNode = runtime.agentNode as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const ragOperator = runtime.ragOperator as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const toolset = runtime.toolset as (\n definition?: { name?: string; description?: string; tools?: Array<string | ArtifactExport> },\n) => ArtifactToolset;\nexport const defineArtifact = runtime.defineArtifact as (\n definition?: Record<string, unknown>,\n) => ArtifactDefinition;\nexport const describeArtifact = runtime.describeArtifact as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => Array<Omit<ArtifactExport, \"handler\">>;\nexport const describeArtifactContract = runtime.describeArtifactContract as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => {\n exports: Array<Omit<ArtifactExport, \"handler\">>;\n toolsets: ArtifactDefinition[\"toolsets\"];\n};\n","/// <reference types=\"node\" />\n\nimport { Buffer } from \"node:buffer\";\nimport { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\n\nimport {\n defineArtifact,\n describeArtifactContract,\n type ArtifactDefinition,\n type ArtifactExport,\n} from \"./artifacts.js\";\n\nexport type ArtifactInvokePayload = {\n run_id?: string;\n artifact_id?: string | null;\n revision_id?: string;\n export_name?: string;\n export_kind?: string;\n inputs?: unknown;\n config?: Record<string, unknown>;\n context?: Record<string, unknown>;\n};\n\nexport type ArtifactServerOptions = {\n exports: unknown;\n toolsets?: unknown;\n signingSecret?: string;\n authMode?: \"hmac_sha256\" | \"none\";\n manifestPath?: string;\n invokePath?: string;\n};\n\nexport type ArtifactSignatureHeaders = {\n \"x-agents24-timestamp\": string;\n \"x-agents24-signature\": string;\n};\n\nconst DEFAULT_MANIFEST_PATH = \"/.well-known/agents24/artifact\";\nconst DEFAULT_HEALTH_PATH = \"/.well-known/agents24/artifact/health\";\nconst DEFAULT_VERIFY_PATH = \"/.well-known/agents24/artifact/verify\";\nconst DEFAULT_INVOKE_PATH = \"/agents24/artifact/invoke\";\nexport const ARTIFACT_VERIFICATION_PURPOSE = \"agents24.artifact.verify.v1\";\n\nfunction sorted(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sorted);\n if (value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).sort().reduce<Record<string, unknown>>((result, key) => {\n result[key] = sorted((value as Record<string, unknown>)[key]);\n return result;\n }, {});\n }\n return value;\n}\n\nfunction artifactFromExports(exportsValue: unknown, toolsetsValue?: unknown): ArtifactDefinition {\n if (exportsValue && typeof exportsValue === \"object\" && (exportsValue as { __agents24Artifact?: unknown }).__agents24Artifact) {\n if (toolsetsValue != null) throw new TypeError(\"Pass toolsets through defineArtifact or the toolsets option, not both\");\n return exportsValue as ArtifactDefinition;\n }\n if (Array.isArray(exportsValue)) {\n return defineArtifact({\n tools: Object.fromEntries((exportsValue as ArtifactExport[]).map((item, index) => [String(item.name || index), item])),\n toolsets: toolsetsValue,\n });\n }\n if (exportsValue && typeof exportsValue === \"object\") {\n const record = exportsValue as Record<string, unknown>;\n if (\"tools\" in record || \"agentNodes\" in record || \"ragOperators\" in record) {\n return defineArtifact({ ...record, toolsets: toolsetsValue ?? record.toolsets });\n }\n return defineArtifact({ tools: record, toolsets: toolsetsValue });\n }\n return defineArtifact({ toolsets: toolsetsValue });\n}\n\nfunction contractExport(item: Record<string, unknown>): Record<string, unknown> {\n return {\n export_name: item.export_name || item.name,\n export_kind: item.export_kind || item.kind,\n description: item.description || \"\",\n input_schema: item.input_schema || {},\n output_schema: item.output_schema || {},\n config_schema: item.config_schema || {},\n ui_schema: item.ui_schema || {},\n side_effects: item.side_effects || [],\n execution_mode: item.execution_mode || \"interactive\",\n handler_ref: item.handler_ref || item.name,\n metadata: item.metadata || {},\n };\n}\n\nfunction manifest(artifact: ArtifactDefinition, authMode: \"hmac_sha256\" | \"none\"): Record<string, unknown> {\n const described = describeArtifactContract(artifact);\n const contract = {\n schema_version: \"agents24.artifact.v1\",\n invocation_auth: { mode: authMode },\n exports: described.exports.map((item) => contractExport(item)),\n ...(artifact.__agents24ToolsetsDeclared ? { toolsets: described.toolsets } : {}),\n };\n return {\n ...contract,\n manifest_hash: createHash(\"sha256\").update(JSON.stringify(sorted(contract))).digest(\"hex\"),\n };\n}\n\nfunction json(payload: unknown, init: ResponseInit = {}): Response {\n return new Response(JSON.stringify(payload), {\n ...init,\n headers: { \"content-type\": \"application/json\", ...(init.headers || {}) },\n });\n}\n\nexport function signArtifactPayload(input: {\n body: string;\n signingSecret: string;\n timestamp?: string | number;\n}): ArtifactSignatureHeaders {\n const timestamp = String(input.timestamp || Date.now());\n const signature = createHmac(\"sha256\", input.signingSecret).update(`${timestamp}.${input.body}`).digest(\"hex\");\n return { \"x-agents24-timestamp\": timestamp, \"x-agents24-signature\": `sha256=${signature}` };\n}\n\nexport function verifyArtifactSignature(input: {\n body: string;\n signingSecret: string;\n timestamp: string | null | undefined;\n signature: string | null | undefined;\n toleranceMs?: number;\n}): boolean {\n const timestamp = String(input.timestamp || \"\").trim();\n const signature = String(input.signature || \"\").trim();\n const parsed = Number(timestamp);\n if (!timestamp || !signature || !Number.isFinite(parsed)) return false;\n if (Math.abs(Date.now() - parsed) > (input.toleranceMs ?? 5 * 60 * 1000)) return false;\n const expected = signArtifactPayload({ body: input.body, signingSecret: input.signingSecret, timestamp })[\"x-agents24-signature\"];\n const actualBytes = Buffer.from(signature);\n const expectedBytes = Buffer.from(expected);\n return actualBytes.length === expectedBytes.length && timingSafeEqual(actualBytes, expectedBytes);\n}\n\nexport function createArtifactVerificationProof(input: {\n challenge: string;\n signingSecret: string;\n}): string {\n const proof = createHmac(\"sha256\", input.signingSecret)\n .update(`${ARTIFACT_VERIFICATION_PURPOSE}.${input.challenge}`)\n .digest(\"hex\");\n return `sha256=${proof}`;\n}\n\nexport function verifyArtifactVerificationProof(input: {\n challenge: string;\n signingSecret: string;\n proof: string | null | undefined;\n}): boolean {\n const expected = Buffer.from(createArtifactVerificationProof(input));\n const actual = Buffer.from(String(input.proof || \"\"));\n return actual.length === expected.length && timingSafeEqual(actual, expected);\n}\n\nasync function requestBody(req: IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n return Buffer.concat(chunks);\n}\n\nasync function writeResponse(res: ServerResponse, response: Response): Promise<void> {\n res.statusCode = response.status;\n response.headers.forEach((value, key) => res.setHeader(key, value));\n res.end(Buffer.from(await response.arrayBuffer()));\n}\n\nexport function createArtifactServer(options: ArtifactServerOptions) {\n const authMode = options.authMode || \"hmac_sha256\";\n if (authMode === \"hmac_sha256\" && !options.signingSecret) throw new Error(\"createArtifactServer requires signingSecret\");\n const manifestPath = options.manifestPath || DEFAULT_MANIFEST_PATH;\n const healthPath = DEFAULT_HEALTH_PATH;\n const verifyPath = DEFAULT_VERIFY_PATH;\n const invokePath = options.invokePath || DEFAULT_INVOKE_PATH;\n let artifact = artifactFromExports(options.exports, options.toolsets);\n\n function setExports(next: unknown): void { artifact = artifactFromExports(next); }\n\n async function handleRequest(request: Request): Promise<Response> {\n const url = new URL(request.url);\n if (request.method === \"GET\" && url.pathname === healthPath) return json({ status: \"ok\", service: \"agents24-artifact\" });\n if (request.method === \"GET\" && url.pathname === manifestPath) return json(manifest(artifact, authMode));\n if (request.method === \"POST\" && url.pathname === verifyPath) {\n const body = await request.text();\n if (authMode === \"hmac_sha256\" && !verifyArtifactSignature({\n body,\n signingSecret: options.signingSecret || \"\",\n timestamp: request.headers.get(\"x-agents24-timestamp\"),\n signature: request.headers.get(\"x-agents24-signature\"),\n })) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact verification signature\", code: \"INVALID_SIGNATURE\" } }, { status: 401 });\n }\n let payload: { challenge?: unknown; purpose?: unknown };\n try { payload = JSON.parse(body) as { challenge?: unknown; purpose?: unknown }; }\n catch { return json({ status: \"failed\", error: { message: \"Invalid JSON body\", code: \"INVALID_JSON\" } }, { status: 400 }); }\n const challenge = String(payload?.challenge || \"\").trim();\n const purpose = String(payload?.purpose || \"\").trim();\n if (purpose !== ARTIFACT_VERIFICATION_PURPOSE || challenge.length < 16 || challenge.length > 512) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact verification challenge\", code: \"INVALID_REQUEST\" } }, { status: 400 });\n }\n return json({\n status: \"ok\",\n auth_mode: authMode,\n challenge,\n proof: authMode === \"hmac_sha256\"\n ? createArtifactVerificationProof({ challenge, signingSecret: options.signingSecret || \"\" })\n : null,\n });\n }\n if (request.method !== \"POST\" || url.pathname !== invokePath) return json({ error: \"Not found\", code: \"NOT_FOUND\" }, { status: 404 });\n const body = await request.text();\n if (authMode === \"hmac_sha256\" && !verifyArtifactSignature({\n body,\n signingSecret: options.signingSecret || \"\",\n timestamp: request.headers.get(\"x-agents24-timestamp\"),\n signature: request.headers.get(\"x-agents24-signature\"),\n })) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact invocation signature\", code: \"INVALID_SIGNATURE\" } }, { status: 401 });\n }\n let payload: ArtifactInvokePayload;\n try { payload = JSON.parse(body) as ArtifactInvokePayload; }\n catch { return json({ status: \"failed\", error: { message: \"Invalid JSON body\", code: \"INVALID_JSON\" } }, { status: 400 }); }\n const exportName = String(payload.export_name || \"default\");\n const selected = artifact.exports.find((item) => item.name === exportName);\n if (!selected) return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' was not found`, code: \"EXPORT_NOT_FOUND\" } });\n if (selected.kind !== \"tool\") return json({ status: \"failed\", error: { message: \"Self-hosted artifact server can invoke tool exports only\", code: \"UNSUPPORTED_EXPORT_KIND\" } });\n if (typeof selected.handler !== \"function\") return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' has no handler`, code: \"HANDLER_NOT_FOUND\" } });\n const started = Date.now();\n try {\n const result = await selected.handler(payload.inputs, payload.config || {}, payload.context || {});\n return json({\n status: \"completed\", result, error: null, duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n } catch (error) {\n return json({\n status: \"failed\",\n error: { message: error instanceof Error ? error.message : String(error), code: \"HANDLER_FAILED\" },\n duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n }\n }\n\n async function nodeHandler(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const body = await requestBody(req);\n const request = new Request(`http://${req.headers.host || \"127.0.0.1\"}${req.url || \"/\"}`, {\n method: req.method,\n headers: req.headers as HeadersInit,\n body: body.length ? body.toString(\"utf8\") : undefined,\n });\n await writeResponse(res, await handleRequest(request));\n }\n\n function listen(port = 0, hostname = \"127.0.0.1\"): Promise<Server> {\n const server = createServer((req, res) => {\n void nodeHandler(req, res).catch((error) => {\n res.statusCode = 500;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify({ status: \"failed\", error: { message: String(error), code: \"SERVER_ERROR\" } }));\n });\n });\n return new Promise((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, hostname, () => { server.off(\"error\", reject); resolve(server); });\n });\n }\n\n return {\n manifestPath, healthPath, verifyPath, invokePath, setExports,\n manifest: () => manifest(artifact, authMode), handleRequest, nodeHandler, listen,\n };\n}\n"]}
|
package/dist/server.d.cts
CHANGED
|
@@ -13,7 +13,8 @@ type ArtifactInvokePayload = {
|
|
|
13
13
|
type ArtifactServerOptions = {
|
|
14
14
|
exports: unknown;
|
|
15
15
|
toolsets?: unknown;
|
|
16
|
-
signingSecret
|
|
16
|
+
signingSecret?: string;
|
|
17
|
+
authMode?: "hmac_sha256" | "none";
|
|
17
18
|
manifestPath?: string;
|
|
18
19
|
invokePath?: string;
|
|
19
20
|
};
|
|
@@ -21,6 +22,7 @@ type ArtifactSignatureHeaders = {
|
|
|
21
22
|
"x-agents24-timestamp": string;
|
|
22
23
|
"x-agents24-signature": string;
|
|
23
24
|
};
|
|
25
|
+
declare const ARTIFACT_VERIFICATION_PURPOSE = "agents24.artifact.verify.v1";
|
|
24
26
|
declare function signArtifactPayload(input: {
|
|
25
27
|
body: string;
|
|
26
28
|
signingSecret: string;
|
|
@@ -33,9 +35,19 @@ declare function verifyArtifactSignature(input: {
|
|
|
33
35
|
signature: string | null | undefined;
|
|
34
36
|
toleranceMs?: number;
|
|
35
37
|
}): boolean;
|
|
38
|
+
declare function createArtifactVerificationProof(input: {
|
|
39
|
+
challenge: string;
|
|
40
|
+
signingSecret: string;
|
|
41
|
+
}): string;
|
|
42
|
+
declare function verifyArtifactVerificationProof(input: {
|
|
43
|
+
challenge: string;
|
|
44
|
+
signingSecret: string;
|
|
45
|
+
proof: string | null | undefined;
|
|
46
|
+
}): boolean;
|
|
36
47
|
declare function createArtifactServer(options: ArtifactServerOptions): {
|
|
37
48
|
manifestPath: string;
|
|
38
49
|
healthPath: string;
|
|
50
|
+
verifyPath: string;
|
|
39
51
|
invokePath: string;
|
|
40
52
|
setExports: (next: unknown) => void;
|
|
41
53
|
manifest: () => Record<string, unknown>;
|
|
@@ -44,4 +56,4 @@ declare function createArtifactServer(options: ArtifactServerOptions): {
|
|
|
44
56
|
listen: (port?: number, hostname?: string) => Promise<Server>;
|
|
45
57
|
};
|
|
46
58
|
|
|
47
|
-
export { type ArtifactInvokePayload, type ArtifactServerOptions, type ArtifactSignatureHeaders, createArtifactServer, signArtifactPayload, verifyArtifactSignature };
|
|
59
|
+
export { ARTIFACT_VERIFICATION_PURPOSE, type ArtifactInvokePayload, type ArtifactServerOptions, type ArtifactSignatureHeaders, createArtifactServer, createArtifactVerificationProof, signArtifactPayload, verifyArtifactSignature, verifyArtifactVerificationProof };
|
package/dist/server.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ type ArtifactInvokePayload = {
|
|
|
13
13
|
type ArtifactServerOptions = {
|
|
14
14
|
exports: unknown;
|
|
15
15
|
toolsets?: unknown;
|
|
16
|
-
signingSecret
|
|
16
|
+
signingSecret?: string;
|
|
17
|
+
authMode?: "hmac_sha256" | "none";
|
|
17
18
|
manifestPath?: string;
|
|
18
19
|
invokePath?: string;
|
|
19
20
|
};
|
|
@@ -21,6 +22,7 @@ type ArtifactSignatureHeaders = {
|
|
|
21
22
|
"x-agents24-timestamp": string;
|
|
22
23
|
"x-agents24-signature": string;
|
|
23
24
|
};
|
|
25
|
+
declare const ARTIFACT_VERIFICATION_PURPOSE = "agents24.artifact.verify.v1";
|
|
24
26
|
declare function signArtifactPayload(input: {
|
|
25
27
|
body: string;
|
|
26
28
|
signingSecret: string;
|
|
@@ -33,9 +35,19 @@ declare function verifyArtifactSignature(input: {
|
|
|
33
35
|
signature: string | null | undefined;
|
|
34
36
|
toleranceMs?: number;
|
|
35
37
|
}): boolean;
|
|
38
|
+
declare function createArtifactVerificationProof(input: {
|
|
39
|
+
challenge: string;
|
|
40
|
+
signingSecret: string;
|
|
41
|
+
}): string;
|
|
42
|
+
declare function verifyArtifactVerificationProof(input: {
|
|
43
|
+
challenge: string;
|
|
44
|
+
signingSecret: string;
|
|
45
|
+
proof: string | null | undefined;
|
|
46
|
+
}): boolean;
|
|
36
47
|
declare function createArtifactServer(options: ArtifactServerOptions): {
|
|
37
48
|
manifestPath: string;
|
|
38
49
|
healthPath: string;
|
|
50
|
+
verifyPath: string;
|
|
39
51
|
invokePath: string;
|
|
40
52
|
setExports: (next: unknown) => void;
|
|
41
53
|
manifest: () => Record<string, unknown>;
|
|
@@ -44,4 +56,4 @@ declare function createArtifactServer(options: ArtifactServerOptions): {
|
|
|
44
56
|
listen: (port?: number, hostname?: string) => Promise<Server>;
|
|
45
57
|
};
|
|
46
58
|
|
|
47
|
-
export { type ArtifactInvokePayload, type ArtifactServerOptions, type ArtifactSignatureHeaders, createArtifactServer, signArtifactPayload, verifyArtifactSignature };
|
|
59
|
+
export { ARTIFACT_VERIFICATION_PURPOSE, type ArtifactInvokePayload, type ArtifactServerOptions, type ArtifactSignatureHeaders, createArtifactServer, createArtifactVerificationProof, signArtifactPayload, verifyArtifactSignature, verifyArtifactVerificationProof };
|
package/dist/server.js
CHANGED
|
@@ -80,7 +80,9 @@ var describeArtifactContract2 = describeArtifactContract;
|
|
|
80
80
|
// src/server.ts
|
|
81
81
|
var DEFAULT_MANIFEST_PATH = "/.well-known/agents24/artifact";
|
|
82
82
|
var DEFAULT_HEALTH_PATH = "/.well-known/agents24/artifact/health";
|
|
83
|
+
var DEFAULT_VERIFY_PATH = "/.well-known/agents24/artifact/verify";
|
|
83
84
|
var DEFAULT_INVOKE_PATH = "/agents24/artifact/invoke";
|
|
85
|
+
var ARTIFACT_VERIFICATION_PURPOSE = "agents24.artifact.verify.v1";
|
|
84
86
|
function sorted(value) {
|
|
85
87
|
if (Array.isArray(value)) return value.map(sorted);
|
|
86
88
|
if (value && typeof value === "object") {
|
|
@@ -126,10 +128,11 @@ function contractExport(item) {
|
|
|
126
128
|
metadata: item.metadata || {}
|
|
127
129
|
};
|
|
128
130
|
}
|
|
129
|
-
function manifest(artifact) {
|
|
131
|
+
function manifest(artifact, authMode) {
|
|
130
132
|
const described = describeArtifactContract2(artifact);
|
|
131
133
|
const contract = {
|
|
132
134
|
schema_version: "agents24.artifact.v1",
|
|
135
|
+
invocation_auth: { mode: authMode },
|
|
133
136
|
exports: described.exports.map((item) => contractExport(item)),
|
|
134
137
|
...artifact.__agents24ToolsetsDeclared ? { toolsets: described.toolsets } : {}
|
|
135
138
|
};
|
|
@@ -160,6 +163,15 @@ function verifyArtifactSignature(input) {
|
|
|
160
163
|
const expectedBytes = Buffer.from(expected);
|
|
161
164
|
return actualBytes.length === expectedBytes.length && timingSafeEqual(actualBytes, expectedBytes);
|
|
162
165
|
}
|
|
166
|
+
function createArtifactVerificationProof(input) {
|
|
167
|
+
const proof = createHmac("sha256", input.signingSecret).update(`${ARTIFACT_VERIFICATION_PURPOSE}.${input.challenge}`).digest("hex");
|
|
168
|
+
return `sha256=${proof}`;
|
|
169
|
+
}
|
|
170
|
+
function verifyArtifactVerificationProof(input) {
|
|
171
|
+
const expected = Buffer.from(createArtifactVerificationProof(input));
|
|
172
|
+
const actual = Buffer.from(String(input.proof || ""));
|
|
173
|
+
return actual.length === expected.length && timingSafeEqual(actual, expected);
|
|
174
|
+
}
|
|
163
175
|
async function requestBody(req) {
|
|
164
176
|
const chunks = [];
|
|
165
177
|
for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
@@ -171,9 +183,11 @@ async function writeResponse(res, response) {
|
|
|
171
183
|
res.end(Buffer.from(await response.arrayBuffer()));
|
|
172
184
|
}
|
|
173
185
|
function createArtifactServer(options) {
|
|
174
|
-
|
|
186
|
+
const authMode = options.authMode || "hmac_sha256";
|
|
187
|
+
if (authMode === "hmac_sha256" && !options.signingSecret) throw new Error("createArtifactServer requires signingSecret");
|
|
175
188
|
const manifestPath = options.manifestPath || DEFAULT_MANIFEST_PATH;
|
|
176
189
|
const healthPath = DEFAULT_HEALTH_PATH;
|
|
190
|
+
const verifyPath = DEFAULT_VERIFY_PATH;
|
|
177
191
|
const invokePath = options.invokePath || DEFAULT_INVOKE_PATH;
|
|
178
192
|
let artifact = artifactFromExports(options.exports, options.toolsets);
|
|
179
193
|
function setExports(next) {
|
|
@@ -182,12 +196,40 @@ function createArtifactServer(options) {
|
|
|
182
196
|
async function handleRequest(request) {
|
|
183
197
|
const url = new URL(request.url);
|
|
184
198
|
if (request.method === "GET" && url.pathname === healthPath) return json({ status: "ok", service: "agents24-artifact" });
|
|
185
|
-
if (request.method === "GET" && url.pathname === manifestPath) return json(manifest(artifact));
|
|
199
|
+
if (request.method === "GET" && url.pathname === manifestPath) return json(manifest(artifact, authMode));
|
|
200
|
+
if (request.method === "POST" && url.pathname === verifyPath) {
|
|
201
|
+
const body2 = await request.text();
|
|
202
|
+
if (authMode === "hmac_sha256" && !verifyArtifactSignature({
|
|
203
|
+
body: body2,
|
|
204
|
+
signingSecret: options.signingSecret || "",
|
|
205
|
+
timestamp: request.headers.get("x-agents24-timestamp"),
|
|
206
|
+
signature: request.headers.get("x-agents24-signature")
|
|
207
|
+
})) {
|
|
208
|
+
return json({ status: "failed", error: { message: "Invalid artifact verification signature", code: "INVALID_SIGNATURE" } }, { status: 401 });
|
|
209
|
+
}
|
|
210
|
+
let payload2;
|
|
211
|
+
try {
|
|
212
|
+
payload2 = JSON.parse(body2);
|
|
213
|
+
} catch {
|
|
214
|
+
return json({ status: "failed", error: { message: "Invalid JSON body", code: "INVALID_JSON" } }, { status: 400 });
|
|
215
|
+
}
|
|
216
|
+
const challenge = String(payload2?.challenge || "").trim();
|
|
217
|
+
const purpose = String(payload2?.purpose || "").trim();
|
|
218
|
+
if (purpose !== ARTIFACT_VERIFICATION_PURPOSE || challenge.length < 16 || challenge.length > 512) {
|
|
219
|
+
return json({ status: "failed", error: { message: "Invalid artifact verification challenge", code: "INVALID_REQUEST" } }, { status: 400 });
|
|
220
|
+
}
|
|
221
|
+
return json({
|
|
222
|
+
status: "ok",
|
|
223
|
+
auth_mode: authMode,
|
|
224
|
+
challenge,
|
|
225
|
+
proof: authMode === "hmac_sha256" ? createArtifactVerificationProof({ challenge, signingSecret: options.signingSecret || "" }) : null
|
|
226
|
+
});
|
|
227
|
+
}
|
|
186
228
|
if (request.method !== "POST" || url.pathname !== invokePath) return json({ error: "Not found", code: "NOT_FOUND" }, { status: 404 });
|
|
187
229
|
const body = await request.text();
|
|
188
|
-
if (!verifyArtifactSignature({
|
|
230
|
+
if (authMode === "hmac_sha256" && !verifyArtifactSignature({
|
|
189
231
|
body,
|
|
190
|
-
signingSecret: options.signingSecret,
|
|
232
|
+
signingSecret: options.signingSecret || "",
|
|
191
233
|
timestamp: request.headers.get("x-agents24-timestamp"),
|
|
192
234
|
signature: request.headers.get("x-agents24-signature")
|
|
193
235
|
})) {
|
|
@@ -257,15 +299,16 @@ function createArtifactServer(options) {
|
|
|
257
299
|
return {
|
|
258
300
|
manifestPath,
|
|
259
301
|
healthPath,
|
|
302
|
+
verifyPath,
|
|
260
303
|
invokePath,
|
|
261
304
|
setExports,
|
|
262
|
-
manifest: () => manifest(artifact),
|
|
305
|
+
manifest: () => manifest(artifact, authMode),
|
|
263
306
|
handleRequest,
|
|
264
307
|
nodeHandler,
|
|
265
308
|
listen
|
|
266
309
|
};
|
|
267
310
|
}
|
|
268
311
|
|
|
269
|
-
export { createArtifactServer, signArtifactPayload, verifyArtifactSignature };
|
|
312
|
+
export { ARTIFACT_VERIFICATION_PURPOSE, createArtifactServer, createArtifactVerificationProof, signArtifactPayload, verifyArtifactSignature, verifyArtifactVerificationProof };
|
|
270
313
|
//# sourceMappingURL=server.js.map
|
|
271
314
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/artifacts-runtime.mjs","../src/artifacts.ts","../src/server.ts"],"names":["defineArtifact","describeArtifactContract"],"mappings":"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","file":"server.js","sourcesContent":["function schema(value) {\n if (value == null) return {};\n if (typeof value.toJSONSchema === \"function\") return value.toJSONSchema();\n if (typeof value.toJsonSchema === \"function\") return value.toJsonSchema();\n if (typeof value === \"object\") {\n if (typeof value.parse === \"function\" && typeof value.safeParse === \"function\" && value._zod) {\n throw new TypeError(\"Zod schemas must expose toJSONSchema(); install Zod v4 or pass z.toJSONSchema(schema)\");\n }\n return value;\n }\n throw new TypeError(\"schema must be a JSON Schema object or expose toJSONSchema()\");\n}\n\nfunction normalize(kind, definition = {}, handler) {\n const actualHandler = handler || definition.handler || definition.execute;\n const explicitName = String(definition.name || \"\").trim();\n const name = explicitName || String(actualHandler?.name || \"\").trim();\n const value = {\n name,\n kind,\n description: definition.description || \"\",\n input_schema: schema(definition.input_schema || definition.inputSchema || definition.input),\n output_schema: schema(definition.output_schema || definition.outputSchema || definition.output),\n config_schema: schema(definition.config_schema || definition.configSchema || definition.config),\n ui_schema: definition.ui_schema || definition.uiSchema || definition.ui || {},\n side_effects: definition.side_effects || definition.sideEffects || [],\n execution_mode: definition.execution_mode || definition.executionMode || \"interactive\",\n handler_ref: definition.handler_ref || definition.handlerRef || actualHandler?.name || name,\n handler: actualHandler,\n };\n Object.defineProperty(value, \"__agents24ExplicitName\", { value: Boolean(explicitName), enumerable: false });\n return value;\n}\n\nexport function tool(definition = {}, handler) {\n return normalize(\"tool\", definition, handler);\n}\n\nexport function agentNode(definition = {}, handler) {\n return normalize(\"agent_node\", definition, handler);\n}\n\nexport function ragOperator(definition = {}, handler) {\n return normalize(\"rag_operator\", definition, handler);\n}\n\nexport function toolset(definition = {}) {\n return {\n __agents24Toolset: true,\n name: String(definition.name || \"\").trim(),\n description: String(definition.description || \"\").trim(),\n tools: Array.isArray(definition.tools) ? definition.tools : [],\n };\n}\n\nfunction entries(input) {\n if (Array.isArray(input)) return input.map((item) => [null, item]);\n return input && typeof input === \"object\" ? Object.entries(input) : [];\n}\n\nfunction normalizedExports(definition) {\n const exports = [];\n const namesByObject = new Map();\n for (const source of [definition.tools, definition.agentNodes, definition.ragOperators]) {\n for (const [mappedName, raw] of entries(source)) {\n if (!raw || typeof raw !== \"object\") throw new TypeError(\"Artifact exports must use tool, agentNode, or ragOperator\");\n const name = raw.__agents24ExplicitName ? raw.name.trim() : String(mappedName || raw.name || \"\").trim();\n if (!name) throw new TypeError(\"Artifact exports require a name\");\n exports.push({ ...raw, name, handler_ref: raw.handler_ref || name });\n namesByObject.set(raw, [...(namesByObject.get(raw) || []), name]);\n }\n }\n const names = exports.map((item) => item.name);\n const duplicate = names.find((name, index) => names.indexOf(name) !== index);\n if (duplicate) throw new TypeError(`Duplicate artifact export name '${duplicate}'`);\n return { exports, namesByObject };\n}\n\nfunction normalizedToolsets(input, exports, namesByObject) {\n if (input == null) return [];\n if (Array.isArray(input) || typeof input !== \"object\") {\n throw new TypeError(\"TypeScript artifact toolsets must be an object keyed by stable source key\");\n }\n const tools = new Set(exports.filter((item) => item.kind === \"tool\").map((item) => item.name));\n const seenNames = new Set();\n return Object.entries(input).map(([key, value]) => {\n if (!key.trim()) throw new TypeError(\"Artifact toolset keys cannot be empty\");\n if (!value?.__agents24Toolset) throw new TypeError(`Toolset '${key}' must use toolset()`);\n if (!value.name || !value.description || !value.tools.length) {\n throw new TypeError(`Toolset '${key}' requires a name, description, and tool`);\n }\n const folded = value.name.toLocaleLowerCase();\n if (seenNames.has(folded)) throw new TypeError(`Duplicate artifact toolset name '${value.name}'`);\n seenNames.add(folded);\n const members = value.tools.map((reference) => {\n if (typeof reference === \"string\") return reference.trim();\n const aliases = namesByObject.get(reference) || [];\n if (aliases.length !== 1) throw new TypeError(`Toolset '${key}' contains an unresolved or ambiguous tool reference`);\n return aliases[0];\n });\n if (new Set(members).size !== members.length) throw new TypeError(`Toolset '${key}' contains duplicate tools`);\n for (const member of members) {\n if (!tools.has(member)) throw new TypeError(`Toolset '${key}' references missing or non-tool export '${member}'`);\n }\n return { key, name: value.name, description: value.description, tools: members };\n });\n}\n\nexport function defineArtifact(definition = {}) {\n const normalized = normalizedExports(definition);\n return {\n __agents24Artifact: true,\n exports: normalized.exports,\n toolsets: normalizedToolsets(definition.toolsets, normalized.exports, normalized.namesByObject),\n __agents24ToolsetsDeclared: definition.toolsets != null,\n };\n}\n\nexport function describeArtifact(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return artifact.exports.map(({ handler: _handler, ...item }) => item);\n}\n\nexport function describeArtifactContract(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return { exports: describeArtifact(artifact), toolsets: artifact.toolsets.map((item) => ({ ...item })) };\n}\n","// The executable implementation is JavaScript so the platform can inject the\n// exact same source into Worker describe/build sandboxes without transpilation.\n// @ts-expect-error package-internal JavaScript runtime has typed bindings below\nimport * as runtime from \"./artifacts-runtime.mjs\";\n\nexport type JsonSchemaSource = Record<string, unknown> | {\n toJSONSchema?: () => Record<string, unknown>;\n toJsonSchema?: () => Record<string, unknown>;\n};\n\nexport type ArtifactHandler = (\n input: unknown,\n config: Record<string, unknown>,\n context: Record<string, unknown>,\n) => unknown | Promise<unknown>;\n\nexport type ArtifactExportDefinition = {\n name?: string;\n description?: string;\n input_schema?: JsonSchemaSource;\n inputSchema?: JsonSchemaSource;\n input?: JsonSchemaSource;\n output_schema?: JsonSchemaSource;\n outputSchema?: JsonSchemaSource;\n output?: JsonSchemaSource;\n config_schema?: JsonSchemaSource;\n configSchema?: JsonSchemaSource;\n config?: JsonSchemaSource;\n ui_schema?: Record<string, unknown>;\n uiSchema?: Record<string, unknown>;\n ui?: Record<string, unknown>;\n side_effects?: string[];\n sideEffects?: string[];\n execution_mode?: string;\n executionMode?: string;\n handler_ref?: string;\n handlerRef?: string;\n handler?: ArtifactHandler;\n execute?: ArtifactHandler;\n};\n\nexport type ArtifactExport = {\n name: string;\n kind: \"tool\" | \"agent_node\" | \"rag_operator\";\n description: string;\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n config_schema: Record<string, unknown>;\n ui_schema: Record<string, unknown>;\n side_effects: string[];\n execution_mode: string;\n handler_ref: string;\n handler?: ArtifactHandler;\n readonly __agents24ExplicitName?: boolean;\n};\n\nexport type ArtifactToolset = {\n readonly __agents24Toolset: true;\n name: string;\n description: string;\n tools: Array<string | ArtifactExport>;\n};\n\nexport type ArtifactDefinition = {\n readonly __agents24Artifact: true;\n exports: ArtifactExport[];\n toolsets: Array<{ key: string; name: string; description: string; tools: string[] }>;\n readonly __agents24ToolsetsDeclared: boolean;\n};\n\nexport const tool = runtime.tool as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const agentNode = runtime.agentNode as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const ragOperator = runtime.ragOperator as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const toolset = runtime.toolset as (\n definition?: { name?: string; description?: string; tools?: Array<string | ArtifactExport> },\n) => ArtifactToolset;\nexport const defineArtifact = runtime.defineArtifact as (\n definition?: Record<string, unknown>,\n) => ArtifactDefinition;\nexport const describeArtifact = runtime.describeArtifact as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => Array<Omit<ArtifactExport, \"handler\">>;\nexport const describeArtifactContract = runtime.describeArtifactContract as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => {\n exports: Array<Omit<ArtifactExport, \"handler\">>;\n toolsets: ArtifactDefinition[\"toolsets\"];\n};\n","/// <reference types=\"node\" />\n\nimport { Buffer } from \"node:buffer\";\nimport { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\n\nimport {\n defineArtifact,\n describeArtifactContract,\n type ArtifactDefinition,\n type ArtifactExport,\n} from \"./artifacts.js\";\n\nexport type ArtifactInvokePayload = {\n run_id?: string;\n artifact_id?: string | null;\n revision_id?: string;\n export_name?: string;\n export_kind?: string;\n inputs?: unknown;\n config?: Record<string, unknown>;\n context?: Record<string, unknown>;\n};\n\nexport type ArtifactServerOptions = {\n exports: unknown;\n toolsets?: unknown;\n signingSecret: string;\n manifestPath?: string;\n invokePath?: string;\n};\n\nexport type ArtifactSignatureHeaders = {\n \"x-agents24-timestamp\": string;\n \"x-agents24-signature\": string;\n};\n\nconst DEFAULT_MANIFEST_PATH = \"/.well-known/agents24/artifact\";\nconst DEFAULT_HEALTH_PATH = \"/.well-known/agents24/artifact/health\";\nconst DEFAULT_INVOKE_PATH = \"/agents24/artifact/invoke\";\n\nfunction sorted(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sorted);\n if (value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).sort().reduce<Record<string, unknown>>((result, key) => {\n result[key] = sorted((value as Record<string, unknown>)[key]);\n return result;\n }, {});\n }\n return value;\n}\n\nfunction artifactFromExports(exportsValue: unknown, toolsetsValue?: unknown): ArtifactDefinition {\n if (exportsValue && typeof exportsValue === \"object\" && (exportsValue as { __agents24Artifact?: unknown }).__agents24Artifact) {\n if (toolsetsValue != null) throw new TypeError(\"Pass toolsets through defineArtifact or the toolsets option, not both\");\n return exportsValue as ArtifactDefinition;\n }\n if (Array.isArray(exportsValue)) {\n return defineArtifact({\n tools: Object.fromEntries((exportsValue as ArtifactExport[]).map((item, index) => [String(item.name || index), item])),\n toolsets: toolsetsValue,\n });\n }\n if (exportsValue && typeof exportsValue === \"object\") {\n const record = exportsValue as Record<string, unknown>;\n if (\"tools\" in record || \"agentNodes\" in record || \"ragOperators\" in record) {\n return defineArtifact({ ...record, toolsets: toolsetsValue ?? record.toolsets });\n }\n return defineArtifact({ tools: record, toolsets: toolsetsValue });\n }\n return defineArtifact({ toolsets: toolsetsValue });\n}\n\nfunction contractExport(item: Record<string, unknown>): Record<string, unknown> {\n return {\n export_name: item.export_name || item.name,\n export_kind: item.export_kind || item.kind,\n description: item.description || \"\",\n input_schema: item.input_schema || {},\n output_schema: item.output_schema || {},\n config_schema: item.config_schema || {},\n ui_schema: item.ui_schema || {},\n side_effects: item.side_effects || [],\n execution_mode: item.execution_mode || \"interactive\",\n handler_ref: item.handler_ref || item.name,\n metadata: item.metadata || {},\n };\n}\n\nfunction manifest(artifact: ArtifactDefinition): Record<string, unknown> {\n const described = describeArtifactContract(artifact);\n const contract = {\n schema_version: \"agents24.artifact.v1\",\n exports: described.exports.map((item) => contractExport(item)),\n ...(artifact.__agents24ToolsetsDeclared ? { toolsets: described.toolsets } : {}),\n };\n return {\n ...contract,\n manifest_hash: createHash(\"sha256\").update(JSON.stringify(sorted(contract))).digest(\"hex\"),\n };\n}\n\nfunction json(payload: unknown, init: ResponseInit = {}): Response {\n return new Response(JSON.stringify(payload), {\n ...init,\n headers: { \"content-type\": \"application/json\", ...(init.headers || {}) },\n });\n}\n\nexport function signArtifactPayload(input: {\n body: string;\n signingSecret: string;\n timestamp?: string | number;\n}): ArtifactSignatureHeaders {\n const timestamp = String(input.timestamp || Date.now());\n const signature = createHmac(\"sha256\", input.signingSecret).update(`${timestamp}.${input.body}`).digest(\"hex\");\n return { \"x-agents24-timestamp\": timestamp, \"x-agents24-signature\": `sha256=${signature}` };\n}\n\nexport function verifyArtifactSignature(input: {\n body: string;\n signingSecret: string;\n timestamp: string | null | undefined;\n signature: string | null | undefined;\n toleranceMs?: number;\n}): boolean {\n const timestamp = String(input.timestamp || \"\").trim();\n const signature = String(input.signature || \"\").trim();\n const parsed = Number(timestamp);\n if (!timestamp || !signature || !Number.isFinite(parsed)) return false;\n if (Math.abs(Date.now() - parsed) > (input.toleranceMs ?? 5 * 60 * 1000)) return false;\n const expected = signArtifactPayload({ body: input.body, signingSecret: input.signingSecret, timestamp })[\"x-agents24-signature\"];\n const actualBytes = Buffer.from(signature);\n const expectedBytes = Buffer.from(expected);\n return actualBytes.length === expectedBytes.length && timingSafeEqual(actualBytes, expectedBytes);\n}\n\nasync function requestBody(req: IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n return Buffer.concat(chunks);\n}\n\nasync function writeResponse(res: ServerResponse, response: Response): Promise<void> {\n res.statusCode = response.status;\n response.headers.forEach((value, key) => res.setHeader(key, value));\n res.end(Buffer.from(await response.arrayBuffer()));\n}\n\nexport function createArtifactServer(options: ArtifactServerOptions) {\n if (!options.signingSecret) throw new Error(\"createArtifactServer requires signingSecret\");\n const manifestPath = options.manifestPath || DEFAULT_MANIFEST_PATH;\n const healthPath = DEFAULT_HEALTH_PATH;\n const invokePath = options.invokePath || DEFAULT_INVOKE_PATH;\n let artifact = artifactFromExports(options.exports, options.toolsets);\n\n function setExports(next: unknown): void { artifact = artifactFromExports(next); }\n\n async function handleRequest(request: Request): Promise<Response> {\n const url = new URL(request.url);\n if (request.method === \"GET\" && url.pathname === healthPath) return json({ status: \"ok\", service: \"agents24-artifact\" });\n if (request.method === \"GET\" && url.pathname === manifestPath) return json(manifest(artifact));\n if (request.method !== \"POST\" || url.pathname !== invokePath) return json({ error: \"Not found\", code: \"NOT_FOUND\" }, { status: 404 });\n const body = await request.text();\n if (!verifyArtifactSignature({\n body,\n signingSecret: options.signingSecret,\n timestamp: request.headers.get(\"x-agents24-timestamp\"),\n signature: request.headers.get(\"x-agents24-signature\"),\n })) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact invocation signature\", code: \"INVALID_SIGNATURE\" } }, { status: 401 });\n }\n let payload: ArtifactInvokePayload;\n try { payload = JSON.parse(body) as ArtifactInvokePayload; }\n catch { return json({ status: \"failed\", error: { message: \"Invalid JSON body\", code: \"INVALID_JSON\" } }, { status: 400 }); }\n const exportName = String(payload.export_name || \"default\");\n const selected = artifact.exports.find((item) => item.name === exportName);\n if (!selected) return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' was not found`, code: \"EXPORT_NOT_FOUND\" } });\n if (selected.kind !== \"tool\") return json({ status: \"failed\", error: { message: \"Self-hosted artifact server can invoke tool exports only\", code: \"UNSUPPORTED_EXPORT_KIND\" } });\n if (typeof selected.handler !== \"function\") return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' has no handler`, code: \"HANDLER_NOT_FOUND\" } });\n const started = Date.now();\n try {\n const result = await selected.handler(payload.inputs, payload.config || {}, payload.context || {});\n return json({\n status: \"completed\", result, error: null, duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n } catch (error) {\n return json({\n status: \"failed\",\n error: { message: error instanceof Error ? error.message : String(error), code: \"HANDLER_FAILED\" },\n duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n }\n }\n\n async function nodeHandler(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const body = await requestBody(req);\n const request = new Request(`http://${req.headers.host || \"127.0.0.1\"}${req.url || \"/\"}`, {\n method: req.method,\n headers: req.headers as HeadersInit,\n body: body.length ? body.toString(\"utf8\") : undefined,\n });\n await writeResponse(res, await handleRequest(request));\n }\n\n function listen(port = 0, hostname = \"127.0.0.1\"): Promise<Server> {\n const server = createServer((req, res) => {\n void nodeHandler(req, res).catch((error) => {\n res.statusCode = 500;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify({ status: \"failed\", error: { message: String(error), code: \"SERVER_ERROR\" } }));\n });\n });\n return new Promise((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, hostname, () => { server.off(\"error\", reject); resolve(server); });\n });\n }\n\n return {\n manifestPath, healthPath, invokePath, setExports,\n manifest: () => manifest(artifact), handleRequest, nodeHandler, listen,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/artifacts-runtime.mjs","../src/artifacts.ts","../src/server.ts"],"names":["defineArtifact","describeArtifactContract","body","payload"],"mappings":";;;;;;;AAuDA,SAAS,QAAQ,KAAA,EAAO;AACtB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AACjE,EAAA,OAAO,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,OAAA,CAAQ,KAAK,IAAI,EAAC;AACvE;AAEA,SAAS,kBAAkB,UAAA,EAAY;AACrC,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAI;AAC9B,EAAA,KAAA,MAAW,MAAA,IAAU,CAAC,UAAA,CAAW,KAAA,EAAO,WAAW,UAAA,EAAY,UAAA,CAAW,YAAY,CAAA,EAAG;AACvF,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,GAAG,CAAA,IAAK,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC/C,MAAA,IAAI,CAAC,OAAO,OAAO,GAAA,KAAQ,UAAU,MAAM,IAAI,UAAU,2DAA2D,CAAA;AACpH,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,sBAAA,GAAyB,GAAA,CAAI,IAAA,CAAK,IAAA,EAAK,GAAI,MAAA,CAAO,UAAA,IAAc,GAAA,CAAI,IAAA,IAAQ,EAAE,EAAE,IAAA,EAAK;AACtG,MAAA,IAAI,CAAC,IAAA,EAAM,MAAM,IAAI,UAAU,iCAAiC,CAAA;AAChE,MAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,GAAG,GAAA,EAAK,MAAM,WAAA,EAAa,GAAA,CAAI,WAAA,IAAe,IAAA,EAAM,CAAA;AACnE,MAAA,aAAA,CAAc,GAAA,CAAI,GAAA,EAAK,CAAC,GAAI,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,IAAK,EAAC,EAAI,IAAI,CAAC,CAAA;AAAA,IAClE;AAAA,EACF;AACA,EAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,IAAI,CAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,CAAC,IAAA,EAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,KAAM,KAAK,CAAA;AAC3E,EAAA,IAAI,WAAW,MAAM,IAAI,SAAA,CAAU,CAAA,gCAAA,EAAmC,SAAS,CAAA,CAAA,CAAG,CAAA;AAClF,EAAA,OAAO,EAAE,SAAS,aAAA,EAAc;AAClC;AAEA,SAAS,kBAAA,CAAmB,KAAA,EAAO,OAAA,EAAS,aAAA,EAAe;AACzD,EAAA,IAAI,KAAA,IAAS,IAAA,EAAM,OAAO,EAAC;AAC3B,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,OAAO,UAAU,QAAA,EAAU;AACrD,IAAA,MAAM,IAAI,UAAU,2EAA2E,CAAA;AAAA,EACjG;AACA,EAAA,MAAM,QAAQ,IAAI,GAAA,CAAI,OAAA,CAAQ,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,MAAM,EAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7F,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAI;AAC1B,EAAA,OAAO,MAAA,CAAO,QAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACjD,IAAA,IAAI,CAAC,GAAA,CAAI,IAAA,IAAQ,MAAM,IAAI,UAAU,uCAAuC,CAAA;AAC5E,IAAA,IAAI,CAAC,OAAO,iBAAA,EAAmB,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,oBAAA,CAAsB,CAAA;AACxF,IAAA,IAAI,CAAC,MAAM,IAAA,IAAQ,CAAC,MAAM,WAAA,IAAe,CAAC,KAAA,CAAM,KAAA,CAAM,MAAA,EAAQ;AAC5D,MAAA,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,wCAAA,CAA0C,CAAA;AAAA,IAC/E;AACA,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,iBAAA,EAAkB;AAC5C,IAAA,IAAI,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,CAAA,iCAAA,EAAoC,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAChG,IAAA,SAAA,CAAU,IAAI,MAAM,CAAA;AACpB,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,SAAA,KAAc;AAC7C,MAAA,IAAI,OAAO,SAAA,KAAc,QAAA,EAAU,OAAO,UAAU,IAAA,EAAK;AACzD,MAAA,MAAM,OAAA,GAAU,aAAA,CAAc,GAAA,CAAI,SAAS,KAAK,EAAC;AACjD,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,oDAAA,CAAsD,CAAA;AACnH,MAAA,OAAO,QAAQ,CAAC,CAAA;AAAA,IAClB,CAAC,CAAA;AACD,IAAA,IAAI,IAAI,GAAA,CAAI,OAAO,CAAA,CAAE,IAAA,KAAS,OAAA,CAAQ,MAAA,EAAQ,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,0BAAA,CAA4B,CAAA;AAC7G,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,CAAA,SAAA,EAAY,GAAG,CAAA,yCAAA,EAA4C,MAAM,CAAA,CAAA,CAAG,CAAA;AAAA,IAClH;AACA,IAAA,OAAO,EAAE,KAAK,IAAA,EAAM,KAAA,CAAM,MAAM,WAAA,EAAa,KAAA,CAAM,WAAA,EAAa,KAAA,EAAO,OAAA,EAAQ;AAAA,EACjF,CAAC,CAAA;AACH;AAEO,SAAS,cAAA,CAAe,UAAA,GAAa,EAAC,EAAG;AAC9C,EAAA,MAAM,UAAA,GAAa,kBAAkB,UAAU,CAAA;AAC/C,EAAA,OAAO;AAAA,IACL,kBAAA,EAAoB,IAAA;AAAA,IACpB,SAAS,UAAA,CAAW,OAAA;AAAA,IACpB,UAAU,kBAAA,CAAmB,UAAA,CAAW,UAAU,UAAA,CAAW,OAAA,EAAS,WAAW,aAAa,CAAA;AAAA,IAC9F,0BAAA,EAA4B,WAAW,QAAA,IAAY;AAAA,GACrD;AACF;AAEO,SAAS,iBAAiB,KAAA,EAAO;AACtC,EAAA,MAAM,QAAA,GAAW,SAAS,KAAA,CAAM,kBAAA,GAAqB,QAAQ,cAAA,CAAe,KAAA,IAAS,EAAE,CAAA;AACvF,EAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,EAAE,SAAS,QAAA,EAAU,GAAG,IAAA,EAAK,KAAM,IAAI,CAAA;AACtE;AAEO,SAAS,yBAAyB,KAAA,EAAO;AAC9C,EAAA,MAAM,QAAA,GAAW,SAAS,KAAA,CAAM,kBAAA,GAAqB,QAAQ,cAAA,CAAe,KAAA,IAAS,EAAE,CAAA;AACvF,EAAA,OAAO,EAAE,OAAA,EAAS,gBAAA,CAAiB,QAAQ,GAAG,QAAA,EAAU,QAAA,CAAS,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,GAAG,IAAA,GAAO,CAAA,EAAE;AACzG;;;ACzCO,IAAMA,eAAAA,GAAyB,cAAA;AAM/B,IAAMC,yBAAAA,GAAmC,wBAAA;;;ACrDhD,IAAM,qBAAA,GAAwB,gCAAA;AAC9B,IAAM,mBAAA,GAAsB,uCAAA;AAC5B,IAAM,mBAAA,GAAsB,uCAAA;AAC5B,IAAM,mBAAA,GAAsB,2BAAA;AACrB,IAAM,6BAAA,GAAgC;AAE7C,SAAS,OAAO,KAAA,EAAyB;AACvC,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA,CAAM,IAAI,MAAM,CAAA;AACjD,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,IAAA,OAAO,MAAA,CAAO,KAAK,KAAgC,CAAA,CAAE,MAAK,CAAE,MAAA,CAAgC,CAAC,MAAA,EAAQ,GAAA,KAAQ;AAC3G,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAQ,KAAA,CAAkC,GAAG,CAAC,CAAA;AAC5D,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,cAAuB,aAAA,EAA6C;AAC/F,EAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,KAAiB,QAAA,IAAa,aAAkD,kBAAA,EAAoB;AAC7H,IAAA,IAAI,aAAA,IAAiB,IAAA,EAAM,MAAM,IAAI,UAAU,uEAAuE,CAAA;AACtH,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/B,IAAA,OAAOD,eAAAA,CAAe;AAAA,MACpB,OAAO,MAAA,CAAO,WAAA,CAAa,YAAA,CAAkC,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU,CAAC,MAAA,CAAO,KAAK,IAAA,IAAQ,KAAK,CAAA,EAAG,IAAI,CAAC,CAAC,CAAA;AAAA,MACrH,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,EACH;AACA,EAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,KAAiB,QAAA,EAAU;AACpD,IAAA,MAAM,MAAA,GAAS,YAAA;AACf,IAAA,IAAI,OAAA,IAAW,MAAA,IAAU,YAAA,IAAgB,MAAA,IAAU,kBAAkB,MAAA,EAAQ;AAC3E,MAAA,OAAOA,eAAAA,CAAe,EAAE,GAAG,MAAA,EAAQ,UAAU,aAAA,IAAiB,MAAA,CAAO,UAAU,CAAA;AAAA,IACjF;AACA,IAAA,OAAOA,gBAAe,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,eAAe,CAAA;AAAA,EAClE;AACA,EAAA,OAAOA,eAAAA,CAAe,EAAE,QAAA,EAAU,aAAA,EAAe,CAAA;AACnD;AAEA,SAAS,eAAe,IAAA,EAAwD;AAC9E,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,IACtC,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,IACtC,WAAA,EAAa,KAAK,WAAA,IAAe,EAAA;AAAA,IACjC,YAAA,EAAc,IAAA,CAAK,YAAA,IAAgB,EAAC;AAAA,IACpC,aAAA,EAAe,IAAA,CAAK,aAAA,IAAiB,EAAC;AAAA,IACtC,aAAA,EAAe,IAAA,CAAK,aAAA,IAAiB,EAAC;AAAA,IACtC,SAAA,EAAW,IAAA,CAAK,SAAA,IAAa,EAAC;AAAA,IAC9B,YAAA,EAAc,IAAA,CAAK,YAAA,IAAgB,EAAC;AAAA,IACpC,cAAA,EAAgB,KAAK,cAAA,IAAkB,aAAA;AAAA,IACvC,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,IACtC,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY;AAAC,GAC9B;AACF;AAEA,SAAS,QAAA,CAAS,UAA8B,QAAA,EAA2D;AACzG,EAAA,MAAM,SAAA,GAAYC,0BAAyB,QAAQ,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,cAAA,EAAgB,sBAAA;AAAA,IAChB,eAAA,EAAiB,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,IAClC,OAAA,EAAS,UAAU,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,IAC7D,GAAI,SAAS,0BAAA,GAA6B,EAAE,UAAU,SAAA,CAAU,QAAA,KAAa;AAAC,GAChF;AACA,EAAA,OAAO;AAAA,IACL,GAAG,QAAA;AAAA,IACH,aAAA,EAAe,UAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAC,CAAC,CAAA,CAAE,OAAO,KAAK;AAAA,GAC3F;AACF;AAEA,SAAS,IAAA,CAAK,OAAA,EAAkB,IAAA,GAAqB,EAAC,EAAa;AACjE,EAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG;AAAA,IAC3C,GAAG,IAAA;AAAA,IACH,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAoB,GAAI,IAAA,CAAK,OAAA,IAAW,EAAC;AAAG,GACxE,CAAA;AACH;AAEO,SAAS,oBAAoB,KAAA,EAIP;AAC3B,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,SAAA,IAAa,IAAA,CAAK,KAAK,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,UAAA,CAAW,QAAA,EAAU,KAAA,CAAM,aAAa,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,SAAS,IAAI,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA,CAAE,OAAO,KAAK,CAAA;AAC7G,EAAA,OAAO,EAAE,sBAAA,EAAwB,SAAA,EAAW,sBAAA,EAAwB,CAAA,OAAA,EAAU,SAAS,CAAA,CAAA,EAAG;AAC5F;AAEO,SAAS,wBAAwB,KAAA,EAM5B;AACV,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,SAAA,IAAa,EAAE,EAAE,IAAA,EAAK;AACrD,EAAA,MAAM,YAAY,MAAA,CAAO,KAAA,CAAM,SAAA,IAAa,EAAE,EAAE,IAAA,EAAK;AACrD,EAAA,MAAM,MAAA,GAAS,OAAO,SAAS,CAAA;AAC/B,EAAA,IAAI,CAAC,aAAa,CAAC,SAAA,IAAa,CAAC,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA;AACjE,EAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,EAAI,GAAI,MAAM,CAAA,IAAK,KAAA,CAAM,WAAA,IAAe,CAAA,GAAI,EAAA,GAAK,GAAA,CAAA,EAAO,OAAO,KAAA;AACjF,EAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,aAAA,EAAe,KAAA,CAAM,aAAA,EAAe,SAAA,EAAW,CAAA,CAAE,sBAAsB,CAAA;AAChI,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AACzC,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA;AAC1C,EAAA,OAAO,YAAY,MAAA,KAAW,aAAA,CAAc,MAAA,IAAU,eAAA,CAAgB,aAAa,aAAa,CAAA;AAClG;AAEO,SAAS,gCAAgC,KAAA,EAGrC;AACT,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,EAAU,KAAA,CAAM,aAAa,CAAA,CACnD,MAAA,CAAO,CAAA,EAAG,6BAA6B,IAAI,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA,CAC5D,OAAO,KAAK,CAAA;AACf,EAAA,OAAO,UAAU,KAAK,CAAA,CAAA;AACxB;AAEO,SAAS,gCAAgC,KAAA,EAIpC;AACV,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,+BAAA,CAAgC,KAAK,CAAC,CAAA;AACnE,EAAA,MAAM,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,KAAA,CAAM,KAAA,IAAS,EAAE,CAAC,CAAA;AACpD,EAAA,OAAO,OAAO,MAAA,KAAW,QAAA,CAAS,MAAA,IAAU,eAAA,CAAgB,QAAQ,QAAQ,CAAA;AAC9E;AAEA,eAAe,YAAY,GAAA,EAAuC;AAChE,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,WAAA,MAAiB,KAAA,IAAS,GAAA,EAAK,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AAC9F,EAAA,OAAO,MAAA,CAAO,OAAO,MAAM,CAAA;AAC7B;AAEA,eAAe,aAAA,CAAc,KAAqB,QAAA,EAAmC;AACnF,EAAA,GAAA,CAAI,aAAa,QAAA,CAAS,MAAA;AAC1B,EAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAC,KAAA,EAAO,QAAQ,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,KAAK,CAAC,CAAA;AAClE,EAAA,GAAA,CAAI,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,QAAA,CAAS,WAAA,EAAa,CAAC,CAAA;AACnD;AAEO,SAAS,qBAAqB,OAAA,EAAgC;AACnE,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,aAAA;AACrC,EAAA,IAAI,QAAA,KAAa,iBAAiB,CAAC,OAAA,CAAQ,eAAe,MAAM,IAAI,MAAM,6CAA6C,CAAA;AACvH,EAAA,MAAM,YAAA,GAAe,QAAQ,YAAA,IAAgB,qBAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,mBAAA;AACnB,EAAA,MAAM,UAAA,GAAa,mBAAA;AACnB,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,mBAAA;AACzC,EAAA,IAAI,QAAA,GAAW,mBAAA,CAAoB,OAAA,CAAQ,OAAA,EAAS,QAAQ,QAAQ,CAAA;AAEpE,EAAA,SAAS,WAAW,IAAA,EAAqB;AAAE,IAAA,QAAA,GAAW,oBAAoB,IAAI,CAAA;AAAA,EAAG;AAEjF,EAAA,eAAe,cAAc,OAAA,EAAqC;AAChE,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,KAAA,IAAS,GAAA,CAAI,QAAA,KAAa,UAAA,EAAY,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,qBAAqB,CAAA;AACvH,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,KAAA,IAAS,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc,OAAO,IAAA,CAAK,QAAA,CAAS,QAAA,EAAU,QAAQ,CAAC,CAAA;AACvG,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,MAAA,IAAU,GAAA,CAAI,aAAa,UAAA,EAAY;AAC5D,MAAA,MAAMC,KAAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,MAAA,IAAI,QAAA,KAAa,aAAA,IAAiB,CAAC,uBAAA,CAAwB;AAAA,QACzD,IAAA,EAAAA,KAAAA;AAAA,QACA,aAAA,EAAe,QAAQ,aAAA,IAAiB,EAAA;AAAA,QACxC,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB,CAAA;AAAA,QACrD,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB;AAAA,OACtD,CAAA,EAAG;AACF,QAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,yCAAA,EAA2C,IAAA,EAAM,qBAAoB,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,MAC7I;AACA,MAAA,IAAIC,QAAAA;AACJ,MAAA,IAAI;AAAE,QAAAA,QAAAA,GAAU,IAAA,CAAK,KAAA,CAAMD,KAAI,CAAA;AAAA,MAAiD,CAAA,CAAA,MAC1E;AAAE,QAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,gBAAe,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,MAAG;AAC3H,MAAA,MAAM,YAAY,MAAA,CAAOC,QAAAA,EAAS,SAAA,IAAa,EAAE,EAAE,IAAA,EAAK;AACxD,MAAA,MAAM,UAAU,MAAA,CAAOA,QAAAA,EAAS,OAAA,IAAW,EAAE,EAAE,IAAA,EAAK;AACpD,MAAA,IAAI,YAAY,6BAAA,IAAiC,SAAA,CAAU,SAAS,EAAA,IAAM,SAAA,CAAU,SAAS,GAAA,EAAK;AAChG,QAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,yCAAA,EAA2C,IAAA,EAAM,mBAAkB,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,MAC3I;AACA,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,IAAA;AAAA,QACR,SAAA,EAAW,QAAA;AAAA,QACX,SAAA;AAAA,QACA,KAAA,EAAO,QAAA,KAAa,aAAA,GAChB,+BAAA,CAAgC,EAAE,SAAA,EAAW,aAAA,EAAe,OAAA,CAAQ,aAAA,IAAiB,EAAA,EAAI,CAAA,GACzF;AAAA,OACL,CAAA;AAAA,IACH;AACA,IAAA,IAAI,QAAQ,MAAA,KAAW,MAAA,IAAU,GAAA,CAAI,QAAA,KAAa,YAAY,OAAO,IAAA,CAAK,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,WAAA,IAAe,EAAE,MAAA,EAAQ,KAAK,CAAA;AACpI,IAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAA,EAAK;AAChC,IAAA,IAAI,QAAA,KAAa,aAAA,IAAiB,CAAC,uBAAA,CAAwB;AAAA,MACzD,IAAA;AAAA,MACA,aAAA,EAAe,QAAQ,aAAA,IAAiB,EAAA;AAAA,MACxC,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB,CAAA;AAAA,MACrD,SAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,sBAAsB;AAAA,KACtD,CAAA,EAAG;AACF,MAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,uCAAA,EAAyC,IAAA,EAAM,qBAAoB,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC3I;AACA,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI;AAAE,MAAA,OAAA,GAAU,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,IAA4B,CAAA,CAAA,MACrD;AAAE,MAAA,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAO,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,gBAAe,EAAE,EAAG,EAAE,MAAA,EAAQ,KAAK,CAAA;AAAA,IAAG;AAC3H,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,OAAA,CAAQ,WAAA,IAAe,SAAS,CAAA;AAC1D,IAAA,MAAM,QAAA,GAAW,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,UAAU,CAAA;AACzE,IAAA,IAAI,CAAC,QAAA,EAAU,OAAO,IAAA,CAAK,EAAE,QAAQ,QAAA,EAAU,KAAA,EAAO,EAAE,OAAA,EAAS,oBAAoB,UAAU,CAAA,eAAA,CAAA,EAAmB,IAAA,EAAM,kBAAA,IAAsB,CAAA;AAC9I,IAAA,IAAI,QAAA,CAAS,IAAA,KAAS,MAAA,EAAQ,OAAO,KAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,EAAE,OAAA,EAAS,0DAAA,EAA4D,IAAA,EAAM,yBAAA,IAA6B,CAAA;AAC/K,IAAA,IAAI,OAAO,QAAA,CAAS,OAAA,KAAY,YAAY,OAAO,IAAA,CAAK,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,EAAE,SAAS,CAAA,iBAAA,EAAoB,UAAU,oBAAoB,IAAA,EAAM,mBAAA,IAAuB,CAAA;AAC7K,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,EAAI;AACzB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAA,IAAU,EAAC,EAAG,OAAA,CAAQ,OAAA,IAAW,EAAE,CAAA;AACjG,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,WAAA;AAAA,QAAa,MAAA;AAAA,QAAQ,KAAA,EAAO,IAAA;AAAA,QAAM,WAAA,EAAa,IAAA,CAAK,GAAA,EAAI,GAAI,OAAA;AAAA,QACpE,SAAA,EAAW,sBAAA;AAAA,QAAwB,mBAAA,EAAqB,QAAQ,MAAA,IAAU,IAAA;AAAA,QAAM,QAAQ,EAAC;AAAA,QACzF,gBAAA,EAAkB,EAAE,QAAA,EAAU,sBAAA;AAAuB,OACtD,CAAA;AAAA,IACH,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,IAAA,CAAK;AAAA,QACV,MAAA,EAAQ,QAAA;AAAA,QACR,KAAA,EAAO,EAAE,OAAA,EAAS,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,EAAM,gBAAA,EAAiB;AAAA,QACjG,WAAA,EAAa,IAAA,CAAK,GAAA,EAAI,GAAI,OAAA;AAAA,QAC1B,SAAA,EAAW,sBAAA;AAAA,QAAwB,mBAAA,EAAqB,QAAQ,MAAA,IAAU,IAAA;AAAA,QAAM,QAAQ,EAAC;AAAA,QACzF,gBAAA,EAAkB,EAAE,QAAA,EAAU,sBAAA;AAAuB,OACtD,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,eAAe,WAAA,CAAY,KAAsB,GAAA,EAAoC;AACnF,IAAA,MAAM,IAAA,GAAO,MAAM,WAAA,CAAY,GAAG,CAAA;AAClC,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,CAAA,OAAA,EAAU,GAAA,CAAI,OAAA,CAAQ,IAAA,IAAQ,WAAW,CAAA,EAAG,GAAA,CAAI,GAAA,IAAO,GAAG,CAAA,CAAA,EAAI;AAAA,MACxF,QAAQ,GAAA,CAAI,MAAA;AAAA,MACZ,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,MAAM,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,GAAI;AAAA,KAC7C,CAAA;AACD,IAAA,MAAM,aAAA,CAAc,GAAA,EAAK,MAAM,aAAA,CAAc,OAAO,CAAC,CAAA;AAAA,EACvD;AAEA,EAAA,SAAS,MAAA,CAAO,IAAA,GAAO,CAAA,EAAG,QAAA,GAAW,WAAA,EAA8B;AACjE,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxC,MAAA,KAAK,YAAY,GAAA,EAAK,GAAG,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAU;AAC1C,QAAA,GAAA,CAAI,UAAA,GAAa,GAAA;AACjB,QAAA,GAAA,CAAI,SAAA,CAAU,gBAAgB,kBAAkB,CAAA;AAChD,QAAA,GAAA,CAAI,IAAI,IAAA,CAAK,SAAA,CAAU,EAAE,MAAA,EAAQ,UAAU,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAG,IAAA,EAAM,cAAA,EAAe,EAAG,CAAC,CAAA;AAAA,MACvG,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,MAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM,CAAA;AAC3B,MAAA,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,QAAA,EAAU,MAAM;AAAE,QAAA,MAAA,CAAO,GAAA,CAAI,SAAS,MAAM,CAAA;AAAG,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MAAG,CAAC,CAAA;AAAA,IACvF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IAAc,UAAA;AAAA,IAAY,UAAA;AAAA,IAAY,UAAA;AAAA,IAAY,UAAA;AAAA,IAClD,QAAA,EAAU,MAAM,QAAA,CAAS,QAAA,EAAU,QAAQ,CAAA;AAAA,IAAG,aAAA;AAAA,IAAe,WAAA;AAAA,IAAa;AAAA,GAC5E;AACF","file":"server.js","sourcesContent":["function schema(value) {\n if (value == null) return {};\n if (typeof value.toJSONSchema === \"function\") return value.toJSONSchema();\n if (typeof value.toJsonSchema === \"function\") return value.toJsonSchema();\n if (typeof value === \"object\") {\n if (typeof value.parse === \"function\" && typeof value.safeParse === \"function\" && value._zod) {\n throw new TypeError(\"Zod schemas must expose toJSONSchema(); install Zod v4 or pass z.toJSONSchema(schema)\");\n }\n return value;\n }\n throw new TypeError(\"schema must be a JSON Schema object or expose toJSONSchema()\");\n}\n\nfunction normalize(kind, definition = {}, handler) {\n const actualHandler = handler || definition.handler || definition.execute;\n const explicitName = String(definition.name || \"\").trim();\n const name = explicitName || String(actualHandler?.name || \"\").trim();\n const value = {\n name,\n kind,\n description: definition.description || \"\",\n input_schema: schema(definition.input_schema || definition.inputSchema || definition.input),\n output_schema: schema(definition.output_schema || definition.outputSchema || definition.output),\n config_schema: schema(definition.config_schema || definition.configSchema || definition.config),\n ui_schema: definition.ui_schema || definition.uiSchema || definition.ui || {},\n side_effects: definition.side_effects || definition.sideEffects || [],\n execution_mode: definition.execution_mode || definition.executionMode || \"interactive\",\n handler_ref: definition.handler_ref || definition.handlerRef || actualHandler?.name || name,\n handler: actualHandler,\n };\n Object.defineProperty(value, \"__agents24ExplicitName\", { value: Boolean(explicitName), enumerable: false });\n return value;\n}\n\nexport function tool(definition = {}, handler) {\n return normalize(\"tool\", definition, handler);\n}\n\nexport function agentNode(definition = {}, handler) {\n return normalize(\"agent_node\", definition, handler);\n}\n\nexport function ragOperator(definition = {}, handler) {\n return normalize(\"rag_operator\", definition, handler);\n}\n\nexport function toolset(definition = {}) {\n return {\n __agents24Toolset: true,\n name: String(definition.name || \"\").trim(),\n description: String(definition.description || \"\").trim(),\n tools: Array.isArray(definition.tools) ? definition.tools : [],\n };\n}\n\nfunction entries(input) {\n if (Array.isArray(input)) return input.map((item) => [null, item]);\n return input && typeof input === \"object\" ? Object.entries(input) : [];\n}\n\nfunction normalizedExports(definition) {\n const exports = [];\n const namesByObject = new Map();\n for (const source of [definition.tools, definition.agentNodes, definition.ragOperators]) {\n for (const [mappedName, raw] of entries(source)) {\n if (!raw || typeof raw !== \"object\") throw new TypeError(\"Artifact exports must use tool, agentNode, or ragOperator\");\n const name = raw.__agents24ExplicitName ? raw.name.trim() : String(mappedName || raw.name || \"\").trim();\n if (!name) throw new TypeError(\"Artifact exports require a name\");\n exports.push({ ...raw, name, handler_ref: raw.handler_ref || name });\n namesByObject.set(raw, [...(namesByObject.get(raw) || []), name]);\n }\n }\n const names = exports.map((item) => item.name);\n const duplicate = names.find((name, index) => names.indexOf(name) !== index);\n if (duplicate) throw new TypeError(`Duplicate artifact export name '${duplicate}'`);\n return { exports, namesByObject };\n}\n\nfunction normalizedToolsets(input, exports, namesByObject) {\n if (input == null) return [];\n if (Array.isArray(input) || typeof input !== \"object\") {\n throw new TypeError(\"TypeScript artifact toolsets must be an object keyed by stable source key\");\n }\n const tools = new Set(exports.filter((item) => item.kind === \"tool\").map((item) => item.name));\n const seenNames = new Set();\n return Object.entries(input).map(([key, value]) => {\n if (!key.trim()) throw new TypeError(\"Artifact toolset keys cannot be empty\");\n if (!value?.__agents24Toolset) throw new TypeError(`Toolset '${key}' must use toolset()`);\n if (!value.name || !value.description || !value.tools.length) {\n throw new TypeError(`Toolset '${key}' requires a name, description, and tool`);\n }\n const folded = value.name.toLocaleLowerCase();\n if (seenNames.has(folded)) throw new TypeError(`Duplicate artifact toolset name '${value.name}'`);\n seenNames.add(folded);\n const members = value.tools.map((reference) => {\n if (typeof reference === \"string\") return reference.trim();\n const aliases = namesByObject.get(reference) || [];\n if (aliases.length !== 1) throw new TypeError(`Toolset '${key}' contains an unresolved or ambiguous tool reference`);\n return aliases[0];\n });\n if (new Set(members).size !== members.length) throw new TypeError(`Toolset '${key}' contains duplicate tools`);\n for (const member of members) {\n if (!tools.has(member)) throw new TypeError(`Toolset '${key}' references missing or non-tool export '${member}'`);\n }\n return { key, name: value.name, description: value.description, tools: members };\n });\n}\n\nexport function defineArtifact(definition = {}) {\n const normalized = normalizedExports(definition);\n return {\n __agents24Artifact: true,\n exports: normalized.exports,\n toolsets: normalizedToolsets(definition.toolsets, normalized.exports, normalized.namesByObject),\n __agents24ToolsetsDeclared: definition.toolsets != null,\n };\n}\n\nexport function describeArtifact(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return artifact.exports.map(({ handler: _handler, ...item }) => item);\n}\n\nexport function describeArtifactContract(value) {\n const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});\n return { exports: describeArtifact(artifact), toolsets: artifact.toolsets.map((item) => ({ ...item })) };\n}\n","// The executable implementation is JavaScript so the platform can inject the\n// exact same source into Worker describe/build sandboxes without transpilation.\n// @ts-expect-error package-internal JavaScript runtime has typed bindings below\nimport * as runtime from \"./artifacts-runtime.mjs\";\n\nexport type JsonSchemaSource = Record<string, unknown> | {\n toJSONSchema?: () => Record<string, unknown>;\n toJsonSchema?: () => Record<string, unknown>;\n};\n\nexport type ArtifactHandler = (\n input: unknown,\n config: Record<string, unknown>,\n context: Record<string, unknown>,\n) => unknown | Promise<unknown>;\n\nexport type ArtifactExportDefinition = {\n name?: string;\n description?: string;\n input_schema?: JsonSchemaSource;\n inputSchema?: JsonSchemaSource;\n input?: JsonSchemaSource;\n output_schema?: JsonSchemaSource;\n outputSchema?: JsonSchemaSource;\n output?: JsonSchemaSource;\n config_schema?: JsonSchemaSource;\n configSchema?: JsonSchemaSource;\n config?: JsonSchemaSource;\n ui_schema?: Record<string, unknown>;\n uiSchema?: Record<string, unknown>;\n ui?: Record<string, unknown>;\n side_effects?: string[];\n sideEffects?: string[];\n execution_mode?: string;\n executionMode?: string;\n handler_ref?: string;\n handlerRef?: string;\n handler?: ArtifactHandler;\n execute?: ArtifactHandler;\n};\n\nexport type ArtifactExport = {\n name: string;\n kind: \"tool\" | \"agent_node\" | \"rag_operator\";\n description: string;\n input_schema: Record<string, unknown>;\n output_schema: Record<string, unknown>;\n config_schema: Record<string, unknown>;\n ui_schema: Record<string, unknown>;\n side_effects: string[];\n execution_mode: string;\n handler_ref: string;\n handler?: ArtifactHandler;\n readonly __agents24ExplicitName?: boolean;\n};\n\nexport type ArtifactToolset = {\n readonly __agents24Toolset: true;\n name: string;\n description: string;\n tools: Array<string | ArtifactExport>;\n};\n\nexport type ArtifactDefinition = {\n readonly __agents24Artifact: true;\n exports: ArtifactExport[];\n toolsets: Array<{ key: string; name: string; description: string; tools: string[] }>;\n readonly __agents24ToolsetsDeclared: boolean;\n};\n\nexport const tool = runtime.tool as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const agentNode = runtime.agentNode as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const ragOperator = runtime.ragOperator as (\n definition?: ArtifactExportDefinition,\n handler?: ArtifactHandler,\n) => ArtifactExport;\nexport const toolset = runtime.toolset as (\n definition?: { name?: string; description?: string; tools?: Array<string | ArtifactExport> },\n) => ArtifactToolset;\nexport const defineArtifact = runtime.defineArtifact as (\n definition?: Record<string, unknown>,\n) => ArtifactDefinition;\nexport const describeArtifact = runtime.describeArtifact as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => Array<Omit<ArtifactExport, \"handler\">>;\nexport const describeArtifactContract = runtime.describeArtifactContract as (\n value: ArtifactDefinition | Record<string, unknown>,\n) => {\n exports: Array<Omit<ArtifactExport, \"handler\">>;\n toolsets: ArtifactDefinition[\"toolsets\"];\n};\n","/// <reference types=\"node\" />\n\nimport { Buffer } from \"node:buffer\";\nimport { createHash, createHmac, timingSafeEqual } from \"node:crypto\";\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\n\nimport {\n defineArtifact,\n describeArtifactContract,\n type ArtifactDefinition,\n type ArtifactExport,\n} from \"./artifacts.js\";\n\nexport type ArtifactInvokePayload = {\n run_id?: string;\n artifact_id?: string | null;\n revision_id?: string;\n export_name?: string;\n export_kind?: string;\n inputs?: unknown;\n config?: Record<string, unknown>;\n context?: Record<string, unknown>;\n};\n\nexport type ArtifactServerOptions = {\n exports: unknown;\n toolsets?: unknown;\n signingSecret?: string;\n authMode?: \"hmac_sha256\" | \"none\";\n manifestPath?: string;\n invokePath?: string;\n};\n\nexport type ArtifactSignatureHeaders = {\n \"x-agents24-timestamp\": string;\n \"x-agents24-signature\": string;\n};\n\nconst DEFAULT_MANIFEST_PATH = \"/.well-known/agents24/artifact\";\nconst DEFAULT_HEALTH_PATH = \"/.well-known/agents24/artifact/health\";\nconst DEFAULT_VERIFY_PATH = \"/.well-known/agents24/artifact/verify\";\nconst DEFAULT_INVOKE_PATH = \"/agents24/artifact/invoke\";\nexport const ARTIFACT_VERIFICATION_PURPOSE = \"agents24.artifact.verify.v1\";\n\nfunction sorted(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sorted);\n if (value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).sort().reduce<Record<string, unknown>>((result, key) => {\n result[key] = sorted((value as Record<string, unknown>)[key]);\n return result;\n }, {});\n }\n return value;\n}\n\nfunction artifactFromExports(exportsValue: unknown, toolsetsValue?: unknown): ArtifactDefinition {\n if (exportsValue && typeof exportsValue === \"object\" && (exportsValue as { __agents24Artifact?: unknown }).__agents24Artifact) {\n if (toolsetsValue != null) throw new TypeError(\"Pass toolsets through defineArtifact or the toolsets option, not both\");\n return exportsValue as ArtifactDefinition;\n }\n if (Array.isArray(exportsValue)) {\n return defineArtifact({\n tools: Object.fromEntries((exportsValue as ArtifactExport[]).map((item, index) => [String(item.name || index), item])),\n toolsets: toolsetsValue,\n });\n }\n if (exportsValue && typeof exportsValue === \"object\") {\n const record = exportsValue as Record<string, unknown>;\n if (\"tools\" in record || \"agentNodes\" in record || \"ragOperators\" in record) {\n return defineArtifact({ ...record, toolsets: toolsetsValue ?? record.toolsets });\n }\n return defineArtifact({ tools: record, toolsets: toolsetsValue });\n }\n return defineArtifact({ toolsets: toolsetsValue });\n}\n\nfunction contractExport(item: Record<string, unknown>): Record<string, unknown> {\n return {\n export_name: item.export_name || item.name,\n export_kind: item.export_kind || item.kind,\n description: item.description || \"\",\n input_schema: item.input_schema || {},\n output_schema: item.output_schema || {},\n config_schema: item.config_schema || {},\n ui_schema: item.ui_schema || {},\n side_effects: item.side_effects || [],\n execution_mode: item.execution_mode || \"interactive\",\n handler_ref: item.handler_ref || item.name,\n metadata: item.metadata || {},\n };\n}\n\nfunction manifest(artifact: ArtifactDefinition, authMode: \"hmac_sha256\" | \"none\"): Record<string, unknown> {\n const described = describeArtifactContract(artifact);\n const contract = {\n schema_version: \"agents24.artifact.v1\",\n invocation_auth: { mode: authMode },\n exports: described.exports.map((item) => contractExport(item)),\n ...(artifact.__agents24ToolsetsDeclared ? { toolsets: described.toolsets } : {}),\n };\n return {\n ...contract,\n manifest_hash: createHash(\"sha256\").update(JSON.stringify(sorted(contract))).digest(\"hex\"),\n };\n}\n\nfunction json(payload: unknown, init: ResponseInit = {}): Response {\n return new Response(JSON.stringify(payload), {\n ...init,\n headers: { \"content-type\": \"application/json\", ...(init.headers || {}) },\n });\n}\n\nexport function signArtifactPayload(input: {\n body: string;\n signingSecret: string;\n timestamp?: string | number;\n}): ArtifactSignatureHeaders {\n const timestamp = String(input.timestamp || Date.now());\n const signature = createHmac(\"sha256\", input.signingSecret).update(`${timestamp}.${input.body}`).digest(\"hex\");\n return { \"x-agents24-timestamp\": timestamp, \"x-agents24-signature\": `sha256=${signature}` };\n}\n\nexport function verifyArtifactSignature(input: {\n body: string;\n signingSecret: string;\n timestamp: string | null | undefined;\n signature: string | null | undefined;\n toleranceMs?: number;\n}): boolean {\n const timestamp = String(input.timestamp || \"\").trim();\n const signature = String(input.signature || \"\").trim();\n const parsed = Number(timestamp);\n if (!timestamp || !signature || !Number.isFinite(parsed)) return false;\n if (Math.abs(Date.now() - parsed) > (input.toleranceMs ?? 5 * 60 * 1000)) return false;\n const expected = signArtifactPayload({ body: input.body, signingSecret: input.signingSecret, timestamp })[\"x-agents24-signature\"];\n const actualBytes = Buffer.from(signature);\n const expectedBytes = Buffer.from(expected);\n return actualBytes.length === expectedBytes.length && timingSafeEqual(actualBytes, expectedBytes);\n}\n\nexport function createArtifactVerificationProof(input: {\n challenge: string;\n signingSecret: string;\n}): string {\n const proof = createHmac(\"sha256\", input.signingSecret)\n .update(`${ARTIFACT_VERIFICATION_PURPOSE}.${input.challenge}`)\n .digest(\"hex\");\n return `sha256=${proof}`;\n}\n\nexport function verifyArtifactVerificationProof(input: {\n challenge: string;\n signingSecret: string;\n proof: string | null | undefined;\n}): boolean {\n const expected = Buffer.from(createArtifactVerificationProof(input));\n const actual = Buffer.from(String(input.proof || \"\"));\n return actual.length === expected.length && timingSafeEqual(actual, expected);\n}\n\nasync function requestBody(req: IncomingMessage): Promise<Buffer> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n return Buffer.concat(chunks);\n}\n\nasync function writeResponse(res: ServerResponse, response: Response): Promise<void> {\n res.statusCode = response.status;\n response.headers.forEach((value, key) => res.setHeader(key, value));\n res.end(Buffer.from(await response.arrayBuffer()));\n}\n\nexport function createArtifactServer(options: ArtifactServerOptions) {\n const authMode = options.authMode || \"hmac_sha256\";\n if (authMode === \"hmac_sha256\" && !options.signingSecret) throw new Error(\"createArtifactServer requires signingSecret\");\n const manifestPath = options.manifestPath || DEFAULT_MANIFEST_PATH;\n const healthPath = DEFAULT_HEALTH_PATH;\n const verifyPath = DEFAULT_VERIFY_PATH;\n const invokePath = options.invokePath || DEFAULT_INVOKE_PATH;\n let artifact = artifactFromExports(options.exports, options.toolsets);\n\n function setExports(next: unknown): void { artifact = artifactFromExports(next); }\n\n async function handleRequest(request: Request): Promise<Response> {\n const url = new URL(request.url);\n if (request.method === \"GET\" && url.pathname === healthPath) return json({ status: \"ok\", service: \"agents24-artifact\" });\n if (request.method === \"GET\" && url.pathname === manifestPath) return json(manifest(artifact, authMode));\n if (request.method === \"POST\" && url.pathname === verifyPath) {\n const body = await request.text();\n if (authMode === \"hmac_sha256\" && !verifyArtifactSignature({\n body,\n signingSecret: options.signingSecret || \"\",\n timestamp: request.headers.get(\"x-agents24-timestamp\"),\n signature: request.headers.get(\"x-agents24-signature\"),\n })) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact verification signature\", code: \"INVALID_SIGNATURE\" } }, { status: 401 });\n }\n let payload: { challenge?: unknown; purpose?: unknown };\n try { payload = JSON.parse(body) as { challenge?: unknown; purpose?: unknown }; }\n catch { return json({ status: \"failed\", error: { message: \"Invalid JSON body\", code: \"INVALID_JSON\" } }, { status: 400 }); }\n const challenge = String(payload?.challenge || \"\").trim();\n const purpose = String(payload?.purpose || \"\").trim();\n if (purpose !== ARTIFACT_VERIFICATION_PURPOSE || challenge.length < 16 || challenge.length > 512) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact verification challenge\", code: \"INVALID_REQUEST\" } }, { status: 400 });\n }\n return json({\n status: \"ok\",\n auth_mode: authMode,\n challenge,\n proof: authMode === \"hmac_sha256\"\n ? createArtifactVerificationProof({ challenge, signingSecret: options.signingSecret || \"\" })\n : null,\n });\n }\n if (request.method !== \"POST\" || url.pathname !== invokePath) return json({ error: \"Not found\", code: \"NOT_FOUND\" }, { status: 404 });\n const body = await request.text();\n if (authMode === \"hmac_sha256\" && !verifyArtifactSignature({\n body,\n signingSecret: options.signingSecret || \"\",\n timestamp: request.headers.get(\"x-agents24-timestamp\"),\n signature: request.headers.get(\"x-agents24-signature\"),\n })) {\n return json({ status: \"failed\", error: { message: \"Invalid artifact invocation signature\", code: \"INVALID_SIGNATURE\" } }, { status: 401 });\n }\n let payload: ArtifactInvokePayload;\n try { payload = JSON.parse(body) as ArtifactInvokePayload; }\n catch { return json({ status: \"failed\", error: { message: \"Invalid JSON body\", code: \"INVALID_JSON\" } }, { status: 400 }); }\n const exportName = String(payload.export_name || \"default\");\n const selected = artifact.exports.find((item) => item.name === exportName);\n if (!selected) return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' was not found`, code: \"EXPORT_NOT_FOUND\" } });\n if (selected.kind !== \"tool\") return json({ status: \"failed\", error: { message: \"Self-hosted artifact server can invoke tool exports only\", code: \"UNSUPPORTED_EXPORT_KIND\" } });\n if (typeof selected.handler !== \"function\") return json({ status: \"failed\", error: { message: `Artifact export '${exportName}' has no handler`, code: \"HANDLER_NOT_FOUND\" } });\n const started = Date.now();\n try {\n const result = await selected.handler(payload.inputs, payload.config || {}, payload.context || {});\n return json({\n status: \"completed\", result, error: null, duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n } catch (error) {\n return json({\n status: \"failed\",\n error: { message: error instanceof Error ? error.message : String(error), code: \"HANDLER_FAILED\" },\n duration_ms: Date.now() - started,\n worker_id: \"agents24-node-server\", dispatch_request_id: payload.run_id || null, events: [],\n runtime_metadata: { provider: \"agents24_node_server\" },\n });\n }\n }\n\n async function nodeHandler(req: IncomingMessage, res: ServerResponse): Promise<void> {\n const body = await requestBody(req);\n const request = new Request(`http://${req.headers.host || \"127.0.0.1\"}${req.url || \"/\"}`, {\n method: req.method,\n headers: req.headers as HeadersInit,\n body: body.length ? body.toString(\"utf8\") : undefined,\n });\n await writeResponse(res, await handleRequest(request));\n }\n\n function listen(port = 0, hostname = \"127.0.0.1\"): Promise<Server> {\n const server = createServer((req, res) => {\n void nodeHandler(req, res).catch((error) => {\n res.statusCode = 500;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify({ status: \"failed\", error: { message: String(error), code: \"SERVER_ERROR\" } }));\n });\n });\n return new Promise((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, hostname, () => { server.off(\"error\", reject); resolve(server); });\n });\n }\n\n return {\n manifestPath, healthPath, verifyPath, invokePath, setExports,\n manifest: () => manifest(artifact, authMode), handleRequest, nodeHandler, listen,\n };\n}\n"]}
|
package/dist/types/agents.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Agents24HttpClient } from "./http.js";
|
|
2
|
-
import type { AgentCreateRequest, AgentListResponse, AgentResponse, AgentStreamRequest, AgentUpdateRequest, AttachmentUploadResult, GraphDefinition, RequestOptions, RunCancelOptions, RunCancelResult, RuntimeEvent, ServerAttachmentUploadOptions, StartRunResult, StreamRequestOptions, StreamResult } from "./types.js";
|
|
2
|
+
import type { AgentCreateRequest, AgentListResponse, AgentResponse, AgentStreamRequest, AgentUpdateRequest, AttachmentUploadResult, AttachmentContentAccess, AttachmentContentAccessRequest, GraphDefinition, NodeCatalogResponse, NodeSchemaResponse, AgentValidationResult, RequestOptions, RunCancelOptions, RunCancelResult, RuntimeEvent, ServerAttachmentUploadOptions, StartRunResult, StreamRequestOptions, StreamResult } from "./types.js";
|
|
3
3
|
export type ListAgentsOptions = {
|
|
4
4
|
status?: string;
|
|
5
5
|
skip?: number;
|
|
@@ -15,14 +15,15 @@ export declare class AgentsNamespace {
|
|
|
15
15
|
update(agentId: string, request: AgentUpdateRequest, options?: RequestOptions): Promise<AgentResponse>;
|
|
16
16
|
updateGraph(agentId: string, graph: GraphDefinition, options?: RequestOptions): Promise<AgentResponse>;
|
|
17
17
|
delete(agentId: string, options?: RequestOptions): Promise<unknown>;
|
|
18
|
-
catalog(): Promise<
|
|
19
|
-
schema(nodeTypes: string[]): Promise<
|
|
20
|
-
validate(agentId: string): Promise<
|
|
18
|
+
catalog(): Promise<NodeCatalogResponse>;
|
|
19
|
+
schema(nodeTypes: string[]): Promise<NodeSchemaResponse>;
|
|
20
|
+
validate(agentId: string): Promise<AgentValidationResult>;
|
|
21
21
|
publish(agentId: string, options?: RequestOptions): Promise<AgentResponse>;
|
|
22
22
|
startRun(agentId: string, payload: AgentStreamRequest, options?: RequestOptions): Promise<StartRunResult>;
|
|
23
23
|
stream(agentId: string, payload: AgentStreamRequest, onEvent?: (event: RuntimeEvent) => void | Promise<void>, mode?: "debug" | "production" | string, options?: StreamRequestOptions): Promise<StreamResult>;
|
|
24
24
|
resumeRun(runId: string, payload: Record<string, unknown>, options?: RequestOptions): Promise<Record<string, unknown>>;
|
|
25
25
|
cancelRun(runId: string, options?: RunCancelOptions): Promise<RunCancelResult>;
|
|
26
26
|
uploadAttachments(agentId: string, options: ServerAttachmentUploadOptions): Promise<AttachmentUploadResult>;
|
|
27
|
+
createAttachmentContentAccess(agentId: string, attachmentId: string, request: AttachmentContentAccessRequest, options?: RequestOptions): Promise<AttachmentContentAccess>;
|
|
27
28
|
}
|
|
28
29
|
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,6BAA6B,EAC7B,cAAc,EACd,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAEvH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAErD,IAAI,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAGjE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAGrF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAGtG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAGtG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAGnE,OAAO,IAAI,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/types/bff.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Agents24 } from "./client.js";
|
|
2
2
|
export interface AgentBffPrincipal {
|
|
3
|
-
|
|
3
|
+
issuer: string;
|
|
4
|
+
subject: string;
|
|
4
5
|
externalSessionId?: string;
|
|
5
6
|
}
|
|
6
7
|
export interface AgentBffPrincipalResolution {
|
|
@@ -8,8 +9,9 @@ export interface AgentBffPrincipalResolution {
|
|
|
8
9
|
responseHeaders?: HeadersInit;
|
|
9
10
|
}
|
|
10
11
|
export interface Agents24BffHandlerOptions {
|
|
11
|
-
client: Pick<Agents24, "embed">;
|
|
12
|
+
client: Pick<Agents24, "embed" | "resourcePolicies">;
|
|
12
13
|
agentId: string;
|
|
14
|
+
deploymentId: string;
|
|
13
15
|
agentVersionId?: string;
|
|
14
16
|
basePath?: string;
|
|
15
17
|
resolvePrincipal(request: Request): Promise<AgentBffPrincipalResolution> | AgentBffPrincipalResolution;
|