@computesdk/gateway 0.3.8 → 0.3.11

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/dist/index.js CHANGED
@@ -99,7 +99,6 @@ var railway = (0, import_provider.defineInfraProvider)({
99
99
  input: {
100
100
  projectId,
101
101
  environmentId,
102
- templateServiceId: "sandbox",
103
102
  source: {
104
103
  image: options?.image ?? "computesdk/compute:latest"
105
104
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/railway.ts","../src/render.ts","../src/namespace.ts"],"sourcesContent":["/**\n * @computesdk/gateway - Infrastructure Provider Implementations\n *\n * Infrastructure-only providers for the ComputeSDK gateway server.\n * These providers handle resource provisioning but don't include native sandbox capabilities.\n * The gateway server installs the ComputeSDK daemon to add sandbox features.\n */\n\n// Export Railway infrastructure provider\nexport { railway } from './railway.js';\nexport type { RailwayConfig, RailwayInstance } from './railway.js';\n\n// Export Render infrastructure provider\nexport { render } from './render.js';\nexport type { RenderConfig, RenderInstance } from './render.js';\n\n// Export Namespace infrastructure provider\nexport { namespace } from './namespace.js';\nexport type { NamespaceConfig, NamespaceInstance } from './namespace.js';\n\n// Re-export infrastructure provider types from @computesdk/provider\nexport type { InfraProvider, DaemonConfig } from '@computesdk/provider';\n","/**\n * Railway Infrastructure Provider\n * \n * Provides infrastructure-only methods for creating/destroying Railway services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Railway service instance\n */\nexport interface RailwayInstance {\n serviceId: string;\n projectId: string;\n environmentId: string;\n}\n\n/**\n * Railway provider configuration\n */\nexport interface RailwayConfig {\n /** Railway API key - if not provided, will fallback to RAILWAY_API_KEY environment variable */\n apiKey?: string;\n /** Railway Project ID */\n projectId?: string;\n /** Railway Environment ID - if not provided, will fallback to RAILWAY_ENVIRONMENT_ID environment variable */\n environmentId?: string;\n}\n\n/**\n * Get and validate Railway credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RailwayConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RAILWAY_API_KEY) || '';\n const projectId = config.projectId || (typeof process !== 'undefined' && process.env?.RAILWAY_PROJECT_ID) || '';\n const environmentId = config.environmentId || (typeof process !== 'undefined' && process.env?.RAILWAY_ENVIRONMENT_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Railway API key. Provide apiKey in config or set RAILWAY_API_KEY environment variable.'\n );\n }\n\n if (!projectId) {\n throw new Error(\n 'Missing Railway Project ID. Provide projectId in config or set RAILWAY_PROJECT_ID environment variable.'\n );\n }\n\n if (!environmentId) {\n throw new Error(\n 'Missing Railway Environment ID. Provide environmentId in config or set RAILWAY_ENVIRONMENT_ID environment variable.'\n );\n }\n\n return { apiKey, projectId, environmentId };\n};\n\nconst GRAPHQL_QUERIES = {\n CREATE_SERVICE: `mutation ServiceCreate($input: ServiceCreateInput!) { serviceCreate(input: $input) { id name } }`,\n GET_SERVICE: `query Service($serviceId: String!) { service(id: $serviceId) { id name createdAt } }`,\n LIST_SERVICES: `query Project($projectId: String!) { project(id: $projectId) { services { edges { node { id name createdAt updatedAt } } } } }`,\n DELETE_SERVICE: `mutation ServiceDelete($id: String!) { serviceDelete(id: $id) }`\n};\n\nconst handleGraphQLErrors = (data: any) => {\n if (data.errors) {\n throw new Error(`Railway GraphQL error: ${data.errors.map((e: any) => e.message).join(', ')}`);\n }\n};\n\nexport const fetchRailway = async (\n apiKey: string, \n mutation: any,\n) => {\n const response = await fetch('https://backboard.railway.com/graphql/v2', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify(mutation)\n });\n\n if (!response.ok) {\n throw new Error(`Railway API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n handleGraphQLErrors(data);\n\n return data.data;\n};\n\n/**\n * Convert daemon config to Railway environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Railway infrastructure provider\n * \n * Creates Railway services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const railway = defineInfraProvider<RailwayInstance, RailwayConfig>({\n name: 'railway',\n \n methods: {\n create: async (config: RailwayConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const mutation = {\n query: GRAPHQL_QUERIES.CREATE_SERVICE,\n variables: {\n input: {\n projectId,\n environmentId,\n templateServiceId: 'sandbox',\n source: {\n image: options?.image ?? 'computesdk/compute:latest',\n },\n ...(Object.keys(envVars).length > 0 && {\n variables: envVars\n })\n }\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const service = responseData?.serviceCreate;\n \n if (!service) {\n throw new Error('No service returned from Railway API - responseData.serviceCreate is undefined');\n }\n \n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.GET_SERVICE,\n variables: {\n serviceId: instanceId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n \n if (responseData === null) {\n return null;\n }\n \n const service = responseData?.service;\n \n if (!service) {\n throw new Error('Service data is missing from Railway response');\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to get Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n \n list: async (config: RailwayConfig) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.LIST_SERVICES,\n variables: {\n projectId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const services = responseData?.project?.services?.edges || [];\n \n return services.map((edge: any) => {\n const service = edge.node;\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Railway instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.DELETE_SERVICE,\n variables: {\n id: instanceId\n }\n };\n\n await fetchRailway(apiKey, mutation);\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Railway destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Render Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Render services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Render service instance\n */\nexport interface RenderInstance {\n serviceId: string;\n ownerId: string;\n}\n\n/**\n * Render provider configuration\n */\nexport interface RenderConfig {\n /** Render API key - if not provided, will fallback to RENDER_API_KEY environment variable */\n apiKey?: string;\n /** Render Owner ID - if not provided, will fallback to RENDER_OWNER_ID environment variable */\n ownerId?: string;\n}\n\n/**\n * Get and validate Render credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RenderConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RENDER_API_KEY) || '';\n const ownerId = config.ownerId || (typeof process !== 'undefined' && process.env?.RENDER_OWNER_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Render API key. Provide apiKey in config or set RENDER_API_KEY environment variable.'\n );\n }\n\n if (!ownerId) {\n throw new Error(\n 'Missing Render Owner ID. Provide ownerId in config or set RENDER_OWNER_ID environment variable.'\n );\n }\n\n return { apiKey, ownerId };\n};\n\nexport const fetchRender = async (\n apiKey: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const url = `https://api.render.com/v1${endpoint}`;\n const requestOptions = {\n method: 'GET',\n ...options,\n headers: {\n 'Accept': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n ...(options.headers || {})\n }\n };\n\n const response = await fetch(url, requestOptions);\n\n if (!response.ok) {\n throw new Error(`Render API error: ${response.status} ${response.statusText}`);\n }\n\n // Handle 204 No Content responses (like DELETE operations)\n if (response.status === 204) {\n return {};\n }\n\n return response.json();\n};\n\n/**\n * Convert daemon config to Render environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Render infrastructure provider\n *\n * Creates Render services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const render = defineInfraProvider<RenderInstance, RenderConfig>({\n name: 'render',\n\n methods: {\n create: async (config: RenderConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n const envVarsList = Object.entries(envVars).map(([key, value]) => ({\n key,\n value\n }));\n\n // Create service with env vars at top level (not inside serviceDetails)\n const createServiceData = {\n type: 'web_service',\n autoDeploy: 'yes',\n image: {\n ownerId: ownerId,\n imagePath: options?.image ?? 'computesdk/compute:latest'\n },\n serviceDetails: {\n runtime: 'image',\n pullRequestPreviewsEnabled: 'no'\n },\n ...(envVarsList.length > 0 && { envVars: envVarsList }),\n ownerId: ownerId,\n name: `computesdk-${Date.now()}`\n };\n\n const responseData = await fetchRender(apiKey, '/services', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(createServiceData)\n });\n\n if (!responseData) {\n throw new Error('No service returned from Render API - responseData is undefined');\n }\n\n // Render API returns { service: { id: \"...\", ... }, deployId: \"...\" }\n const service = responseData.service;\n if (!service) {\n throw new Error('No service returned from Render API - responseData.service is undefined');\n }\n\n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RenderConfig, instanceId: string) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, `/services/${instanceId}`);\n\n if (!responseData.id) {\n throw new Error('Service data is missing from Render response');\n }\n\n const instance: RenderInstance = {\n serviceId: responseData.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: responseData.id\n };\n } catch (error) {\n // If it's a 404, return null to indicate service not found\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n throw new Error(\n `Failed to get Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: RenderConfig) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, '/services?includePreviews=true');\n\n // Extract services from the array response - each item has a \"service\" property\n const items = responseData || [];\n\n return items.map((item: any) => {\n const service = item.service;\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Render instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RenderConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n await fetchRender(apiKey, `/services/${instanceId}`, {\n method: 'DELETE'\n });\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Render destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Namespace Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Namespace instances.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Namespace service instance\n */\nexport interface NamespaceInstance {\n instanceId: string;\n name: string;\n}\n\n/**\n * Namespace provider configuration\n */\nexport interface NamespaceConfig {\n /** Namespace API token - if not provided, will fallback to NSC_TOKEN environment variable */\n token?: string;\n /** Virtual CPU cores for the instance */\n virtualCpu?: number;\n /** Memory in megabytes for the instance */\n memoryMegabytes?: number;\n /** Machine architecture (default: amd64) */\n machineArch?: string;\n /** Operating system (default: linux) */\n os?: string;\n /** Documented purpose for the instance */\n documentedPurpose?: string;\n /** Reason for destroying instances (default: \"ComputeSDK cleanup\") */\n destroyReason?: string;\n}\n\nconst API_ENDPOINTS = {\n CREATE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/CreateInstance',\n DESCRIBE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DescribeInstance',\n LIST_INSTANCES: '/namespace.cloud.compute.v1beta.ComputeService/ListInstances',\n DESTROY_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DestroyInstance'\n};\n\n/**\n * Get and validate Namespace credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: NamespaceConfig) => {\n const token = config.token || (typeof process !== 'undefined' && process.env?.NSC_TOKEN) || '';\n\n if (!token) {\n throw new Error(\n 'Missing Namespace token. Provide token in config or set NSC_TOKEN environment variable.'\n );\n }\n\n return { token };\n};\n\nconst handleApiErrors = (response: any) => {\n if (response.error) {\n throw new Error(`Namespace API error: ${response.error}`);\n }\n};\n\nexport const fetchNamespace = async (\n token: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const response = await fetch(`https://us.compute.namespaceapis.com${endpoint}`, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n ...options.headers\n }\n });\n\n if (!response.ok) {\n throw new Error(`Namespace API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n\n // Standard error handling for all operations\n handleApiErrors(data);\n\n return data;\n};\n\n/**\n * Convert daemon config to Namespace environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Namespace infrastructure provider\n *\n * Creates Namespace instances with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const namespace = defineInfraProvider<NamespaceInstance, NamespaceConfig>({\n name: 'namespace',\n\n methods: {\n create: async (config: NamespaceConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const requestBody = {\n shape: {\n virtual_cpu: config.virtualCpu || 2,\n memory_megabytes: config.memoryMegabytes || 4096,\n machine_arch: config.machineArch || 'amd64',\n os: config.os || 'linux'\n },\n containers: [{\n name: 'main-container',\n image_ref: options?.image ?? 'computesdk/compute:latest',\n args: ['sleep', '300'],\n ...(Object.keys(envVars).length > 0 && {\n environment: envVars\n })\n }],\n documented_purpose: config.documentedPurpose || 'ComputeSDK sandbox'\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.CREATE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error(`Instance ID is undefined. Full response object: ${JSON.stringify(responseData, null, 2)}`);\n }\n\n const instanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${instanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId\n };\n } catch (error) {\n throw new Error(\n `Failed to create Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.DESCRIBE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error('Instance data is missing from Namespace response');\n }\n\n const namespaceInstanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n } catch (error) {\n // Handle 404 errors by returning null (instance not found)\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n\n throw new Error(\n `Failed to get Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: NamespaceConfig) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchNamespace(token, API_ENDPOINTS.LIST_INSTANCES, {\n method: 'POST',\n body: JSON.stringify({})\n });\n\n // Extract instances from the response\n const instances = responseData?.instances || [];\n\n // Transform each instance into the expected format\n return instances.map((instanceData: any) => {\n // For list response, instanceId is directly in the instance object, not in metadata\n const namespaceInstanceId = instanceData.instanceId || instanceData.metadata?.instanceId;\n if (!namespaceInstanceId) {\n console.warn('Instance missing instanceId:', instanceData);\n return null;\n }\n\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n }).filter(Boolean);\n } catch (error) {\n throw new Error(\n `Failed to list Namespace instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId,\n reason: config.destroyReason || \"ComputeSDK cleanup\"\n };\n\n const data = await fetchNamespace(token, API_ENDPOINTS.DESTROY_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n if (data.error) {\n // Log errors but don't throw for destroy operations\n console.warn(`Namespace destroy warning: ${data.error}`);\n }\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Namespace destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n"],"mappings":"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","names":["import_provider","getAndValidateCredentials","buildDaemonEnvVars","import_provider","getAndValidateCredentials","buildDaemonEnvVars"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/railway.ts","../src/render.ts","../src/namespace.ts"],"sourcesContent":["/**\n * @computesdk/gateway - Infrastructure Provider Implementations\n *\n * Infrastructure-only providers for the ComputeSDK gateway server.\n * These providers handle resource provisioning but don't include native sandbox capabilities.\n * The gateway server installs the ComputeSDK daemon to add sandbox features.\n */\n\n// Export Railway infrastructure provider\nexport { railway } from './railway.js';\nexport type { RailwayConfig, RailwayInstance } from './railway.js';\n\n// Export Render infrastructure provider\nexport { render } from './render.js';\nexport type { RenderConfig, RenderInstance } from './render.js';\n\n// Export Namespace infrastructure provider\nexport { namespace } from './namespace.js';\nexport type { NamespaceConfig, NamespaceInstance } from './namespace.js';\n\n// Re-export infrastructure provider types from @computesdk/provider\nexport type { InfraProvider, DaemonConfig } from '@computesdk/provider';\n","/**\n * Railway Infrastructure Provider\n * \n * Provides infrastructure-only methods for creating/destroying Railway services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Railway service instance\n */\nexport interface RailwayInstance {\n serviceId: string;\n projectId: string;\n environmentId: string;\n}\n\n/**\n * Railway provider configuration\n */\nexport interface RailwayConfig {\n /** Railway API key - if not provided, will fallback to RAILWAY_API_KEY environment variable */\n apiKey?: string;\n /** Railway Project ID */\n projectId?: string;\n /** Railway Environment ID - if not provided, will fallback to RAILWAY_ENVIRONMENT_ID environment variable */\n environmentId?: string;\n}\n\n/**\n * Get and validate Railway credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RailwayConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RAILWAY_API_KEY) || '';\n const projectId = config.projectId || (typeof process !== 'undefined' && process.env?.RAILWAY_PROJECT_ID) || '';\n const environmentId = config.environmentId || (typeof process !== 'undefined' && process.env?.RAILWAY_ENVIRONMENT_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Railway API key. Provide apiKey in config or set RAILWAY_API_KEY environment variable.'\n );\n }\n\n if (!projectId) {\n throw new Error(\n 'Missing Railway Project ID. Provide projectId in config or set RAILWAY_PROJECT_ID environment variable.'\n );\n }\n\n if (!environmentId) {\n throw new Error(\n 'Missing Railway Environment ID. Provide environmentId in config or set RAILWAY_ENVIRONMENT_ID environment variable.'\n );\n }\n\n return { apiKey, projectId, environmentId };\n};\n\nconst GRAPHQL_QUERIES = {\n CREATE_SERVICE: `mutation ServiceCreate($input: ServiceCreateInput!) { serviceCreate(input: $input) { id name } }`,\n GET_SERVICE: `query Service($serviceId: String!) { service(id: $serviceId) { id name createdAt } }`,\n LIST_SERVICES: `query Project($projectId: String!) { project(id: $projectId) { services { edges { node { id name createdAt updatedAt } } } } }`,\n DELETE_SERVICE: `mutation ServiceDelete($id: String!) { serviceDelete(id: $id) }`\n};\n\nconst handleGraphQLErrors = (data: any) => {\n if (data.errors) {\n throw new Error(`Railway GraphQL error: ${data.errors.map((e: any) => e.message).join(', ')}`);\n }\n};\n\nexport const fetchRailway = async (\n apiKey: string, \n mutation: any,\n) => {\n const response = await fetch('https://backboard.railway.com/graphql/v2', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify(mutation)\n });\n\n if (!response.ok) {\n throw new Error(`Railway API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n handleGraphQLErrors(data);\n\n return data.data;\n};\n\n/**\n * Convert daemon config to Railway environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Railway infrastructure provider\n * \n * Creates Railway services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const railway = defineInfraProvider<RailwayInstance, RailwayConfig>({\n name: 'railway',\n \n methods: {\n create: async (config: RailwayConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const mutation = {\n query: GRAPHQL_QUERIES.CREATE_SERVICE,\n variables: {\n input: {\n projectId,\n environmentId,\n source: {\n image: options?.image ?? 'computesdk/compute:latest',\n },\n ...(Object.keys(envVars).length > 0 && {\n variables: envVars\n })\n }\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const service = responseData?.serviceCreate;\n \n if (!service) {\n throw new Error('No service returned from Railway API - responseData.serviceCreate is undefined');\n }\n \n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.GET_SERVICE,\n variables: {\n serviceId: instanceId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n \n if (responseData === null) {\n return null;\n }\n \n const service = responseData?.service;\n \n if (!service) {\n throw new Error('Service data is missing from Railway response');\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to get Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n \n list: async (config: RailwayConfig) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.LIST_SERVICES,\n variables: {\n projectId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const services = responseData?.project?.services?.edges || [];\n \n return services.map((edge: any) => {\n const service = edge.node;\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Railway instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.DELETE_SERVICE,\n variables: {\n id: instanceId\n }\n };\n\n await fetchRailway(apiKey, mutation);\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Railway destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Render Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Render services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Render service instance\n */\nexport interface RenderInstance {\n serviceId: string;\n ownerId: string;\n}\n\n/**\n * Render provider configuration\n */\nexport interface RenderConfig {\n /** Render API key - if not provided, will fallback to RENDER_API_KEY environment variable */\n apiKey?: string;\n /** Render Owner ID - if not provided, will fallback to RENDER_OWNER_ID environment variable */\n ownerId?: string;\n}\n\n/**\n * Get and validate Render credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RenderConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RENDER_API_KEY) || '';\n const ownerId = config.ownerId || (typeof process !== 'undefined' && process.env?.RENDER_OWNER_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Render API key. Provide apiKey in config or set RENDER_API_KEY environment variable.'\n );\n }\n\n if (!ownerId) {\n throw new Error(\n 'Missing Render Owner ID. Provide ownerId in config or set RENDER_OWNER_ID environment variable.'\n );\n }\n\n return { apiKey, ownerId };\n};\n\nexport const fetchRender = async (\n apiKey: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const url = `https://api.render.com/v1${endpoint}`;\n const requestOptions = {\n method: 'GET',\n ...options,\n headers: {\n 'Accept': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n ...(options.headers || {})\n }\n };\n\n const response = await fetch(url, requestOptions);\n\n if (!response.ok) {\n throw new Error(`Render API error: ${response.status} ${response.statusText}`);\n }\n\n // Handle 204 No Content responses (like DELETE operations)\n if (response.status === 204) {\n return {};\n }\n\n return response.json();\n};\n\n/**\n * Convert daemon config to Render environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Render infrastructure provider\n *\n * Creates Render services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const render = defineInfraProvider<RenderInstance, RenderConfig>({\n name: 'render',\n\n methods: {\n create: async (config: RenderConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n const envVarsList = Object.entries(envVars).map(([key, value]) => ({\n key,\n value\n }));\n\n // Create service with env vars at top level (not inside serviceDetails)\n const createServiceData = {\n type: 'web_service',\n autoDeploy: 'yes',\n image: {\n ownerId: ownerId,\n imagePath: options?.image ?? 'computesdk/compute:latest'\n },\n serviceDetails: {\n runtime: 'image',\n pullRequestPreviewsEnabled: 'no'\n },\n ...(envVarsList.length > 0 && { envVars: envVarsList }),\n ownerId: ownerId,\n name: `computesdk-${Date.now()}`\n };\n\n const responseData = await fetchRender(apiKey, '/services', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(createServiceData)\n });\n\n if (!responseData) {\n throw new Error('No service returned from Render API - responseData is undefined');\n }\n\n // Render API returns { service: { id: \"...\", ... }, deployId: \"...\" }\n const service = responseData.service;\n if (!service) {\n throw new Error('No service returned from Render API - responseData.service is undefined');\n }\n\n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RenderConfig, instanceId: string) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, `/services/${instanceId}`);\n\n if (!responseData.id) {\n throw new Error('Service data is missing from Render response');\n }\n\n const instance: RenderInstance = {\n serviceId: responseData.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: responseData.id\n };\n } catch (error) {\n // If it's a 404, return null to indicate service not found\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n throw new Error(\n `Failed to get Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: RenderConfig) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, '/services?includePreviews=true');\n\n // Extract services from the array response - each item has a \"service\" property\n const items = responseData || [];\n\n return items.map((item: any) => {\n const service = item.service;\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Render instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RenderConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n await fetchRender(apiKey, `/services/${instanceId}`, {\n method: 'DELETE'\n });\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Render destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Namespace Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Namespace instances.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Namespace service instance\n */\nexport interface NamespaceInstance {\n instanceId: string;\n name: string;\n}\n\n/**\n * Namespace provider configuration\n */\nexport interface NamespaceConfig {\n /** Namespace API token - if not provided, will fallback to NSC_TOKEN environment variable */\n token?: string;\n /** Virtual CPU cores for the instance */\n virtualCpu?: number;\n /** Memory in megabytes for the instance */\n memoryMegabytes?: number;\n /** Machine architecture (default: amd64) */\n machineArch?: string;\n /** Operating system (default: linux) */\n os?: string;\n /** Documented purpose for the instance */\n documentedPurpose?: string;\n /** Reason for destroying instances (default: \"ComputeSDK cleanup\") */\n destroyReason?: string;\n}\n\nconst API_ENDPOINTS = {\n CREATE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/CreateInstance',\n DESCRIBE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DescribeInstance',\n LIST_INSTANCES: '/namespace.cloud.compute.v1beta.ComputeService/ListInstances',\n DESTROY_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DestroyInstance'\n};\n\n/**\n * Get and validate Namespace credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: NamespaceConfig) => {\n const token = config.token || (typeof process !== 'undefined' && process.env?.NSC_TOKEN) || '';\n\n if (!token) {\n throw new Error(\n 'Missing Namespace token. Provide token in config or set NSC_TOKEN environment variable.'\n );\n }\n\n return { token };\n};\n\nconst handleApiErrors = (response: any) => {\n if (response.error) {\n throw new Error(`Namespace API error: ${response.error}`);\n }\n};\n\nexport const fetchNamespace = async (\n token: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const response = await fetch(`https://us.compute.namespaceapis.com${endpoint}`, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n ...options.headers\n }\n });\n\n if (!response.ok) {\n throw new Error(`Namespace API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n\n // Standard error handling for all operations\n handleApiErrors(data);\n\n return data;\n};\n\n/**\n * Convert daemon config to Namespace environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Namespace infrastructure provider\n *\n * Creates Namespace instances with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const namespace = defineInfraProvider<NamespaceInstance, NamespaceConfig>({\n name: 'namespace',\n\n methods: {\n create: async (config: NamespaceConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const requestBody = {\n shape: {\n virtual_cpu: config.virtualCpu || 2,\n memory_megabytes: config.memoryMegabytes || 4096,\n machine_arch: config.machineArch || 'amd64',\n os: config.os || 'linux'\n },\n containers: [{\n name: 'main-container',\n image_ref: options?.image ?? 'computesdk/compute:latest',\n args: ['sleep', '300'],\n ...(Object.keys(envVars).length > 0 && {\n environment: envVars\n })\n }],\n documented_purpose: config.documentedPurpose || 'ComputeSDK sandbox'\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.CREATE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error(`Instance ID is undefined. Full response object: ${JSON.stringify(responseData, null, 2)}`);\n }\n\n const instanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${instanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId\n };\n } catch (error) {\n throw new Error(\n `Failed to create Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.DESCRIBE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error('Instance data is missing from Namespace response');\n }\n\n const namespaceInstanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n } catch (error) {\n // Handle 404 errors by returning null (instance not found)\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n\n throw new Error(\n `Failed to get Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: NamespaceConfig) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchNamespace(token, API_ENDPOINTS.LIST_INSTANCES, {\n method: 'POST',\n body: JSON.stringify({})\n });\n\n // Extract instances from the response\n const instances = responseData?.instances || [];\n\n // Transform each instance into the expected format\n return instances.map((instanceData: any) => {\n // For list response, instanceId is directly in the instance object, not in metadata\n const namespaceInstanceId = instanceData.instanceId || instanceData.metadata?.instanceId;\n if (!namespaceInstanceId) {\n console.warn('Instance missing instanceId:', instanceData);\n return null;\n }\n\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n }).filter(Boolean);\n } catch (error) {\n throw new Error(\n `Failed to list Namespace instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId,\n reason: config.destroyReason || \"ComputeSDK cleanup\"\n };\n\n const data = await fetchNamespace(token, API_ENDPOINTS.DESTROY_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n if (data.error) {\n // Log errors but don't throw for destroy operations\n console.warn(`Namespace destroy warning: ${data.error}`);\n }\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Namespace destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n"],"mappings":"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","names":["import_provider","getAndValidateCredentials","buildDaemonEnvVars","import_provider","getAndValidateCredentials","buildDaemonEnvVars"]}
package/dist/index.mjs CHANGED
@@ -71,7 +71,6 @@ var railway = defineInfraProvider({
71
71
  input: {
72
72
  projectId,
73
73
  environmentId,
74
- templateServiceId: "sandbox",
75
74
  source: {
76
75
  image: options?.image ?? "computesdk/compute:latest"
77
76
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/railway.ts","../src/render.ts","../src/namespace.ts"],"sourcesContent":["/**\n * Railway Infrastructure Provider\n * \n * Provides infrastructure-only methods for creating/destroying Railway services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Railway service instance\n */\nexport interface RailwayInstance {\n serviceId: string;\n projectId: string;\n environmentId: string;\n}\n\n/**\n * Railway provider configuration\n */\nexport interface RailwayConfig {\n /** Railway API key - if not provided, will fallback to RAILWAY_API_KEY environment variable */\n apiKey?: string;\n /** Railway Project ID */\n projectId?: string;\n /** Railway Environment ID - if not provided, will fallback to RAILWAY_ENVIRONMENT_ID environment variable */\n environmentId?: string;\n}\n\n/**\n * Get and validate Railway credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RailwayConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RAILWAY_API_KEY) || '';\n const projectId = config.projectId || (typeof process !== 'undefined' && process.env?.RAILWAY_PROJECT_ID) || '';\n const environmentId = config.environmentId || (typeof process !== 'undefined' && process.env?.RAILWAY_ENVIRONMENT_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Railway API key. Provide apiKey in config or set RAILWAY_API_KEY environment variable.'\n );\n }\n\n if (!projectId) {\n throw new Error(\n 'Missing Railway Project ID. Provide projectId in config or set RAILWAY_PROJECT_ID environment variable.'\n );\n }\n\n if (!environmentId) {\n throw new Error(\n 'Missing Railway Environment ID. Provide environmentId in config or set RAILWAY_ENVIRONMENT_ID environment variable.'\n );\n }\n\n return { apiKey, projectId, environmentId };\n};\n\nconst GRAPHQL_QUERIES = {\n CREATE_SERVICE: `mutation ServiceCreate($input: ServiceCreateInput!) { serviceCreate(input: $input) { id name } }`,\n GET_SERVICE: `query Service($serviceId: String!) { service(id: $serviceId) { id name createdAt } }`,\n LIST_SERVICES: `query Project($projectId: String!) { project(id: $projectId) { services { edges { node { id name createdAt updatedAt } } } } }`,\n DELETE_SERVICE: `mutation ServiceDelete($id: String!) { serviceDelete(id: $id) }`\n};\n\nconst handleGraphQLErrors = (data: any) => {\n if (data.errors) {\n throw new Error(`Railway GraphQL error: ${data.errors.map((e: any) => e.message).join(', ')}`);\n }\n};\n\nexport const fetchRailway = async (\n apiKey: string, \n mutation: any,\n) => {\n const response = await fetch('https://backboard.railway.com/graphql/v2', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify(mutation)\n });\n\n if (!response.ok) {\n throw new Error(`Railway API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n handleGraphQLErrors(data);\n\n return data.data;\n};\n\n/**\n * Convert daemon config to Railway environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Railway infrastructure provider\n * \n * Creates Railway services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const railway = defineInfraProvider<RailwayInstance, RailwayConfig>({\n name: 'railway',\n \n methods: {\n create: async (config: RailwayConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const mutation = {\n query: GRAPHQL_QUERIES.CREATE_SERVICE,\n variables: {\n input: {\n projectId,\n environmentId,\n templateServiceId: 'sandbox',\n source: {\n image: options?.image ?? 'computesdk/compute:latest',\n },\n ...(Object.keys(envVars).length > 0 && {\n variables: envVars\n })\n }\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const service = responseData?.serviceCreate;\n \n if (!service) {\n throw new Error('No service returned from Railway API - responseData.serviceCreate is undefined');\n }\n \n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.GET_SERVICE,\n variables: {\n serviceId: instanceId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n \n if (responseData === null) {\n return null;\n }\n \n const service = responseData?.service;\n \n if (!service) {\n throw new Error('Service data is missing from Railway response');\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to get Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n \n list: async (config: RailwayConfig) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.LIST_SERVICES,\n variables: {\n projectId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const services = responseData?.project?.services?.edges || [];\n \n return services.map((edge: any) => {\n const service = edge.node;\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Railway instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.DELETE_SERVICE,\n variables: {\n id: instanceId\n }\n };\n\n await fetchRailway(apiKey, mutation);\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Railway destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Render Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Render services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Render service instance\n */\nexport interface RenderInstance {\n serviceId: string;\n ownerId: string;\n}\n\n/**\n * Render provider configuration\n */\nexport interface RenderConfig {\n /** Render API key - if not provided, will fallback to RENDER_API_KEY environment variable */\n apiKey?: string;\n /** Render Owner ID - if not provided, will fallback to RENDER_OWNER_ID environment variable */\n ownerId?: string;\n}\n\n/**\n * Get and validate Render credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RenderConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RENDER_API_KEY) || '';\n const ownerId = config.ownerId || (typeof process !== 'undefined' && process.env?.RENDER_OWNER_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Render API key. Provide apiKey in config or set RENDER_API_KEY environment variable.'\n );\n }\n\n if (!ownerId) {\n throw new Error(\n 'Missing Render Owner ID. Provide ownerId in config or set RENDER_OWNER_ID environment variable.'\n );\n }\n\n return { apiKey, ownerId };\n};\n\nexport const fetchRender = async (\n apiKey: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const url = `https://api.render.com/v1${endpoint}`;\n const requestOptions = {\n method: 'GET',\n ...options,\n headers: {\n 'Accept': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n ...(options.headers || {})\n }\n };\n\n const response = await fetch(url, requestOptions);\n\n if (!response.ok) {\n throw new Error(`Render API error: ${response.status} ${response.statusText}`);\n }\n\n // Handle 204 No Content responses (like DELETE operations)\n if (response.status === 204) {\n return {};\n }\n\n return response.json();\n};\n\n/**\n * Convert daemon config to Render environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Render infrastructure provider\n *\n * Creates Render services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const render = defineInfraProvider<RenderInstance, RenderConfig>({\n name: 'render',\n\n methods: {\n create: async (config: RenderConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n const envVarsList = Object.entries(envVars).map(([key, value]) => ({\n key,\n value\n }));\n\n // Create service with env vars at top level (not inside serviceDetails)\n const createServiceData = {\n type: 'web_service',\n autoDeploy: 'yes',\n image: {\n ownerId: ownerId,\n imagePath: options?.image ?? 'computesdk/compute:latest'\n },\n serviceDetails: {\n runtime: 'image',\n pullRequestPreviewsEnabled: 'no'\n },\n ...(envVarsList.length > 0 && { envVars: envVarsList }),\n ownerId: ownerId,\n name: `computesdk-${Date.now()}`\n };\n\n const responseData = await fetchRender(apiKey, '/services', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(createServiceData)\n });\n\n if (!responseData) {\n throw new Error('No service returned from Render API - responseData is undefined');\n }\n\n // Render API returns { service: { id: \"...\", ... }, deployId: \"...\" }\n const service = responseData.service;\n if (!service) {\n throw new Error('No service returned from Render API - responseData.service is undefined');\n }\n\n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RenderConfig, instanceId: string) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, `/services/${instanceId}`);\n\n if (!responseData.id) {\n throw new Error('Service data is missing from Render response');\n }\n\n const instance: RenderInstance = {\n serviceId: responseData.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: responseData.id\n };\n } catch (error) {\n // If it's a 404, return null to indicate service not found\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n throw new Error(\n `Failed to get Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: RenderConfig) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, '/services?includePreviews=true');\n\n // Extract services from the array response - each item has a \"service\" property\n const items = responseData || [];\n\n return items.map((item: any) => {\n const service = item.service;\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Render instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RenderConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n await fetchRender(apiKey, `/services/${instanceId}`, {\n method: 'DELETE'\n });\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Render destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Namespace Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Namespace instances.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Namespace service instance\n */\nexport interface NamespaceInstance {\n instanceId: string;\n name: string;\n}\n\n/**\n * Namespace provider configuration\n */\nexport interface NamespaceConfig {\n /** Namespace API token - if not provided, will fallback to NSC_TOKEN environment variable */\n token?: string;\n /** Virtual CPU cores for the instance */\n virtualCpu?: number;\n /** Memory in megabytes for the instance */\n memoryMegabytes?: number;\n /** Machine architecture (default: amd64) */\n machineArch?: string;\n /** Operating system (default: linux) */\n os?: string;\n /** Documented purpose for the instance */\n documentedPurpose?: string;\n /** Reason for destroying instances (default: \"ComputeSDK cleanup\") */\n destroyReason?: string;\n}\n\nconst API_ENDPOINTS = {\n CREATE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/CreateInstance',\n DESCRIBE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DescribeInstance',\n LIST_INSTANCES: '/namespace.cloud.compute.v1beta.ComputeService/ListInstances',\n DESTROY_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DestroyInstance'\n};\n\n/**\n * Get and validate Namespace credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: NamespaceConfig) => {\n const token = config.token || (typeof process !== 'undefined' && process.env?.NSC_TOKEN) || '';\n\n if (!token) {\n throw new Error(\n 'Missing Namespace token. Provide token in config or set NSC_TOKEN environment variable.'\n );\n }\n\n return { token };\n};\n\nconst handleApiErrors = (response: any) => {\n if (response.error) {\n throw new Error(`Namespace API error: ${response.error}`);\n }\n};\n\nexport const fetchNamespace = async (\n token: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const response = await fetch(`https://us.compute.namespaceapis.com${endpoint}`, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n ...options.headers\n }\n });\n\n if (!response.ok) {\n throw new Error(`Namespace API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n\n // Standard error handling for all operations\n handleApiErrors(data);\n\n return data;\n};\n\n/**\n * Convert daemon config to Namespace environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Namespace infrastructure provider\n *\n * Creates Namespace instances with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const namespace = defineInfraProvider<NamespaceInstance, NamespaceConfig>({\n name: 'namespace',\n\n methods: {\n create: async (config: NamespaceConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const requestBody = {\n shape: {\n virtual_cpu: config.virtualCpu || 2,\n memory_megabytes: config.memoryMegabytes || 4096,\n machine_arch: config.machineArch || 'amd64',\n os: config.os || 'linux'\n },\n containers: [{\n name: 'main-container',\n image_ref: options?.image ?? 'computesdk/compute:latest',\n args: ['sleep', '300'],\n ...(Object.keys(envVars).length > 0 && {\n environment: envVars\n })\n }],\n documented_purpose: config.documentedPurpose || 'ComputeSDK sandbox'\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.CREATE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error(`Instance ID is undefined. Full response object: ${JSON.stringify(responseData, null, 2)}`);\n }\n\n const instanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${instanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId\n };\n } catch (error) {\n throw new Error(\n `Failed to create Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.DESCRIBE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error('Instance data is missing from Namespace response');\n }\n\n const namespaceInstanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n } catch (error) {\n // Handle 404 errors by returning null (instance not found)\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n\n throw new Error(\n `Failed to get Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: NamespaceConfig) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchNamespace(token, API_ENDPOINTS.LIST_INSTANCES, {\n method: 'POST',\n body: JSON.stringify({})\n });\n\n // Extract instances from the response\n const instances = responseData?.instances || [];\n\n // Transform each instance into the expected format\n return instances.map((instanceData: any) => {\n // For list response, instanceId is directly in the instance object, not in metadata\n const namespaceInstanceId = instanceData.instanceId || instanceData.metadata?.instanceId;\n if (!namespaceInstanceId) {\n console.warn('Instance missing instanceId:', instanceData);\n return null;\n }\n\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n }).filter(Boolean);\n } catch (error) {\n throw new Error(\n `Failed to list Namespace instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId,\n reason: config.destroyReason || \"ComputeSDK cleanup\"\n };\n\n const data = await fetchNamespace(token, API_ENDPOINTS.DESTROY_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n if (data.error) {\n // Log errors but don't throw for destroy operations\n console.warn(`Namespace destroy warning: ${data.error}`);\n }\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Namespace destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n"],"mappings":"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","names":["defineInfraProvider","getAndValidateCredentials","buildDaemonEnvVars","defineInfraProvider","getAndValidateCredentials","buildDaemonEnvVars"]}
1
+ {"version":3,"sources":["../src/railway.ts","../src/render.ts","../src/namespace.ts"],"sourcesContent":["/**\n * Railway Infrastructure Provider\n * \n * Provides infrastructure-only methods for creating/destroying Railway services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Railway service instance\n */\nexport interface RailwayInstance {\n serviceId: string;\n projectId: string;\n environmentId: string;\n}\n\n/**\n * Railway provider configuration\n */\nexport interface RailwayConfig {\n /** Railway API key - if not provided, will fallback to RAILWAY_API_KEY environment variable */\n apiKey?: string;\n /** Railway Project ID */\n projectId?: string;\n /** Railway Environment ID - if not provided, will fallback to RAILWAY_ENVIRONMENT_ID environment variable */\n environmentId?: string;\n}\n\n/**\n * Get and validate Railway credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RailwayConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RAILWAY_API_KEY) || '';\n const projectId = config.projectId || (typeof process !== 'undefined' && process.env?.RAILWAY_PROJECT_ID) || '';\n const environmentId = config.environmentId || (typeof process !== 'undefined' && process.env?.RAILWAY_ENVIRONMENT_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Railway API key. Provide apiKey in config or set RAILWAY_API_KEY environment variable.'\n );\n }\n\n if (!projectId) {\n throw new Error(\n 'Missing Railway Project ID. Provide projectId in config or set RAILWAY_PROJECT_ID environment variable.'\n );\n }\n\n if (!environmentId) {\n throw new Error(\n 'Missing Railway Environment ID. Provide environmentId in config or set RAILWAY_ENVIRONMENT_ID environment variable.'\n );\n }\n\n return { apiKey, projectId, environmentId };\n};\n\nconst GRAPHQL_QUERIES = {\n CREATE_SERVICE: `mutation ServiceCreate($input: ServiceCreateInput!) { serviceCreate(input: $input) { id name } }`,\n GET_SERVICE: `query Service($serviceId: String!) { service(id: $serviceId) { id name createdAt } }`,\n LIST_SERVICES: `query Project($projectId: String!) { project(id: $projectId) { services { edges { node { id name createdAt updatedAt } } } } }`,\n DELETE_SERVICE: `mutation ServiceDelete($id: String!) { serviceDelete(id: $id) }`\n};\n\nconst handleGraphQLErrors = (data: any) => {\n if (data.errors) {\n throw new Error(`Railway GraphQL error: ${data.errors.map((e: any) => e.message).join(', ')}`);\n }\n};\n\nexport const fetchRailway = async (\n apiKey: string, \n mutation: any,\n) => {\n const response = await fetch('https://backboard.railway.com/graphql/v2', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify(mutation)\n });\n\n if (!response.ok) {\n throw new Error(`Railway API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n handleGraphQLErrors(data);\n\n return data.data;\n};\n\n/**\n * Convert daemon config to Railway environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Railway infrastructure provider\n * \n * Creates Railway services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const railway = defineInfraProvider<RailwayInstance, RailwayConfig>({\n name: 'railway',\n \n methods: {\n create: async (config: RailwayConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const mutation = {\n query: GRAPHQL_QUERIES.CREATE_SERVICE,\n variables: {\n input: {\n projectId,\n environmentId,\n source: {\n image: options?.image ?? 'computesdk/compute:latest',\n },\n ...(Object.keys(envVars).length > 0 && {\n variables: envVars\n })\n }\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const service = responseData?.serviceCreate;\n \n if (!service) {\n throw new Error('No service returned from Railway API - responseData.serviceCreate is undefined');\n }\n \n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.GET_SERVICE,\n variables: {\n serviceId: instanceId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n \n if (responseData === null) {\n return null;\n }\n \n const service = responseData?.service;\n \n if (!service) {\n throw new Error('Service data is missing from Railway response');\n }\n\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to get Railway instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n \n list: async (config: RailwayConfig) => {\n const { apiKey, projectId, environmentId } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.LIST_SERVICES,\n variables: {\n projectId\n }\n };\n\n const responseData = await fetchRailway(apiKey, mutation);\n const services = responseData?.project?.services?.edges || [];\n \n return services.map((edge: any) => {\n const service = edge.node;\n const instance: RailwayInstance = {\n serviceId: service.id,\n projectId,\n environmentId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Railway instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RailwayConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n const mutation = {\n query: GRAPHQL_QUERIES.DELETE_SERVICE,\n variables: {\n id: instanceId\n }\n };\n\n await fetchRailway(apiKey, mutation);\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Railway destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Render Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Render services.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Render service instance\n */\nexport interface RenderInstance {\n serviceId: string;\n ownerId: string;\n}\n\n/**\n * Render provider configuration\n */\nexport interface RenderConfig {\n /** Render API key - if not provided, will fallback to RENDER_API_KEY environment variable */\n apiKey?: string;\n /** Render Owner ID - if not provided, will fallback to RENDER_OWNER_ID environment variable */\n ownerId?: string;\n}\n\n/**\n * Get and validate Render credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: RenderConfig) => {\n const apiKey = config.apiKey || (typeof process !== 'undefined' && process.env?.RENDER_API_KEY) || '';\n const ownerId = config.ownerId || (typeof process !== 'undefined' && process.env?.RENDER_OWNER_ID) || '';\n\n if (!apiKey) {\n throw new Error(\n 'Missing Render API key. Provide apiKey in config or set RENDER_API_KEY environment variable.'\n );\n }\n\n if (!ownerId) {\n throw new Error(\n 'Missing Render Owner ID. Provide ownerId in config or set RENDER_OWNER_ID environment variable.'\n );\n }\n\n return { apiKey, ownerId };\n};\n\nexport const fetchRender = async (\n apiKey: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const url = `https://api.render.com/v1${endpoint}`;\n const requestOptions = {\n method: 'GET',\n ...options,\n headers: {\n 'Accept': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n ...(options.headers || {})\n }\n };\n\n const response = await fetch(url, requestOptions);\n\n if (!response.ok) {\n throw new Error(`Render API error: ${response.status} ${response.statusText}`);\n }\n\n // Handle 204 No Content responses (like DELETE operations)\n if (response.status === 204) {\n return {};\n }\n\n return response.json();\n};\n\n/**\n * Convert daemon config to Render environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Render infrastructure provider\n *\n * Creates Render services with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const render = defineInfraProvider<RenderInstance, RenderConfig>({\n name: 'render',\n\n methods: {\n create: async (config: RenderConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n const envVarsList = Object.entries(envVars).map(([key, value]) => ({\n key,\n value\n }));\n\n // Create service with env vars at top level (not inside serviceDetails)\n const createServiceData = {\n type: 'web_service',\n autoDeploy: 'yes',\n image: {\n ownerId: ownerId,\n imagePath: options?.image ?? 'computesdk/compute:latest'\n },\n serviceDetails: {\n runtime: 'image',\n pullRequestPreviewsEnabled: 'no'\n },\n ...(envVarsList.length > 0 && { envVars: envVarsList }),\n ownerId: ownerId,\n name: `computesdk-${Date.now()}`\n };\n\n const responseData = await fetchRender(apiKey, '/services', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(createServiceData)\n });\n\n if (!responseData) {\n throw new Error('No service returned from Render API - responseData is undefined');\n }\n\n // Render API returns { service: { id: \"...\", ... }, deployId: \"...\" }\n const service = responseData.service;\n if (!service) {\n throw new Error('No service returned from Render API - responseData.service is undefined');\n }\n\n if (!service.id) {\n throw new Error(`Service ID is undefined. Full service object: ${JSON.stringify(service, null, 2)}`);\n }\n\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n } catch (error) {\n throw new Error(\n `Failed to create Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: RenderConfig, instanceId: string) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, `/services/${instanceId}`);\n\n if (!responseData.id) {\n throw new Error('Service data is missing from Render response');\n }\n\n const instance: RenderInstance = {\n serviceId: responseData.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: responseData.id\n };\n } catch (error) {\n // If it's a 404, return null to indicate service not found\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n throw new Error(\n `Failed to get Render instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: RenderConfig) => {\n const { apiKey, ownerId } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchRender(apiKey, '/services?includePreviews=true');\n\n // Extract services from the array response - each item has a \"service\" property\n const items = responseData || [];\n\n return items.map((item: any) => {\n const service = item.service;\n const instance: RenderInstance = {\n serviceId: service.id,\n ownerId,\n };\n\n return {\n instance,\n instanceId: service.id\n };\n });\n } catch (error) {\n throw new Error(\n `Failed to list Render instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: RenderConfig, instanceId: string) => {\n const { apiKey } = getAndValidateCredentials(config);\n\n try {\n await fetchRender(apiKey, `/services/${instanceId}`, {\n method: 'DELETE'\n });\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Render destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n","/**\n * Namespace Infrastructure Provider\n *\n * Provides infrastructure-only methods for creating/destroying Namespace instances.\n * Used by the gateway server to provision compute resources with daemon pre-installed.\n */\n\nimport { defineInfraProvider } from '@computesdk/provider';\nimport type { DaemonConfig, CreateSandboxOptions } from '@computesdk/provider';\n\n/**\n * Namespace service instance\n */\nexport interface NamespaceInstance {\n instanceId: string;\n name: string;\n}\n\n/**\n * Namespace provider configuration\n */\nexport interface NamespaceConfig {\n /** Namespace API token - if not provided, will fallback to NSC_TOKEN environment variable */\n token?: string;\n /** Virtual CPU cores for the instance */\n virtualCpu?: number;\n /** Memory in megabytes for the instance */\n memoryMegabytes?: number;\n /** Machine architecture (default: amd64) */\n machineArch?: string;\n /** Operating system (default: linux) */\n os?: string;\n /** Documented purpose for the instance */\n documentedPurpose?: string;\n /** Reason for destroying instances (default: \"ComputeSDK cleanup\") */\n destroyReason?: string;\n}\n\nconst API_ENDPOINTS = {\n CREATE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/CreateInstance',\n DESCRIBE_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DescribeInstance',\n LIST_INSTANCES: '/namespace.cloud.compute.v1beta.ComputeService/ListInstances',\n DESTROY_INSTANCE: '/namespace.cloud.compute.v1beta.ComputeService/DestroyInstance'\n};\n\n/**\n * Get and validate Namespace credentials from config and environment\n */\nexport const getAndValidateCredentials = (config: NamespaceConfig) => {\n const token = config.token || (typeof process !== 'undefined' && process.env?.NSC_TOKEN) || '';\n\n if (!token) {\n throw new Error(\n 'Missing Namespace token. Provide token in config or set NSC_TOKEN environment variable.'\n );\n }\n\n return { token };\n};\n\nconst handleApiErrors = (response: any) => {\n if (response.error) {\n throw new Error(`Namespace API error: ${response.error}`);\n }\n};\n\nexport const fetchNamespace = async (\n token: string,\n endpoint: string,\n options: RequestInit = {}\n) => {\n const response = await fetch(`https://us.compute.namespaceapis.com${endpoint}`, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n ...options.headers\n }\n });\n\n if (!response.ok) {\n throw new Error(`Namespace API error: ${response.status} ${response.statusText}`);\n }\n\n const data = await response.json();\n\n // Standard error handling for all operations\n handleApiErrors(data);\n\n return data;\n};\n\n/**\n * Convert daemon config to Namespace environment variables\n */\nfunction buildDaemonEnvVars(daemonConfig?: DaemonConfig): Record<string, string> {\n if (!daemonConfig) {\n return {};\n }\n\n return {\n COMPUTESDK_ACCESS_TOKEN: daemonConfig.accessToken,\n ...(daemonConfig.gatewayUrl && { COMPUTESDK_GATEWAY_URL: daemonConfig.gatewayUrl }),\n ...daemonConfig.env,\n };\n}\n\n/**\n * Namespace infrastructure provider\n *\n * Creates Namespace instances with ComputeSDK daemon pre-installed via Docker image.\n */\nexport const namespace = defineInfraProvider<NamespaceInstance, NamespaceConfig>({\n name: 'namespace',\n\n methods: {\n create: async (config: NamespaceConfig, options?: CreateSandboxOptions & { daemonConfig?: DaemonConfig }) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n // Build environment variables for daemon\n const envVars = buildDaemonEnvVars(options?.daemonConfig);\n\n const requestBody = {\n shape: {\n virtual_cpu: config.virtualCpu || 2,\n memory_megabytes: config.memoryMegabytes || 4096,\n machine_arch: config.machineArch || 'amd64',\n os: config.os || 'linux'\n },\n containers: [{\n name: 'main-container',\n image_ref: options?.image ?? 'computesdk/compute:latest',\n args: ['sleep', '300'],\n ...(Object.keys(envVars).length > 0 && {\n environment: envVars\n })\n }],\n documented_purpose: config.documentedPurpose || 'ComputeSDK sandbox'\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.CREATE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error(`Instance ID is undefined. Full response object: ${JSON.stringify(responseData, null, 2)}`);\n }\n\n const instanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${instanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId\n };\n } catch (error) {\n throw new Error(\n `Failed to create Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n getById: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId\n };\n\n const responseData = await fetchNamespace(token, API_ENDPOINTS.DESCRIBE_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n // Extract instance ID from the Namespace API response structure\n if (!responseData.metadata?.instanceId) {\n throw new Error('Instance data is missing from Namespace response');\n }\n\n const namespaceInstanceId = responseData.metadata.instanceId;\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n } catch (error) {\n // Handle 404 errors by returning null (instance not found)\n if (error instanceof Error && error.message.includes('404')) {\n return null;\n }\n\n throw new Error(\n `Failed to get Namespace instance: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n list: async (config: NamespaceConfig) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const responseData = await fetchNamespace(token, API_ENDPOINTS.LIST_INSTANCES, {\n method: 'POST',\n body: JSON.stringify({})\n });\n\n // Extract instances from the response\n const instances = responseData?.instances || [];\n\n // Transform each instance into the expected format\n return instances.map((instanceData: any) => {\n // For list response, instanceId is directly in the instance object, not in metadata\n const namespaceInstanceId = instanceData.instanceId || instanceData.metadata?.instanceId;\n if (!namespaceInstanceId) {\n console.warn('Instance missing instanceId:', instanceData);\n return null;\n }\n\n const instanceName = `instance-${namespaceInstanceId}`;\n\n const instance: NamespaceInstance = {\n instanceId: namespaceInstanceId,\n name: instanceName,\n };\n\n return {\n instance,\n instanceId: namespaceInstanceId\n };\n }).filter(Boolean);\n } catch (error) {\n throw new Error(\n `Failed to list Namespace instances: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n },\n\n destroy: async (config: NamespaceConfig, instanceId: string) => {\n const { token } = getAndValidateCredentials(config);\n\n try {\n const requestBody = {\n instance_id: instanceId,\n reason: config.destroyReason || \"ComputeSDK cleanup\"\n };\n\n const data = await fetchNamespace(token, API_ENDPOINTS.DESTROY_INSTANCE, {\n method: 'POST',\n body: JSON.stringify(requestBody)\n });\n\n if (data.error) {\n // Log errors but don't throw for destroy operations\n console.warn(`Namespace destroy warning: ${data.error}`);\n }\n } catch (error) {\n // For destroy operations, we log warnings rather than throwing\n // since the resource may already be gone\n console.warn(`Namespace destroy warning: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n },\n});\n"],"mappings":"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","names":["defineInfraProvider","getAndValidateCredentials","buildDaemonEnvVars","defineInfraProvider","getAndValidateCredentials","buildDaemonEnvVars"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@computesdk/gateway",
3
- "version": "0.3.8",
3
+ "version": "0.3.11",
4
4
  "description": "Infrastructure provider implementations for ComputeSDK gateway server",
5
5
  "author": "ComputeSDK Team",
6
6
  "license": "MIT",
@@ -18,7 +18,7 @@
18
18
  "dist"
19
19
  ],
20
20
  "dependencies": {
21
- "@computesdk/provider": "1.0.22"
21
+ "@computesdk/provider": "1.0.25"
22
22
  },
23
23
  "keywords": [
24
24
  "computesdk",