@vienna-os/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.
- package/README.md +302 -0
- package/dist/index.d.mts +954 -0
- package/dist/index.d.ts +954 -0
- package/dist/index.js +868 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +824 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/utils.ts","../src/intent.ts","../src/policies.ts","../src/fleet.ts","../src/approvals.ts","../src/integrations.ts","../src/compliance.ts","../src/client.ts","../src/frameworks.ts"],"sourcesContent":["/**\n * Base error class for all Vienna SDK errors.\n * Extends native Error with HTTP status, error code, and optional details.\n */\nexport class ViennaError extends Error {\n /** Machine-readable error code from the API (e.g. `POLICY_VIOLATION`). */\n readonly code: string;\n /** HTTP status code. */\n readonly status: number;\n /** Additional error details from the API response. */\n readonly details?: unknown;\n\n constructor(message: string, status: number, code: string, details?: unknown) {\n super(message);\n this.name = 'ViennaError';\n this.status = status;\n this.code = code;\n this.details = details;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n/** Thrown when the API key is missing or invalid (HTTP 401). */\nexport class ViennaAuthError extends ViennaError {\n constructor(message: string, code: string = 'UNAUTHORIZED', details?: unknown) {\n super(message, 401, code, details);\n this.name = 'ViennaAuthError';\n }\n}\n\n/** Thrown when the authenticated user lacks permission (HTTP 403). */\nexport class ViennaForbiddenError extends ViennaError {\n constructor(message: string, code: string = 'FORBIDDEN', details?: unknown) {\n super(message, 403, code, details);\n this.name = 'ViennaForbiddenError';\n }\n}\n\n/** Thrown when the requested resource does not exist (HTTP 404). */\nexport class ViennaNotFoundError extends ViennaError {\n constructor(message: string, code: string = 'NOT_FOUND', details?: unknown) {\n super(message, 404, code, details);\n this.name = 'ViennaNotFoundError';\n }\n}\n\n/** Thrown when the rate limit is exceeded (HTTP 429). */\nexport class ViennaRateLimitError extends ViennaError {\n /** Seconds to wait before retrying. */\n readonly retryAfter: number;\n\n constructor(message: string, retryAfter: number, code: string = 'RATE_LIMITED', details?: unknown) {\n super(message, 429, code, details);\n this.name = 'ViennaRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\n/** Thrown when request validation fails (HTTP 400). */\nexport class ViennaValidationError extends ViennaError {\n /** Field-level validation errors. */\n readonly fields?: Record<string, string>;\n\n constructor(message: string, code: string = 'VALIDATION_ERROR', fields?: Record<string, string>, details?: unknown) {\n super(message, 400, code, details);\n this.name = 'ViennaValidationError';\n this.fields = fields;\n }\n}\n\n/** Thrown on server-side errors (HTTP 5xx). */\nexport class ViennaServerError extends ViennaError {\n constructor(message: string, status: number = 500, code: string = 'SERVER_ERROR', details?: unknown) {\n super(message, status, code, details);\n this.name = 'ViennaServerError';\n }\n}\n","import type { ApiResponse } from './types.js';\nimport {\n ViennaError,\n ViennaAuthError,\n ViennaForbiddenError,\n ViennaNotFoundError,\n ViennaRateLimitError,\n ViennaValidationError,\n ViennaServerError,\n} from './errors.js';\n\n/** SDK version injected into request headers. */\nexport const SDK_VERSION = '0.1.0';\n\n/** Default base URL for the Vienna OS API. */\nexport const DEFAULT_BASE_URL = 'https://vienna-os.fly.dev';\n\n/** Default request timeout in milliseconds. */\nexport const DEFAULT_TIMEOUT = 30_000;\n\n/** Default number of retries on transient errors. */\nexport const DEFAULT_RETRIES = 3;\n\n/**\n * Sleep for a given number of milliseconds.\n * Returns a promise that resolves after the delay.\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Calculate exponential backoff delay with jitter.\n *\n * @param attempt - Zero-based retry attempt number.\n * @param baseMs - Base delay in milliseconds (default 1000).\n * @returns Delay in milliseconds.\n */\nexport function backoffDelay(attempt: number, baseMs: number = 1000): number {\n const exponential = baseMs * Math.pow(2, attempt);\n const jitter = Math.random() * baseMs;\n return Math.min(exponential + jitter, 30_000); // cap at 30s\n}\n\n/**\n * Determine whether an HTTP status code is retryable.\n */\nexport function isRetryable(status: number): boolean {\n return status === 429 || status >= 500;\n}\n\n/**\n * Parse the standard Vienna API response envelope and throw typed errors on failure.\n *\n * @param response - The raw fetch Response object.\n * @returns The unwrapped `data` field from the envelope.\n */\nexport async function parseResponse<T>(response: Response): Promise<T> {\n const contentType = response.headers.get('content-type') ?? '';\n if (!contentType.includes('application/json')) {\n if (!response.ok) {\n throwHttpError(response.status, response.statusText, 'NON_JSON_ERROR');\n }\n return undefined as T;\n }\n\n const body = (await response.json()) as ApiResponse<T>;\n\n if (!response.ok || !body.success) {\n const message = body.error ?? response.statusText ?? 'Unknown error';\n const code = body.code ?? 'UNKNOWN';\n throwHttpError(response.status, message, code, body.data);\n }\n\n return body.data as T;\n}\n\n/**\n * Throw the appropriate typed error based on HTTP status.\n */\nfunction throwHttpError(status: number, message: string, code: string, details?: unknown): never {\n switch (status) {\n case 400:\n throw new ViennaValidationError(\n message,\n code,\n typeof details === 'object' && details !== null ? (details as Record<string, string>) : undefined,\n details,\n );\n case 401:\n throw new ViennaAuthError(message, code, details);\n case 403:\n throw new ViennaForbiddenError(message, code, details);\n case 404:\n throw new ViennaNotFoundError(message, code, details);\n case 429:\n throw new ViennaRateLimitError(message, 0, code, details);\n default:\n if (status >= 500) {\n throw new ViennaServerError(message, status, code, details);\n }\n throw new ViennaError(message, status, code, details);\n }\n}\n\n/**\n * Build a URL query string from an object, omitting undefined values.\n */\nexport function buildQuery(params: Record<string, unknown> | object): string {\n const entries = Object.entries(params as Record<string, unknown>)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);\n return entries.length > 0 ? `?${entries.join('&')}` : '';\n}\n","import type { ViennaClient } from './client.js';\nimport type {\n IntentRequest,\n IntentResult,\n IntentStatusResponse,\n IntentSimulationResult,\n RequestOptions,\n} from './types.js';\n\n/**\n * Module for submitting and managing agent intents through the governance pipeline.\n *\n * @example\n * ```typescript\n * const result = await vienna.intent.submit({\n * action: 'wire_transfer',\n * source: 'billing-bot',\n * payload: { amount: 75000, currency: 'USD' },\n * });\n * ```\n */\nexport class IntentModule {\n constructor(private readonly client: ViennaClient) {}\n\n /**\n * Submit an agent intent for governance evaluation and execution.\n *\n * @param intent - The intent request describing the action.\n * @param options - Optional request options (signal, timeout).\n * @returns The intent result including status, risk tier, and policy matches.\n */\n async submit(intent: IntentRequest, options?: RequestOptions): Promise<IntentResult> {\n return this.client.request<IntentResult>('POST', '/api/v1/intents', intent, options);\n }\n\n /**\n * Check the current status of a previously submitted intent.\n *\n * @param intentId - The intent identifier (e.g. `int-abc123`).\n * @param options - Optional request options.\n * @returns Full intent status including audit trail references.\n */\n async status(intentId: string, options?: RequestOptions): Promise<IntentStatusResponse> {\n return this.client.request<IntentStatusResponse>('GET', `/api/v1/intents/${encodeURIComponent(intentId)}`, undefined, options);\n }\n\n /**\n * Simulate an intent without executing it (dry-run).\n * Useful for testing policy configurations and understanding governance outcomes.\n *\n * @param intent - The intent to simulate.\n * @param options - Optional request options.\n * @returns Simulation result showing what would happen.\n */\n async simulate(intent: IntentRequest, options?: RequestOptions): Promise<IntentSimulationResult> {\n return this.client.request<IntentSimulationResult>('POST', '/api/v1/intents/simulate', intent, options);\n }\n}\n","import type { ViennaClient } from './client.js';\nimport type {\n PolicyRule,\n PolicyCreateParams,\n PolicyUpdateParams,\n PolicyListParams,\n PolicyEvaluation,\n PolicyTemplate,\n RequestOptions,\n} from './types.js';\nimport { buildQuery } from './utils.js';\n\n/**\n * Module for managing governance policies.\n *\n * @example\n * ```typescript\n * const policies = await vienna.policies.list({ enabled: true });\n * const rule = await vienna.policies.create({\n * name: 'High-Value Gate',\n * conditions: [{ field: 'amount', operator: 'gt', value: 10000 }],\n * actionOnMatch: 'require_approval',\n * priority: 100,\n * });\n * ```\n */\nexport class PoliciesModule {\n constructor(private readonly client: ViennaClient) {}\n\n /**\n * List all policies, optionally filtered.\n *\n * @param params - Filter parameters.\n * @param options - Optional request options.\n * @returns Array of policy rules.\n */\n async list(params?: PolicyListParams, options?: RequestOptions): Promise<PolicyRule[]> {\n const query = buildQuery(params ?? {});\n return this.client.request<PolicyRule[]>('GET', `/api/v1/policies${query}`, undefined, options);\n }\n\n /**\n * Get a single policy by ID.\n *\n * @param policyId - The policy identifier.\n * @param options - Optional request options.\n * @returns The policy rule.\n */\n async get(policyId: string, options?: RequestOptions): Promise<PolicyRule> {\n return this.client.request<PolicyRule>('GET', `/api/v1/policies/${encodeURIComponent(policyId)}`, undefined, options);\n }\n\n /**\n * Create a new governance policy.\n *\n * @param params - Policy creation parameters.\n * @param options - Optional request options.\n * @returns The created policy rule.\n */\n async create(params: PolicyCreateParams, options?: RequestOptions): Promise<PolicyRule> {\n return this.client.request<PolicyRule>('POST', '/api/v1/policies', params, options);\n }\n\n /**\n * Update an existing policy.\n *\n * @param policyId - The policy identifier.\n * @param params - Fields to update.\n * @param options - Optional request options.\n * @returns The updated policy rule.\n */\n async update(policyId: string, params: PolicyUpdateParams, options?: RequestOptions): Promise<PolicyRule> {\n return this.client.request<PolicyRule>('PATCH', `/api/v1/policies/${encodeURIComponent(policyId)}`, params, options);\n }\n\n /**\n * Delete a policy.\n *\n * @param policyId - The policy identifier.\n * @param options - Optional request options.\n */\n async delete(policyId: string, options?: RequestOptions): Promise<void> {\n await this.client.request<void>('DELETE', `/api/v1/policies/${encodeURIComponent(policyId)}`, undefined, options);\n }\n\n /**\n * Evaluate policies against a test payload (dry-run).\n * Returns which policies would match and what action would be taken.\n *\n * @param payload - The test payload to evaluate.\n * @param options - Optional request options.\n * @returns Evaluation result with matched policies and final action.\n */\n async evaluate(payload: Record<string, unknown>, options?: RequestOptions): Promise<PolicyEvaluation> {\n return this.client.request<PolicyEvaluation>('POST', '/api/v1/policies/evaluate', payload, options);\n }\n\n /**\n * List available industry policy templates.\n *\n * @param options - Optional request options.\n * @returns Array of policy templates.\n */\n async templates(options?: RequestOptions): Promise<PolicyTemplate[]> {\n return this.client.request<PolicyTemplate[]>('GET', '/api/v1/policies/templates', undefined, options);\n }\n}\n","import type { ViennaClient } from './client.js';\nimport type {\n FleetAgent,\n AgentMetrics,\n AgentActivity,\n FleetAlert,\n FleetAlertParams,\n PaginationParams,\n PaginatedList,\n RequestOptions,\n} from './types.js';\nimport { buildQuery } from './utils.js';\n\n/**\n * Module for fleet and agent management.\n *\n * @example\n * ```typescript\n * const fleet = await vienna.fleet.list();\n * const agent = await vienna.fleet.get('billing-bot');\n * await vienna.fleet.suspend('billing-bot', { reason: 'Suspicious activity' });\n * ```\n */\nexport class FleetModule {\n constructor(private readonly client: ViennaClient) {}\n\n /**\n * List all agents in the fleet.\n *\n * @param options - Optional request options.\n * @returns Array of fleet agents.\n */\n async list(options?: RequestOptions): Promise<FleetAgent[]> {\n return this.client.request<FleetAgent[]>('GET', '/api/v1/fleet', undefined, options);\n }\n\n /**\n * Get a single agent by ID.\n *\n * @param agentId - The agent identifier.\n * @param options - Optional request options.\n * @returns The fleet agent.\n */\n async get(agentId: string, options?: RequestOptions): Promise<FleetAgent> {\n return this.client.request<FleetAgent>('GET', `/api/v1/fleet/${encodeURIComponent(agentId)}`, undefined, options);\n }\n\n /**\n * Get metrics for a specific agent.\n *\n * @param agentId - The agent identifier.\n * @param options - Optional request options.\n * @returns Agent performance metrics.\n */\n async metrics(agentId: string, options?: RequestOptions): Promise<AgentMetrics> {\n return this.client.request<AgentMetrics>('GET', `/api/v1/fleet/${encodeURIComponent(agentId)}/metrics`, undefined, options);\n }\n\n /**\n * Get paginated activity log for an agent.\n *\n * @param agentId - The agent identifier.\n * @param pagination - Pagination parameters.\n * @param options - Optional request options.\n * @returns Paginated list of agent activities.\n */\n async activity(\n agentId: string,\n pagination?: PaginationParams,\n options?: RequestOptions,\n ): Promise<PaginatedList<AgentActivity>> {\n const query = buildQuery(pagination ?? {});\n return this.client.request<PaginatedList<AgentActivity>>(\n 'GET',\n `/api/v1/fleet/${encodeURIComponent(agentId)}/activity${query}`,\n undefined,\n options,\n );\n }\n\n /**\n * Suspend an agent, preventing it from submitting intents.\n *\n * @param agentId - The agent identifier.\n * @param params - Suspension details.\n * @param options - Optional request options.\n * @returns The updated agent.\n */\n async suspend(\n agentId: string,\n params: { reason: string },\n options?: RequestOptions,\n ): Promise<FleetAgent> {\n return this.client.request<FleetAgent>(\n 'POST',\n `/api/v1/fleet/${encodeURIComponent(agentId)}/suspend`,\n params,\n options,\n );\n }\n\n /**\n * Reactivate a suspended agent.\n *\n * @param agentId - The agent identifier.\n * @param options - Optional request options.\n * @returns The updated agent.\n */\n async activate(agentId: string, options?: RequestOptions): Promise<FleetAgent> {\n return this.client.request<FleetAgent>(\n 'POST',\n `/api/v1/fleet/${encodeURIComponent(agentId)}/activate`,\n undefined,\n options,\n );\n }\n\n /**\n * Manually adjust an agent's trust score.\n *\n * @param agentId - The agent identifier.\n * @param params - New trust score and reason.\n * @param options - Optional request options.\n * @returns The updated agent.\n */\n async setTrust(\n agentId: string,\n params: { score: number; reason: string },\n options?: RequestOptions,\n ): Promise<FleetAgent> {\n return this.client.request<FleetAgent>(\n 'PUT',\n `/api/v1/fleet/${encodeURIComponent(agentId)}/trust`,\n params,\n options,\n );\n }\n\n /**\n * List fleet-wide alerts.\n *\n * @param params - Filter parameters.\n * @param options - Optional request options.\n * @returns Array of fleet alerts.\n */\n async alerts(params?: FleetAlertParams, options?: RequestOptions): Promise<FleetAlert[]> {\n const query = buildQuery(params ?? {});\n return this.client.request<FleetAlert[]>('GET', `/api/v1/fleet/alerts${query}`, undefined, options);\n }\n\n /**\n * Resolve a fleet alert.\n *\n * @param alertId - The alert identifier.\n * @param params - Resolution details.\n * @param options - Optional request options.\n * @returns The resolved alert.\n */\n async resolveAlert(\n alertId: string,\n params: { resolvedBy: string },\n options?: RequestOptions,\n ): Promise<FleetAlert> {\n return this.client.request<FleetAlert>(\n 'POST',\n `/api/v1/fleet/alerts/${encodeURIComponent(alertId)}/resolve`,\n params,\n options,\n );\n }\n}\n","import type { ViennaClient } from './client.js';\nimport type {\n Approval,\n ApprovalListParams,\n ApproveParams,\n DenyParams,\n RequestOptions,\n} from './types.js';\nimport { buildQuery } from './utils.js';\n\n/**\n * Module for managing approval workflows.\n *\n * @example\n * ```typescript\n * const pending = await vienna.approvals.list({ status: 'pending' });\n * await vienna.approvals.approve('appr-123', { operator: 'jane', notes: 'LGTM' });\n * ```\n */\nexport class ApprovalsModule {\n constructor(private readonly client: ViennaClient) {}\n\n /**\n * List approvals, optionally filtered by status or source.\n *\n * @param params - Filter parameters.\n * @param options - Optional request options.\n * @returns Array of approvals.\n */\n async list(params?: ApprovalListParams, options?: RequestOptions): Promise<Approval[]> {\n const query = buildQuery(params ?? {});\n return this.client.request<Approval[]>('GET', `/api/v1/approvals${query}`, undefined, options);\n }\n\n /**\n * Get a single approval by ID.\n *\n * @param approvalId - The approval identifier.\n * @param options - Optional request options.\n * @returns The approval.\n */\n async get(approvalId: string, options?: RequestOptions): Promise<Approval> {\n return this.client.request<Approval>('GET', `/api/v1/approvals/${encodeURIComponent(approvalId)}`, undefined, options);\n }\n\n /**\n * Approve a pending action.\n *\n * @param approvalId - The approval identifier.\n * @param params - Approval details (operator, optional notes).\n * @param options - Optional request options.\n * @returns The updated approval.\n */\n async approve(approvalId: string, params: ApproveParams, options?: RequestOptions): Promise<Approval> {\n return this.client.request<Approval>(\n 'POST',\n `/api/v1/approvals/${encodeURIComponent(approvalId)}/approve`,\n params,\n options,\n );\n }\n\n /**\n * Deny a pending action.\n *\n * @param approvalId - The approval identifier.\n * @param params - Denial details (operator, reason).\n * @param options - Optional request options.\n * @returns The updated approval.\n */\n async deny(approvalId: string, params: DenyParams, options?: RequestOptions): Promise<Approval> {\n return this.client.request<Approval>(\n 'POST',\n `/api/v1/approvals/${encodeURIComponent(approvalId)}/deny`,\n params,\n options,\n );\n }\n}\n","import type { ViennaClient } from './client.js';\nimport type {\n Integration,\n IntegrationCreateParams,\n IntegrationTestResult,\n RequestOptions,\n} from './types.js';\n\n/**\n * Module for managing external integrations (Slack, webhooks, PagerDuty, etc.).\n *\n * @example\n * ```typescript\n * await vienna.integrations.create({\n * type: 'slack',\n * name: 'Ops Channel',\n * config: { webhook_url: 'https://hooks.slack.com/...' },\n * eventTypes: ['approval_required', 'policy_violation'],\n * });\n * ```\n */\nexport class IntegrationsModule {\n constructor(private readonly client: ViennaClient) {}\n\n /**\n * List all configured integrations.\n *\n * @param options - Optional request options.\n * @returns Array of integrations.\n */\n async list(options?: RequestOptions): Promise<Integration[]> {\n return this.client.request<Integration[]>('GET', '/api/v1/integrations', undefined, options);\n }\n\n /**\n * Get a single integration by ID.\n *\n * @param integrationId - The integration identifier.\n * @param options - Optional request options.\n * @returns The integration.\n */\n async get(integrationId: string, options?: RequestOptions): Promise<Integration> {\n return this.client.request<Integration>(\n 'GET',\n `/api/v1/integrations/${encodeURIComponent(integrationId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * Create a new integration.\n *\n * @param params - Integration configuration.\n * @param options - Optional request options.\n * @returns The created integration.\n */\n async create(params: IntegrationCreateParams, options?: RequestOptions): Promise<Integration> {\n return this.client.request<Integration>('POST', '/api/v1/integrations', params, options);\n }\n\n /**\n * Update an existing integration.\n *\n * @param integrationId - The integration identifier.\n * @param params - Fields to update.\n * @param options - Optional request options.\n * @returns The updated integration.\n */\n async update(\n integrationId: string,\n params: Partial<IntegrationCreateParams>,\n options?: RequestOptions,\n ): Promise<Integration> {\n return this.client.request<Integration>(\n 'PATCH',\n `/api/v1/integrations/${encodeURIComponent(integrationId)}`,\n params,\n options,\n );\n }\n\n /**\n * Delete an integration.\n *\n * @param integrationId - The integration identifier.\n * @param options - Optional request options.\n */\n async delete(integrationId: string, options?: RequestOptions): Promise<void> {\n await this.client.request<void>(\n 'DELETE',\n `/api/v1/integrations/${encodeURIComponent(integrationId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * Send a test event to an integration to verify connectivity.\n *\n * @param integrationId - The integration identifier.\n * @param options - Optional request options.\n * @returns Test result with success status and latency.\n */\n async test(integrationId: string, options?: RequestOptions): Promise<IntegrationTestResult> {\n return this.client.request<IntegrationTestResult>(\n 'POST',\n `/api/v1/integrations/${encodeURIComponent(integrationId)}/test`,\n undefined,\n options,\n );\n }\n\n /**\n * Toggle an integration's enabled/disabled state.\n *\n * @param integrationId - The integration identifier.\n * @param params - Enable or disable.\n * @param options - Optional request options.\n * @returns The updated integration.\n */\n async toggle(\n integrationId: string,\n params: { enabled: boolean },\n options?: RequestOptions,\n ): Promise<Integration> {\n return this.client.request<Integration>(\n 'PATCH',\n `/api/v1/integrations/${encodeURIComponent(integrationId)}`,\n params,\n options,\n );\n }\n}\n","import type { ViennaClient } from './client.js';\nimport type {\n ComplianceReport,\n ComplianceGenerateParams,\n ComplianceSummary,\n QuickStatsParams,\n RequestOptions,\n} from './types.js';\nimport { buildQuery } from './utils.js';\n\n/**\n * Module for compliance reporting and statistics.\n *\n * @example\n * ```typescript\n * const report = await vienna.compliance.generate({\n * type: 'quarterly',\n * periodStart: '2026-01-01',\n * periodEnd: '2026-03-31',\n * });\n * const stats = await vienna.compliance.quickStats({ days: 30 });\n * ```\n */\nexport class ComplianceModule {\n constructor(private readonly client: ViennaClient) {}\n\n /**\n * Generate a new compliance report.\n *\n * @param params - Report parameters (type, period).\n * @param options - Optional request options.\n * @returns The created report (may still be generating).\n */\n async generate(params: ComplianceGenerateParams, options?: RequestOptions): Promise<ComplianceReport> {\n return this.client.request<ComplianceReport>('POST', '/api/v1/compliance/reports', params, options);\n }\n\n /**\n * Get a compliance report by ID.\n *\n * @param reportId - The report identifier.\n * @param options - Optional request options.\n * @returns The compliance report with summary data.\n */\n async get(reportId: string, options?: RequestOptions): Promise<ComplianceReport> {\n return this.client.request<ComplianceReport>(\n 'GET',\n `/api/v1/compliance/reports/${encodeURIComponent(reportId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * List all compliance reports.\n *\n * @param options - Optional request options.\n * @returns Array of compliance reports.\n */\n async list(options?: RequestOptions): Promise<ComplianceReport[]> {\n return this.client.request<ComplianceReport[]>('GET', '/api/v1/compliance/reports', undefined, options);\n }\n\n /**\n * Get quick compliance statistics for a rolling window.\n *\n * @param params - Stats parameters (number of days).\n * @param options - Optional request options.\n * @returns Compliance summary statistics.\n */\n async quickStats(params: QuickStatsParams, options?: RequestOptions): Promise<ComplianceSummary> {\n const query = buildQuery(params);\n return this.client.request<ComplianceSummary>('GET', `/api/v1/compliance/stats${query}`, undefined, options);\n }\n}\n","import type { ViennaConfig, RequestOptions } from './types.js';\nimport { ViennaRateLimitError } from './errors.js';\nimport {\n SDK_VERSION,\n DEFAULT_BASE_URL,\n DEFAULT_TIMEOUT,\n DEFAULT_RETRIES,\n sleep,\n backoffDelay,\n isRetryable,\n parseResponse,\n} from './utils.js';\nimport { IntentModule } from './intent.js';\nimport { PoliciesModule } from './policies.js';\nimport { FleetModule } from './fleet.js';\nimport { ApprovalsModule } from './approvals.js';\nimport { IntegrationsModule } from './integrations.js';\nimport { ComplianceModule } from './compliance.js';\n\n/**\n * Main client for the Vienna OS API.\n *\n * @example\n * ```typescript\n * import { ViennaClient } from '@vienna/sdk';\n *\n * const vienna = new ViennaClient({ apiKey: 'vna_your_api_key' });\n * const result = await vienna.intent.submit({ action: 'deploy', source: 'ci-bot', payload: {} });\n * ```\n */\nexport class ViennaClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly timeout: number;\n private readonly retries: number;\n private readonly onError?: (error: Error) => void;\n\n /** Intent submission and status. */\n readonly intent: IntentModule;\n /** Policy management. */\n readonly policies: PoliciesModule;\n /** Fleet and agent management. */\n readonly fleet: FleetModule;\n /** Approval workflows. */\n readonly approvals: ApprovalsModule;\n /** External integrations. */\n readonly integrations: IntegrationsModule;\n /** Compliance reporting. */\n readonly compliance: ComplianceModule;\n\n constructor(config: ViennaConfig) {\n if (!config.apiKey) {\n throw new Error('Vienna SDK: apiKey is required');\n }\n\n this.apiKey = config.apiKey;\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n this.retries = config.retries ?? DEFAULT_RETRIES;\n this.onError = config.onError;\n\n // Initialize modules\n this.intent = new IntentModule(this);\n this.policies = new PoliciesModule(this);\n this.fleet = new FleetModule(this);\n this.approvals = new ApprovalsModule(this);\n this.integrations = new IntegrationsModule(this);\n this.compliance = new ComplianceModule(this);\n }\n\n /**\n * Make an authenticated request to the Vienna API.\n *\n * @param method - HTTP method.\n * @param path - API path (e.g. `/api/v1/intents`).\n * @param body - Optional JSON request body.\n * @param options - Per-request options (signal, timeout override).\n * @returns Parsed response data.\n */\n async request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n const requestTimeout = options?.timeout ?? this.timeout;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= this.retries; attempt++) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), requestTimeout);\n\n // Merge external signal with timeout\n if (options?.signal) {\n if (options.signal.aborted) {\n clearTimeout(timeoutId);\n controller.abort();\n } else {\n options.signal.addEventListener('abort', () => controller.abort(), { once: true });\n }\n }\n\n try {\n const headers: Record<string, string> = {\n 'X-Vienna-Api-Key': this.apiKey,\n 'X-Vienna-SDK-Version': SDK_VERSION,\n 'Accept': 'application/json',\n };\n\n if (body !== undefined) {\n headers['Content-Type'] = 'application/json';\n }\n\n const response = await fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n // If retryable and we have retries left, back off\n if (isRetryable(response.status) && attempt < this.retries) {\n const retryAfter = response.headers.get('retry-after');\n const delay = retryAfter\n ? parseInt(retryAfter, 10) * 1000\n : backoffDelay(attempt);\n await sleep(delay);\n continue;\n }\n\n return await parseResponse<T>(response);\n } catch (error) {\n clearTimeout(timeoutId);\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Don't retry on abort or non-retryable errors\n const isAbort = lastError.name === 'AbortError';\n const isRateLimit = lastError instanceof ViennaRateLimitError;\n\n if (isAbort || (!isRateLimit && attempt >= this.retries)) {\n this.onError?.(lastError);\n throw lastError;\n }\n\n if (attempt < this.retries) {\n await sleep(backoffDelay(attempt));\n }\n }\n }\n\n // Should never reach here, but just in case\n const finalError = lastError ?? new Error('Vienna SDK: request failed after retries');\n this.onError?.(finalError);\n throw finalError;\n }\n}\n","/**\n * Framework-specific convenience wrappers for Vienna OS SDK.\n * \n * These wrappers provide simplified interfaces for popular AI agent frameworks,\n * focusing on the core governance operations: submitIntent, waitForApproval,\n * reportExecution, and register.\n */\n\nimport { ViennaClient } from './client.js';\nimport type {\n IntentResult,\n IntentStatus,\n} from './types.js';\n\n/** Base configuration for framework adapters */\nexport interface FrameworkConfig {\n /** Vienna OS API key (starts with `vna_`) */\n apiKey: string;\n /** Base URL of Vienna OS API (optional, defaults to production) */\n baseUrl?: string;\n /** Agent identifier for this framework instance (optional) */\n agentId?: string;\n}\n\n/** Simplified interface focused on core governance operations */\nexport interface FrameworkAdapter {\n /** Submit an intent for governance evaluation */\n submitIntent(action: string, payload: Record<string, unknown>): Promise<IntentResult>;\n \n /** Wait for approval on a pending intent */\n waitForApproval(intentId: string, timeoutMs?: number): Promise<IntentStatus>;\n \n /** Report execution results back to Vienna */\n reportExecution(intentId: string, result: 'success' | 'failure', details?: Record<string, unknown>): Promise<void>;\n \n /** Register this agent with the Vienna fleet */\n register(metadata?: Record<string, string>): Promise<void>;\n}\n\n/** Internal base adapter implementation */\nabstract class BaseFrameworkAdapter implements FrameworkAdapter {\n protected readonly vienna: ViennaClient;\n protected readonly agentId: string;\n\n constructor(config: FrameworkConfig, frameworkName: string) {\n this.vienna = new ViennaClient({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl,\n });\n \n this.agentId = config.agentId || `${frameworkName}-${Date.now()}`;\n }\n\n async submitIntent(action: string, payload: Record<string, unknown>): Promise<IntentResult> {\n return await this.vienna.intent.submit({\n action,\n source: this.agentId,\n payload,\n });\n }\n\n async waitForApproval(intentId: string, timeoutMs: number = 300000): Promise<IntentStatus> {\n const startTime = Date.now();\n \n while (Date.now() - startTime < timeoutMs) {\n const status = await this.vienna.intent.status(intentId);\n \n if (status.status === 'executed' || status.status === 'denied' || status.status === 'cancelled') {\n return status.status;\n }\n \n // Poll every 2 seconds\n await new Promise(resolve => setTimeout(resolve, 2000));\n }\n \n throw new Error(`Approval timeout after ${timeoutMs}ms for intent ${intentId}`);\n }\n\n async reportExecution(\n intentId: string,\n result: 'success' | 'failure',\n details?: Record<string, unknown>\n ): Promise<void> {\n // Report execution via compliance reporting\n // Generate a custom report covering just today for the execution tracking\n const today = new Date().toISOString().split('T')[0]!;\n \n // Log the execution details (in a real implementation, this would be sent to Vienna's audit system)\n console.log(`Execution report for intent ${intentId}: ${result}`, details);\n \n await this.vienna.compliance.generate({\n type: 'custom',\n periodStart: today,\n periodEnd: today,\n });\n }\n\n async register(metadata?: Record<string, string>): Promise<void> {\n // Register with the fleet management system by activating the agent\n // This ensures the agent is known to Vienna's fleet management\n try {\n console.log(`Registering agent ${this.agentId} with metadata:`, metadata);\n await this.vienna.fleet.activate(this.agentId);\n } catch (error) {\n // If activation fails, the agent might not exist yet\n // In a real implementation, we would create the agent first\n console.warn(`Failed to register agent ${this.agentId}:`, error);\n }\n }\n\n protected abstract getFrameworkName(): string;\n}\n\n/** LangChain-specific adapter */\nclass LangChainAdapter extends BaseFrameworkAdapter {\n constructor(config: FrameworkConfig) {\n super(config, 'langchain');\n }\n\n protected getFrameworkName(): string {\n return 'langchain';\n }\n\n /** Enhanced submitIntent with LangChain tool context */\n async submitToolIntent(\n toolName: string,\n toolArgs: Record<string, unknown>,\n chainContext?: Record<string, unknown>\n ): Promise<IntentResult> {\n return await this.submitIntent(`tool_${toolName}`, {\n tool_name: toolName,\n tool_args: toolArgs,\n chain_context: chainContext,\n });\n }\n}\n\n/** CrewAI-specific adapter */\nclass CrewAIAdapter extends BaseFrameworkAdapter {\n constructor(config: FrameworkConfig) {\n super(config, 'crewai');\n }\n\n protected getFrameworkName(): string {\n return 'crewai';\n }\n\n /** Enhanced submitIntent with CrewAI task context */\n async submitTaskIntent(\n taskType: string,\n taskPayload: Record<string, unknown>,\n crewContext?: Record<string, unknown>\n ): Promise<IntentResult> {\n return await this.submitIntent(`crew_${taskType}`, {\n task_type: taskType,\n task_payload: taskPayload,\n crew_context: crewContext,\n });\n }\n}\n\n/** AutoGen-specific adapter */\nclass AutoGenAdapter extends BaseFrameworkAdapter {\n constructor(config: FrameworkConfig) {\n super(config, 'autogen');\n }\n\n protected getFrameworkName(): string {\n return 'autogen';\n }\n\n /** Enhanced submitIntent with AutoGen conversation context */\n async submitConversationIntent(\n functionName: string,\n functionArgs: Record<string, unknown>,\n conversationContext?: Record<string, unknown>\n ): Promise<IntentResult> {\n return await this.submitIntent(`function_${functionName}`, {\n function_name: functionName,\n function_args: functionArgs,\n conversation_context: conversationContext,\n });\n }\n}\n\n/** OpenClaw-specific adapter */\nclass OpenClawAdapter extends BaseFrameworkAdapter {\n constructor(config: FrameworkConfig) {\n super(config, 'openclaw');\n }\n\n protected getFrameworkName(): string {\n return 'openclaw';\n }\n\n /** Enhanced submitIntent with OpenClaw skill context */\n async submitSkillIntent(\n skillName: string,\n skillArgs: Record<string, unknown>,\n sessionContext?: Record<string, unknown>\n ): Promise<IntentResult> {\n return await this.submitIntent(`skill_${skillName}`, {\n skill_name: skillName,\n skill_args: skillArgs,\n session_context: sessionContext,\n });\n }\n}\n\n// ─── Factory Functions ────────────────────────────────────────────────────────\n\n/**\n * Create a LangChain-optimized Vienna adapter.\n * \n * @example\n * ```typescript\n * const vienna = createForLangChain({\n * apiKey: process.env.VIENNA_API_KEY!,\n * agentId: 'langchain-bot-1',\n * });\n * \n * const result = await vienna.submitToolIntent('web_search', { query: 'AI governance' });\n * ```\n */\nexport function createForLangChain(config: FrameworkConfig): LangChainAdapter {\n return new LangChainAdapter(config);\n}\n\n/**\n * Create a CrewAI-optimized Vienna adapter.\n * \n * @example\n * ```typescript\n * const vienna = createForCrewAI({\n * apiKey: process.env.VIENNA_API_KEY!,\n * agentId: 'crew-researcher',\n * });\n * \n * const result = await vienna.submitTaskIntent('research', { topic: 'market analysis' });\n * ```\n */\nexport function createForCrewAI(config: FrameworkConfig): CrewAIAdapter {\n return new CrewAIAdapter(config);\n}\n\n/**\n * Create an AutoGen-optimized Vienna adapter.\n * \n * @example\n * ```typescript\n * const vienna = createForAutoGen({\n * apiKey: process.env.VIENNA_API_KEY!,\n * agentId: 'autogen-assistant',\n * });\n * \n * const result = await vienna.submitConversationIntent('get_stock_price', { symbol: 'NVDA' });\n * ```\n */\nexport function createForAutoGen(config: FrameworkConfig): AutoGenAdapter {\n return new AutoGenAdapter(config);\n}\n\n/**\n * Create an OpenClaw-optimized Vienna adapter.\n * \n * @example\n * ```typescript\n * const vienna = createForOpenClaw({\n * apiKey: process.env.VIENNA_API_KEY!,\n * agentId: 'openclaw-agent',\n * });\n * \n * const result = await vienna.submitSkillIntent('web_search', { query: 'OpenAI news' });\n * ```\n */\nexport function createForOpenClaw(config: FrameworkConfig): OpenClawAdapter {\n return new OpenClawAdapter(config);\n}"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vienna-os/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Official TypeScript SDK for Vienna OS — AI Agent Governance Platform",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"module": "dist/index.mjs",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"package.json"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "npm run clean && tsup",
|
|
22
|
+
"dev": "tsup --watch",
|
|
23
|
+
"test": "jest",
|
|
24
|
+
"clean": "rm -rf dist",
|
|
25
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/risk-ai/regulator.ai.git",
|
|
30
|
+
"directory": "packages/sdk"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://regulator.ai",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/risk-ai/regulator.ai/issues"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"vienna-os",
|
|
38
|
+
"vienna",
|
|
39
|
+
"ai",
|
|
40
|
+
"governance",
|
|
41
|
+
"agents",
|
|
42
|
+
"sdk",
|
|
43
|
+
"compliance",
|
|
44
|
+
"policy",
|
|
45
|
+
"risk-management",
|
|
46
|
+
"agent-framework"
|
|
47
|
+
],
|
|
48
|
+
"license": "Apache-2.0",
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=18.0.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"tsup": "^8.5.1",
|
|
54
|
+
"typescript": "^5.4.0"
|
|
55
|
+
}
|
|
56
|
+
}
|