@agents24/node 0.2.0 → 0.3.0

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.
Files changed (54) hide show
  1. package/README.md +17 -4
  2. package/compatibility.json +10 -10
  3. package/dist/bff.cjs +202 -33
  4. package/dist/bff.cjs.map +1 -1
  5. package/dist/bff.d.cts +3 -2
  6. package/dist/bff.d.ts +3 -2
  7. package/dist/bff.js +202 -33
  8. package/dist/bff.js.map +1 -1
  9. package/dist/{client-6MWalxux.d.cts → client-Rmk3dh_D.d.cts} +437 -71
  10. package/dist/{client-6MWalxux.d.ts → client-Rmk3dh_D.d.ts} +437 -71
  11. package/dist/index.cjs +194 -45
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +3 -3
  14. package/dist/index.d.ts +3 -3
  15. package/dist/index.js +194 -45
  16. package/dist/index.js.map +1 -1
  17. package/dist/server.cjs +52 -6
  18. package/dist/server.cjs.map +1 -1
  19. package/dist/server.d.cts +14 -2
  20. package/dist/server.d.ts +14 -2
  21. package/dist/server.js +50 -7
  22. package/dist/server.js.map +1 -1
  23. package/dist/types/agents.d.ts +5 -4
  24. package/dist/types/agents.d.ts.map +1 -1
  25. package/dist/types/bff.d.ts +2 -1
  26. package/dist/types/bff.d.ts.map +1 -1
  27. package/dist/types/builders.d.ts +2 -0
  28. package/dist/types/builders.d.ts.map +1 -1
  29. package/dist/types/client-runtime-admin.d.ts +1 -1
  30. package/dist/types/client.d.ts +4 -0
  31. package/dist/types/client.d.ts.map +1 -1
  32. package/dist/types/embed.d.ts +6 -3
  33. package/dist/types/embed.d.ts.map +1 -1
  34. package/dist/types/errors.d.ts +10 -2
  35. package/dist/types/errors.d.ts.map +1 -1
  36. package/dist/types/generated/instructions.d.ts +8 -0
  37. package/dist/types/generated/instructions.d.ts.map +1 -0
  38. package/dist/types/generated/manifest.d.ts +1 -1
  39. package/dist/types/generated/manifest.d.ts.map +1 -1
  40. package/dist/types/generated/resourceBundles.d.ts +4 -1
  41. package/dist/types/generated/resourceBundles.d.ts.map +1 -1
  42. package/dist/types/generated/resourcePolicies.d.ts +14 -0
  43. package/dist/types/generated/resourcePolicies.d.ts.map +1 -0
  44. package/dist/types/http.d.ts +0 -2
  45. package/dist/types/http.d.ts.map +1 -1
  46. package/dist/types/index.d.ts +1 -1
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/types/runs.d.ts +4 -2
  49. package/dist/types/runs.d.ts.map +1 -1
  50. package/dist/types/server.d.ts +13 -1
  51. package/dist/types/server.d.ts.map +1 -1
  52. package/dist/types/types.d.ts +389 -60
  53. package/dist/types/types.d.ts.map +1 -1
  54. package/package.json +2 -2
@@ -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":"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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 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: string;
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: string;
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
- if (!options.signingSecret) throw new Error("createArtifactServer requires signingSecret");
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
@@ -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":"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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 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"]}
@@ -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<Record<string, unknown>>;
19
- schema(nodeTypes: string[]): Promise<Record<string, unknown>>;
20
- validate(agentId: string): Promise<Record<string, unknown>>;
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,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG7D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG3D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAG1E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAGnG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACvD,IAAI,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,EACtC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,YAAY,CAAC;IASxB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGtH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAG5E,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAUlH"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/agents.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Agents24 } from "./client.js";
2
2
  export interface AgentBffPrincipal {
3
- externalUserId: string;
3
+ subject: string;
4
+ issuer?: string;
4
5
  externalSessionId?: string;
5
6
  }
6
7
  export interface AgentBffPrincipalResolution {
@@ -1 +1 @@
1
- {"version":3,"file":"bff.d.ts","sourceRoot":"","sources":["../../src/bff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,iBAAiB,CAAC;IAC7B,eAAe,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG,2BAA2B,CAAC;IACvG,eAAe,CAAC,CACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AA2IzE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAgJ/F"}
1
+ {"version":3,"file":"bff.d.ts","sourceRoot":"","sources":["../../src/bff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,iBAAiB,CAAC;IAC7B,eAAe,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,2BAA2B,CAAC,GAAG,2BAA2B,CAAC;IACvG,eAAe,CAAC,CACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAqQzE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAkN/F"}