@agents24/node 0.1.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.
- package/LICENSE +21 -0
- package/README.md +42 -0
- package/compatibility.json +54 -0
- package/dist/artifacts.cjs +138 -0
- package/dist/artifacts.cjs.map +1 -0
- package/dist/artifacts.d.cts +76 -0
- package/dist/artifacts.d.ts +76 -0
- package/dist/artifacts.js +130 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/index.cjs +733 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +564 -0
- package/dist/index.d.ts +564 -0
- package/dist/index.js +667 -0
- package/dist/index.js.map +1 -0
- package/dist/server.cjs +275 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +47 -0
- package/dist/server.d.ts +47 -0
- package/dist/server.js +271 -0
- package/dist/server.js.map +1 -0
- package/dist/types/agents.d.ts +28 -0
- package/dist/types/agents.d.ts.map +1 -0
- package/dist/types/artifacts.d.ts +75 -0
- package/dist/types/artifacts.d.ts.map +1 -0
- package/dist/types/builders.d.ts +27 -0
- package/dist/types/builders.d.ts.map +1 -0
- package/dist/types/client-runtime-admin.d.ts +17 -0
- package/dist/types/client-runtime-admin.d.ts.map +1 -0
- package/dist/types/client.d.ts +17 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/embed.d.ts +22 -0
- package/dist/types/embed.d.ts.map +1 -0
- package/dist/types/errors.d.ts +17 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/generated/manifest.d.ts +3 -0
- package/dist/types/generated/manifest.d.ts.map +1 -0
- package/dist/types/http.d.ts +25 -0
- package/dist/types/http.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/runs.d.ts +17 -0
- package/dist/types/runs.d.ts.map +1 -0
- package/dist/types/server.d.ts +45 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/streams.d.ts +4 -0
- package/dist/types/streams.d.ts.map +1 -0
- package/dist/types/types.d.ts +409 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/streams.ts","../src/agents.ts","../src/builders.ts","../src/client-runtime-admin.ts","../src/embed.ts","../src/runs.ts","../src/client.ts","../src/generated/manifest.ts"],"names":["message"],"mappings":"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","file":"index.js","sourcesContent":["export type Agents24SDKErrorKind = \"protocol\" | \"network\" | \"http\";\nexport type Agents24NodeErrorKind = Agents24SDKErrorKind;\n\nexport class Agents24SDKError extends Error {\n readonly kind: Agents24SDKErrorKind;\n readonly status?: number;\n readonly details?: unknown;\n readonly responseHeaders?: Readonly<Record<string, string>>;\n\n constructor(\n message: string,\n options: {\n kind: Agents24SDKErrorKind;\n status?: number;\n details?: unknown;\n responseHeaders?: Readonly<Record<string, string>>;\n cause?: unknown;\n },\n ) {\n super(message, { cause: options.cause });\n this.name = \"Agents24SDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.details = options.details;\n this.responseHeaders = options.responseHeaders;\n }\n}\n\nexport { Agents24SDKError as Agents24NodeError };\n","import { randomUUID } from \"node:crypto\";\n\nimport { Agents24SDKError } from \"./errors.js\";\nimport type { Agents24NodeOptions, RequestOptions } from \"./types.js\";\n\nfunction required(value: string, name: string): string {\n const normalized = String(value || \"\").trim();\n if (!normalized) throw new Agents24SDKError(`Agents24 requires ${name}.`, { kind: \"protocol\" });\n return normalized;\n}\n\nfunction normalizeBaseUrl(value: string): string {\n try {\n return new URL(required(value, \"baseUrl\")).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n if (cause instanceof Agents24SDKError) throw cause;\n throw new Agents24SDKError(\"Agents24 received an invalid baseUrl.\", { kind: \"protocol\", cause });\n }\n}\n\nasync function errorDetails(response: Response): Promise<unknown> {\n const text = await response.text().catch(() => \"\");\n if (!text) return null;\n try { return JSON.parse(text) as unknown; }\n catch { return text; }\n}\n\nfunction detailMessage(details: unknown): string | undefined {\n if (typeof details === \"string\" && details.trim()) return details.trim();\n if (!details || typeof details !== \"object\" || Array.isArray(details)) return undefined;\n const detail = (details as Record<string, unknown>).detail;\n if (typeof detail === \"string\" && detail.trim()) return detail.trim();\n if (detail && typeof detail === \"object\" && !Array.isArray(detail)) {\n const message = (detail as Record<string, unknown>).message;\n if (typeof message === \"string\" && message.trim()) return message.trim();\n }\n const message = (details as Record<string, unknown>).message;\n return typeof message === \"string\" && message.trim() ? message.trim() : undefined;\n}\n\nfunction responseHeaders(response: Response): Record<string, string> {\n const headers: Record<string, string> = {};\n for (const name of [\"dpop-nonce\", \"retry-after\", \"www-authenticate\", \"x-request-id\"]) {\n const value = response.headers.get(name);\n if (value) headers[name] = value;\n }\n return headers;\n}\n\nexport async function assertOk(response: Response): Promise<void> {\n if (response.ok) return;\n const details = await errorDetails(response);\n throw new Agents24SDKError(detailMessage(details) || response.statusText || \"Agents24 request failed.\", {\n kind: \"http\",\n status: response.status,\n details,\n responseHeaders: responseHeaders(response),\n });\n}\n\nexport type RequestConfig = {\n method?: string;\n query?: Record<string, unknown>;\n body?: unknown;\n headers?: HeadersInit;\n options?: RequestOptions;\n mutation?: boolean;\n};\n\nexport class Agents24HttpClient {\n private readonly base: string;\n private readonly apiKey: string;\n private readonly organizationId: string;\n private readonly projectId: string;\n private readonly fetchImpl: typeof fetch;\n\n constructor(options: Agents24NodeOptions) {\n if (typeof process === \"undefined\" || process.release?.name !== \"node\") {\n throw new Agents24SDKError(\"@agents24/node is for trusted server runtimes only.\", { kind: \"protocol\" });\n }\n this.base = normalizeBaseUrl(options.baseUrl);\n this.apiKey = required(options.apiKey, \"apiKey\");\n this.organizationId = required(options.organizationId, \"organizationId\");\n this.projectId = required(options.projectId, \"projectId\");\n if (typeof options.fetchImpl !== \"function\" && typeof fetch !== \"function\") {\n throw new Agents24SDKError(\"No fetch implementation is available. Use Node 22 or 24.\", { kind: \"protocol\" });\n }\n this.fetchImpl = options.fetchImpl || fetch;\n }\n\n url(requestPath: string, query?: Record<string, unknown>): string {\n const url = new URL(`${this.base}${requestPath}`);\n for (const [key, value] of Object.entries(query || {})) {\n if (value === undefined || value === null || value === \"\") continue;\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item !== undefined && item !== null && item !== \"\") url.searchParams.append(key, String(item));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n return url.toString();\n }\n\n jsonHeaders(extra?: HeadersInit, options?: RequestOptions, mutation = false): HeadersInit {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"X-Organization-ID\": this.organizationId,\n \"X-Project-ID\": this.projectId,\n \"X-SDK-Contract\": \"1\",\n ...(mutation ? { \"Idempotency-Key\": options?.idempotencyKey || randomUUID() } : {}),\n ...(options?.requestMetadata ? { \"X-Request-Metadata\": JSON.stringify(options.requestMetadata) } : {}),\n ...(extra || {}),\n };\n }\n\n streamHeaders(extra?: HeadersInit, options?: RequestOptions, mutation = false): HeadersInit {\n return this.jsonHeaders({ Accept: \"text/event-stream\", ...(extra || {}) }, options, mutation);\n }\n\n multipartHeaders(extra?: HeadersInit, options?: RequestOptions, mutation = false): HeadersInit {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: \"application/json\",\n \"X-Organization-ID\": this.organizationId,\n \"X-Project-ID\": this.projectId,\n \"X-SDK-Contract\": \"1\",\n ...(mutation ? { \"Idempotency-Key\": options?.idempotencyKey || randomUUID() } : {}),\n ...(extra || {}),\n };\n }\n\n async requestJson<T>(requestPath: string, config: RequestConfig = {}): Promise<T> {\n const query = { ...(config.query || {}) };\n if (config.options?.dryRun !== undefined) query.dry_run = config.options.dryRun;\n if (config.options?.validateOnly !== undefined) query.validate_only = config.options.validateOnly;\n const response = await this.fetchOrThrow(this.url(requestPath, query), {\n method: config.method || \"GET\",\n headers: this.jsonHeaders(config.headers, config.options, Boolean(config.mutation)),\n ...(config.body === undefined ? {} : { body: JSON.stringify(config.body) }),\n }, \"Failed to connect to the Agents24 API.\");\n await assertOk(response);\n return await response.json() as T;\n }\n\n async fetchOrThrow(url: string, init: RequestInit, message: string): Promise<Response> {\n try { return await this.fetchImpl(url, init); }\n catch (cause) {\n if (cause instanceof Agents24SDKError) throw cause;\n throw new Agents24SDKError(message, { kind: \"network\", cause });\n }\n }\n}\n","import {\n createSseParser,\n parseRuntimeSsePayload,\n parseThreadSummarySsePayload,\n} from \"@agents24/client/protocol\";\nimport type { RuntimeEvent, ThreadSummaryEvent } from \"@agents24/client/protocol\";\n\nimport { Agents24SDKError } from \"./errors.js\";\n\nasync function consumePayloads(\n response: Response,\n onPayload: (payload: string) => void | Promise<void>,\n signal?: AbortSignal,\n): Promise<void> {\n if (!response.body) {\n throw new Agents24SDKError(\"Stream response did not include a readable body.\", { kind: \"protocol\" });\n }\n const reader = response.body.getReader();\n const parser = createSseParser({ decoder: new TextDecoder(), onPayload, signal });\n const abort = () => { void reader.cancel(signal?.reason).catch(() => undefined); };\n if (signal?.aborted) return abort();\n signal?.addEventListener(\"abort\", abort, { once: true });\n try {\n while (!signal?.aborted) {\n const { done, value } = await reader.read();\n if (value) await parser.push(value);\n if (done) break;\n }\n if (!signal?.aborted) await parser.finish();\n } finally {\n signal?.removeEventListener(\"abort\", abort);\n reader.releaseLock();\n }\n}\n\nexport async function consumeRuntimeEventStream(\n response: Response,\n onEvent?: (event: RuntimeEvent) => void | Promise<void>,\n signal?: AbortSignal,\n): Promise<void> {\n await consumePayloads(response, async (payload) => {\n const event = parseRuntimeSsePayload(payload);\n if (onEvent) await onEvent(event);\n }, signal);\n}\n\nexport async function consumeThreadSummaryEventStream(\n response: Response,\n onEvent: (event: ThreadSummaryEvent) => void | Promise<void>,\n signal?: AbortSignal,\n): Promise<void> {\n await consumePayloads(response, async (payload) => {\n await onEvent(parseThreadSummarySsePayload(payload));\n }, signal);\n}\n","import { assertOk, type Agents24HttpClient } from \"./http.js\";\nimport { consumeRuntimeEventStream } from \"./streams.js\";\nimport type {\n AgentCreateRequest,\n AgentListResponse,\n AgentResponse,\n AgentStreamRequest,\n AgentUpdateRequest,\n AttachmentUploadResult,\n GraphDefinition,\n RequestOptions,\n RunCancelOptions,\n RunCancelResult,\n RuntimeEvent,\n ServerAttachmentUploadOptions,\n StartRunResult,\n StreamRequestOptions,\n StreamResult,\n} from \"./types.js\";\n\nexport type ListAgentsOptions = { status?: string; skip?: number; limit?: number; view?: \"summary\" | \"full\" | string };\n\nexport class AgentsNamespace {\n constructor(private readonly http: Agents24HttpClient) {}\n\n list(options: ListAgentsOptions = {}): Promise<AgentListResponse> {\n return this.http.requestJson(\"/agents\", { query: { status: options.status, skip: options.skip ?? 0, limit: options.limit ?? 20, view: options.view ?? \"summary\" } });\n }\n get(agentId: string): Promise<AgentResponse> { return this.http.requestJson(`/agents/${agentId}`); }\n create(request: AgentCreateRequest, options?: RequestOptions): Promise<AgentResponse> {\n return this.http.requestJson(\"/agents\", { method: \"POST\", body: request, options, mutation: true });\n }\n update(agentId: string, request: AgentUpdateRequest, options?: RequestOptions): Promise<AgentResponse> {\n return this.http.requestJson(`/agents/${agentId}`, { method: \"PATCH\", body: request, options, mutation: true });\n }\n updateGraph(agentId: string, graph: GraphDefinition, options?: RequestOptions): Promise<AgentResponse> {\n return this.http.requestJson(`/agents/${agentId}/graph`, { method: \"PUT\", body: graph, options, mutation: true });\n }\n delete(agentId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.requestJson(`/agents/${agentId}`, { method: \"DELETE\", options, mutation: true });\n }\n catalog(): Promise<Record<string, unknown>> { return this.http.requestJson(\"/agents/nodes/catalog\"); }\n schema(nodeTypes: string[]): Promise<Record<string, unknown>> {\n return this.http.requestJson(\"/agents/nodes/schema\", { method: \"POST\", body: { node_types: nodeTypes } });\n }\n validate(agentId: string): Promise<Record<string, unknown>> {\n return this.http.requestJson(`/agents/${agentId}/validate`, { method: \"POST\", body: {} });\n }\n publish(agentId: string, options?: RequestOptions): Promise<AgentResponse> {\n return this.http.requestJson(`/agents/${agentId}/publish`, { method: \"POST\", body: {}, options, mutation: true });\n }\n startRun(agentId: string, payload: AgentStreamRequest, options?: RequestOptions): Promise<StartRunResult> {\n return this.http.requestJson(`/agents/${agentId}/run`, { method: \"POST\", body: payload, options, mutation: true });\n }\n async stream(\n agentId: string,\n payload: AgentStreamRequest,\n onEvent?: (event: RuntimeEvent) => void | Promise<void>,\n mode?: \"debug\" | \"production\" | string,\n options: StreamRequestOptions = {},\n ): Promise<StreamResult> {\n const response = await this.http.fetchOrThrow(this.http.url(`/agents/${agentId}/stream`, { mode }), {\n method: \"POST\", headers: this.http.streamHeaders(), body: JSON.stringify(payload), signal: options.signal,\n }, \"Failed to connect to the agent stream endpoint.\");\n await assertOk(response);\n let runId = response.headers.get(\"X-Run-ID\");\n await consumeRuntimeEventStream(response, async (event) => { runId ||= event.run_id; if (onEvent) await onEvent(event); }, options.signal);\n return { threadId: response.headers.get(\"X-Thread-ID\"), runId };\n }\n resumeRun(runId: string, payload: Record<string, unknown>, options?: RequestOptions): Promise<Record<string, unknown>> {\n return this.http.requestJson(`/agents/runs/${runId}/resume`, { method: \"POST\", body: payload, options, mutation: true });\n }\n cancelRun(runId: string, options: RunCancelOptions = {}): Promise<RunCancelResult> {\n return this.http.requestJson(`/agents/runs/${runId}/cancel`, { method: \"POST\", body: { assistant_output_text: options.assistantOutputText }, mutation: true });\n }\n async uploadAttachments(agentId: string, options: ServerAttachmentUploadOptions): Promise<AttachmentUploadResult> {\n const form = new FormData();\n if (options.threadId) form.set(\"thread_id\", options.threadId);\n for (const file of options.files) form.append(\"files\", file, file.name);\n const response = await this.http.fetchOrThrow(this.http.url(`/agents/${agentId}/attachments/upload`), {\n method: \"POST\", headers: this.http.multipartHeaders(), body: form,\n }, \"Failed to connect to the agent attachment endpoint.\");\n await assertOk(response);\n return await response.json() as AttachmentUploadResult;\n }\n}\n","import type { AgentsNamespace } from \"./agents.js\";\nimport type {\n AgentCreateRequest,\n AgentDefinitionOptions,\n AgentRef,\n AgentResponse,\n GraphDefinition,\n GraphEdge,\n GraphNode,\n RequestOptions,\n} from \"./types.js\";\n\nfunction refId(ref: AgentRef): string { return typeof ref === \"string\" ? ref : ref.id; }\nfunction refs(values: AgentRef[] | undefined): string[] { return [...new Set((values || []).map(refId).filter(Boolean))]; }\nfunction graphNode(id: string, type: string, x: number, y: number, config: Record<string, unknown> = {}): GraphNode {\n return { id, type, position: { x, y }, config };\n}\n\nfunction toolsetAttachments(options: AgentDefinitionOptions): Array<Record<string, unknown>> {\n const seen = new Set<string>();\n return (options.toolsetAttachments || []).flatMap((attachment) => {\n const id = refId(attachment.toolset);\n if (!id || seen.has(id)) return [];\n seen.add(id);\n const policy = attachment.versionPolicy || { mode: \"latest\" as const };\n return [{\n toolset_id: id,\n loading_mode: attachment.loadingMode || \"static\",\n version_policy: policy.mode === \"pinned\" ? { mode: \"pinned\", version_id: policy.versionId } : { mode: \"latest\" },\n }];\n });\n}\n\nexport class AgentDefinitionBuilder {\n constructor(private readonly agents: AgentsNamespace, private readonly options: AgentDefinitionOptions) {}\n toGraph(): GraphDefinition {\n const agentConfig: Record<string, unknown> = {\n instructions: this.options.instructions || \"\",\n tools: refs(this.options.tools),\n toolset_attachments: toolsetAttachments(this.options),\n input_sources: [{ id: \"workflow-text\", value_ref: { namespace: \"workflow_input\", key: \"text\", label: \"Workflow input / Text\" } }],\n };\n if (this.options.model) agentConfig.model_id = refId(this.options.model);\n return {\n spec_version: \"4.0\",\n graph_type: \"agent\",\n workflow_contract: { inputs: [] },\n state_contract: { variables: [] },\n nodes: [\n graphNode(\"start\", \"start\", 0, 0),\n graphNode(\"agent\", \"agent\", 260, 0, agentConfig),\n graphNode(\"end\", \"end\", 520, 0, {\n output_schema: {\n name: \"workflow_result\", mode: \"simple\",\n schema: { type: \"object\", additionalProperties: false, properties: { response: { type: \"string\" } }, required: [\"response\"] },\n },\n output_bindings: [{ json_pointer: \"/response\", value_ref: { namespace: \"node_output\", node_id: \"agent\", key: \"output_text\", label: \"Agent response\" } }],\n }),\n ],\n edges: [\n { id: \"start-agent\", source: \"start\", target: \"agent\", type: \"control\" },\n { id: \"agent-end\", source: \"agent\", target: \"end\", type: \"control\" },\n ],\n };\n }\n toCreateRequest(): AgentCreateRequest {\n const knowledge = refs(this.options.knowledge);\n return {\n name: this.options.name,\n description: this.options.description ?? null,\n graph_definition: this.toGraph(),\n memory_config: {\n ...(this.options.memory || {}),\n ...(knowledge.length ? { long_term_enabled: true, long_term_index_id: knowledge[0], knowledge_refs: knowledge } : {}),\n },\n execution_constraints: this.options.execution || {},\n };\n }\n create(options?: RequestOptions): Promise<AgentResponse> { return this.agents.create(this.toCreateRequest(), options); }\n}\n\nexport class GraphBuilder {\n private readonly nodes = new Map<string, GraphNode>();\n private readonly edges: GraphEdge[] = [];\n node(type: string, config: Record<string, unknown> = {}, options: { id?: string; x?: number; y?: number; label?: string } = {}): GraphNode {\n const id = options.id || `${type}_${this.nodes.size + 1}`;\n if (this.nodes.has(id)) throw new Error(`Duplicate graph node id: ${id}`);\n const value = graphNode(id, type, options.x ?? this.nodes.size * 260, options.y ?? 0, config);\n if (options.label) value.label = options.label;\n this.nodes.set(id, value);\n return value;\n }\n connect(source: GraphNode | string, target: GraphNode | string, options: { id?: string; sourceHandle?: string; targetHandle?: string } = {}): this {\n const sourceId = typeof source === \"string\" ? source : source.id;\n const targetId = typeof target === \"string\" ? target : target.id;\n if (!this.nodes.has(sourceId)) throw new Error(`Unknown source node id: ${sourceId}`);\n if (!this.nodes.has(targetId)) throw new Error(`Unknown target node id: ${targetId}`);\n this.edges.push({\n id: options.id || `${sourceId}-${targetId}`, source: sourceId, target: targetId, type: \"control\",\n source_handle: options.sourceHandle, target_handle: options.targetHandle,\n });\n return this;\n }\n toGraph(): GraphDefinition {\n return {\n spec_version: \"4.0\", graph_type: \"agent\", workflow_contract: { inputs: [] }, state_contract: { variables: [] },\n nodes: [...this.nodes.values()], edges: [...this.edges],\n };\n }\n}\n","import type { Agents24HttpClient } from \"./http.js\";\nimport type {\n BackendSessionRequestOptions,\n ClientDeployment,\n ClientSessionCredentials,\n CreateBackendClientSessionRequest,\n CreateClientDeploymentRequest,\n PromoteClientDeploymentRequest,\n RequestOptions,\n UpdateClientDeploymentRequest,\n} from \"./types.js\";\n\nexport class ClientDeploymentsNamespace {\n constructor(private readonly http: Agents24HttpClient) {}\n\n create(request: CreateClientDeploymentRequest, options?: RequestOptions): Promise<ClientDeployment> {\n return this.http.requestJson<ClientDeployment>(\"/client-runtime/deployments\", {\n method: \"POST\", body: request, options, mutation: true,\n });\n }\n\n get(deploymentId: string): Promise<ClientDeployment> {\n return this.http.requestJson<ClientDeployment>(`/client-runtime/deployments/${deploymentId}`);\n }\n\n update(deploymentId: string, request: UpdateClientDeploymentRequest, options?: RequestOptions): Promise<ClientDeployment> {\n return this.http.requestJson<ClientDeployment>(`/client-runtime/deployments/${deploymentId}`, {\n method: \"PATCH\", body: request, options, mutation: true,\n });\n }\n\n promote(deploymentId: string, request: PromoteClientDeploymentRequest, options?: RequestOptions): Promise<ClientDeployment> {\n return this.http.requestJson<ClientDeployment>(`/client-runtime/deployments/${deploymentId}/promote`, {\n method: \"POST\", body: request, options, mutation: true,\n });\n }\n\n revoke(deploymentId: string, options?: RequestOptions): Promise<ClientDeployment> {\n return this.http.requestJson<ClientDeployment>(`/client-runtime/deployments/${deploymentId}`, {\n method: \"DELETE\", options, mutation: true,\n });\n }\n}\n\nexport class ClientSessionsNamespace {\n constructor(private readonly http: Agents24HttpClient) {}\n\n createBackendSession(\n deploymentId: string,\n request: CreateBackendClientSessionRequest,\n options?: BackendSessionRequestOptions,\n ): Promise<ClientSessionCredentials> {\n return this.http.requestJson<ClientSessionCredentials>(\n `/client-runtime/deployments/${deploymentId}/session-tokens`,\n {\n method: \"POST\",\n body: request,\n options,\n mutation: true,\n headers: options?.dpopProof ? { DPoP: options.dpopProof } : undefined,\n },\n );\n }\n}\n","import { assertOk, type Agents24HttpClient } from \"./http.js\";\nimport { consumeRuntimeEventStream, consumeThreadSummaryEventStream } from \"./streams.js\";\nimport type {\n AttachRunRequest,\n AttachmentUploadResult,\n EmbedRuntimeBootstrap,\n EmbedRunCancelOptions,\n EmbedStreamRequest,\n McpAuthStartRequest,\n McpAuthStartResult,\n MultiAgentThreadListRequest,\n MultiAgentThreadSummaryEventOptions,\n RequestOptions,\n ResumeRunRequest,\n RunCancelResult,\n RunContext,\n RunContextOptions,\n RunResumeResult,\n RuntimeEvent,\n ServerEmbedAttachmentUploadOptions,\n StreamRequestOptions,\n StreamResult,\n ThreadDeleteOptions,\n ThreadDeleteResult,\n ThreadDetail,\n ThreadDetailOptions,\n ThreadListOptions,\n ThreadSummaryEvent,\n ThreadSummaryEventOptions,\n ThreadsResponse,\n} from \"./types.js\";\n\nexport class EmbedNamespace {\n constructor(private readonly http: Agents24HttpClient) {}\n\n async streamAgent(\n agentId: string,\n payload: EmbedStreamRequest,\n onEvent?: (event: RuntimeEvent) => void | Promise<void>,\n options: StreamRequestOptions = {},\n ): Promise<StreamResult> {\n return this.stream(`/public/embed/agents/${agentId}/chat/stream`, payload, onEvent, options);\n }\n\n async attachAgentRun(\n agentId: string,\n runId: string,\n payload: AttachRunRequest,\n onEvent?: (event: RuntimeEvent) => void | Promise<void>,\n options: StreamRequestOptions = {},\n ): Promise<StreamResult> {\n return this.stream(`/public/embed/agents/${agentId}/runs/${runId}/stream`, payload, onEvent, options);\n }\n\n private async stream(\n path: string,\n payload: unknown,\n onEvent: ((event: RuntimeEvent) => void | Promise<void>) | undefined,\n options: StreamRequestOptions,\n ): Promise<StreamResult> {\n const response = await this.http.fetchOrThrow(this.http.url(path), {\n method: \"POST\",\n headers: this.http.streamHeaders(undefined, options, true),\n body: JSON.stringify(payload),\n signal: options.signal,\n }, \"Failed to connect to the embedded-agent stream endpoint.\");\n await assertOk(response);\n let runId = response.headers.get(\"X-Run-ID\");\n await consumeRuntimeEventStream(response, async (event) => { runId ||= event.run_id; if (onEvent) await onEvent(event); }, options.signal);\n return { threadId: response.headers.get(\"X-Thread-ID\"), runId };\n }\n\n resumeAgentRun(agentId: string, runId: string, payload: ResumeRunRequest, options?: RequestOptions): Promise<RunResumeResult> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/runs/${runId}/resume`, { method: \"POST\", body: payload, options, mutation: true });\n }\n startAgentRunMcpAuth(agentId: string, runId: string, serverId: string, payload: McpAuthStartRequest, options?: RequestOptions): Promise<McpAuthStartResult> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/runs/${runId}/mcp/servers/${serverId}/auth/start`, { method: \"POST\", body: payload, options, mutation: true });\n }\n getRuntimeBootstrap(agentId: string): Promise<EmbedRuntimeBootstrap> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/runtime/bootstrap`);\n }\n listAgentThreads(agentId: string, options: ThreadListOptions): Promise<ThreadsResponse> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/threads`, { query: {\n external_user_id: options.externalUserId,\n external_session_id: options.externalSessionId,\n skip: options.skip ?? 0,\n limit: options.limit ?? 20,\n } });\n }\n listAgentThreadsMulti(options: MultiAgentThreadListRequest): Promise<ThreadsResponse> {\n return this.http.requestJson(\"/public/embed/threads/query\", { method: \"POST\", body: options });\n }\n async subscribeAgentThreadEvents(\n agentId: string,\n options: ThreadSummaryEventOptions,\n onEvent: (event: ThreadSummaryEvent) => void | Promise<void>,\n ): Promise<void> {\n const response = await this.http.fetchOrThrow(this.http.url(`/public/embed/agents/${agentId}/threads/events`, {\n external_user_id: options.externalUserId, external_session_id: options.externalSessionId, cursor: options.cursor,\n }), { method: \"GET\", headers: this.http.streamHeaders(), signal: options.signal }, \"Failed to connect to the embedded-agent thread event endpoint.\");\n await assertOk(response);\n await consumeThreadSummaryEventStream(response, onEvent, options.signal);\n }\n async subscribeAgentThreadEventsMulti(\n options: MultiAgentThreadSummaryEventOptions,\n onEvent: (event: ThreadSummaryEvent) => void | Promise<void>,\n ): Promise<void> {\n const response = await this.http.fetchOrThrow(this.http.url(\"/public/embed/threads/events\", {\n agent_ids: options.agentIds, external_user_id: options.externalUserId, external_session_id: options.externalSessionId, cursor: options.cursor,\n }), { method: \"GET\", headers: this.http.streamHeaders(), signal: options.signal }, \"Failed to connect to the embedded-agent thread event endpoint.\");\n await assertOk(response);\n await consumeThreadSummaryEventStream(response, onEvent, options.signal);\n }\n getAgentThread(agentId: string, threadId: string, options: ThreadDetailOptions): Promise<ThreadDetail> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/threads/${threadId}`, { query: {\n external_user_id: options.externalUserId,\n external_session_id: options.externalSessionId,\n before_turn_index: options.beforeTurnIndex,\n limit: options.limit,\n include_run_events: options.includeRunEvents,\n include_subthreads: options.includeSubthreads,\n subthread_depth: options.subthreadDepth,\n subthread_turn_limit: options.subthreadTurnLimit,\n subthread_child_limit: options.subthreadChildLimit,\n } });\n }\n deleteAgentThread(agentId: string, threadId: string, options: ThreadDeleteOptions): Promise<ThreadDeleteResult> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/threads/${threadId}`, { method: \"DELETE\", query: {\n external_user_id: options.externalUserId, external_session_id: options.externalSessionId,\n }, mutation: true });\n }\n getAgentRunContext(agentId: string, runId: string, options: RunContextOptions): Promise<RunContext> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/runs/${runId}/context`, { query: {\n external_user_id: options.externalUserId, external_session_id: options.externalSessionId,\n } });\n }\n cancelAgentRun(agentId: string, runId: string, options: EmbedRunCancelOptions): Promise<RunCancelResult> {\n return this.http.requestJson(`/public/embed/agents/${agentId}/runs/${runId}/cancel`, { method: \"POST\", query: {\n external_user_id: options.externalUserId, external_session_id: options.externalSessionId,\n }, body: {}, mutation: true });\n }\n async uploadAgentAttachments(agentId: string, options: ServerEmbedAttachmentUploadOptions): Promise<AttachmentUploadResult> {\n const form = new FormData();\n form.set(\"external_user_id\", options.externalUserId);\n if (options.externalSessionId) form.set(\"external_session_id\", options.externalSessionId);\n if (options.threadId) form.set(\"thread_id\", options.threadId);\n for (const file of options.files) form.append(\"files\", file, file.name);\n const response = await this.http.fetchOrThrow(this.http.url(`/public/embed/agents/${agentId}/attachments/upload`), {\n method: \"POST\",\n headers: this.http.multipartHeaders(undefined, { idempotencyKey: options.idempotencyKey }, true),\n body: form,\n }, \"Failed to connect to the embedded-agent attachment endpoint.\");\n await assertOk(response);\n return await response.json() as AttachmentUploadResult;\n }\n}\n","import type { Agents24HttpClient } from \"./http.js\";\nimport type { ControlPlaneRunEventsResponse, RunContext, RunStatus, RunTrace } from \"./types.js\";\n\nexport class RunsNamespace {\n constructor(private readonly http: Agents24HttpClient) {}\n get(runId: string, options: { includeTree?: boolean } = {}): Promise<RunStatus> {\n return this.http.requestJson(`/agents/runs/${runId}`, { query: { include_tree: options.includeTree } });\n }\n getTree(runId: string): Promise<Record<string, unknown>> { return this.http.requestJson(`/agents/runs/${runId}/tree`); }\n getEvents(runId: string, options: { afterSequence?: number; limit?: number } = {}): Promise<ControlPlaneRunEventsResponse> {\n return this.http.requestJson(`/agents/runs/${runId}/events`, { query: { after_sequence: options.afterSequence, limit: options.limit } });\n }\n getContext(runId: string): Promise<RunContext> { return this.http.requestJson(`/agents/runs/${runId}/context`); }\n async getTrace(runId: string): Promise<RunTrace> {\n const run = await this.get(runId);\n const tree = await this.getTree(runId);\n const events = await this.getEvents(runId);\n const context = await this.getContext(runId);\n return { run, tree, events, context };\n }\n}\n","import { AgentsNamespace } from \"./agents.js\";\nimport { AgentDefinitionBuilder, GraphBuilder } from \"./builders.js\";\nimport { ClientDeploymentsNamespace, ClientSessionsNamespace } from \"./client-runtime-admin.js\";\nimport { EmbedNamespace } from \"./embed.js\";\nimport { Agents24HttpClient } from \"./http.js\";\nimport { RunsNamespace } from \"./runs.js\";\nimport type { AgentDefinitionOptions, Agents24NodeOptions } from \"./types.js\";\n\nexport class Agents24 {\n readonly agents: AgentsNamespace;\n readonly embed: EmbedNamespace;\n readonly runs: RunsNamespace;\n readonly clientDeployments: ClientDeploymentsNamespace;\n readonly clientSessions: ClientSessionsNamespace;\n\n constructor(options: Agents24NodeOptions) {\n const http = new Agents24HttpClient(options);\n this.agents = new AgentsNamespace(http);\n this.embed = new EmbedNamespace(http);\n this.runs = new RunsNamespace(http);\n this.clientDeployments = new ClientDeploymentsNamespace(http);\n this.clientSessions = new ClientSessionsNamespace(http);\n }\n\n agent(options: AgentDefinitionOptions): AgentDefinitionBuilder {\n return new AgentDefinitionBuilder(this.agents, options);\n }\n\n graph(): GraphBuilder { return new GraphBuilder(); }\n}\n","// @generated by @agents24/sdk-contract; DO NOT EDIT.\n// contract-sha256: de2b507f5d56de2bf7c4d6739c03617c4b4feef6ae827aaaac5f1d6150ec678e\nexport const SDK_OPERATION_IDS = [\n \"agents.cancel_run\",\n \"agents.catalog\",\n \"agents.create\",\n \"agents.delete\",\n \"agents.get\",\n \"agents.list\",\n \"agents.publish\",\n \"agents.resume_run\",\n \"agents.schema\",\n \"agents.start_run\",\n \"agents.stream\",\n \"agents.update\",\n \"agents.update_graph\",\n \"agents.upload_attachments\",\n \"agents.validate\",\n \"client.attachments.upload\",\n \"client.bootstrap\",\n \"client.chat.stream\",\n \"client.deployments.create\",\n \"client.deployments.get\",\n \"client.deployments.promote\",\n \"client.deployments.revoke\",\n \"client.deployments.update\",\n \"client.hitl.resume\",\n \"client.jwks\",\n \"client.mcp.redeem\",\n \"client.mcp.start\",\n \"client.runs.attach\",\n \"client.runs.cancel\",\n \"client.sessions.anonymous\",\n \"client.sessions.backendExchange\",\n \"client.sessions.refresh\",\n \"client.sessions.revoke\",\n \"client.threads.delete\",\n \"client.threads.events\",\n \"client.threads.get\",\n \"client.threads.list\",\n \"embed.attach_agent_run\",\n \"embed.cancel_agent_run\",\n \"embed.delete_agent_thread\",\n \"embed.get_agent_run_context\",\n \"embed.get_agent_thread\",\n \"embed.get_runtime_bootstrap\",\n \"embed.list_agent_threads\",\n \"embed.list_agent_threads_multi\",\n \"embed.resume_agent_run\",\n \"embed.start_agent_run_mcp_auth\",\n \"embed.stream_agent\",\n \"embed.stream_agent_thread_events\",\n \"embed.stream_agent_thread_events_multi\",\n \"embed.upload_agent_attachments\",\n \"runs.get\",\n \"runs.get_context\",\n \"runs.get_events\",\n \"runs.get_tree\"\n] as const;\n\nexport type SDKOperationId = (typeof SDK_OPERATION_IDS)[number];\n"]}
|
package/dist/server.cjs
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var buffer = require('buffer');
|
|
4
|
+
var crypto = require('crypto');
|
|
5
|
+
var http = require('http');
|
|
6
|
+
|
|
7
|
+
// src/server.ts
|
|
8
|
+
|
|
9
|
+
// src/artifacts-runtime.mjs
|
|
10
|
+
function entries(input) {
|
|
11
|
+
if (Array.isArray(input)) return input.map((item) => [null, item]);
|
|
12
|
+
return input && typeof input === "object" ? Object.entries(input) : [];
|
|
13
|
+
}
|
|
14
|
+
function normalizedExports(definition) {
|
|
15
|
+
const exports = [];
|
|
16
|
+
const namesByObject = /* @__PURE__ */ new Map();
|
|
17
|
+
for (const source of [definition.tools, definition.agentNodes, definition.ragOperators]) {
|
|
18
|
+
for (const [mappedName, raw] of entries(source)) {
|
|
19
|
+
if (!raw || typeof raw !== "object") throw new TypeError("Artifact exports must use tool, agentNode, or ragOperator");
|
|
20
|
+
const name = raw.__agents24ExplicitName ? raw.name.trim() : String(mappedName || raw.name || "").trim();
|
|
21
|
+
if (!name) throw new TypeError("Artifact exports require a name");
|
|
22
|
+
exports.push({ ...raw, name, handler_ref: raw.handler_ref || name });
|
|
23
|
+
namesByObject.set(raw, [...namesByObject.get(raw) || [], name]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const names = exports.map((item) => item.name);
|
|
27
|
+
const duplicate = names.find((name, index) => names.indexOf(name) !== index);
|
|
28
|
+
if (duplicate) throw new TypeError(`Duplicate artifact export name '${duplicate}'`);
|
|
29
|
+
return { exports, namesByObject };
|
|
30
|
+
}
|
|
31
|
+
function normalizedToolsets(input, exports, namesByObject) {
|
|
32
|
+
if (input == null) return [];
|
|
33
|
+
if (Array.isArray(input) || typeof input !== "object") {
|
|
34
|
+
throw new TypeError("TypeScript artifact toolsets must be an object keyed by stable source key");
|
|
35
|
+
}
|
|
36
|
+
const tools = new Set(exports.filter((item) => item.kind === "tool").map((item) => item.name));
|
|
37
|
+
const seenNames = /* @__PURE__ */ new Set();
|
|
38
|
+
return Object.entries(input).map(([key, value]) => {
|
|
39
|
+
if (!key.trim()) throw new TypeError("Artifact toolset keys cannot be empty");
|
|
40
|
+
if (!value?.__agents24Toolset) throw new TypeError(`Toolset '${key}' must use toolset()`);
|
|
41
|
+
if (!value.name || !value.description || !value.tools.length) {
|
|
42
|
+
throw new TypeError(`Toolset '${key}' requires a name, description, and tool`);
|
|
43
|
+
}
|
|
44
|
+
const folded = value.name.toLocaleLowerCase();
|
|
45
|
+
if (seenNames.has(folded)) throw new TypeError(`Duplicate artifact toolset name '${value.name}'`);
|
|
46
|
+
seenNames.add(folded);
|
|
47
|
+
const members = value.tools.map((reference) => {
|
|
48
|
+
if (typeof reference === "string") return reference.trim();
|
|
49
|
+
const aliases = namesByObject.get(reference) || [];
|
|
50
|
+
if (aliases.length !== 1) throw new TypeError(`Toolset '${key}' contains an unresolved or ambiguous tool reference`);
|
|
51
|
+
return aliases[0];
|
|
52
|
+
});
|
|
53
|
+
if (new Set(members).size !== members.length) throw new TypeError(`Toolset '${key}' contains duplicate tools`);
|
|
54
|
+
for (const member of members) {
|
|
55
|
+
if (!tools.has(member)) throw new TypeError(`Toolset '${key}' references missing or non-tool export '${member}'`);
|
|
56
|
+
}
|
|
57
|
+
return { key, name: value.name, description: value.description, tools: members };
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function defineArtifact(definition = {}) {
|
|
61
|
+
const normalized = normalizedExports(definition);
|
|
62
|
+
return {
|
|
63
|
+
__agents24Artifact: true,
|
|
64
|
+
exports: normalized.exports,
|
|
65
|
+
toolsets: normalizedToolsets(definition.toolsets, normalized.exports, normalized.namesByObject),
|
|
66
|
+
__agents24ToolsetsDeclared: definition.toolsets != null
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function describeArtifact(value) {
|
|
70
|
+
const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});
|
|
71
|
+
return artifact.exports.map(({ handler: _handler, ...item }) => item);
|
|
72
|
+
}
|
|
73
|
+
function describeArtifactContract(value) {
|
|
74
|
+
const artifact = value && value.__agents24Artifact ? value : defineArtifact(value || {});
|
|
75
|
+
return { exports: describeArtifact(artifact), toolsets: artifact.toolsets.map((item) => ({ ...item })) };
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// src/artifacts.ts
|
|
79
|
+
var defineArtifact2 = defineArtifact;
|
|
80
|
+
var describeArtifactContract2 = describeArtifactContract;
|
|
81
|
+
|
|
82
|
+
// src/server.ts
|
|
83
|
+
var DEFAULT_MANIFEST_PATH = "/.well-known/agents24/artifact";
|
|
84
|
+
var DEFAULT_HEALTH_PATH = "/.well-known/agents24/artifact/health";
|
|
85
|
+
var DEFAULT_INVOKE_PATH = "/agents24/artifact/invoke";
|
|
86
|
+
function sorted(value) {
|
|
87
|
+
if (Array.isArray(value)) return value.map(sorted);
|
|
88
|
+
if (value && typeof value === "object") {
|
|
89
|
+
return Object.keys(value).sort().reduce((result, key) => {
|
|
90
|
+
result[key] = sorted(value[key]);
|
|
91
|
+
return result;
|
|
92
|
+
}, {});
|
|
93
|
+
}
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
function artifactFromExports(exportsValue, toolsetsValue) {
|
|
97
|
+
if (exportsValue && typeof exportsValue === "object" && exportsValue.__agents24Artifact) {
|
|
98
|
+
if (toolsetsValue != null) throw new TypeError("Pass toolsets through defineArtifact or the toolsets option, not both");
|
|
99
|
+
return exportsValue;
|
|
100
|
+
}
|
|
101
|
+
if (Array.isArray(exportsValue)) {
|
|
102
|
+
return defineArtifact2({
|
|
103
|
+
tools: Object.fromEntries(exportsValue.map((item, index) => [String(item.name || index), item])),
|
|
104
|
+
toolsets: toolsetsValue
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
if (exportsValue && typeof exportsValue === "object") {
|
|
108
|
+
const record = exportsValue;
|
|
109
|
+
if ("tools" in record || "agentNodes" in record || "ragOperators" in record) {
|
|
110
|
+
return defineArtifact2({ ...record, toolsets: toolsetsValue ?? record.toolsets });
|
|
111
|
+
}
|
|
112
|
+
return defineArtifact2({ tools: record, toolsets: toolsetsValue });
|
|
113
|
+
}
|
|
114
|
+
return defineArtifact2({ toolsets: toolsetsValue });
|
|
115
|
+
}
|
|
116
|
+
function contractExport(item) {
|
|
117
|
+
return {
|
|
118
|
+
export_name: item.export_name || item.name,
|
|
119
|
+
export_kind: item.export_kind || item.kind,
|
|
120
|
+
description: item.description || "",
|
|
121
|
+
input_schema: item.input_schema || {},
|
|
122
|
+
output_schema: item.output_schema || {},
|
|
123
|
+
config_schema: item.config_schema || {},
|
|
124
|
+
ui_schema: item.ui_schema || {},
|
|
125
|
+
side_effects: item.side_effects || [],
|
|
126
|
+
execution_mode: item.execution_mode || "interactive",
|
|
127
|
+
handler_ref: item.handler_ref || item.name,
|
|
128
|
+
metadata: item.metadata || {}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function manifest(artifact) {
|
|
132
|
+
const described = describeArtifactContract2(artifact);
|
|
133
|
+
const contract = {
|
|
134
|
+
schema_version: "agents24.artifact.v1",
|
|
135
|
+
exports: described.exports.map((item) => contractExport(item)),
|
|
136
|
+
...artifact.__agents24ToolsetsDeclared ? { toolsets: described.toolsets } : {}
|
|
137
|
+
};
|
|
138
|
+
return {
|
|
139
|
+
...contract,
|
|
140
|
+
manifest_hash: crypto.createHash("sha256").update(JSON.stringify(sorted(contract))).digest("hex")
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function json(payload, init = {}) {
|
|
144
|
+
return new Response(JSON.stringify(payload), {
|
|
145
|
+
...init,
|
|
146
|
+
headers: { "content-type": "application/json", ...init.headers || {} }
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function signArtifactPayload(input) {
|
|
150
|
+
const timestamp = String(input.timestamp || Date.now());
|
|
151
|
+
const signature = crypto.createHmac("sha256", input.signingSecret).update(`${timestamp}.${input.body}`).digest("hex");
|
|
152
|
+
return { "x-agents24-timestamp": timestamp, "x-agents24-signature": `sha256=${signature}` };
|
|
153
|
+
}
|
|
154
|
+
function verifyArtifactSignature(input) {
|
|
155
|
+
const timestamp = String(input.timestamp || "").trim();
|
|
156
|
+
const signature = String(input.signature || "").trim();
|
|
157
|
+
const parsed = Number(timestamp);
|
|
158
|
+
if (!timestamp || !signature || !Number.isFinite(parsed)) return false;
|
|
159
|
+
if (Math.abs(Date.now() - parsed) > (input.toleranceMs ?? 5 * 60 * 1e3)) return false;
|
|
160
|
+
const expected = signArtifactPayload({ body: input.body, signingSecret: input.signingSecret, timestamp })["x-agents24-signature"];
|
|
161
|
+
const actualBytes = buffer.Buffer.from(signature);
|
|
162
|
+
const expectedBytes = buffer.Buffer.from(expected);
|
|
163
|
+
return actualBytes.length === expectedBytes.length && crypto.timingSafeEqual(actualBytes, expectedBytes);
|
|
164
|
+
}
|
|
165
|
+
async function requestBody(req) {
|
|
166
|
+
const chunks = [];
|
|
167
|
+
for await (const chunk of req) chunks.push(buffer.Buffer.isBuffer(chunk) ? chunk : buffer.Buffer.from(chunk));
|
|
168
|
+
return buffer.Buffer.concat(chunks);
|
|
169
|
+
}
|
|
170
|
+
async function writeResponse(res, response) {
|
|
171
|
+
res.statusCode = response.status;
|
|
172
|
+
response.headers.forEach((value, key) => res.setHeader(key, value));
|
|
173
|
+
res.end(buffer.Buffer.from(await response.arrayBuffer()));
|
|
174
|
+
}
|
|
175
|
+
function createArtifactServer(options) {
|
|
176
|
+
if (!options.signingSecret) throw new Error("createArtifactServer requires signingSecret");
|
|
177
|
+
const manifestPath = options.manifestPath || DEFAULT_MANIFEST_PATH;
|
|
178
|
+
const healthPath = DEFAULT_HEALTH_PATH;
|
|
179
|
+
const invokePath = options.invokePath || DEFAULT_INVOKE_PATH;
|
|
180
|
+
let artifact = artifactFromExports(options.exports, options.toolsets);
|
|
181
|
+
function setExports(next) {
|
|
182
|
+
artifact = artifactFromExports(next);
|
|
183
|
+
}
|
|
184
|
+
async function handleRequest(request) {
|
|
185
|
+
const url = new URL(request.url);
|
|
186
|
+
if (request.method === "GET" && url.pathname === healthPath) return json({ status: "ok", service: "agents24-artifact" });
|
|
187
|
+
if (request.method === "GET" && url.pathname === manifestPath) return json(manifest(artifact));
|
|
188
|
+
if (request.method !== "POST" || url.pathname !== invokePath) return json({ error: "Not found", code: "NOT_FOUND" }, { status: 404 });
|
|
189
|
+
const body = await request.text();
|
|
190
|
+
if (!verifyArtifactSignature({
|
|
191
|
+
body,
|
|
192
|
+
signingSecret: options.signingSecret,
|
|
193
|
+
timestamp: request.headers.get("x-agents24-timestamp"),
|
|
194
|
+
signature: request.headers.get("x-agents24-signature")
|
|
195
|
+
})) {
|
|
196
|
+
return json({ status: "failed", error: { message: "Invalid artifact invocation signature", code: "INVALID_SIGNATURE" } }, { status: 401 });
|
|
197
|
+
}
|
|
198
|
+
let payload;
|
|
199
|
+
try {
|
|
200
|
+
payload = JSON.parse(body);
|
|
201
|
+
} catch {
|
|
202
|
+
return json({ status: "failed", error: { message: "Invalid JSON body", code: "INVALID_JSON" } }, { status: 400 });
|
|
203
|
+
}
|
|
204
|
+
const exportName = String(payload.export_name || "default");
|
|
205
|
+
const selected = artifact.exports.find((item) => item.name === exportName);
|
|
206
|
+
if (!selected) return json({ status: "failed", error: { message: `Artifact export '${exportName}' was not found`, code: "EXPORT_NOT_FOUND" } });
|
|
207
|
+
if (selected.kind !== "tool") return json({ status: "failed", error: { message: "Self-hosted artifact server can invoke tool exports only", code: "UNSUPPORTED_EXPORT_KIND" } });
|
|
208
|
+
if (typeof selected.handler !== "function") return json({ status: "failed", error: { message: `Artifact export '${exportName}' has no handler`, code: "HANDLER_NOT_FOUND" } });
|
|
209
|
+
const started = Date.now();
|
|
210
|
+
try {
|
|
211
|
+
const result = await selected.handler(payload.inputs, payload.config || {}, payload.context || {});
|
|
212
|
+
return json({
|
|
213
|
+
status: "completed",
|
|
214
|
+
result,
|
|
215
|
+
error: null,
|
|
216
|
+
duration_ms: Date.now() - started,
|
|
217
|
+
worker_id: "agents24-node-server",
|
|
218
|
+
dispatch_request_id: payload.run_id || null,
|
|
219
|
+
events: [],
|
|
220
|
+
runtime_metadata: { provider: "agents24_node_server" }
|
|
221
|
+
});
|
|
222
|
+
} catch (error) {
|
|
223
|
+
return json({
|
|
224
|
+
status: "failed",
|
|
225
|
+
error: { message: error instanceof Error ? error.message : String(error), code: "HANDLER_FAILED" },
|
|
226
|
+
duration_ms: Date.now() - started,
|
|
227
|
+
worker_id: "agents24-node-server",
|
|
228
|
+
dispatch_request_id: payload.run_id || null,
|
|
229
|
+
events: [],
|
|
230
|
+
runtime_metadata: { provider: "agents24_node_server" }
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async function nodeHandler(req, res) {
|
|
235
|
+
const body = await requestBody(req);
|
|
236
|
+
const request = new Request(`http://${req.headers.host || "127.0.0.1"}${req.url || "/"}`, {
|
|
237
|
+
method: req.method,
|
|
238
|
+
headers: req.headers,
|
|
239
|
+
body: body.length ? body.toString("utf8") : void 0
|
|
240
|
+
});
|
|
241
|
+
await writeResponse(res, await handleRequest(request));
|
|
242
|
+
}
|
|
243
|
+
function listen(port = 0, hostname = "127.0.0.1") {
|
|
244
|
+
const server = http.createServer((req, res) => {
|
|
245
|
+
void nodeHandler(req, res).catch((error) => {
|
|
246
|
+
res.statusCode = 500;
|
|
247
|
+
res.setHeader("content-type", "application/json");
|
|
248
|
+
res.end(JSON.stringify({ status: "failed", error: { message: String(error), code: "SERVER_ERROR" } }));
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
return new Promise((resolve, reject) => {
|
|
252
|
+
server.once("error", reject);
|
|
253
|
+
server.listen(port, hostname, () => {
|
|
254
|
+
server.off("error", reject);
|
|
255
|
+
resolve(server);
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
manifestPath,
|
|
261
|
+
healthPath,
|
|
262
|
+
invokePath,
|
|
263
|
+
setExports,
|
|
264
|
+
manifest: () => manifest(artifact),
|
|
265
|
+
handleRequest,
|
|
266
|
+
nodeHandler,
|
|
267
|
+
listen
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
exports.createArtifactServer = createArtifactServer;
|
|
272
|
+
exports.signArtifactPayload = signArtifactPayload;
|
|
273
|
+
exports.verifyArtifactSignature = verifyArtifactSignature;
|
|
274
|
+
//# sourceMappingURL=server.cjs.map
|
|
275
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse, Server } from 'node:http';
|
|
2
|
+
|
|
3
|
+
type ArtifactInvokePayload = {
|
|
4
|
+
run_id?: string;
|
|
5
|
+
artifact_id?: string | null;
|
|
6
|
+
revision_id?: string;
|
|
7
|
+
export_name?: string;
|
|
8
|
+
export_kind?: string;
|
|
9
|
+
inputs?: unknown;
|
|
10
|
+
config?: Record<string, unknown>;
|
|
11
|
+
context?: Record<string, unknown>;
|
|
12
|
+
};
|
|
13
|
+
type ArtifactServerOptions = {
|
|
14
|
+
exports: unknown;
|
|
15
|
+
toolsets?: unknown;
|
|
16
|
+
signingSecret: string;
|
|
17
|
+
manifestPath?: string;
|
|
18
|
+
invokePath?: string;
|
|
19
|
+
};
|
|
20
|
+
type ArtifactSignatureHeaders = {
|
|
21
|
+
"x-agents24-timestamp": string;
|
|
22
|
+
"x-agents24-signature": string;
|
|
23
|
+
};
|
|
24
|
+
declare function signArtifactPayload(input: {
|
|
25
|
+
body: string;
|
|
26
|
+
signingSecret: string;
|
|
27
|
+
timestamp?: string | number;
|
|
28
|
+
}): ArtifactSignatureHeaders;
|
|
29
|
+
declare function verifyArtifactSignature(input: {
|
|
30
|
+
body: string;
|
|
31
|
+
signingSecret: string;
|
|
32
|
+
timestamp: string | null | undefined;
|
|
33
|
+
signature: string | null | undefined;
|
|
34
|
+
toleranceMs?: number;
|
|
35
|
+
}): boolean;
|
|
36
|
+
declare function createArtifactServer(options: ArtifactServerOptions): {
|
|
37
|
+
manifestPath: string;
|
|
38
|
+
healthPath: string;
|
|
39
|
+
invokePath: string;
|
|
40
|
+
setExports: (next: unknown) => void;
|
|
41
|
+
manifest: () => Record<string, unknown>;
|
|
42
|
+
handleRequest: (request: Request) => Promise<Response>;
|
|
43
|
+
nodeHandler: (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
44
|
+
listen: (port?: number, hostname?: string) => Promise<Server>;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { type ArtifactInvokePayload, type ArtifactServerOptions, type ArtifactSignatureHeaders, createArtifactServer, signArtifactPayload, verifyArtifactSignature };
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse, Server } from 'node:http';
|
|
2
|
+
|
|
3
|
+
type ArtifactInvokePayload = {
|
|
4
|
+
run_id?: string;
|
|
5
|
+
artifact_id?: string | null;
|
|
6
|
+
revision_id?: string;
|
|
7
|
+
export_name?: string;
|
|
8
|
+
export_kind?: string;
|
|
9
|
+
inputs?: unknown;
|
|
10
|
+
config?: Record<string, unknown>;
|
|
11
|
+
context?: Record<string, unknown>;
|
|
12
|
+
};
|
|
13
|
+
type ArtifactServerOptions = {
|
|
14
|
+
exports: unknown;
|
|
15
|
+
toolsets?: unknown;
|
|
16
|
+
signingSecret: string;
|
|
17
|
+
manifestPath?: string;
|
|
18
|
+
invokePath?: string;
|
|
19
|
+
};
|
|
20
|
+
type ArtifactSignatureHeaders = {
|
|
21
|
+
"x-agents24-timestamp": string;
|
|
22
|
+
"x-agents24-signature": string;
|
|
23
|
+
};
|
|
24
|
+
declare function signArtifactPayload(input: {
|
|
25
|
+
body: string;
|
|
26
|
+
signingSecret: string;
|
|
27
|
+
timestamp?: string | number;
|
|
28
|
+
}): ArtifactSignatureHeaders;
|
|
29
|
+
declare function verifyArtifactSignature(input: {
|
|
30
|
+
body: string;
|
|
31
|
+
signingSecret: string;
|
|
32
|
+
timestamp: string | null | undefined;
|
|
33
|
+
signature: string | null | undefined;
|
|
34
|
+
toleranceMs?: number;
|
|
35
|
+
}): boolean;
|
|
36
|
+
declare function createArtifactServer(options: ArtifactServerOptions): {
|
|
37
|
+
manifestPath: string;
|
|
38
|
+
healthPath: string;
|
|
39
|
+
invokePath: string;
|
|
40
|
+
setExports: (next: unknown) => void;
|
|
41
|
+
manifest: () => Record<string, unknown>;
|
|
42
|
+
handleRequest: (request: Request) => Promise<Response>;
|
|
43
|
+
nodeHandler: (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
44
|
+
listen: (port?: number, hostname?: string) => Promise<Server>;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { type ArtifactInvokePayload, type ArtifactServerOptions, type ArtifactSignatureHeaders, createArtifactServer, signArtifactPayload, verifyArtifactSignature };
|