@driftgate/sdk 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { setTimeout as sleep } from \"node:timers/promises\";\nimport { z } from \"zod\";\nimport {\n CanonicalPolicyRefSchema,\n CanonicalRiskMetaSchema,\n CanonicalRouteRefSchema,\n DataBoundaryDecisionSchema,\n EdgeInterceptorRegistrationSchema,\n EdgeInterceptorStatusSchema,\n FirewallEventsResponseSchema,\n FirewallInspectRequestSchema,\n FirewallInspectResponseSchema,\n FirewallInspectResultSchema,\n RunStateSchema,\n V4ExecutionRequestSchema,\n V4SessionResourceSchema,\n V4SessionStartRequestSchema,\n WorkflowVersionSchema,\n type CanonicalPolicyRef,\n type CanonicalRiskMeta,\n type CanonicalRouteRef,\n type EdgeInterceptorRegisterRequest,\n type EdgeInterceptorRegistration,\n type EdgeInterceptorStatus,\n type FirewallEvent,\n type FirewallInspectRequest,\n type FirewallInspectResponse,\n type PolicyDecision,\n type WorkflowVersion\n} from \"@driftgate/contracts\";\n\nconst HeadlessErrorEnvelopeSchema = z.object({\n code: z.string(),\n message: z.string(),\n correlation_id: z.string().optional(),\n details: z.unknown().optional()\n});\n\nconst LegacyErrorEnvelopeSchema = z.object({\n error: z.string(),\n message: z.string(),\n issues: z.unknown().optional()\n});\n\nconst CanonicalTimingMsSchema = z.object({\n total: z.number(),\n policy: z.number().optional(),\n route: z.number().optional(),\n tool: z.number().optional()\n});\n\nconst CanonicalMetaSchema = z.object({\n requestId: z.string(),\n sessionId: z.string().optional(),\n executionId: z.string().optional(),\n lineageId: z.string().optional(),\n policy: CanonicalPolicyRefSchema.optional(),\n route: CanonicalRouteRefSchema.optional(),\n risk: CanonicalRiskMetaSchema.optional(),\n timingMs: CanonicalTimingMsSchema\n});\n\nconst CanonicalErrorSchema = z.object({\n code: z.string(),\n message: z.string(),\n status: z.number(),\n retryable: z.boolean(),\n details: z.record(z.unknown()).optional()\n});\n\nconst REQUIRED_V4_ERROR_CODES = [\n \"AUTH_INVALID\",\n \"POLICY_DENIED\",\n \"RISK_EXCEEDED\",\n \"ROUTE_UNAVAILABLE\",\n \"TOOL_BLOCKED\",\n \"RATE_LIMITED\",\n \"TIMEOUT\",\n \"INTERNAL\"\n] as const;\n\nconst RunRecordSchema = z.object({\n id: z.string(),\n workspaceId: z.string(),\n workflowVersionId: z.string(),\n state: RunStateSchema,\n correlationId: z.string(),\n idempotencyKey: z.string().nullable().optional(),\n triggerSource: z.enum([\"ui\", \"api\", \"sdk\", \"cli\", \"hosted\", \"webhook\"]),\n requestedBy: z.string(),\n requestedAt: z.string(),\n startedAt: z.string().nullable().optional(),\n completedAt: z.string().nullable().optional(),\n slaPolicyId: z.string().nullable().optional(),\n slaDueAt: z.string().nullable().optional(),\n slaViolatedAt: z.string().nullable().optional()\n});\n\nconst ApprovalSchema = z.object({\n id: z.string(),\n runId: z.string(),\n requiredRole: z.string(),\n status: z.enum([\"pending\", \"approved\", \"denied\"]),\n createdAt: z.string(),\n decidedAt: z.string().nullable().optional(),\n decidedBy: z.string().nullable().optional()\n});\n\nconst RunResponseSchema = z.object({\n run: RunRecordSchema,\n approval: ApprovalSchema.nullable().optional(),\n blocked: z.boolean().optional(),\n policyDecisions: z\n .array(\n z.object({\n mode: z.enum([\"monitor\", \"enforce\"]),\n decision: z.enum([\"allow\", \"deny\"]),\n policyId: z.string(),\n ruleId: z.string(),\n reasonCode: z.string(),\n reasonText: z.string(),\n correlationId: z.string(),\n trace: z.record(z.unknown())\n })\n )\n .optional(),\n entitlementDecision: z\n .object({\n id: z.string(),\n reasonCode: z.string(),\n reasonText: z.string(),\n entitled: z.boolean()\n })\n .optional(),\n usageEntry: z\n .object({\n id: z.string(),\n quantity: z.number()\n })\n .optional(),\n boundaryDecision: DataBoundaryDecisionSchema.nullable().optional(),\n firewallDecision: FirewallInspectResultSchema.nullable().optional()\n});\n\nconst V4SessionStartDataSchema = z.object({\n session: V4SessionResourceSchema\n});\n\nconst CanonicalEnvelopeSchema = <T extends z.ZodTypeAny>(dataSchema: T) =>\n z.object({\n ok: z.boolean(),\n data: dataSchema.nullable(),\n meta: CanonicalMetaSchema,\n error: CanonicalErrorSchema.nullable()\n });\n\nconst V4SessionStartResponseSchema = CanonicalEnvelopeSchema(V4SessionStartDataSchema);\nconst V4ExecutionResponseSchema = CanonicalEnvelopeSchema(RunResponseSchema);\nconst V4EphemeralExecuteRequestBodySchema = V4SessionStartRequestSchema.extend({\n input: z.record(z.unknown())\n});\nconst V4EphemeralExecuteDataSchema = z.object({\n session: V4SessionResourceSchema,\n execution: RunResponseSchema\n});\nconst V4EphemeralExecutionResponseSchema = CanonicalEnvelopeSchema(V4EphemeralExecuteDataSchema);\nconst CanonicalErrorEnvelopeSchema = z.object({\n ok: z.literal(false),\n data: z.null(),\n meta: CanonicalMetaSchema,\n error: CanonicalErrorSchema\n});\n\nconst RunEventsResponseSchema = z.object({\n events: z.array(\n z.object({\n id: z.string(),\n runId: z.string(),\n type: z.string(),\n payload: z.record(z.unknown()),\n createdAt: z.string()\n })\n )\n});\n\nconst ApprovalsListSchema = z.object({\n approvals: z.array(\n z.object({\n approval: ApprovalSchema,\n run: RunRecordSchema\n })\n )\n});\n\nconst DeployResponseSchema = z.object({\n project: z.object({\n id: z.string(),\n workspaceId: z.string(),\n name: z.string(),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedAt: z.string()\n }),\n workflow: z.object({\n id: z.string(),\n projectId: z.string(),\n workspaceId: z.string(),\n name: z.string(),\n status: z.enum([\"draft\", \"published\", \"archived\"]),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedAt: z.string()\n }),\n draft: z.object({\n workflowId: z.string(),\n workspaceId: z.string(),\n version: z.number(),\n nodes: z.array(z.unknown()),\n edges: z.array(z.unknown()),\n viewport: z.object({ x: z.number(), y: z.number(), zoom: z.number() }),\n updatedAt: z.string()\n }),\n compile: z.object({\n checksum: z.string(),\n mutationNodeIds: z.array(z.string()),\n compiledPlan: z.record(z.unknown())\n })\n});\n\nconst PublishResponseSchema = z.object({\n version: WorkflowVersionSchema\n});\n\nconst ConnectorRecordSchema = z.object({\n id: z.string(),\n workspaceId: z.string(),\n name: z.string(),\n connectorType: z.string(),\n status: z.enum([\"active\", \"disabled\"]),\n config: z.record(z.unknown()),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedAt: z.string()\n});\n\nconst WorkspaceSecretRecordSchema = z.object({\n id: z.string(),\n workspaceId: z.string(),\n connectorId: z.string().nullable(),\n name: z.string(),\n keyVersion: z.string(),\n metadata: z.record(z.unknown()),\n createdBy: z.string(),\n createdAt: z.string(),\n rotatedAt: z.string().nullable(),\n revokedAt: z.string().nullable(),\n maskedValue: z.string()\n});\n\nconst WorkspaceWebhookRecordSchema = z.object({\n id: z.string(),\n workspaceId: z.string(),\n connectorId: z.string().nullable(),\n name: z.string(),\n path: z.string(),\n targetWorkflowId: z.string(),\n status: z.enum([\"active\", \"disabled\"]),\n eventFilter: z.record(z.unknown()),\n createdBy: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n lastReceivedAt: z.string().nullable(),\n revokedAt: z.string().nullable(),\n signingSecretConfigured: z.boolean()\n});\n\nconst ConnectorListSchema = z.object({\n connectors: z.array(ConnectorRecordSchema)\n});\n\nconst ConnectorMutationSchema = z.object({\n connector: ConnectorRecordSchema\n});\n\nconst SecretListSchema = z.object({\n secrets: z.array(WorkspaceSecretRecordSchema)\n});\n\nconst SecretMutationSchema = z.object({\n secret: WorkspaceSecretRecordSchema\n});\n\nconst WebhookListSchema = z.object({\n webhooks: z.array(WorkspaceWebhookRecordSchema)\n});\n\nconst WebhookMutationSchema = z.object({\n webhook: WorkspaceWebhookRecordSchema\n});\n\nconst EdgeInterceptorListSchema = z.object({\n registrations: z.array(EdgeInterceptorRegistrationSchema)\n});\n\nconst EdgeInterceptorMutationSchema = z.object({\n registration: EdgeInterceptorRegistrationSchema\n});\n\nconst FirewallInspectBodySchema = FirewallInspectRequestSchema.omit({\n workspaceId: true\n});\n\nexport class DriftGateError extends Error {\n constructor(\n public readonly code: string,\n message: string,\n public readonly status: number,\n public readonly correlationId?: string,\n public readonly details?: unknown\n ) {\n super(message);\n this.name = \"DriftGateError\";\n }\n}\n\nexport type DriftGateClientOptions = {\n baseUrl: string;\n sessionToken?: string;\n apiKey?: string;\n fetchImpl?: typeof fetch;\n};\n\nexport type DriftGateRunInput = {\n workspaceId: string;\n workflowVersionId: string;\n requiresApproval?: boolean;\n requiredRole?: string;\n slaPolicyId?: string;\n idempotencyKey?: string;\n correlationId?: string;\n triggerSource?: \"ui\" | \"api\" | \"sdk\" | \"cli\" | \"hosted\" | \"webhook\";\n input?: Record<string, unknown>;\n};\n\nexport type DriftGateCanonicalMeta = z.infer<typeof CanonicalMetaSchema>;\nexport type DriftGateCanonicalError = z.infer<typeof CanonicalErrorSchema>;\nexport type DriftGateCanonicalErrorCode = (typeof REQUIRED_V4_ERROR_CODES)[number];\nexport type DriftGateCanonicalResponse<T> = {\n ok: boolean;\n data: T | null;\n meta: DriftGateCanonicalMeta;\n error: DriftGateCanonicalError | null;\n raw: unknown;\n};\n\nexport type DriftGateSessionStartInput = z.input<typeof V4SessionStartRequestSchema>;\nexport type DriftGateSessionExecuteInput = z.input<typeof V4ExecutionRequestSchema>;\nexport type DriftGateEphemeralExecuteInput = z.input<typeof V4SessionStartRequestSchema> & {\n input: Record<string, unknown>;\n};\nexport type DriftGateSessionStartEnvelope = z.infer<typeof V4SessionStartResponseSchema>;\nexport type DriftGateExecutionEnvelope = z.infer<typeof V4ExecutionResponseSchema>;\nexport type DriftGateEphemeralExecutionEnvelope = z.infer<typeof V4EphemeralExecutionResponseSchema>;\n\nexport type WaitForTerminalOptions = {\n intervalMs?: number;\n timeoutMs?: number;\n};\n\nexport type DeployWorkflowInput = {\n workspaceId: string;\n workflowYaml: string;\n projectId?: string;\n projectName?: string;\n workflowId?: string;\n workflowName?: string;\n};\n\nexport type ConnectorCreateInput = {\n name: string;\n connectorType: string;\n status?: \"active\" | \"disabled\";\n config?: Record<string, unknown>;\n};\n\nexport type ConnectorUpdateInput = {\n name?: string;\n connectorType?: string;\n status?: \"active\" | \"disabled\";\n config?: Record<string, unknown>;\n};\n\nexport type SecretCreateInput = {\n connectorId?: string | null;\n name: string;\n value: string;\n keyVersion?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type SecretUpdateInput = {\n connectorId?: string | null;\n name?: string;\n value?: string;\n keyVersion?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type WebhookExecutionOptions = {\n requiresApproval?: boolean;\n requiredRole?: string;\n slaPolicyId?: string;\n};\n\nexport type WebhookCreateInput = {\n connectorId?: string | null;\n name: string;\n path: string;\n targetWorkflowId: string;\n status?: \"active\" | \"disabled\";\n eventFilter?: Record<string, unknown>;\n execution?: WebhookExecutionOptions;\n signingSecret: string;\n};\n\nexport type WebhookUpdateInput = {\n connectorId?: string | null;\n name?: string;\n path?: string;\n targetWorkflowId?: string;\n status?: \"active\" | \"disabled\";\n eventFilter?: Record<string, unknown>;\n execution?: WebhookExecutionOptions;\n signingSecret?: string;\n};\n\nexport type EdgeInterceptorRegisterInput = Omit<EdgeInterceptorRegisterRequest, \"workspaceId\">;\nexport type FirewallInspectInput = Omit<FirewallInspectRequest, \"workspaceId\">;\n\nexport type EdgeInterceptorEnforcementMode = \"monitor\" | \"enforce\";\n\nexport type EdgeInterceptorDecision = {\n allowed: boolean;\n reasonCode: string;\n reasonText: string;\n requiredCapabilities: string[];\n grantedCapabilities: string[];\n};\n\nexport type EdgeInterceptorHooks = {\n beforeRun?: (input: DriftGateRunInput, decision: EdgeInterceptorDecision) => void | Promise<void>;\n onBlocked?: (input: DriftGateRunInput, decision: EdgeInterceptorDecision) => void | Promise<void>;\n afterRun?: (\n input: DriftGateRunInput,\n decision: EdgeInterceptorDecision,\n response: z.infer<typeof RunResponseSchema>\n ) => void | Promise<void>;\n};\n\nexport type EdgeInterceptorEnableInput = {\n workspaceId: string;\n registration: EdgeInterceptorRegisterInput;\n enforcement?: EdgeInterceptorEnforcementMode;\n hooks?: EdgeInterceptorHooks;\n};\n\nexport class DriftGateSessionHandle {\n constructor(\n private readonly client: DriftGateClient,\n public readonly session: z.infer<typeof V4SessionResourceSchema>,\n public readonly startEnvelope: DriftGateCanonicalResponse<z.infer<typeof V4SessionStartDataSchema>>\n ) {}\n\n get sessionId(): string {\n return this.session.sessionId;\n }\n\n get rawEnvelope(): unknown {\n return this.startEnvelope.raw;\n }\n\n async execute(\n input: DriftGateSessionExecuteInput\n ): Promise<DriftGateCanonicalResponse<z.infer<typeof RunResponseSchema>>> {\n return this.client.executeSession(this.session.sessionId, input);\n }\n}\n\nfunction isTerminalState(state: z.infer<typeof RunStateSchema>): boolean {\n return [\"succeeded\", \"failed\", \"denied\", \"timed_out\", \"canceled\", \"aborted\"].includes(state);\n}\n\nexport class DriftGateClient {\n private readonly baseUrl: string;\n private readonly sessionToken?: string;\n private readonly apiKey?: string;\n private readonly fetchImpl: typeof fetch;\n private edgeInterceptorState: {\n workspaceId: string;\n registration: EdgeInterceptorRegistration;\n enforcement: EdgeInterceptorEnforcementMode;\n hooks?: EdgeInterceptorHooks;\n } | null = null;\n readonly session: {\n start: (input: DriftGateSessionStartInput) => Promise<DriftGateSessionHandle>;\n };\n\n readonly approvals: {\n list: (workspaceId: string, status?: \"pending\" | \"approved\" | \"denied\") => Promise<z.infer<typeof ApprovalsListSchema>[\"approvals\"]>;\n approve: (approvalId: string) => Promise<z.infer<typeof RunResponseSchema>>;\n deny: (approvalId: string) => Promise<z.infer<typeof RunResponseSchema>>;\n };\n readonly connectors: {\n list: (workspaceId: string) => Promise<z.infer<typeof ConnectorRecordSchema>[]>;\n create: (workspaceId: string, input: ConnectorCreateInput) => Promise<z.infer<typeof ConnectorRecordSchema>>;\n update: (\n workspaceId: string,\n connectorId: string,\n input: ConnectorUpdateInput\n ) => Promise<z.infer<typeof ConnectorRecordSchema>>;\n delete: (workspaceId: string, connectorId: string) => Promise<z.infer<typeof ConnectorRecordSchema>>;\n };\n readonly secrets: {\n list: (workspaceId: string) => Promise<z.infer<typeof WorkspaceSecretRecordSchema>[]>;\n create: (workspaceId: string, input: SecretCreateInput) => Promise<z.infer<typeof WorkspaceSecretRecordSchema>>;\n update: (\n workspaceId: string,\n secretId: string,\n input: SecretUpdateInput\n ) => Promise<z.infer<typeof WorkspaceSecretRecordSchema>>;\n delete: (workspaceId: string, secretId: string) => Promise<z.infer<typeof WorkspaceSecretRecordSchema>>;\n };\n readonly webhooks: {\n list: (workspaceId: string) => Promise<z.infer<typeof WorkspaceWebhookRecordSchema>[]>;\n create: (workspaceId: string, input: WebhookCreateInput) => Promise<z.infer<typeof WorkspaceWebhookRecordSchema>>;\n update: (\n workspaceId: string,\n webhookId: string,\n input: WebhookUpdateInput\n ) => Promise<z.infer<typeof WorkspaceWebhookRecordSchema>>;\n delete: (workspaceId: string, webhookId: string) => Promise<z.infer<typeof WorkspaceWebhookRecordSchema>>;\n };\n readonly edgeInterceptors: {\n list: (workspaceId: string) => Promise<EdgeInterceptorRegistration[]>;\n register: (workspaceId: string, input: EdgeInterceptorRegisterInput) => Promise<EdgeInterceptorRegistration>;\n setStatus: (\n workspaceId: string,\n registrationId: string,\n status: EdgeInterceptorStatus\n ) => Promise<EdgeInterceptorRegistration>;\n };\n readonly firewall: {\n inspect: (workspaceId: string, input: FirewallInspectInput) => Promise<FirewallInspectResponse>;\n events: (workspaceId: string) => Promise<FirewallEvent[]>;\n };\n\n constructor(options: DriftGateClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, \"\");\n this.sessionToken = options.sessionToken;\n this.apiKey = options.apiKey;\n this.fetchImpl = options.fetchImpl ?? fetch;\n this.session = {\n start: async (input) => {\n const payload = V4SessionStartRequestSchema.parse(input);\n const raw = await this.request(\"/v4/sessions.start\", {\n method: \"POST\",\n body: JSON.stringify(payload)\n });\n const parsed = V4SessionStartResponseSchema.parse(raw);\n if (!parsed.ok || !parsed.data) {\n const canonicalCode = parsed.error?.code ?? \"INTERNAL\";\n throw new DriftGateError(\n canonicalCode,\n parsed.error?.message ?? \"session.start failed\",\n parsed.error?.status ?? 500,\n parsed.meta.requestId,\n parsed.error?.details\n );\n }\n const envelope: DriftGateCanonicalResponse<z.infer<typeof V4SessionStartDataSchema>> = {\n ok: parsed.ok,\n data: parsed.data,\n meta: parsed.meta,\n error: parsed.error,\n raw\n };\n return new DriftGateSessionHandle(this, parsed.data.session, envelope);\n }\n };\n\n this.approvals = {\n list: async (workspaceId, status) => {\n const query = status ? `?status=${encodeURIComponent(status)}` : \"\";\n const response = await this.request(`/v1/headless/workspaces/${encodeURIComponent(workspaceId)}/approvals${query}`);\n return ApprovalsListSchema.parse(response).approvals;\n },\n approve: async (approvalId) => {\n const response = await this.request(`/v1/headless/approvals/${encodeURIComponent(approvalId)}/approve`, {\n method: \"POST\"\n });\n return RunResponseSchema.parse(response);\n },\n deny: async (approvalId) => {\n const response = await this.request(`/v1/headless/approvals/${encodeURIComponent(approvalId)}/deny`, {\n method: \"POST\"\n });\n return RunResponseSchema.parse(response);\n }\n };\n\n this.connectors = {\n list: async (workspaceId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/connectors`\n );\n return ConnectorListSchema.parse(response).connectors;\n },\n create: async (workspaceId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/connectors`,\n {\n method: \"POST\",\n body: JSON.stringify(input)\n }\n );\n return ConnectorMutationSchema.parse(response).connector;\n },\n update: async (workspaceId, connectorId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/connectors/${encodeURIComponent(\n connectorId\n )}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input)\n }\n );\n return ConnectorMutationSchema.parse(response).connector;\n },\n delete: async (workspaceId, connectorId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/connectors/${encodeURIComponent(\n connectorId\n )}`,\n {\n method: \"DELETE\"\n }\n );\n return ConnectorMutationSchema.parse(response).connector;\n }\n };\n\n this.secrets = {\n list: async (workspaceId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/secrets`\n );\n return SecretListSchema.parse(response).secrets;\n },\n create: async (workspaceId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/secrets`,\n {\n method: \"POST\",\n body: JSON.stringify(input)\n }\n );\n return SecretMutationSchema.parse(response).secret;\n },\n update: async (workspaceId, secretId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/secrets/${encodeURIComponent(secretId)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input)\n }\n );\n return SecretMutationSchema.parse(response).secret;\n },\n delete: async (workspaceId, secretId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/secrets/${encodeURIComponent(secretId)}`,\n {\n method: \"DELETE\"\n }\n );\n return SecretMutationSchema.parse(response).secret;\n }\n };\n\n this.webhooks = {\n list: async (workspaceId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks`\n );\n return WebhookListSchema.parse(response).webhooks;\n },\n create: async (workspaceId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks`,\n {\n method: \"POST\",\n body: JSON.stringify(input)\n }\n );\n return WebhookMutationSchema.parse(response).webhook;\n },\n update: async (workspaceId, webhookId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks/${encodeURIComponent(\n webhookId\n )}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input)\n }\n );\n return WebhookMutationSchema.parse(response).webhook;\n },\n delete: async (workspaceId, webhookId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/webhooks/${encodeURIComponent(\n webhookId\n )}`,\n {\n method: \"DELETE\"\n }\n );\n return WebhookMutationSchema.parse(response).webhook;\n }\n };\n\n this.edgeInterceptors = {\n list: async (workspaceId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/edge/interceptors`\n );\n return EdgeInterceptorListSchema.parse(response).registrations;\n },\n register: async (workspaceId, input) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/edge/interceptors`,\n {\n method: \"POST\",\n body: JSON.stringify({\n ...input,\n workspaceId\n })\n }\n );\n return EdgeInterceptorMutationSchema.parse(response).registration;\n },\n setStatus: async (workspaceId, registrationId, status) => {\n const parsedStatus = EdgeInterceptorStatusSchema.parse(status);\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/edge/interceptors/${encodeURIComponent(\n registrationId\n )}/status`,\n {\n method: \"PATCH\",\n body: JSON.stringify({ status: parsedStatus })\n }\n );\n return EdgeInterceptorMutationSchema.parse(response).registration;\n }\n };\n\n this.firewall = {\n inspect: async (workspaceId, input) => {\n const parsedInput = FirewallInspectBodySchema.parse(input);\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/firewall/inspect`,\n {\n method: \"POST\",\n body: JSON.stringify(parsedInput)\n }\n );\n return FirewallInspectResponseSchema.parse(response);\n },\n events: async (workspaceId) => {\n const response = await this.request(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/firewall/events`\n );\n return FirewallEventsResponseSchema.parse(response).events;\n }\n };\n }\n\n async executeSession(\n sessionId: string,\n input: DriftGateSessionExecuteInput\n ): Promise<DriftGateCanonicalResponse<z.infer<typeof RunResponseSchema>>> {\n const payload = V4ExecutionRequestSchema.parse(input);\n const raw = await this.request(`/v4/sessions/${encodeURIComponent(sessionId)}/executions.execute`, {\n method: \"POST\",\n body: JSON.stringify(payload)\n });\n const parsed = V4ExecutionResponseSchema.parse(raw);\n if (!parsed.ok || !parsed.data) {\n const canonicalCode = parsed.error?.code ?? \"INTERNAL\";\n throw new DriftGateError(\n canonicalCode,\n parsed.error?.message ?? \"session.execute failed\",\n parsed.error?.status ?? 500,\n parsed.meta.requestId,\n parsed.error?.details\n );\n }\n return {\n ok: parsed.ok,\n data: parsed.data,\n meta: parsed.meta,\n error: parsed.error,\n raw\n };\n }\n\n async execute(\n input: DriftGateEphemeralExecuteInput\n ): Promise<DriftGateCanonicalResponse<z.infer<typeof V4EphemeralExecuteDataSchema>>> {\n const payload = V4EphemeralExecuteRequestBodySchema.parse(input);\n const raw = await this.request(\"/v4/execute\", {\n method: \"POST\",\n body: JSON.stringify(payload)\n });\n const parsed = V4EphemeralExecutionResponseSchema.parse(raw);\n if (!parsed.ok || !parsed.data) {\n const canonicalCode = parsed.error?.code ?? \"INTERNAL\";\n throw new DriftGateError(\n canonicalCode,\n parsed.error?.message ?? \"execute failed\",\n parsed.error?.status ?? 500,\n parsed.meta.requestId,\n parsed.error?.details\n );\n }\n return {\n ok: parsed.ok,\n data: parsed.data,\n meta: parsed.meta,\n error: parsed.error,\n raw\n };\n }\n\n async enableEdgeMode(input: EdgeInterceptorEnableInput): Promise<EdgeInterceptorRegistration> {\n const registration = await this.edgeInterceptors.register(input.workspaceId, input.registration);\n this.edgeInterceptorState = {\n workspaceId: input.workspaceId,\n registration,\n enforcement: input.enforcement ?? \"monitor\",\n hooks: input.hooks\n };\n return registration;\n }\n\n disableEdgeMode(): void {\n this.edgeInterceptorState = null;\n }\n\n async run(input: DriftGateRunInput): Promise<z.infer<typeof RunResponseSchema>> {\n const edgeDecision = this.evaluateEdgeDecision(input);\n const edgeState = this.edgeInterceptorState;\n if (edgeDecision && edgeState?.hooks?.beforeRun) {\n await edgeState.hooks.beforeRun(input, edgeDecision);\n }\n if (edgeDecision && !edgeDecision.allowed) {\n if (edgeState?.hooks?.onBlocked) {\n await edgeState.hooks.onBlocked(input, edgeDecision);\n }\n if (edgeState?.enforcement === \"enforce\") {\n throw new DriftGateError(\n \"edge_interceptor_denied\",\n edgeDecision.reasonText,\n 403,\n undefined,\n {\n reasonCode: edgeDecision.reasonCode,\n requiredCapabilities: edgeDecision.requiredCapabilities,\n grantedCapabilities: edgeDecision.grantedCapabilities,\n registrationId: edgeState.registration.registrationId\n }\n );\n }\n }\n\n const response = await this.request(\"/v1/headless/runs\", {\n method: \"POST\",\n body: JSON.stringify(input)\n });\n const parsed = RunResponseSchema.parse(response);\n if (edgeDecision && edgeState?.hooks?.afterRun) {\n await edgeState.hooks.afterRun(input, edgeDecision, parsed);\n }\n return parsed;\n }\n\n async status(runId: string): Promise<z.infer<typeof RunResponseSchema>> {\n const response = await this.request(`/v1/headless/runs/${encodeURIComponent(runId)}`);\n return RunResponseSchema.parse(response);\n }\n\n async events(runId: string): Promise<z.infer<typeof RunEventsResponseSchema>[\"events\"]> {\n const response = await this.request(`/v1/headless/runs/${encodeURIComponent(runId)}/events`);\n return RunEventsResponseSchema.parse(response).events;\n }\n\n async waitForTerminal(\n runId: string,\n options: WaitForTerminalOptions = {}\n ): Promise<z.infer<typeof RunResponseSchema>> {\n const intervalMs = options.intervalMs ?? 1_500;\n const timeoutMs = options.timeoutMs ?? 120_000;\n const startedAt = Date.now();\n\n while (true) {\n const current = await this.status(runId);\n if (isTerminalState(current.run.state)) {\n return current;\n }\n if (Date.now() - startedAt >= timeoutMs) {\n throw new DriftGateError(\"timeout\", `run ${runId} did not reach terminal state before timeout`, 408);\n }\n await sleep(intervalMs);\n }\n }\n\n async deployWorkflow(input: DeployWorkflowInput): Promise<z.infer<typeof DeployResponseSchema>> {\n const response = await this.request(\"/v1/headless/workflows/deploy\", {\n method: \"POST\",\n body: JSON.stringify(input)\n });\n return DeployResponseSchema.parse(response);\n }\n\n async publishWorkflow(workflowId: string, workflowYaml?: string): Promise<WorkflowVersion> {\n const response = await this.request(`/v1/headless/workflows/${encodeURIComponent(workflowId)}/publish`, {\n method: \"POST\",\n body: JSON.stringify(workflowYaml ? { workflowYaml } : {})\n });\n const parsed = PublishResponseSchema.parse(response);\n return parsed.version;\n }\n\n private evaluateEdgeDecision(input: DriftGateRunInput): EdgeInterceptorDecision | null {\n const state = this.edgeInterceptorState;\n if (!state || state.workspaceId !== input.workspaceId) {\n return null;\n }\n if (state.registration.status !== \"active\") {\n return {\n allowed: true,\n reasonCode: \"edge.interceptor.disabled\",\n reasonText: \"Edge interceptor registration is disabled; enforcement skipped.\",\n requiredCapabilities: [],\n grantedCapabilities: state.registration.capabilities\n };\n }\n\n const requiredCapabilities = [\"runs:create\"];\n const grantedCapabilities = state.registration.capabilities;\n const grantedSet = new Set(grantedCapabilities);\n const missingCapabilities = requiredCapabilities.filter(\n (capability) => !grantedSet.has(capability)\n );\n if (missingCapabilities.length === 0) {\n return {\n allowed: true,\n reasonCode: \"edge.interceptor.allow\",\n reasonText: \"Edge interceptor capability checks passed.\",\n requiredCapabilities,\n grantedCapabilities\n };\n }\n\n return {\n allowed: false,\n reasonCode: \"edge.interceptor.denied.missing_capability\",\n reasonText: `Missing required edge capabilities: ${missingCapabilities.join(\", \")}`,\n requiredCapabilities,\n grantedCapabilities\n };\n }\n\n private async request(path: string, init: RequestInit = {}): Promise<unknown> {\n const headers = new Headers(init.headers ?? {});\n if (!headers.has(\"content-type\") && init.body) {\n headers.set(\"content-type\", \"application/json\");\n }\n\n if (this.apiKey) {\n headers.set(\"x-driftgate-api-key\", this.apiKey);\n } else if (this.sessionToken) {\n headers.set(\"authorization\", `Bearer ${this.sessionToken}`);\n }\n\n const response = await this.fetchImpl(`${this.baseUrl}${path}`, {\n ...init,\n headers\n });\n\n const rawText = await response.text();\n const body = rawText.length > 0 ? safelyParseJson(rawText) : null;\n\n if (!response.ok) {\n const canonicalEnvelope = CanonicalErrorEnvelopeSchema.safeParse(body);\n if (canonicalEnvelope.success) {\n throw new DriftGateError(\n canonicalEnvelope.data.error.code,\n canonicalEnvelope.data.error.message,\n canonicalEnvelope.data.error.status,\n canonicalEnvelope.data.meta.requestId,\n canonicalEnvelope.data.error.details\n );\n }\n\n const envelope = HeadlessErrorEnvelopeSchema.safeParse(body);\n if (envelope.success) {\n throw new DriftGateError(\n envelope.data.code,\n envelope.data.message,\n response.status,\n envelope.data.correlation_id,\n envelope.data.details\n );\n }\n\n const legacyEnvelope = LegacyErrorEnvelopeSchema.safeParse(body);\n if (legacyEnvelope.success) {\n throw new DriftGateError(\n legacyEnvelope.data.error,\n legacyEnvelope.data.message,\n response.status,\n undefined,\n legacyEnvelope.data.issues\n );\n }\n\n throw new DriftGateError(\n \"http_error\",\n `request failed (${response.status})${rawText ? `: ${rawText}` : \"\"}`,\n response.status\n );\n }\n\n return body;\n }\n}\n\nfunction safelyParseJson(input: string): unknown {\n try {\n return JSON.parse(input);\n } catch {\n return { raw: input };\n }\n}\n\nexport type DriftGateRunResponse = z.infer<typeof RunResponseSchema>;\nexport type DriftGateRunEvent = z.infer<typeof RunEventsResponseSchema>[\"events\"][number];\nexport type DriftGatePolicyDecision = PolicyDecision;\nexport type DriftGateEdgeInterceptorRegistration = EdgeInterceptorRegistration;\nexport type DriftGateEdgeInterceptorDecision = EdgeInterceptorDecision;\nexport type DriftGateFirewallInspectInput = FirewallInspectInput;\nexport type DriftGateFirewallInspectResponse = FirewallInspectResponse;\nexport type DriftGateFirewallEvent = FirewallEvent;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,19 @@
1
+ import { DriftGateClient } from "../src/index.ts";
2
+
3
+ const dg = new DriftGateClient({
4
+ baseUrl: "https://api.driftgate.ai",
5
+ sessionToken: process.env.DRIFTGATE_TOKEN
6
+ });
7
+
8
+ const session = await dg.session.start({
9
+ agent: "refund-agent",
10
+ policy: { ref: "refund", version: "2026-02" },
11
+ route: { provider: "openai", model: "gpt-4.1-mini", region: "us-east-1" },
12
+ risk: { decision: "review" }
13
+ });
14
+
15
+ const response = await session.execute({
16
+ input: { orderId: "123" }
17
+ });
18
+
19
+ console.log(response.meta.requestId, response.meta.executionId);
@@ -0,0 +1,5 @@
1
+ import { DriftGateClient } from "../src/index.ts";
2
+
3
+ const dg = new DriftGateClient({ baseUrl: "https://api.driftgate.ai", sessionToken: "token" });
4
+ const session = await dg.session.start({ agent: "refund-agent" });
5
+ await session.execute({ input: { orderId: "123" } });
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@driftgate/sdk",
3
+ "version": "0.1.0-rc.1",
4
+ "type": "module",
5
+ "description": "DriftGate TypeScript SDK for canonical V4 session execution APIs.",
6
+ "license": "Apache-2.0",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./src/index.ts",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./src/*": "./src/*",
17
+ "./package.json": "./package.json"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "src",
22
+ "README.md",
23
+ "examples"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public",
27
+ "provenance": true
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/driftgate/driftgate-sdk.git"
32
+ },
33
+ "scripts": {
34
+ "build": "tsup src/index.ts --format esm --target node20 --dts --sourcemap --clean --tsconfig tsconfig.build.json",
35
+ "clean": "rm -rf dist"
36
+ },
37
+ "dependencies": {
38
+ "@driftgate/contracts": "0.1.0-rc.1",
39
+ "zod": "^3.23.8"
40
+ }
41
+ }