@amigo-ai/platform-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +330 -0
  3. package/dist/core/auth.js +32 -0
  4. package/dist/core/auth.js.map +1 -0
  5. package/dist/core/branded-types.js +22 -0
  6. package/dist/core/branded-types.js.map +1 -0
  7. package/dist/core/errors.js +168 -0
  8. package/dist/core/errors.js.map +1 -0
  9. package/dist/core/openapi-client.js +66 -0
  10. package/dist/core/openapi-client.js.map +1 -0
  11. package/dist/core/retry.js +48 -0
  12. package/dist/core/retry.js.map +1 -0
  13. package/dist/core/utils.js +35 -0
  14. package/dist/core/utils.js.map +1 -0
  15. package/dist/index.cjs +1005 -0
  16. package/dist/index.cjs.map +7 -0
  17. package/dist/index.js +111 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/index.mjs +982 -0
  20. package/dist/index.mjs.map +7 -0
  21. package/dist/resources/agents.js +49 -0
  22. package/dist/resources/agents.js.map +1 -0
  23. package/dist/resources/analytics.js +54 -0
  24. package/dist/resources/analytics.js.map +1 -0
  25. package/dist/resources/api-keys.js +45 -0
  26. package/dist/resources/api-keys.js.map +1 -0
  27. package/dist/resources/base.js +50 -0
  28. package/dist/resources/base.js.map +1 -0
  29. package/dist/resources/billing.js +15 -0
  30. package/dist/resources/billing.js.map +1 -0
  31. package/dist/resources/calls.js +28 -0
  32. package/dist/resources/calls.js.map +1 -0
  33. package/dist/resources/context-graphs.js +44 -0
  34. package/dist/resources/context-graphs.js.map +1 -0
  35. package/dist/resources/data-sources.js +29 -0
  36. package/dist/resources/data-sources.js.map +1 -0
  37. package/dist/resources/integrations.js +45 -0
  38. package/dist/resources/integrations.js.map +1 -0
  39. package/dist/resources/memory.js +31 -0
  40. package/dist/resources/memory.js.map +1 -0
  41. package/dist/resources/phone-numbers.js +38 -0
  42. package/dist/resources/phone-numbers.js.map +1 -0
  43. package/dist/resources/services.js +30 -0
  44. package/dist/resources/services.js.map +1 -0
  45. package/dist/resources/settings.js +47 -0
  46. package/dist/resources/settings.js.map +1 -0
  47. package/dist/resources/simulations.js +50 -0
  48. package/dist/resources/simulations.js.map +1 -0
  49. package/dist/resources/skills.js +44 -0
  50. package/dist/resources/skills.js.map +1 -0
  51. package/dist/resources/workspaces.js +57 -0
  52. package/dist/resources/workspaces.js.map +1 -0
  53. package/dist/resources/world.js +131 -0
  54. package/dist/resources/world.js.map +1 -0
  55. package/dist/types/api.js +12 -0
  56. package/dist/types/api.js.map +1 -0
  57. package/dist/types/core/auth.d.ts +20 -0
  58. package/dist/types/core/auth.d.ts.map +1 -0
  59. package/dist/types/core/branded-types.d.ts +50 -0
  60. package/dist/types/core/branded-types.d.ts.map +1 -0
  61. package/dist/types/core/errors.d.ts +76 -0
  62. package/dist/types/core/errors.d.ts.map +1 -0
  63. package/dist/types/core/openapi-client.d.ts +14 -0
  64. package/dist/types/core/openapi-client.d.ts.map +1 -0
  65. package/dist/types/core/retry.d.ts +21 -0
  66. package/dist/types/core/retry.d.ts.map +1 -0
  67. package/dist/types/core/utils.d.ts +39 -0
  68. package/dist/types/core/utils.d.ts.map +1 -0
  69. package/dist/types/index.d.ts +114 -0
  70. package/dist/types/index.d.ts.map +1 -0
  71. package/dist/types/resources/agents.d.ts +32 -0
  72. package/dist/types/resources/agents.d.ts.map +1 -0
  73. package/dist/types/resources/analytics.d.ts +146 -0
  74. package/dist/types/resources/analytics.d.ts.map +1 -0
  75. package/dist/types/resources/api-keys.d.ts +28 -0
  76. package/dist/types/resources/api-keys.d.ts.map +1 -0
  77. package/dist/types/resources/base.d.ts +18 -0
  78. package/dist/types/resources/base.d.ts.map +1 -0
  79. package/dist/types/resources/billing.d.ts +19 -0
  80. package/dist/types/resources/billing.d.ts.map +1 -0
  81. package/dist/types/resources/calls.d.ts +50 -0
  82. package/dist/types/resources/calls.d.ts.map +1 -0
  83. package/dist/types/resources/context-graphs.d.ts +32 -0
  84. package/dist/types/resources/context-graphs.d.ts.map +1 -0
  85. package/dist/types/resources/data-sources.d.ts +24 -0
  86. package/dist/types/resources/data-sources.d.ts.map +1 -0
  87. package/dist/types/resources/integrations.d.ts +38 -0
  88. package/dist/types/resources/integrations.d.ts.map +1 -0
  89. package/dist/types/resources/memory.d.ts +99 -0
  90. package/dist/types/resources/memory.d.ts.map +1 -0
  91. package/dist/types/resources/phone-numbers.d.ts +26 -0
  92. package/dist/types/resources/phone-numbers.d.ts.map +1 -0
  93. package/dist/types/resources/services.d.ts +21 -0
  94. package/dist/types/resources/services.d.ts.map +1 -0
  95. package/dist/types/resources/settings.d.ts +102 -0
  96. package/dist/types/resources/settings.d.ts.map +1 -0
  97. package/dist/types/resources/simulations.d.ts +39 -0
  98. package/dist/types/resources/simulations.d.ts.map +1 -0
  99. package/dist/types/resources/skills.d.ts +31 -0
  100. package/dist/types/resources/skills.d.ts.map +1 -0
  101. package/dist/types/resources/workspaces.d.ts +28 -0
  102. package/dist/types/resources/workspaces.d.ts.map +1 -0
  103. package/dist/types/resources/world.d.ts +177 -0
  104. package/dist/types/resources/world.d.ts.map +1 -0
  105. package/dist/types/types/api.d.ts +739 -0
  106. package/dist/types/types/api.d.ts.map +1 -0
  107. package/package.json +82 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/core/errors.ts", "../src/resources/base.ts", "../src/resources/workspaces.ts", "../src/resources/api-keys.ts", "../src/resources/agents.ts", "../src/resources/skills.ts", "../src/resources/services.ts", "../src/resources/context-graphs.ts", "../src/resources/data-sources.ts", "../src/resources/world.ts", "../src/resources/calls.ts", "../src/resources/phone-numbers.ts", "../src/resources/integrations.ts", "../src/resources/analytics.ts", "../src/resources/simulations.ts", "../src/resources/settings.ts", "../src/resources/billing.ts", "../src/resources/memory.ts", "../src/core/branded-types.ts", "../src/core/utils.ts"],
4
+ "sourcesContent": ["/**\n * @amigo-ai/platform-sdk\n *\n * Official TypeScript SDK for the Amigo Platform API.\n *\n * @example\n * ```typescript\n * import { AmigoClient } from '@amigo-ai/platform-sdk'\n *\n * const client = new AmigoClient({\n * apiKey: 'your-api-key',\n * workspaceId: 'your-workspace-id',\n * })\n *\n * const agents = await client.agents.list()\n * console.log(agents.items)\n * ```\n */\n\nimport { ConfigurationError } from './core/errors.js'\nimport type { RetryOptions } from './core/retry.js'\nimport { WorkspacesResource } from './resources/workspaces.js'\nimport { ApiKeysResource } from './resources/api-keys.js'\nimport { AgentsResource } from './resources/agents.js'\nimport { SkillsResource } from './resources/skills.js'\nimport { ServicesResource } from './resources/services.js'\nimport { ContextGraphsResource } from './resources/context-graphs.js'\nimport { DataSourcesResource } from './resources/data-sources.js'\nimport { WorldResource } from './resources/world.js'\nimport { CallsResource } from './resources/calls.js'\nimport { PhoneNumbersResource } from './resources/phone-numbers.js'\nimport { IntegrationsResource } from './resources/integrations.js'\nimport { AnalyticsResource } from './resources/analytics.js'\nimport { SimulationsResource } from './resources/simulations.js'\nimport { SettingsResource } from './resources/settings.js'\nimport { BillingResource } from './resources/billing.js'\nimport { MemoryResource } from './resources/memory.js'\n\nexport const DEFAULT_BASE_URL = 'https://api.platform.amigo.ai'\n\nexport interface AmigoClientConfig {\n /**\n * Your Amigo Platform API key.\n * Create one at: Platform > Workspace Settings > API Keys\n */\n apiKey: string\n\n /**\n * Your workspace ID. All resource operations are scoped to this workspace.\n */\n workspaceId: string\n\n /**\n * Override the base URL. Defaults to https://api.platform.amigo.ai\n * Useful for pointing at a staging environment.\n */\n baseUrl?: string\n\n /**\n * Retry configuration for failed requests.\n * Applies exponential backoff with full jitter.\n */\n retry?: RetryOptions\n}\n\n/**\n * The main entry point for the Amigo Platform SDK.\n *\n * Instantiate once and reuse across your application.\n */\nexport class AmigoClient {\n /** Workspace management */\n readonly workspaces: WorkspacesResource\n\n /** API key management */\n readonly apiKeys: ApiKeysResource\n\n /** Agent management \u2014 AI agents that handle calls */\n readonly agents: AgentsResource\n\n /** Skill management \u2014 reusable AI capabilities */\n readonly skills: SkillsResource\n\n /** Service management \u2014 external service configurations */\n readonly services: ServicesResource\n\n /** Context graph management \u2014 conversation flow structures */\n readonly contextGraphs: ContextGraphsResource\n\n /** Data source management \u2014 external data connections */\n readonly dataSources: DataSourcesResource\n\n /** World model \u2014 entities, events, and timelines */\n readonly world: WorldResource\n\n /** Call records and intelligence */\n readonly calls: CallsResource\n\n /** Phone number provisioning and management */\n readonly phoneNumbers: PhoneNumbersResource\n\n /** Integration management \u2014 EHR, CRM, and other external systems */\n readonly integrations: IntegrationsResource\n\n /** Analytics \u2014 aggregate metrics about calls and conversions */\n readonly analytics: AnalyticsResource\n\n /** Simulation runs and interactive testing sessions */\n readonly simulations: SimulationsResource\n\n /** Workspace-level settings (voice, branding, security, outreach, etc.) */\n readonly settings: SettingsResource\n\n /** Billing \u2014 usage summaries and invoices */\n readonly billing: BillingResource\n\n /** Agent Memory \u2014 structured long-term memory for entities */\n readonly memory: MemoryResource\n\n constructor(config: AmigoClientConfig) {\n if (!config.apiKey || typeof config.apiKey !== 'string') {\n throw new ConfigurationError('apiKey is required and must be a non-empty string')\n }\n if (!config.workspaceId || typeof config.workspaceId !== 'string') {\n throw new ConfigurationError('workspaceId is required and must be a non-empty string')\n }\n\n const baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n\n const rc = {\n apiKey: config.apiKey,\n baseUrl,\n workspaceId: config.workspaceId,\n }\n\n this.workspaces = new WorkspacesResource({ apiKey: config.apiKey, baseUrl })\n this.apiKeys = new ApiKeysResource(rc)\n this.agents = new AgentsResource(rc)\n this.skills = new SkillsResource(rc)\n this.services = new ServicesResource(rc)\n this.contextGraphs = new ContextGraphsResource(rc)\n this.dataSources = new DataSourcesResource(rc)\n this.world = new WorldResource(rc)\n this.calls = new CallsResource(rc)\n this.phoneNumbers = new PhoneNumbersResource(rc)\n this.integrations = new IntegrationsResource(rc)\n this.analytics = new AnalyticsResource(rc)\n this.simulations = new SimulationsResource(rc)\n this.settings = new SettingsResource(rc)\n this.billing = new BillingResource(rc)\n this.memory = new MemoryResource(rc)\n }\n}\n\n// --- Public exports ---\n\nexport type { AmigoClientConfig as AmigoConfig }\n\n// Errors\nexport {\n AmigoError,\n BadRequestError,\n AuthenticationError,\n PermissionError,\n NotFoundError,\n ConflictError,\n ValidationError,\n RateLimitError,\n ServerError,\n ServiceUnavailableError,\n NetworkError,\n ParseError,\n ConfigurationError,\n isAmigoError,\n isNotFoundError,\n isRateLimitError,\n isAuthenticationError,\n} from './core/errors.js'\n\n// Branded types\nexport type {\n WorkspaceId,\n ApiKeyId,\n AgentId,\n SkillId,\n ServiceId,\n ContextGraphId,\n CallId,\n PhoneNumberId,\n IntegrationId,\n EntityId,\n EventId,\n SimulationRunId,\n SimulationSessionId,\n DataSourceId,\n} from './core/branded-types.js'\n\nexport {\n workspaceId,\n apiKeyId,\n agentId,\n skillId,\n serviceId,\n contextGraphId,\n callId,\n phoneNumberId,\n integrationId,\n entityId,\n eventId,\n simulationRunId,\n simulationSessionId,\n dataSourceId,\n} from './core/branded-types.js'\n\n// Utilities\nexport { paginate } from './core/utils.js'\nexport type { PaginatedList, ListParams } from './core/utils.js'\nexport type { RetryOptions } from './core/retry.js'\n\n// Resource-specific types\nexport type {\n VoiceSettings,\n BrandingSettings,\n BrandingConfig,\n OutreachSettings,\n OutreachRule,\n MemorySettings,\n MemoryDimensionConfig,\n SecuritySettings,\n RetentionSettings,\n WorkflowSettings,\n WorkflowConfig,\n} from './resources/settings.js'\n\nexport type { UpdateDataSourceRequest } from './resources/data-sources.js'\n\nexport type {\n ContextGraphVersion,\n} from './resources/context-graphs.js'\n\nexport type {\n EntityRelationship,\n EntityGraph,\n EntityProvenance,\n EntityLineage,\n SyncEvent,\n SyncStatusBySink,\n SourceBreakdown,\n EntityStats,\n SearchEntitiesParams,\n} from './resources/world.js'\n\nexport type {\n SimulationIntelligence,\n} from './resources/simulations.js'\n\nexport type {\n CallDetail,\n CallIntelligence,\n CallTranscriptSegment,\n CallBenchmarks,\n} from './resources/calls.js'\n\nexport type {\n MetricWithDelta,\n AnalyticsDashboard,\n CallAnalytics,\n AgentAnalytics,\n AgentAnalyticsResponse,\n CallQualityMetrics,\n EmotionTrends,\n LatencyMetrics,\n ToolPerformance,\n DataQualityMetrics,\n AdvancedCallStats,\n CallComparison,\n AnalyticsQueryParams,\n} from './resources/analytics.js'\n\nexport type {\n DimensionScore,\n EntityDimensionsResponse,\n MemoryFact,\n EntityFactsResponse,\n DimensionAnalytics,\n MemoryAnalyticsResponse,\n} from './resources/memory.js'\n\n// API types\nexport type {\n Workspace,\n CreateWorkspaceRequest,\n UpdateWorkspaceRequest,\n ApiKey,\n ApiKeyRole,\n CreateApiKeyRequest,\n CreateApiKeyResponse,\n RotateApiKeyResponse,\n AuthMeResponse,\n Agent,\n AgentVersion,\n AgentIdentity,\n AgentVoiceConfig,\n CreateAgentRequest,\n UpdateAgentRequest,\n CreateAgentVersionRequest,\n Skill,\n ExecutionTier,\n CreateSkillRequest,\n UpdateSkillRequest,\n SkillTestRequest,\n SkillTestResponse,\n Service,\n CreateServiceRequest,\n UpdateServiceRequest,\n ContextGraph,\n CreateContextGraphRequest,\n UpdateContextGraphRequest,\n DataSource,\n CreateDataSourceRequest,\n Entity,\n EntityType,\n WorldEvent,\n TimelineEntry,\n CreateEntityRequest,\n UpdateEntityRequest,\n EmitEventRequest,\n MergeEntitiesRequest,\n Call,\n CallDirection,\n ListCallsParams,\n PhoneNumber,\n PhoneNumberForwarding,\n ProvisionPhoneNumberRequest,\n UpdatePhoneNumberRequest,\n Integration,\n IntegrationEndpoint,\n CreateIntegrationRequest,\n UpdateIntegrationRequest,\n AgentPerformance,\n UsageMeter,\n ServiceVersionSet,\n ServiceTag,\n ServiceVoiceConfig,\n SimulationSession,\n SimulationSnapshot,\n SimulationStepResponse,\n SimulationStepObservation,\n CreateSimulationSessionRequest,\n UsageSummary,\n Invoice,\n PaginatedResponse,\n} from './types/api.js'\n", "/**\n * Error hierarchy for the Amigo Platform SDK.\n * All errors extend AmigoError which can be caught with a single catch.\n */\n\nexport interface ErrorContext {\n statusCode?: number\n errorCode?: string\n requestId?: string\n detail?: string\n}\n\n/** Base class for all Amigo Platform SDK errors */\nexport class AmigoError extends Error {\n readonly statusCode?: number\n readonly errorCode?: string\n readonly requestId?: string\n readonly detail?: string\n\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message)\n this.name = this.constructor.name\n this.statusCode = ctx.statusCode\n this.errorCode = ctx.errorCode\n this.requestId = ctx.requestId\n this.detail = ctx.detail\n // Maintain proper prototype chain\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\n/** 400 Bad Request */\nexport class BadRequestError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 400 })\n }\n}\n\n/** 401 Unauthorized \u2014 invalid or missing API key */\nexport class AuthenticationError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 401 })\n }\n}\n\n/** 403 Forbidden \u2014 insufficient permissions */\nexport class PermissionError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 403 })\n }\n}\n\n/** 404 Not Found */\nexport class NotFoundError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 404 })\n }\n}\n\n/** 409 Conflict \u2014 duplicate slug or resource version conflict */\nexport class ConflictError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 409 })\n }\n}\n\n/** 422 Unprocessable Entity \u2014 validation failure */\nexport class ValidationError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 422 })\n }\n}\n\n/** 429 Too Many Requests */\nexport class RateLimitError extends AmigoError {\n readonly retryAfter?: number\n\n constructor(message: string, ctx: ErrorContext & { retryAfter?: number } = {}) {\n super(message, { ...ctx, statusCode: 429 })\n this.retryAfter = ctx.retryAfter\n }\n}\n\n/** 5xx Server Error */\nexport class ServerError extends AmigoError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: ctx.statusCode ?? 500 })\n }\n}\n\n/** 503 Service Unavailable */\nexport class ServiceUnavailableError extends ServerError {\n constructor(message: string, ctx: ErrorContext = {}) {\n super(message, { ...ctx, statusCode: 503 })\n }\n}\n\n/** Network or fetch failure (no HTTP status available) */\nexport class NetworkError extends AmigoError {\n constructor(message: string, cause?: unknown) {\n super(message)\n if (cause !== undefined) {\n ;(this as AmigoError & { cause: unknown }).cause = cause\n }\n }\n}\n\n/** Failed to parse response body */\nexport class ParseError extends AmigoError {\n readonly body?: string\n\n constructor(message: string, body?: string) {\n super(message)\n this.body = body\n }\n}\n\n/** SDK misconfiguration */\nexport class ConfigurationError extends AmigoError {\n constructor(message: string) {\n super(message)\n }\n}\n\n// --- Factory ---\n\ninterface ApiErrorBody {\n message?: string\n detail?: string\n error_code?: string\n request_id?: string\n}\n\nexport async function createApiError(response: Response): Promise<AmigoError> {\n let body: ApiErrorBody = {}\n let rawBody: string | undefined\n try {\n rawBody = await response.text()\n body = JSON.parse(rawBody) as ApiErrorBody\n } catch {\n // ignore parse failure\n }\n\n const ctx: ErrorContext = {\n statusCode: response.status,\n errorCode: body.error_code,\n requestId: body.request_id,\n detail: body.detail,\n }\n const message = body.message ?? body.detail ?? response.statusText ?? `HTTP ${response.status}`\n\n switch (response.status) {\n case 400:\n return new BadRequestError(message, ctx)\n case 401:\n return new AuthenticationError(message, ctx)\n case 403:\n return new PermissionError(message, ctx)\n case 404:\n return new NotFoundError(message, ctx)\n case 409:\n return new ConflictError(message, ctx)\n case 422:\n return new ValidationError(message, ctx)\n case 429: {\n const retryAfter = parseRetryAfter(response)\n return new RateLimitError(message, { ...ctx, retryAfter })\n }\n case 503:\n return new ServiceUnavailableError(message, ctx)\n default:\n return new ServerError(message, ctx)\n }\n}\n\nfunction parseRetryAfter(response: Response): number | undefined {\n const header = response.headers.get('Retry-After')\n if (!header) return undefined\n const seconds = Number(header)\n if (!isNaN(seconds)) return seconds\n const date = new Date(header)\n if (!isNaN(date.getTime())) {\n return Math.max(0, Math.ceil((date.getTime() - Date.now()) / 1000))\n }\n return undefined\n}\n\n// --- Type guards ---\n\nexport function isAmigoError(err: unknown): err is AmigoError {\n return err instanceof AmigoError\n}\n\nexport function isNotFoundError(err: unknown): err is NotFoundError {\n return err instanceof NotFoundError\n}\n\nexport function isRateLimitError(err: unknown): err is RateLimitError {\n return err instanceof RateLimitError\n}\n\nexport function isAuthenticationError(err: unknown): err is AuthenticationError {\n return err instanceof AuthenticationError\n}\n", "/**\n * Base class for all workspace-scoped resources.\n * Handles URL construction, auth headers, and error conversion.\n */\n\nimport { createApiError } from '../core/errors.js'\n\nexport interface ResourceConfig {\n apiKey: string\n baseUrl: string\n workspaceId: string\n}\n\nexport abstract class WorkspaceScopedResource {\n constructor(protected readonly config: ResourceConfig) {}\n\n protected get headers(): Record<string, string> {\n return {\n Authorization: `Bearer ${this.config.apiKey}`,\n 'Content-Type': 'application/json',\n }\n }\n\n protected workspaceUrl(path: string): string {\n return `${this.config.baseUrl}/v1/${this.config.workspaceId}${path}`\n }\n\n protected async fetch<T>(path: string, init: RequestInit = {}): Promise<T> {\n const url = this.workspaceUrl(path)\n const response = await globalThis.fetch(url, {\n ...init,\n headers: {\n ...this.headers,\n ...(init.headers as Record<string, string> | undefined),\n },\n })\n if (!response.ok) {\n throw await createApiError(response)\n }\n if (response.status === 204) return undefined as T\n return response.json() as Promise<T>\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function buildQuery(params?: any): string {\n if (!params) return ''\n const entries = (Object.entries(params as Record<string, unknown>) as [string, unknown][]).filter(\n ([, v]) => v !== undefined && v !== null,\n )\n if (entries.length === 0) return ''\n const searchParams = new URLSearchParams()\n for (const [k, v] of entries) {\n searchParams.set(k, String(v))\n }\n return '?' + searchParams.toString()\n}\n", "import type {\n Workspace,\n CreateWorkspaceRequest,\n UpdateWorkspaceRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { WorkspaceId } from '../core/branded-types.js'\nimport { createApiError } from '../core/errors.js'\nimport { buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface WorkspacesConfig {\n apiKey: string\n baseUrl: string\n}\n\n/**\n * Manage Amigo Platform workspaces.\n * Workspaces are the top-level tenancy boundary for all resources.\n */\nexport class WorkspacesResource {\n constructor(private readonly config: WorkspacesConfig) {}\n\n private get headers(): Record<string, string> {\n return {\n Authorization: `Bearer ${this.config.apiKey}`,\n 'Content-Type': 'application/json',\n }\n }\n\n private async request<T>(path: string, init: RequestInit = {}): Promise<T> {\n const url = `${this.config.baseUrl}/v1/workspaces${path}`\n const response = await globalThis.fetch(url, {\n ...init,\n headers: { ...this.headers, ...(init.headers as Record<string, string> | undefined) },\n })\n if (!response.ok) throw await createApiError(response)\n if (response.status === 204) return undefined as T\n return response.json() as Promise<T>\n }\n\n /** Create a new workspace */\n async create(body: CreateWorkspaceRequest): Promise<Workspace> {\n return this.request<Workspace>('', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List workspaces accessible to the current API key */\n async list(params?: ListParams): Promise<PaginatedResponse<Workspace>> {\n return this.request<PaginatedResponse<Workspace>>(buildQuery(params))\n }\n\n /** Get a single workspace by ID */\n async get(id: WorkspaceId | string): Promise<Workspace> {\n return this.request<Workspace>(`/${id}`)\n }\n\n /** Update workspace metadata */\n async update(id: WorkspaceId | string, body: UpdateWorkspaceRequest): Promise<Workspace> {\n return this.request<Workspace>(`/${id}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n /** Archive (soft-delete) a workspace */\n async delete(id: WorkspaceId | string): Promise<void> {\n return this.request<void>(`/${id}`, { method: 'DELETE' })\n }\n}\n", "import type {\n ApiKey,\n CreateApiKeyRequest,\n CreateApiKeyResponse,\n RotateApiKeyResponse,\n AuthMeResponse,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { ApiKeyId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\nimport { createApiError } from '../core/errors.js'\n\n/**\n * Manage API keys for a workspace.\n *\n * API keys are used to authenticate SDK/API requests. Each key has a role\n * and a set of permissions. Keys expire after 1-90 days.\n */\nexport class ApiKeysResource extends WorkspaceScopedResource {\n /**\n * Get info about the currently authenticated API key.\n * Does not require a workspace ID in the path.\n */\n async me(): Promise<AuthMeResponse> {\n const url = `${this.config.baseUrl}/v1/auth/me`\n const response = await globalThis.fetch(url, { headers: this.headers })\n if (!response.ok) throw await createApiError(response)\n return response.json() as Promise<AuthMeResponse>\n }\n\n /** Create a new API key */\n async create(body: CreateApiKeyRequest): Promise<CreateApiKeyResponse> {\n return this.fetch<CreateApiKeyResponse>('/api-keys', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List API keys in the workspace */\n async list(params?: ListParams): Promise<PaginatedResponse<ApiKey>> {\n return this.fetch<PaginatedResponse<ApiKey>>(`/api-keys${buildQuery(params)}`)\n }\n\n /** Get a specific API key */\n async get(keyId: ApiKeyId | string): Promise<ApiKey> {\n return this.fetch<ApiKey>(`/api-keys/${keyId}`)\n }\n\n /** Revoke an API key */\n async revoke(keyId: ApiKeyId | string): Promise<void> {\n return this.fetch<void>(`/api-keys/${keyId}`, { method: 'DELETE' })\n }\n\n /** Rotate an API key \u2014 invalidates the old key and issues a new one */\n async rotate(keyId: ApiKeyId | string): Promise<RotateApiKeyResponse> {\n return this.fetch<RotateApiKeyResponse>(`/api-keys/${keyId}/rotate`, { method: 'POST' })\n }\n}\n", "import type {\n Agent,\n AgentVersion,\n CreateAgentRequest,\n UpdateAgentRequest,\n CreateAgentVersionRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { AgentId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListAgentsParams extends ListParams {\n search?: string\n}\n\nexport interface ListAgentVersionsParams extends ListParams {}\n\n/**\n * Manage agents \u2014 the AI personas that handle calls and interactions.\n * Each agent can be assigned skills, a persona, and a model.\n */\nexport class AgentsResource extends WorkspaceScopedResource {\n /** Create a new agent */\n async create(body: CreateAgentRequest): Promise<Agent> {\n return this.fetch<Agent>('/agents', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List agents in the workspace */\n async list(params?: ListAgentsParams): Promise<PaginatedResponse<Agent>> {\n return this.fetch<PaginatedResponse<Agent>>(`/agents${buildQuery(params)}`)\n }\n\n /** Get a single agent */\n async get(agentId: AgentId | string): Promise<Agent> {\n return this.fetch<Agent>(`/agents/${agentId}`)\n }\n\n /** Update an agent's configuration */\n async update(agentId: AgentId | string, body: UpdateAgentRequest): Promise<Agent> {\n return this.fetch<Agent>(`/agents/${agentId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n /** Delete an agent */\n async delete(agentId: AgentId | string): Promise<void> {\n return this.fetch<void>(`/agents/${agentId}`, { method: 'DELETE' })\n }\n\n /** List all versions of an agent */\n async listVersions(\n agentId: AgentId | string,\n params?: ListAgentVersionsParams,\n ): Promise<PaginatedResponse<AgentVersion>> {\n return this.fetch<PaginatedResponse<AgentVersion>>(\n `/agents/${agentId}/versions${buildQuery(params)}`,\n )\n }\n\n /** Get a specific version of an agent \u2014 pass `\"latest\"` to get the most recent */\n async getVersion(agentId: AgentId | string, version: number | 'latest'): Promise<AgentVersion> {\n return this.fetch<AgentVersion>(`/agents/${agentId}/versions/${version}`)\n }\n\n /** Create a new version of an agent */\n async createVersion(agentId: AgentId | string, body: CreateAgentVersionRequest): Promise<AgentVersion> {\n return this.fetch<AgentVersion>(`/agents/${agentId}/versions`, {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n}\n", "import type {\n Skill,\n CreateSkillRequest,\n UpdateSkillRequest,\n SkillTestRequest,\n SkillTestResponse,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { SkillId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListSkillsParams extends ListParams {\n search?: string\n enabled?: boolean\n execution_tier?: string\n}\n\n/**\n * Manage skills \u2014 reusable AI capabilities that agents can call.\n * Skills define a structured input/output schema and an execution tier.\n */\nexport class SkillsResource extends WorkspaceScopedResource {\n /** Create a new skill */\n async create(body: CreateSkillRequest): Promise<Skill> {\n return this.fetch<Skill>('/skills', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List skills in the workspace */\n async list(params?: ListSkillsParams): Promise<PaginatedResponse<Skill>> {\n return this.fetch<PaginatedResponse<Skill>>(`/skills${buildQuery(params)}`)\n }\n\n /** Get a single skill */\n async get(skillId: SkillId | string): Promise<Skill> {\n return this.fetch<Skill>(`/skills/${skillId}`)\n }\n\n /** Update a skill */\n async update(skillId: SkillId | string, body: UpdateSkillRequest): Promise<Skill> {\n return this.fetch<Skill>(`/skills/${skillId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n /** Delete a skill */\n async delete(skillId: SkillId | string): Promise<void> {\n return this.fetch<void>(`/skills/${skillId}`, { method: 'DELETE' })\n }\n\n /**\n * Test a skill with a sample input.\n * Executes the skill in a sandbox and returns the result.\n */\n async test(skillId: SkillId | string, body: SkillTestRequest): Promise<SkillTestResponse> {\n return this.fetch<SkillTestResponse>(`/skills/${skillId}/test`, {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n}\n", "import type {\n Service,\n CreateServiceRequest,\n UpdateServiceRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { ServiceId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListServicesParams extends ListParams {\n search?: string\n type?: string\n}\n\n/**\n * Manage services \u2014 external service configurations that agents can call.\n * Services represent integrations like scheduling systems, EHRs, or CRMs\n * that skills can interact with via their tool definitions.\n */\nexport class ServicesResource extends WorkspaceScopedResource {\n async create(body: CreateServiceRequest): Promise<Service> {\n return this.fetch<Service>('/services', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n async list(params?: ListServicesParams): Promise<PaginatedResponse<Service>> {\n return this.fetch<PaginatedResponse<Service>>(`/services${buildQuery(params)}`)\n }\n\n async get(serviceId: ServiceId | string): Promise<Service> {\n return this.fetch<Service>(`/services/${serviceId}`)\n }\n\n async update(serviceId: ServiceId | string, body: UpdateServiceRequest): Promise<Service> {\n return this.fetch<Service>(`/services/${serviceId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n async delete(serviceId: ServiceId | string): Promise<void> {\n return this.fetch<void>(`/services/${serviceId}`, { method: 'DELETE' })\n }\n}\n", "import type {\n ContextGraph,\n CreateContextGraphRequest,\n UpdateContextGraphRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { ContextGraphId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListContextGraphsParams extends ListParams {\n search?: string\n}\n\nexport interface ContextGraphVersion {\n context_graph_id: string\n version: number\n schema_snapshot: Record<string, unknown>\n created_at: string\n}\n\n/**\n * Manage context graphs \u2014 structured conversation flow definitions (HSM).\n * Context graphs define the states, transitions, and conditions that\n * govern how an agent moves through a conversation.\n */\nexport class ContextGraphsResource extends WorkspaceScopedResource {\n async create(body: CreateContextGraphRequest): Promise<ContextGraph> {\n return this.fetch<ContextGraph>('/context-graphs', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n async list(params?: ListContextGraphsParams): Promise<PaginatedResponse<ContextGraph>> {\n return this.fetch<PaginatedResponse<ContextGraph>>(`/context-graphs${buildQuery(params)}`)\n }\n\n async get(contextGraphId: ContextGraphId | string): Promise<ContextGraph> {\n return this.fetch<ContextGraph>(`/context-graphs/${contextGraphId}`)\n }\n\n async update(\n contextGraphId: ContextGraphId | string,\n body: UpdateContextGraphRequest,\n ): Promise<ContextGraph> {\n return this.fetch<ContextGraph>(`/context-graphs/${contextGraphId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n async delete(contextGraphId: ContextGraphId | string): Promise<void> {\n return this.fetch<void>(`/context-graphs/${contextGraphId}`, { method: 'DELETE' })\n }\n\n /** Create a version snapshot of the current context graph */\n async createVersion(contextGraphId: ContextGraphId | string): Promise<ContextGraphVersion> {\n return this.fetch<ContextGraphVersion>(`/context-graphs/${contextGraphId}/versions`, {\n method: 'POST',\n })\n }\n\n /** List all versions of a context graph */\n async listVersions(\n contextGraphId: ContextGraphId | string,\n params?: ListParams,\n ): Promise<PaginatedResponse<ContextGraphVersion>> {\n return this.fetch<PaginatedResponse<ContextGraphVersion>>(\n `/context-graphs/${contextGraphId}/versions${buildQuery(params)}`,\n )\n }\n\n /** Get a specific version */\n async getVersion(contextGraphId: ContextGraphId | string, version: number): Promise<ContextGraphVersion> {\n return this.fetch<ContextGraphVersion>(`/context-graphs/${contextGraphId}/versions/${version}`)\n }\n}\n", "import type {\n DataSource,\n CreateDataSourceRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { DataSourceId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListDataSourcesParams extends ListParams {\n type?: string\n status?: string\n}\n\nexport interface UpdateDataSourceRequest {\n name?: string\n connection_config?: Record<string, unknown>\n}\n\n/**\n * Manage data sources \u2014 connections to external databases, warehouses,\n * or data feeds that the platform can query and sync from.\n */\nexport class DataSourcesResource extends WorkspaceScopedResource {\n async create(body: CreateDataSourceRequest): Promise<DataSource> {\n return this.fetch<DataSource>('/data-sources', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n async list(params?: ListDataSourcesParams): Promise<PaginatedResponse<DataSource>> {\n return this.fetch<PaginatedResponse<DataSource>>(`/data-sources${buildQuery(params)}`)\n }\n\n async get(dataSourceId: DataSourceId | string): Promise<DataSource> {\n return this.fetch<DataSource>(`/data-sources/${dataSourceId}`)\n }\n\n async update(dataSourceId: DataSourceId | string, body: UpdateDataSourceRequest): Promise<DataSource> {\n return this.fetch<DataSource>(`/data-sources/${dataSourceId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n async delete(dataSourceId: DataSourceId | string): Promise<void> {\n return this.fetch<void>(`/data-sources/${dataSourceId}`, { method: 'DELETE' })\n }\n}\n", "import type {\n Entity,\n WorldEvent,\n TimelineEntry,\n SimilarEntitiesResponse,\n CreateEntityRequest,\n UpdateEntityRequest,\n EmitEventRequest,\n MergeEntitiesRequest,\n PaginatedResponse,\n EntityType,\n} from '../types/api.js'\nimport type { EntityId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListEntitiesParams extends ListParams {\n entity_type?: EntityType\n canonical_id?: string\n search?: string\n source_system?: string\n tags?: string\n}\n\nexport interface TimelineParams {\n limit?: number\n event_type?: string\n start_date?: string\n end_date?: string\n}\n\nexport interface EntityRelationship {\n id: string\n source_entity_id: string\n target_entity_id: string\n relationship_type: string\n confidence: number\n properties: Record<string, unknown>\n created_at: string\n}\n\nexport interface EntityType_ {\n type: string\n count: number\n schema: Record<string, unknown> | null\n}\n\nexport interface EntityGraph {\n nodes: Array<{ entity: Entity; depth: number }>\n edges: Array<EntityRelationship>\n}\n\nexport interface EntityProvenance {\n entity_id: string\n sources: Array<{\n system: string\n external_id: string | null\n first_seen_at: string\n last_seen_at: string\n event_count: number\n }>\n}\n\nexport interface EntityLineage {\n entity_id: string\n merged_into: string | null\n merged_from: string[]\n canonical_id: string | null\n}\n\nexport interface SyncEvent {\n id: string\n entity_id: string\n sink: string\n status: 'pending' | 'synced' | 'failed' | 'retrying'\n error: string | null\n attempts: number\n created_at: string\n synced_at: string | null\n}\n\nexport interface SyncStatusBySink {\n sink: string\n pending: number\n synced: number\n failed: number\n last_synced_at: string | null\n}\n\nexport interface SourceBreakdown {\n source: string\n entity_count: number\n event_count: number\n last_seen_at: string | null\n}\n\nexport interface EntityStats {\n total_entities: number\n total_events: number\n entity_types: Array<{ type: string; count: number }>\n sources: Array<{ source: string; count: number }>\n}\n\nexport interface SearchEntitiesParams {\n q: string\n entity_type?: EntityType\n limit?: number\n}\n\nexport interface ListSyncEventsParams extends ListParams {\n sink?: string\n status?: string\n start_date?: string\n end_date?: string\n}\n\nexport interface DuplicatesParams extends ListParams {\n entity_type?: EntityType\n min_confidence?: number\n}\n\n/**\n * World Model \u2014 entities, events, relationships, and the entity timeline.\n *\n * The world model is the core knowledge graph of the platform. Entities\n * represent real-world objects (patients, contacts, calls). Events record\n * observations about entities over time.\n */\nexport class WorldResource extends WorkspaceScopedResource {\n // ---- Entities ----\n\n /** Create a new entity */\n async createEntity(body: CreateEntityRequest): Promise<Entity> {\n return this.fetch<Entity>('/world/entities', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List entities with optional filtering */\n async listEntities(params?: ListEntitiesParams): Promise<PaginatedResponse<Entity>> {\n return this.fetch<PaginatedResponse<Entity>>(`/world/entities${buildQuery(params)}`)\n }\n\n /** Get a single entity */\n async getEntity(entityId: EntityId | string): Promise<Entity> {\n return this.fetch<Entity>(`/world/entities/${entityId}`)\n }\n\n /** Update entity properties */\n async updateEntity(entityId: EntityId | string, body: UpdateEntityRequest): Promise<Entity> {\n return this.fetch<Entity>(`/world/entities/${entityId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n /** Get all relationships for an entity */\n async getRelationships(entityId: EntityId | string): Promise<EntityRelationship[]> {\n return this.fetch<EntityRelationship[]>(`/world/entities/${entityId}/relationships`)\n }\n\n /** Get the knowledge graph centered on an entity (entity + neighbors + edges) */\n async getGraph(entityId: EntityId | string): Promise<EntityGraph> {\n return this.fetch<EntityGraph>(`/world/entities/${entityId}/graph`)\n }\n\n /** Get provenance \u2014 which source systems contributed data for an entity */\n async getProvenance(entityId: EntityId | string): Promise<EntityProvenance> {\n return this.fetch<EntityProvenance>(`/world/entities/${entityId}/provenance`)\n }\n\n /** Get lineage \u2014 merge history and canonical identity for an entity */\n async getLineage(entityId: EntityId | string): Promise<EntityLineage> {\n return this.fetch<EntityLineage>(`/world/entities/${entityId}/lineage`)\n }\n\n /** Get merged entities for a canonical entity */\n async getMerged(entityId: EntityId | string): Promise<Entity[]> {\n return this.fetch<Entity[]>(`/world/entities/${entityId}/merged`)\n }\n\n // ---- Entity Types ----\n\n /** List registered entity types with counts and schemas */\n async listEntityTypes(): Promise<EntityType_[]> {\n return this.fetch<EntityType_[]>('/world/entity-types')\n }\n\n // ---- Duplicate Detection ----\n\n /** List potential duplicate entity pairs for review or merging */\n async listDuplicates(params?: DuplicatesParams): Promise<PaginatedResponse<{ entity_a: Entity; entity_b: Entity; confidence: number }>> {\n return this.fetch(`/world/entities/duplicates${buildQuery(params)}`)\n }\n\n // ---- Semantic Search ----\n\n /** Semantic (vector) search over entities */\n async search(params: SearchEntitiesParams): Promise<Array<{ entity: Entity; score: number }>> {\n return this.fetch(`/world/search${buildQuery(params)}`)\n }\n\n // ---- Events ----\n\n /**\n * Emit an event for an entity.\n * Events flow to Delta via ZeroBus for downstream analytics.\n */\n async emitEvent(body: EmitEventRequest): Promise<WorldEvent> {\n return this.fetch<WorldEvent>('/world/events', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n // ---- Timeline ----\n\n /** Get the event timeline for an entity (reverse-chronological) */\n async getTimeline(\n entityId: EntityId | string,\n params?: TimelineParams,\n ): Promise<TimelineEntry[]> {\n return this.fetch<TimelineEntry[]>(`/world/timeline/${entityId}${buildQuery(params)}`)\n }\n\n // ---- Intelligence ----\n\n /** Get AI-derived intelligence for an entity */\n async getIntelligence(entityId: EntityId | string): Promise<Record<string, unknown>> {\n return this.fetch<Record<string, unknown>>(`/world/intelligence/${entityId}`)\n }\n\n /** Find entities similar to a given entity using vector similarity */\n async getSimilar(entityId: EntityId | string, limit?: number): Promise<SimilarEntitiesResponse> {\n return this.fetch<SimilarEntitiesResponse>(`/world/similar/${entityId}${buildQuery({ limit })}`)\n }\n\n /** Merge multiple entities into one canonical entity */\n async merge(body: MergeEntitiesRequest): Promise<Entity> {\n return this.fetch<Entity>('/world/merge', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n // ---- Sync ----\n\n /** Get sync status grouped by sink (Lakebase, Delta, etc.) */\n async getSyncStatusBySink(): Promise<SyncStatusBySink[]> {\n return this.fetch<SyncStatusBySink[]>('/world/sync/by-sink')\n }\n\n /** List sync events with status filtering */\n async listSyncEvents(params?: ListSyncEventsParams): Promise<PaginatedResponse<SyncEvent>> {\n return this.fetch<PaginatedResponse<SyncEvent>>(`/world/sync/events${buildQuery(params)}`)\n }\n\n /** Get current sync queue depth */\n async getSyncQueueDepth(): Promise<{ depth: number; oldest_pending_at: string | null }> {\n return this.fetch('/world/sync/queue')\n }\n\n /** Retry a single failed sync event */\n async retrySyncEvent(eventId: string): Promise<SyncEvent> {\n return this.fetch<SyncEvent>(`/world/sync/retry/${eventId}`, { method: 'POST' })\n }\n\n /** Retry all failed sync events */\n async retryAllSyncEvents(): Promise<{ queued: number }> {\n return this.fetch('/world/sync/retry-all', { method: 'POST' })\n }\n\n // ---- Statistics ----\n\n /** Get aggregate entity and event statistics */\n async getStats(): Promise<EntityStats> {\n return this.fetch<EntityStats>('/world/entity-stats')\n }\n\n /** Get entity counts broken down by source system */\n async getSourceBreakdown(): Promise<SourceBreakdown[]> {\n return this.fetch<SourceBreakdown[]>('/world/source-breakdown')\n }\n}\n", "import type {\n Call,\n ListCallsParams,\n PaginatedResponse,\n} from '../types/api.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\n\nexport interface CallIntelligence {\n summary: string | null\n sentiment: string | null\n key_moments: Array<{ type: string; description: string; timestamp_s: number }>\n action_items: string[]\n outcomes: string[]\n}\n\nexport interface CallTranscriptSegment {\n speaker: 'agent' | 'customer'\n text: string\n start_seconds: number\n end_seconds: number\n}\n\nexport interface CallDetail extends Call {\n intelligence: CallIntelligence | null\n transcript: CallTranscriptSegment[]\n}\n\nexport interface CallBenchmarks {\n workspace_id: string\n period_start: string\n period_end: string\n avg_duration_seconds: number\n answer_rate: number | null\n completion_rate: number | null\n}\n\n/**\n * Access call records and intelligence.\n * Calls are read-only in the SDK \u2014 they are created by the voice pipeline.\n */\nexport class CallsResource extends WorkspaceScopedResource {\n /** List calls with optional filtering */\n async list(params?: ListCallsParams): Promise<PaginatedResponse<Call>> {\n return this.fetch<PaginatedResponse<Call>>(`/calls/${buildQuery(params)}`)\n }\n\n /** Get full call detail including transcript and intelligence */\n async get(callSid: string): Promise<CallDetail> {\n return this.fetch<CallDetail>(`/calls/${callSid}`)\n }\n\n /** Get AI intelligence for a call */\n async getIntelligence(callSid: string): Promise<CallIntelligence> {\n return this.fetch<CallIntelligence>(`/calls/${callSid}/intelligence`)\n }\n\n /** Get active intelligence across all in-progress calls */\n async getActiveIntelligence(): Promise<Record<string, unknown>[]> {\n return this.fetch<Record<string, unknown>[]>('/calls/active/intelligence')\n }\n\n /** Get performance benchmarks for a time period */\n async getBenchmarks(params?: { days?: number }): Promise<CallBenchmarks> {\n return this.fetch<CallBenchmarks>(`/calls/benchmarks${buildQuery(params)}`)\n }\n}\n", "import type {\n PhoneNumber,\n ProvisionPhoneNumberRequest,\n UpdatePhoneNumberRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { PhoneNumberId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\n/**\n * Manage phone numbers \u2014 provision, configure, and release Twilio numbers\n * that are attached to agents for inbound/outbound calling.\n */\nexport class PhoneNumbersResource extends WorkspaceScopedResource {\n /** Provision a new phone number (area code or specific number) */\n async provision(body: ProvisionPhoneNumberRequest): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>('/phone-numbers', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List phone numbers in the workspace */\n async list(params?: ListParams): Promise<PaginatedResponse<PhoneNumber>> {\n return this.fetch<PaginatedResponse<PhoneNumber>>(`/phone-numbers${buildQuery(params)}`)\n }\n\n /** Get a phone number */\n async get(phoneNumberId: PhoneNumberId | string): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`/phone-numbers/${phoneNumberId}`)\n }\n\n /** Update a phone number (assign to agent, rename) */\n async update(phoneNumberId: PhoneNumberId | string, body: UpdatePhoneNumberRequest): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`/phone-numbers/${phoneNumberId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n /** Release a phone number back to the carrier */\n async release(phoneNumberId: PhoneNumberId | string): Promise<void> {\n return this.fetch<void>(`/phone-numbers/${phoneNumberId}`, { method: 'DELETE' })\n }\n\n /** Send a test call to a phone number to verify it's working */\n async test(phoneNumberId: PhoneNumberId | string): Promise<{ success: boolean; call_sid: string }> {\n return this.fetch<{ success: boolean; call_sid: string }>(\n `/phone-numbers/${phoneNumberId}/test`,\n { method: 'POST' },\n )\n }\n}\n", "import type {\n Integration,\n CreateIntegrationRequest,\n UpdateIntegrationRequest,\n PaginatedResponse,\n} from '../types/api.js'\nimport type { IntegrationId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\nimport type { ListParams } from '../core/utils.js'\n\nexport interface ListIntegrationsParams extends ListParams {\n protocol?: string\n enabled?: boolean\n search?: string\n}\n\nexport interface IntegrationTestResult {\n success: boolean\n message: string\n latency_ms: number\n}\n\n/**\n * Manage integrations \u2014 connections to external systems (EHRs, CRMs, etc.).\n * Integrations power connector data acquisition and skill tool calls.\n */\nexport class IntegrationsResource extends WorkspaceScopedResource {\n /** Create a new integration */\n async create(body: CreateIntegrationRequest): Promise<Integration> {\n return this.fetch<Integration>('/integrations', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** List integrations */\n async list(params?: ListIntegrationsParams): Promise<PaginatedResponse<Integration>> {\n return this.fetch<PaginatedResponse<Integration>>(`/integrations${buildQuery(params)}`)\n }\n\n /** Get a single integration */\n async get(integrationId: IntegrationId | string): Promise<Integration> {\n return this.fetch<Integration>(`/integrations/${integrationId}`)\n }\n\n /** Update integration configuration */\n async update(integrationId: IntegrationId | string, body: UpdateIntegrationRequest): Promise<Integration> {\n return this.fetch<Integration>(`/integrations/${integrationId}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n /** Delete an integration */\n async delete(integrationId: IntegrationId | string): Promise<void> {\n return this.fetch<void>(`/integrations/${integrationId}`, { method: 'DELETE' })\n }\n\n /**\n * Test a specific endpoint on an integration with given params.\n * Used in the developer console to validate integration config.\n */\n async testEndpoint(\n integrationId: IntegrationId | string,\n endpointName: string,\n params: Record<string, unknown>,\n ): Promise<IntegrationTestResult> {\n return this.fetch<IntegrationTestResult>(\n `/integrations/${integrationId}/endpoints/${endpointName}/test`,\n { method: 'POST', body: JSON.stringify({ params }) },\n )\n }\n\n /** Check health of all integrations in the workspace */\n async getHealthCheck(): Promise<Record<string, unknown>> {\n return this.fetch<Record<string, unknown>>('/integrations/health-check')\n }\n}\n", "import { WorkspaceScopedResource, buildQuery } from './base.js'\n\n// ---------------------------------------------------------------------------\n// Shared\n// ---------------------------------------------------------------------------\n\n/** A metric value paired with its period-over-period change */\nexport interface MetricWithDelta {\n value: number | null\n delta_pct: number | null\n}\n\nexport interface AnalyticsQueryParams {\n /** Shorthand period, e.g. \"7d\", \"30d\" */\n period?: string\n start_date?: string\n end_date?: string\n agent_id?: string\n}\n\n// ---------------------------------------------------------------------------\n// Dashboard\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsDashboard {\n call_volume: MetricWithDelta\n avg_quality: MetricWithDelta\n avg_ttfb_ms: MetricWithDelta\n escalation_rate: MetricWithDelta\n tool_success_rate: MetricWithDelta\n avg_duration_s: MetricWithDelta\n period_days: number\n}\n\n// ---------------------------------------------------------------------------\n// Calls\n// ---------------------------------------------------------------------------\n\nexport interface CallAnalytics {\n workspace_id: string\n period_start: string\n period_end: string\n total_calls: number\n total_duration_seconds: number\n avg_duration_seconds: number\n calls_by_date: Array<{ date: string; count: number }>\n}\n\n// ---------------------------------------------------------------------------\n// Agents\n// ---------------------------------------------------------------------------\n\nexport interface AgentAnalytics {\n agent_id: string\n agent_name: string\n total_calls: number\n completed_calls: number\n avg_duration_seconds: number\n completion_rate: number\n}\n\nexport interface AgentAnalyticsResponse {\n agents: AgentAnalytics[]\n period: string\n}\n\n// ---------------------------------------------------------------------------\n// Call quality\n// ---------------------------------------------------------------------------\n\nexport interface CallQualityMetrics {\n avg_sentiment: number | null\n positive_pct: number\n negative_pct: number\n neutral_pct: number\n avg_transcription_confidence: number | null\n flagged_calls: number\n}\n\n// ---------------------------------------------------------------------------\n// Emotion trends\n// ---------------------------------------------------------------------------\n\nexport interface EmotionTrends {\n data: Array<{\n date: string\n emotions: Record<string, number>\n }>\n}\n\n// ---------------------------------------------------------------------------\n// Latency\n// ---------------------------------------------------------------------------\n\nexport interface LatencyMetrics {\n avg_ttfb_ms: number\n p50_ttfb_ms: number\n p95_ttfb_ms: number\n avg_response_ms: number\n p95_response_ms: number\n}\n\n// ---------------------------------------------------------------------------\n// Tool performance\n// ---------------------------------------------------------------------------\n\nexport interface ToolPerformance {\n tool_name: string\n call_count: number\n success_rate: number\n avg_latency_ms: number\n}\n\n// ---------------------------------------------------------------------------\n// Data quality\n// ---------------------------------------------------------------------------\n\nexport interface DataQualityMetrics {\n completeness_score: number\n duplicate_rate: number\n missing_canonical_id_pct: number\n stale_entities: number\n}\n\n// ---------------------------------------------------------------------------\n// Advanced call stats\n// ---------------------------------------------------------------------------\n\nexport interface AdvancedCallStats {\n abandonment_rate: number\n transfer_rate: number\n avg_silence_pct: number\n avg_interruptions: number\n by_hour_of_day: Array<{ hour: number; count: number }>\n by_day_of_week: Array<{ day: string; count: number }>\n}\n\n// ---------------------------------------------------------------------------\n// Comparison\n// ---------------------------------------------------------------------------\n\nexport interface CallComparison {\n period_a: { start: string; end: string; calls: number; conversion_rate: number }\n period_b: { start: string; end: string; calls: number; conversion_rate: number }\n change_pct: Record<string, number>\n}\n\n// ---------------------------------------------------------------------------\n// Resource\n// ---------------------------------------------------------------------------\n\n/**\n * Analytics \u2014 aggregate metrics about calls, agents, quality, and usage.\n */\nexport class AnalyticsResource extends WorkspaceScopedResource {\n /** High-level dashboard summary \u2014 pass `days` (default: 7) for the lookback window */\n async getDashboard(params?: { days?: number }): Promise<AnalyticsDashboard> {\n return this.fetch<AnalyticsDashboard>(`/analytics/dashboard${buildQuery(params)}`)\n }\n\n /** Call volume and duration metrics */\n async getCalls(params?: AnalyticsQueryParams): Promise<CallAnalytics> {\n return this.fetch<CallAnalytics>(`/analytics/calls${buildQuery(params)}`)\n }\n\n /** Per-agent performance breakdown */\n async getAgents(params?: { period?: string }): Promise<AgentAnalyticsResponse> {\n return this.fetch<AgentAnalyticsResponse>(`/analytics/agents${buildQuery(params)}`)\n }\n\n /** Call quality \u2014 sentiment, transcription confidence, flagged calls */\n async getCallQuality(params?: AnalyticsQueryParams): Promise<CallQualityMetrics> {\n return this.fetch<CallQualityMetrics>(`/analytics/call-quality${buildQuery(params)}`)\n }\n\n /** Emotion trend data over time */\n async getEmotionTrends(params?: AnalyticsQueryParams): Promise<EmotionTrends> {\n return this.fetch<EmotionTrends>(`/analytics/emotion-trends${buildQuery(params)}`)\n }\n\n /** Voice pipeline latency metrics (TTFB, response time) */\n async getLatency(params?: AnalyticsQueryParams): Promise<LatencyMetrics> {\n return this.fetch<LatencyMetrics>(`/analytics/latency${buildQuery(params)}`)\n }\n\n /** Tool call performance \u2014 success rates and latency per tool */\n async getToolPerformance(params?: AnalyticsQueryParams): Promise<ToolPerformance[]> {\n return this.fetch<ToolPerformance[]>(`/analytics/tool-performance${buildQuery(params)}`)\n }\n\n /** Data quality metrics for the workspace world model */\n async getDataQuality(params?: AnalyticsQueryParams): Promise<DataQualityMetrics> {\n return this.fetch<DataQualityMetrics>(`/analytics/data-quality${buildQuery(params)}`)\n }\n\n /** Usage summary \u2014 API requests, call minutes, storage */\n async getUsage(params?: AnalyticsQueryParams): Promise<Record<string, unknown>> {\n return this.fetch(`/analytics/usage${buildQuery(params)}`)\n }\n\n /** Advanced call statistics (abandonment, transfers, silence, hour-of-day) */\n async getAdvancedCallStats(params?: AnalyticsQueryParams): Promise<AdvancedCallStats> {\n return this.fetch<AdvancedCallStats>(`/analytics/calls/advanced${buildQuery(params)}`)\n }\n\n /** Compare two time periods side by side */\n async compareCallPeriods(params: {\n current_from: string\n current_to: string\n previous_from: string\n previous_to: string\n service_id?: string\n }): Promise<CallComparison> {\n return this.fetch<CallComparison>(`/analytics/calls/comparison${buildQuery(params)}`)\n }\n}\n", "import type {\n SimulationSession,\n SimulationStepResponse,\n CreateSimulationSessionRequest,\n StepSimulationSessionRequest,\n} from '../types/api.js'\nimport type { SimulationSessionId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource } from './base.js'\n\nexport interface SimulationIntelligence {\n session_id: string\n intelligence: Record<string, unknown>\n}\n\n/**\n * Simulations \u2014 interactive agent testing via the Playground.\n *\n * Create a session to get the agent's greeting, then step through the\n * conversation turn by turn. Get LLM-generated caller suggestions to\n * guide exploratory testing.\n */\nexport class SimulationsResource extends WorkspaceScopedResource {\n /** Start a simulation session \u2014 returns the agent's greeting and initial snapshot */\n async createSession(body: CreateSimulationSessionRequest): Promise<SimulationSession> {\n return this.fetch<SimulationSession>('/simulations/sessions', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /** Get the current snapshot of a session */\n async getSession(sessionId: SimulationSessionId | string): Promise<SimulationSession> {\n return this.fetch<SimulationSession>(`/simulations/sessions/${sessionId}`)\n }\n\n /** Delete a simulation session */\n async deleteSession(sessionId: SimulationSessionId | string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`/simulations/sessions/${sessionId}`, { method: 'DELETE' })\n }\n\n /**\n * Send a caller utterance and advance the session by one turn.\n * Returns the agent's response observation and updated snapshot.\n */\n async step(body: StepSimulationSessionRequest): Promise<SimulationStepResponse> {\n return this.fetch<SimulationStepResponse>('/simulations/sessions/step', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n }\n\n /**\n * Get LLM-generated caller message suggestions for the current session state.\n * Helps exploratory testing by suggesting realistic next caller turns.\n */\n async recommend(sessionId: SimulationSessionId | string, n?: number): Promise<{ suggestions: string[] }> {\n return this.fetch('/simulations/sessions/recommend', {\n method: 'POST',\n body: JSON.stringify({ session_id: sessionId, n }),\n })\n }\n\n /** Get AI-generated call intelligence for a completed session */\n async getIntelligence(sessionId: SimulationSessionId | string): Promise<SimulationIntelligence> {\n return this.fetch<SimulationIntelligence>(`/simulations/sessions/${sessionId}/intelligence`)\n }\n}\n", "import { WorkspaceScopedResource } from './base.js'\n\n// ---------------------------------------------------------------------------\n// Voice settings\n// ---------------------------------------------------------------------------\n\nexport interface VoiceSettings {\n voice_id: string | null\n speed: number | null\n tone: string | null\n volume: number | null\n language: string | null\n keyterms: string[]\n sensitive_topics: string[]\n correction_categories: string[]\n pronunciation_dict_id: string | null\n post_call_analysis_enabled: boolean\n transcript_correction_enabled: boolean\n}\n\n// ---------------------------------------------------------------------------\n// Branding settings\n// ---------------------------------------------------------------------------\n\nexport interface BrandingConfig {\n display_name: string | null\n logo_url: string | null\n primary_color: string | null\n support_email: string | null\n}\n\nexport interface BrandingSettings {\n branding: BrandingConfig\n}\n\n// ---------------------------------------------------------------------------\n// Outreach settings\n// ---------------------------------------------------------------------------\n\nexport interface OutreachRule {\n name: string\n condition: Record<string, unknown>\n actions: Record<string, unknown>[]\n}\n\nexport interface OutreachSettings {\n rules: OutreachRule[]\n data_templates: Record<string, unknown>[]\n}\n\n// ---------------------------------------------------------------------------\n// Memory settings\n// ---------------------------------------------------------------------------\n\nexport interface MemoryDimensionConfig {\n name: string\n enabled: boolean\n weight: number\n extraction_mode: string\n}\n\nexport interface MemorySettings {\n dimensions: MemoryDimensionConfig[]\n backfill_requested: boolean\n}\n\n// ---------------------------------------------------------------------------\n// Security settings\n// ---------------------------------------------------------------------------\n\nexport interface SecuritySettings {\n voice_auth_enabled: boolean\n}\n\n// ---------------------------------------------------------------------------\n// Retention settings\n// ---------------------------------------------------------------------------\n\nexport interface RetentionSettings {\n call_recordings_days: number | null\n call_transcripts_days: number | null\n phi_data_days: number | null\n world_events_days: number | null\n audit_log_days: number | null\n legal_hold: boolean\n legal_hold_reason: string | null\n}\n\n// ---------------------------------------------------------------------------\n// Workflow settings\n// ---------------------------------------------------------------------------\n\nexport interface WorkflowConfig {\n name: string\n trigger: Record<string, unknown>\n actions: Record<string, unknown>[]\n enabled: boolean\n}\n\nexport interface WorkflowSettings {\n workflows: WorkflowConfig[]\n}\n\n/**\n * Workspace-level settings \u2014 configure voice behavior, branding, security\n * policies, data retention, outreach rules, and more.\n *\n * Each sub-resource has `get()` and `update()`.\n */\nexport class SettingsResource extends WorkspaceScopedResource {\n private async getSettings<T>(key: string): Promise<T> {\n return this.fetch<T>(`/settings/${key}`)\n }\n\n private async updateSettings<T>(key: string, body: Partial<T>): Promise<T> {\n return this.fetch<T>(`/settings/${key}`, {\n method: 'PUT',\n body: JSON.stringify(body),\n })\n }\n\n readonly voice = {\n get: (): Promise<VoiceSettings> => this.getSettings('voice'),\n update: (body: Partial<VoiceSettings>): Promise<VoiceSettings> =>\n this.updateSettings('voice', body),\n }\n\n readonly branding = {\n get: (): Promise<BrandingSettings> => this.getSettings('branding'),\n update: (body: Partial<BrandingSettings>): Promise<BrandingSettings> =>\n this.updateSettings('branding', body),\n }\n\n readonly outreach = {\n get: (): Promise<OutreachSettings> => this.getSettings('outreach'),\n update: (body: Partial<OutreachSettings>): Promise<OutreachSettings> =>\n this.updateSettings('outreach', body),\n }\n\n readonly memory = {\n get: (): Promise<MemorySettings> => this.getSettings('memory'),\n update: (body: Partial<MemorySettings>): Promise<MemorySettings> =>\n this.updateSettings('memory', body),\n }\n\n readonly security = {\n get: (): Promise<SecuritySettings> => this.getSettings('security'),\n update: (body: Partial<SecuritySettings>): Promise<SecuritySettings> =>\n this.updateSettings('security', body),\n }\n\n readonly retention = {\n get: (): Promise<RetentionSettings> => this.getSettings('retention'),\n update: (body: Partial<RetentionSettings>): Promise<RetentionSettings> =>\n this.updateSettings('retention', body),\n }\n\n readonly workflows = {\n get: (): Promise<WorkflowSettings> => this.getSettings('workflows'),\n update: (body: Partial<WorkflowSettings>): Promise<WorkflowSettings> =>\n this.updateSettings('workflows', body),\n }\n}\n", "import type { UsageSummary, Invoice, PaginatedResponse } from '../types/api.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\n\nexport interface UsageQueryParams {\n start_date?: string\n end_date?: string\n}\n\n/**\n * Billing \u2014 usage summaries and invoices.\n */\nexport class BillingResource extends WorkspaceScopedResource {\n /** Get usage summary for a time period */\n async getUsage(params?: UsageQueryParams): Promise<UsageSummary> {\n return this.fetch<UsageSummary>(`/billing/usage${buildQuery(params)}`)\n }\n\n /** List invoices */\n async listInvoices(params?: { limit?: number; continuation_token?: number }): Promise<PaginatedResponse<Invoice>> {\n return this.fetch<PaginatedResponse<Invoice>>(`/billing/invoices${buildQuery(params)}`)\n }\n}\n", "import type { EntityId } from '../core/branded-types.js'\nimport { WorkspaceScopedResource, buildQuery } from './base.js'\n\nexport interface DimensionScore {\n dimension: string\n name: string\n description: string | null\n weight: number\n fact_count: number\n avg_confidence: number\n source_count: number\n latest_fact_at: string | null\n}\n\nexport interface EntityDimensionsResponse {\n entity_id: string\n dimensions: DimensionScore[]\n total_facts: number\n}\n\nexport interface MemoryFact {\n dimension: string\n event_type: string\n source: string | null\n confidence: number\n extracted_text: string | null\n data: Record<string, unknown> | null\n ingested_at: string | null\n}\n\nexport interface EntityFactsResponse {\n entity_id: string\n dimension: string | null\n facts: MemoryFact[]\n total: number\n}\n\nexport interface DimensionAnalytics {\n dimension: string\n name: string\n description: string | null\n weight: number\n extraction_mode: string\n active: boolean\n builtin: boolean\n entity_count: number\n total_facts: number\n avg_facts_per_entity: number\n avg_confidence: number\n source_breakdown: Record<string, number>\n latest_fact_at: string | null\n sample_facts: Array<{ extracted_text: string; confidence: number; source: string | null; entity_id: string }>\n}\n\nexport interface MemoryAnalyticsResponse {\n total_entities_with_memory: number\n total_entities_in_workspace: number\n coverage_rate: number\n total_facts: number\n dimensions: DimensionAnalytics[]\n top_sources: Array<{ source: string; fact_count: number; entity_count: number }>\n facts_last_24h: number\n facts_last_7d: number\n facts_last_30d: number\n active_dimensions: number\n builtin_dimensions: number\n custom_dimensions: number\n llm_dimensions: number\n}\n\n/**\n * Agent Memory \u2014 structured long-term memory for entities.\n *\n * Memory is organised into dimensions (e.g. \"preferences\", \"health_history\").\n * Each dimension accumulates facts extracted from calls and events over time.\n * This powers the \"Agent Memory\" view in the console.\n */\nexport class MemoryResource extends WorkspaceScopedResource {\n /**\n * Get all memory dimension scores for an entity.\n * Scores reflect how complete and confident each dimension's facts are.\n */\n async getEntityDimensions(entityId: EntityId | string): Promise<EntityDimensionsResponse> {\n return this.fetch<EntityDimensionsResponse>(`/memory/${entityId}/dimensions`)\n }\n\n /**\n * Get individual memory facts for an entity, optionally filtered by dimension.\n */\n async getEntityFacts(\n entityId: EntityId | string,\n params?: { dimension?: string; limit?: number },\n ): Promise<EntityFactsResponse> {\n return this.fetch<EntityFactsResponse>(`/memory/${entityId}/facts${buildQuery(params)}`)\n }\n\n /**\n * Get workspace-level memory analytics \u2014 coverage rates, dimension health,\n * and fact ingestion trends.\n */\n async getAnalytics(): Promise<MemoryAnalyticsResponse> {\n return this.fetch<MemoryAnalyticsResponse>('/memory/analytics')\n }\n}\n", "/**\n * Branded types provide compile-time type safety for string IDs.\n * At runtime they are plain strings, but the type system prevents mixing them.\n */\ndeclare const brand: unique symbol\n\ntype Brand<T, B> = T & { readonly [brand]: B }\n\n// --- ID types ---\nexport type WorkspaceId = Brand<string, 'WorkspaceId'>\nexport type ApiKeyId = Brand<string, 'ApiKeyId'>\nexport type AgentId = Brand<string, 'AgentId'>\nexport type PersonaId = Brand<string, 'PersonaId'>\nexport type SkillId = Brand<string, 'SkillId'>\nexport type ServiceId = Brand<string, 'ServiceId'>\nexport type ContextGraphId = Brand<string, 'ContextGraphId'>\nexport type CallId = Brand<string, 'CallId'>\nexport type PhoneNumberId = Brand<string, 'PhoneNumberId'>\nexport type IntegrationId = Brand<string, 'IntegrationId'>\nexport type EntityId = Brand<string, 'EntityId'>\nexport type EventId = Brand<string, 'EventId'>\nexport type SurfaceId = Brand<string, 'SurfaceId'>\nexport type OperatorId = Brand<string, 'OperatorId'>\nexport type TriggerId = Brand<string, 'TriggerId'>\nexport type SimulationRunId = Brand<string, 'SimulationRunId'>\nexport type SimulationSessionId = Brand<string, 'SimulationSessionId'>\nexport type ScribeSessionId = Brand<string, 'ScribeSessionId'>\nexport type FunctionId = Brand<string, 'FunctionId'>\nexport type DataSourceId = Brand<string, 'DataSourceId'>\n\n// --- Constructors ---\nexport const workspaceId = (id: string): WorkspaceId => id as WorkspaceId\nexport const apiKeyId = (id: string): ApiKeyId => id as ApiKeyId\nexport const agentId = (id: string): AgentId => id as AgentId\nexport const personaId = (id: string): PersonaId => id as PersonaId\nexport const skillId = (id: string): SkillId => id as SkillId\nexport const serviceId = (id: string): ServiceId => id as ServiceId\nexport const contextGraphId = (id: string): ContextGraphId => id as ContextGraphId\nexport const callId = (id: string): CallId => id as CallId\nexport const phoneNumberId = (id: string): PhoneNumberId => id as PhoneNumberId\nexport const integrationId = (id: string): IntegrationId => id as IntegrationId\nexport const entityId = (id: string): EntityId => id as EntityId\nexport const eventId = (id: string): EventId => id as EventId\nexport const surfaceId = (id: string): SurfaceId => id as SurfaceId\nexport const operatorId = (id: string): OperatorId => id as OperatorId\nexport const triggerId = (id: string): TriggerId => id as TriggerId\nexport const simulationRunId = (id: string): SimulationRunId => id as SimulationRunId\nexport const simulationSessionId = (id: string): SimulationSessionId => id as SimulationSessionId\nexport const scribeSessionId = (id: string): ScribeSessionId => id as ScribeSessionId\nexport const functionId = (id: string): FunctionId => id as FunctionId\nexport const dataSourceId = (id: string): DataSourceId => id as DataSourceId\n", "/**\n * Shared utilities: response extraction and pagination helpers.\n */\n\nimport { ParseError } from './errors.js'\n\n/**\n * Extracts the data payload from an openapi-fetch response,\n * throwing ParseError if the response is empty or unexpected.\n */\nexport function extractData<T>(result: { data?: T; error?: unknown }): T {\n if (result.data !== undefined) return result.data\n throw new ParseError(\n 'Unexpected empty response from API',\n result.error !== undefined ? JSON.stringify(result.error) : undefined,\n )\n}\n\n/**\n * Standard paginated list response shape.\n */\nexport interface PaginatedList<T> {\n items: T[]\n has_more: boolean\n continuation_token: number | null\n}\n\n/**\n * Standard query params for paginated list endpoints.\n */\nexport interface ListParams {\n /** Max items per page. Default varies by endpoint. */\n limit?: number\n /** Opaque token from previous response for next page. */\n continuation_token?: number\n}\n\n/**\n * Async iterator that auto-paginates through all pages.\n * Yields one item at a time.\n *\n * @example\n * for await (const agent of paginate((token) => client.agents.list({ continuation_token: token }))) {\n * console.log(agent)\n * }\n */\nexport async function* paginate<T>(\n fetcher: (continuationToken?: number) => Promise<PaginatedList<T>>,\n): AsyncGenerator<T> {\n let token: number | undefined = undefined\n while (true) {\n const page = await fetcher(token)\n for (const item of page.items) {\n yield item\n }\n if (!page.has_more || page.continuation_token === null) break\n token = page.continuation_token\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["agentId", "skillId", "serviceId", "contextGraphId", "dataSourceId", "entityId", "eventId", "phoneNumberId", "integrationId", "entityId"]
7
+ }
package/dist/index.js ADDED
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @amigo-ai/platform-sdk
3
+ *
4
+ * Official TypeScript SDK for the Amigo Platform API.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { AmigoClient } from '@amigo-ai/platform-sdk'
9
+ *
10
+ * const client = new AmigoClient({
11
+ * apiKey: 'your-api-key',
12
+ * workspaceId: 'your-workspace-id',
13
+ * })
14
+ *
15
+ * const agents = await client.agents.list()
16
+ * console.log(agents.items)
17
+ * ```
18
+ */
19
+ import { ConfigurationError } from './core/errors.js';
20
+ import { WorkspacesResource } from './resources/workspaces.js';
21
+ import { ApiKeysResource } from './resources/api-keys.js';
22
+ import { AgentsResource } from './resources/agents.js';
23
+ import { SkillsResource } from './resources/skills.js';
24
+ import { ServicesResource } from './resources/services.js';
25
+ import { ContextGraphsResource } from './resources/context-graphs.js';
26
+ import { DataSourcesResource } from './resources/data-sources.js';
27
+ import { WorldResource } from './resources/world.js';
28
+ import { CallsResource } from './resources/calls.js';
29
+ import { PhoneNumbersResource } from './resources/phone-numbers.js';
30
+ import { IntegrationsResource } from './resources/integrations.js';
31
+ import { AnalyticsResource } from './resources/analytics.js';
32
+ import { SimulationsResource } from './resources/simulations.js';
33
+ import { SettingsResource } from './resources/settings.js';
34
+ import { BillingResource } from './resources/billing.js';
35
+ import { MemoryResource } from './resources/memory.js';
36
+ export const DEFAULT_BASE_URL = 'https://api.platform.amigo.ai';
37
+ /**
38
+ * The main entry point for the Amigo Platform SDK.
39
+ *
40
+ * Instantiate once and reuse across your application.
41
+ */
42
+ export class AmigoClient {
43
+ /** Workspace management */
44
+ workspaces;
45
+ /** API key management */
46
+ apiKeys;
47
+ /** Agent management — AI agents that handle calls */
48
+ agents;
49
+ /** Skill management — reusable AI capabilities */
50
+ skills;
51
+ /** Service management — external service configurations */
52
+ services;
53
+ /** Context graph management — conversation flow structures */
54
+ contextGraphs;
55
+ /** Data source management — external data connections */
56
+ dataSources;
57
+ /** World model — entities, events, and timelines */
58
+ world;
59
+ /** Call records and intelligence */
60
+ calls;
61
+ /** Phone number provisioning and management */
62
+ phoneNumbers;
63
+ /** Integration management — EHR, CRM, and other external systems */
64
+ integrations;
65
+ /** Analytics — aggregate metrics about calls and conversions */
66
+ analytics;
67
+ /** Simulation runs and interactive testing sessions */
68
+ simulations;
69
+ /** Workspace-level settings (voice, branding, security, outreach, etc.) */
70
+ settings;
71
+ /** Billing — usage summaries and invoices */
72
+ billing;
73
+ /** Agent Memory — structured long-term memory for entities */
74
+ memory;
75
+ constructor(config) {
76
+ if (!config.apiKey || typeof config.apiKey !== 'string') {
77
+ throw new ConfigurationError('apiKey is required and must be a non-empty string');
78
+ }
79
+ if (!config.workspaceId || typeof config.workspaceId !== 'string') {
80
+ throw new ConfigurationError('workspaceId is required and must be a non-empty string');
81
+ }
82
+ const baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, '');
83
+ const rc = {
84
+ apiKey: config.apiKey,
85
+ baseUrl,
86
+ workspaceId: config.workspaceId,
87
+ };
88
+ this.workspaces = new WorkspacesResource({ apiKey: config.apiKey, baseUrl });
89
+ this.apiKeys = new ApiKeysResource(rc);
90
+ this.agents = new AgentsResource(rc);
91
+ this.skills = new SkillsResource(rc);
92
+ this.services = new ServicesResource(rc);
93
+ this.contextGraphs = new ContextGraphsResource(rc);
94
+ this.dataSources = new DataSourcesResource(rc);
95
+ this.world = new WorldResource(rc);
96
+ this.calls = new CallsResource(rc);
97
+ this.phoneNumbers = new PhoneNumbersResource(rc);
98
+ this.integrations = new IntegrationsResource(rc);
99
+ this.analytics = new AnalyticsResource(rc);
100
+ this.simulations = new SimulationsResource(rc);
101
+ this.settings = new SettingsResource(rc);
102
+ this.billing = new BillingResource(rc);
103
+ this.memory = new MemoryResource(rc);
104
+ }
105
+ }
106
+ // Errors
107
+ export { AmigoError, BadRequestError, AuthenticationError, PermissionError, NotFoundError, ConflictError, ValidationError, RateLimitError, ServerError, ServiceUnavailableError, NetworkError, ParseError, ConfigurationError, isAmigoError, isNotFoundError, isRateLimitError, isAuthenticationError, } from './core/errors.js';
108
+ export { workspaceId, apiKeyId, agentId, skillId, serviceId, contextGraphId, callId, phoneNumberId, integrationId, entityId, eventId, simulationRunId, simulationSessionId, dataSourceId, } from './core/branded-types.js';
109
+ // Utilities
110
+ export { paginate } from './core/utils.js';
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}