@kb-labs/studio-data-client 2.119.0-canary.f8394d5fd → 2.119.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 (2) hide show
  1. package/dist/index.js.map +1 -1
  2. package/package.json +13 -13
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors/kb-error.ts","../src/client/error-mapper.ts","../src/client/http-client.ts","../src/client/envelope-interceptor.ts","../src/contracts/common.ts","../src/schemas/common.ts","../src/schemas/audit.ts","../src/schemas/release.ts","../src/schemas/system.ts","../src/sources/http-system-source.ts","../src/sources/http-workflow-source.ts","../src/sources/http-cache-source.ts","../src/sources/prometheus-metrics-parser.ts","../src/sources/http-observability-source.ts","../src/sources/http-analytics-source.ts","../src/sources/http-adapters-source.ts","../src/sources/http-platform-source.ts","../src/sources/http-plugins-source.ts","../src/mocks/mock-system-source.ts","../src/mocks/mock-workflow-source.ts","../src/mocks/mock-cache-source.ts","../src/mocks/mock-observability-source.ts","../src/mocks/mock-analytics-source.ts","../src/mocks/mock-adapters-source.ts","../src/mocks/mock-platform-source.ts","../src/mocks/mock-plugins-source.ts","../src/factory.ts","../src/query-keys.ts","../src/hooks/use-system.ts","../src/hooks/use-plugins.ts","../src/hooks/use-workflows.ts","../src/hooks/use-observability.ts","../src/hooks/use-analytics.ts","../src/hooks/use-adapters.ts","../src/hooks/use-platform.ts","../src/hooks/use-job-events.ts","../src/hooks/use-notifications.ts"],"names":["z","ulid","delay","useQuery","useState","useEffect","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["export class KBError extends Error {\n constructor(\n public code: string,\n override message: string,\n public status?: number,\n public override cause?: unknown\n ) {\n super(message);\n this.name = 'KBError';\n }\n}\n\nexport const errorCodes = {\n NETWORK_ERROR: 'NETWORK_ERROR',\n VALIDATION_ERROR: 'VALIDATION_ERROR',\n AUTH_ERROR: 'AUTH_ERROR',\n NOT_FOUND: 'NOT_FOUND',\n SERVER_ERROR: 'SERVER_ERROR',\n TIMEOUT_ERROR: 'TIMEOUT_ERROR',\n TIMEOUT: 'TIMEOUT',\n CONFLICT: 'CONFLICT',\n RATE_LIMIT: 'RATE_LIMIT',\n TOOL_ERROR: 'TOOL_ERROR',\n} as const;\n\n","import { KBError, errorCodes } from '../errors/kb-error';\nimport type { ResponseError } from './types';\nimport type { ErrorEnvelope } from '@kb-labs/rest-api-contracts';\n\n/**\n * Error envelope structure\n */\ninterface ErrorEnvelopeResponse {\n ok: false;\n error: {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n cause?: string;\n traceId?: string;\n };\n meta?: {\n requestId: string;\n durationMs: number;\n apiVersion: string;\n };\n}\n\n/**\n * Type guard for ErrorEnvelopeResponse\n */\nfunction isErrorEnvelopeResponse(obj: unknown): obj is ErrorEnvelopeResponse {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'ok' in obj &&\n (obj as { ok: unknown }).ok === false &&\n 'error' in obj &&\n typeof (obj as { error: unknown }).error === 'object' &&\n (obj as { error: unknown }).error !== null &&\n 'message' in (obj as { error: object }).error\n );\n}\n\nexport function mapFetchError(error: unknown, response?: Response): KBError {\n if (!response) {\n if (error instanceof KBError) {\n return error;\n }\n if (error instanceof TypeError && error.message.includes('fetch')) {\n return new KBError(errorCodes.NETWORK_ERROR, 'Network request failed', undefined, error);\n }\n return new KBError(errorCodes.NETWORK_ERROR, 'Unknown error occurred', undefined, error);\n }\n\n const parsedBody = error;\n const errorEnvelope =\n parsedBody && typeof parsedBody === 'object' && isErrorEnvelopeResponse(parsedBody)\n ? (parsedBody as ErrorEnvelopeResponse)\n : null;\n const httpError: ResponseError = {\n status: response.status,\n statusText: response.statusText,\n data: parsedBody ?? null,\n };\n\n // Map error codes from api-contracts\n const statusCode = response.status;\n let errorMessage: string | undefined = undefined;\n if (errorEnvelope !== null) {\n const envelope: ErrorEnvelopeResponse = errorEnvelope;\n errorMessage = envelope.error.message;\n }\n \n if (statusCode === 404) {\n return new KBError(errorCodes.NOT_FOUND, errorMessage || 'Resource not found', 404, httpError);\n }\n if (statusCode === 401) {\n return new KBError(errorCodes.AUTH_ERROR, errorMessage || 'Authentication failed', 401, httpError);\n }\n if (statusCode === 403) {\n return new KBError(errorCodes.AUTH_ERROR, errorMessage || 'Forbidden', 403, httpError);\n }\n if (statusCode === 409) {\n return new KBError(errorCodes.CONFLICT, errorMessage || 'Conflict', 409, httpError);\n }\n if (statusCode === 429) {\n return new KBError(errorCodes.RATE_LIMIT, errorMessage || 'Rate limit exceeded', 429, httpError);\n }\n if (statusCode >= 500) {\n return new KBError(errorCodes.SERVER_ERROR, errorMessage || 'Server error', statusCode, httpError);\n }\n return new KBError(errorCodes.NETWORK_ERROR, errorMessage || httpError.statusText || 'Request failed', statusCode, httpError);\n}\n\n/**\n * Map error envelope to KBError\n */\nexport function mapErrorEnvelope(envelope: ErrorEnvelope): KBError {\n const httpError: ResponseError = {\n status: 400, // Default status\n statusText: envelope.error.message,\n data: envelope,\n };\n\n // Map error code from api-contracts to KBError codes\n const errorCode = envelope.error.code;\n \n if (errorCode === 'E_NOT_FOUND') {\n return new KBError(errorCodes.NOT_FOUND, envelope.error.message, 404, httpError);\n }\n if (errorCode === 'E_UNAUTHORIZED') {\n return new KBError(errorCodes.AUTH_ERROR, envelope.error.message, 401, httpError);\n }\n if (errorCode === 'E_FORBIDDEN') {\n return new KBError(errorCodes.AUTH_ERROR, envelope.error.message, 403, httpError);\n }\n if (errorCode === 'E_CONFLICT') {\n return new KBError(errorCodes.CONFLICT, envelope.error.message, 409, httpError);\n }\n if (errorCode === 'E_RATE_LIMIT') {\n return new KBError(errorCodes.RATE_LIMIT, envelope.error.message, 429, httpError);\n }\n if (errorCode === 'E_TIMEOUT') {\n return new KBError(errorCodes.TIMEOUT, envelope.error.message, 408, httpError);\n }\n if (errorCode.startsWith('E_TOOL_')) {\n return new KBError(errorCodes.TOOL_ERROR, envelope.error.message, 500, httpError);\n }\n\n return new KBError(errorCodes.SERVER_ERROR, envelope.error.message, 500, httpError);\n}\n\n","import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse, type AxiosError } from 'axios';\nimport type { RequestInterceptor, ResponseInterceptor, ErrorInterceptor } from './types';\nimport { KBError } from '../errors/kb-error';\nimport { mapFetchError } from './error-mapper';\nimport { ulid } from 'ulid';\n\nexport class HttpClient {\n private client: AxiosInstance;\n private requestInterceptors: RequestInterceptor[] = [];\n private responseInterceptors: ResponseInterceptor[] = [];\n private errorInterceptors: ErrorInterceptor[] = [];\n private baseUrl: string;\n\n constructor(baseUrl: string = '', token?: string) {\n this.baseUrl = baseUrl;\n this.client = axios.create({\n baseURL: baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n },\n });\n\n // Axios request interceptor: add X-Request-Id\n this.client.interceptors.request.use((config) => {\n if (!config.headers['X-Request-Id']) {\n config.headers['X-Request-Id'] = ulid();\n }\n return config;\n });\n\n // Axios response interceptor: unwrap envelope\n this.client.interceptors.response.use(\n (response) => {\n const data = response.data;\n\n // Check if response is an envelope\n if (data && typeof data === 'object' && 'ok' in data) {\n if (data.ok === true && 'data' in data) {\n // Success envelope: unwrap and return data\n response.data = data.data;\n } else if (data.ok === false && 'error' in data) {\n // Error envelope: throw error\n const error = mapFetchError(data.error, {\n status: response.status,\n statusText: response.statusText,\n } as Response);\n return Promise.reject(error);\n }\n }\n\n return response;\n },\n (error: AxiosError) => {\n // Transform axios error to KBError\n const kbError = mapFetchError(error.response?.data, {\n status: error.response?.status ?? 500,\n statusText: error.response?.statusText ?? 'Unknown Error',\n } as Response);\n return Promise.reject(kbError);\n }\n );\n }\n\n addRequestInterceptor(interceptor: RequestInterceptor): void {\n this.requestInterceptors.push(interceptor);\n }\n\n addResponseInterceptor(interceptor: ResponseInterceptor): void {\n this.responseInterceptors.push(interceptor);\n }\n\n addErrorInterceptor(interceptor: ErrorInterceptor): void {\n this.errorInterceptors.push(interceptor);\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n async fetch<T>(path: string, options: AxiosRequestConfig = {}): Promise<T> {\n try {\n // Apply custom request interceptors (if any)\n const config: AxiosRequestConfig = {\n url: path,\n ...options,\n };\n\n // Note: Custom interceptors work with FetchOptions (headers as Headers object)\n // but axios uses plain objects. If you need custom interceptors, adapt them here.\n\n const response: AxiosResponse<T> = await this.client.request<T>(config);\n\n // Apply custom response interceptors (if any)\n // Note: These expect Response objects from fetch API\n // You may need to adapt or remove these if not used\n\n return response.data;\n } catch (error) {\n const kbError = error instanceof KBError ? error : mapFetchError(error);\n throw await this.processError(kbError);\n }\n }\n\n private async processError(error: KBError): Promise<never> {\n let processedError = error;\n for (const interceptor of this.errorInterceptors) {\n processedError = await interceptor(processedError);\n }\n throw processedError;\n }\n}\n\n","/**\n * @module @kb-labs/studio-data-client/client/envelope-interceptor\n * Envelope interceptor for automatic unwrap of API responses\n */\n\nimport type { ResponseInterceptor } from './types';\n\n/**\n * Envelope response structure\n */\ninterface EnvelopeResponse<T = unknown> {\n ok: boolean;\n data?: T;\n error?: {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n cause?: string;\n traceId?: string;\n };\n meta?: {\n requestId: string;\n durationMs: number;\n apiVersion: string;\n };\n}\n\n/**\n * Create envelope unwrap interceptor\n * Automatically unwraps { ok: true, data: T } to T\n */\nexport function createEnvelopeInterceptor(): ResponseInterceptor {\n return async (response: Response): Promise<Response> => {\n // Only process JSON responses\n const contentType = response.headers.get('content-type');\n if (!contentType?.includes('application/json')) {\n return response;\n }\n\n // Skip streaming responses\n if (contentType.includes('text/event-stream')) {\n return response;\n }\n\n // Clone response to avoid consuming the original\n const clonedResponse = response.clone();\n\n try {\n const envelope = await clonedResponse.json() as EnvelopeResponse;\n\n\n // Check if response is an envelope\n if (envelope && typeof envelope === 'object' && 'ok' in envelope) {\n if (envelope.ok === true && 'data' in envelope) {\n // Success envelope: unwrap data\n const unwrappedData = envelope.data;\n \n // Create new headers with Content-Type explicitly set\n const headers = new Headers(response.headers);\n headers.set('Content-Type', 'application/json');\n \n // Create new response with unwrapped data\n return new Response(JSON.stringify(unwrappedData), {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n } else if (envelope.ok === false && 'error' in envelope) {\n // Error envelope: leave as is for error handler\n return response;\n }\n }\n\n // Not an envelope, return as is\n return response;\n } catch (_error) {\n // If parsing fails, return original response\n return response;\n }\n };\n}\n\n/**\n * Extract envelope metadata from response\n */\nexport function extractEnvelopeMeta(response: Response): {\n requestId?: string;\n apiVersion?: string;\n durationMs?: number;\n} | null {\n try {\n const requestId = response.headers.get('X-Request-Id') || undefined;\n const apiVersion = response.headers.get('X-Schema-Version') || response.headers.get('x-schema-version') || undefined;\n \n return {\n requestId: requestId || undefined,\n apiVersion: apiVersion || undefined,\n };\n } catch {\n return null;\n }\n}\n\n","export const SCHEMA_VERSION = '1.0';\n\nexport type ID = string;\nexport type ISODate = string;\n\nexport interface PackageRef {\n name: string;\n version?: string;\n private?: boolean;\n path?: string;\n}\n\nexport interface RunRef {\n id: ID;\n startedAt: ISODate;\n endedAt?: ISODate;\n status: 'pending' | 'ok' | 'warn' | 'fail';\n}\n\nexport interface ActionResult {\n ok: boolean;\n message?: string;\n runId?: ID;\n}\n\n","import { z } from 'zod';\n\nexport const idSchema = z.string();\nexport const isoDateSchema = z.string().datetime();\n\nexport const packageRefSchema = z.object({\n name: z.string(),\n version: z.string().optional(),\n private: z.boolean().optional(),\n path: z.string().optional(),\n});\n\nexport const runRefSchema = z.object({\n id: idSchema,\n startedAt: isoDateSchema,\n endedAt: isoDateSchema.optional(),\n status: z.enum(['pending', 'ok', 'warn', 'fail']),\n});\n\nexport const actionResultSchema = z.object({\n ok: z.boolean(),\n message: z.string().optional(),\n runId: idSchema.optional(),\n});\n\n","import { z } from 'zod';\nimport { isoDateSchema } from './common';\nimport { packageRefSchema, runRefSchema } from './common';\n\nexport const auditSummarySchema = z.object({\n ts: isoDateSchema,\n totals: z.object({\n packages: z.number(),\n ok: z.number(),\n warn: z.number(),\n fail: z.number(),\n durationMs: z.number(),\n }),\n topFailures: z.array(\n z.object({\n pkg: z.string(),\n checks: z.array(z.enum(['style', 'types', 'tests', 'build', 'devlink', 'mind'])),\n })\n ),\n});\n\nexport const auditCheckSchema = z.object({\n id: z.enum(['style', 'types', 'tests', 'build', 'devlink', 'mind']),\n ok: z.boolean(),\n errors: z.number().optional(),\n warnings: z.number().optional(),\n meta: z.unknown().optional(),\n});\n\nexport const auditPackageReportSchema = z.object({\n pkg: packageRefSchema,\n lastRun: runRefSchema,\n checks: z.array(auditCheckSchema),\n artifacts: z.object({\n json: z.string().optional(),\n md: z.string().optional(),\n txt: z.string().optional(),\n html: z.string().optional(),\n }),\n});\n\n","import { z } from 'zod';\n\nexport const releasePreviewSchema = z.object({\n range: z.object({\n from: z.string(),\n to: z.string(),\n }),\n packages: z.array(\n z.object({\n name: z.string(),\n prev: z.string(),\n next: z.string(),\n bump: z.enum(['major', 'minor', 'patch', 'none']),\n breaking: z.number().optional(),\n })\n ),\n manifestJson: z.string().optional(),\n markdown: z.string().optional(),\n});\n\n","import { z } from 'zod';\nimport { isoDateSchema } from './common';\n\nexport const healthStatusSchema = z.object({\n ok: z.boolean(),\n timestamp: isoDateSchema,\n sources: z.array(\n z.object({\n name: z.string(),\n ok: z.boolean(),\n latency: z.number().optional(),\n error: z.string().optional(),\n })\n ),\n});\n\n","/**\n * @module @kb-labs/studio-data-client/sources/http-system-source\n * HTTP implementation of SystemDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport { KBError } from '../errors/kb-error';\nimport type { SystemDataSource, RoutesResponse, PlatformHealthSnapshot } from './system-source';\nimport type {\n ReadyResponse,\n NotReadyResponse,\n SystemInfoPayload,\n SystemCapabilitiesPayload,\n SystemConfigPayload,\n InfoResponse,\n CapabilitiesResponse,\n ConfigResponse,\n} from '@kb-labs/rest-api-contracts';\nimport type { ServiceObservabilityHealth } from '@kb-labs/core-contracts';\nimport type { HealthStatus } from '../contracts/system';\n\n/**\n * HTTP implementation of SystemDataSource\n */\nexport class HttpSystemSource implements SystemDataSource {\n constructor(private client: HttpClient) {}\n\n async getPlatformHealth(): Promise<PlatformHealthSnapshot> {\n return this.client.fetch<PlatformHealthSnapshot>('/health');\n }\n\n async getHealth(): Promise<HealthStatus> {\n const snapshot = await this.client.fetch<ServiceObservabilityHealth>('/observability/health');\n const degraded = snapshot.status === 'degraded' || snapshot.state === 'partial_observability';\n\n return {\n ok: snapshot.status === 'healthy',\n timestamp: snapshot.observedAt,\n sources: snapshot.checks.length > 0\n ? snapshot.checks.map((check: ServiceObservabilityHealth['checks'][number]) => ({\n name: check.id,\n ok: check.status === 'ok',\n latency: check.latencyMs,\n error: check.status === 'warn'\n ? 'system_degraded'\n : check.status === 'error'\n ? check.message ?? 'system_error'\n : undefined,\n }))\n : [\n {\n name: 'system',\n ok: snapshot.status === 'healthy',\n error: degraded ? 'system_degraded' : undefined,\n },\n ],\n snapshot,\n };\n }\n\n /**\n * Get ready status\n */\n async getReady(): Promise<ReadyResponse | NotReadyResponse> {\n try {\n return this.client.fetch<ReadyResponse>('/ready');\n } catch (error) {\n if (error instanceof KBError && error.status === 503) {\n const payload = (error.cause as { data?: unknown } | undefined)?.data;\n if (payload && typeof payload === 'object' && 'ready' in payload) {\n return payload as NotReadyResponse;\n }\n return {\n ready: false,\n reason: 'unknown',\n } as NotReadyResponse;\n }\n throw error;\n }\n }\n\n /**\n * Get info\n */\n async getInfo(): Promise<SystemInfoPayload> {\n const response = await this.client.fetch<InfoResponse>('/info');\n return response.data;\n }\n\n /**\n * Get capabilities\n */\n async getCapabilities(): Promise<SystemCapabilitiesPayload> {\n const response = await this.client.fetch<CapabilitiesResponse>('/info/capabilities');\n return response.data;\n }\n\n /**\n * Get config (redacted)\n */\n async getConfig(): Promise<SystemConfigPayload> {\n const response = await this.client.fetch<ConfigResponse>('/info/config');\n return response.data;\n }\n\n /**\n * Get all registered API routes\n */\n async getRoutes(): Promise<RoutesResponse> {\n return this.client.fetch<RoutesResponse>('/routes');\n }\n\n /**\n * Get the base URL of the API\n */\n getBaseUrl(): string {\n return this.client.getBaseUrl();\n }\n}\n","import type { HttpClient } from '../client/http-client'\nimport { KBError } from '../errors/kb-error'\nimport type {\n WorkflowDataSource,\n WorkflowRunsFilters,\n WorkflowRunParams,\n DashboardStatsResponse,\n WorkflowListResponse,\n WorkflowInfo,\n JobListFilter,\n JobListResponse,\n JobStatusInfo,\n JobStepsResponse,\n JobLogsResponse,\n CronListResponse,\n WorkflowRunHistoryResponse,\n PendingApprovalsResponse,\n ResolveApprovalParams,\n} from './workflow-source'\nimport type {\n WorkflowRun,\n WorkflowRunsListResponse,\n WorkflowPresenterEvent,\n} from '../contracts/workflows'\n\nfunction buildQuery(params?: WorkflowRunsFilters): string {\n if (!params || Object.keys(params).length === 0) {\n return ''\n }\n const query = new URLSearchParams()\n if (params.status) {\n query.set('status', params.status)\n }\n if (typeof params.limit === 'number' && !Number.isNaN(params.limit)) {\n query.set('limit', String(params.limit))\n }\n const qs = query.toString()\n return qs ? `?${qs}` : ''\n}\n\n// No longer needed with axios (handles JSON automatically)\n\nexport class HttpWorkflowSource implements WorkflowDataSource {\n constructor(private readonly client: HttpClient) {}\n\n async listRuns(filters?: WorkflowRunsFilters): Promise<WorkflowRunsListResponse> {\n const query = buildQuery(filters)\n return this.client.fetch<WorkflowRunsListResponse>(`/plugins/workflow/runs${query}`)\n }\n\n async getRun(runId: string): Promise<WorkflowRun | null> {\n try {\n const response = await this.client.fetch<{ run: WorkflowRun }>(\n `/plugins/workflow/runs/${encodeURIComponent(runId)}`,\n )\n return response.run\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null\n }\n throw error\n }\n }\n\n async cancelRun(runId: string): Promise<WorkflowRun> {\n await this.client.fetch<{ cancelled: boolean; runId: string }>(\n `/plugins/workflow/workflows/runs/${encodeURIComponent(runId)}/cancel`,\n { method: 'POST' },\n )\n // Fetch the updated run after cancel\n const run = await this.getRun(runId)\n if (!run) {\n return { id: runId, status: 'cancelled' } as WorkflowRun\n }\n return run\n }\n\n async runWorkflow(params: WorkflowRunParams): Promise<WorkflowRun> {\n const response = await this.client.fetch<{ run: WorkflowRun }>(\n `/plugins/workflow/workflows/${encodeURIComponent(params.spec.name)}/run`,\n {\n method: 'POST',\n data: {\n input: params.metadata,\n },\n },\n )\n return response.run\n }\n\n async listEvents(\n runId: string,\n options: { cursor?: string | null; limit?: number } = {},\n ): Promise<{ events: WorkflowPresenterEvent[]; cursor: string | null }> {\n const params = new URLSearchParams()\n if (options.cursor) {\n params.set('cursor', options.cursor)\n }\n if (typeof options.limit === 'number' && !Number.isNaN(options.limit)) {\n params.set('limit', String(options.limit))\n }\n const query = params.toString()\n return this.client.fetch<{ events: WorkflowPresenterEvent[]; cursor: string | null }>(\n `/workflows/runs/${runId}/events${query ? `?${query}` : ''}`,\n )\n }\n\n // 🆕 NEW methods for UI\n\n async getStats(): Promise<DashboardStatsResponse> {\n return this.client.fetch<DashboardStatsResponse>('/plugins/workflow/stats')\n }\n\n async listWorkflows(filters?: { limit?: number }): Promise<WorkflowListResponse> {\n const params = new URLSearchParams()\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n const query = params.toString()\n return this.client.fetch<WorkflowListResponse>(\n `/plugins/workflow/workflows${query ? `?${query}` : ''}`,\n )\n }\n\n async getWorkflow(workflowId: string): Promise<WorkflowInfo | null> {\n try {\n return await this.client.fetch<WorkflowInfo>(\n `/plugins/workflow/workflows/${encodeURIComponent(workflowId)}`,\n )\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null\n }\n throw error\n }\n }\n\n async runWorkflowById(\n workflowId: string,\n input?: Record<string, unknown>,\n ): Promise<{ runId: string; status: string }> {\n return this.client.fetch<{ runId: string; status: string }>(\n `/plugins/workflow/workflows/${encodeURIComponent(workflowId)}/run`,\n {\n method: 'POST',\n data: { input },\n },\n )\n }\n\n async listJobs(filters?: JobListFilter): Promise<JobListResponse> {\n const params = new URLSearchParams()\n if (filters?.type) {\n params.set('type', filters.type)\n }\n if (filters?.status) {\n params.set('status', filters.status)\n }\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n if (typeof filters?.offset === 'number' && !Number.isNaN(filters.offset)) {\n params.set('offset', String(filters.offset))\n }\n const query = params.toString()\n return this.client.fetch<JobListResponse>(\n `/plugins/workflow/jobs${query ? `?${query}` : ''}`,\n )\n }\n\n async getJob(jobId: string): Promise<JobStatusInfo | null> {\n try {\n return await this.client.fetch<JobStatusInfo>(\n `/plugins/workflow/jobs/${encodeURIComponent(jobId)}`,\n )\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null\n }\n throw error\n }\n }\n\n async getJobSteps(jobId: string): Promise<JobStepsResponse> {\n return this.client.fetch<JobStepsResponse>(\n `/plugins/workflow/jobs/${encodeURIComponent(jobId)}/steps`,\n )\n }\n\n async getJobLogs(\n jobId: string,\n filters?: { limit?: number; offset?: number; level?: string },\n ): Promise<JobLogsResponse> {\n const params = new URLSearchParams()\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n if (typeof filters?.offset === 'number' && !Number.isNaN(filters.offset)) {\n params.set('offset', String(filters.offset))\n }\n if (filters?.level) {\n params.set('level', filters.level)\n }\n const query = params.toString()\n return this.client.fetch<JobLogsResponse>(\n `/plugins/workflow/jobs/${encodeURIComponent(jobId)}/logs${query ? `?${query}` : ''}`,\n )\n }\n\n async listCronJobs(): Promise<CronListResponse> {\n return this.client.fetch<CronListResponse>('/plugins/workflow/cron')\n }\n\n async getPendingApprovals(runId: string): Promise<PendingApprovalsResponse> {\n return this.client.fetch<PendingApprovalsResponse>(\n `/plugins/workflow/runs/${encodeURIComponent(runId)}/pending-approvals`,\n )\n }\n\n async resolveApproval(params: ResolveApprovalParams): Promise<{ resolved: boolean }> {\n const { runId, ...body } = params\n return this.client.fetch<{ resolved: boolean }>(\n `/plugins/workflow/runs/${encodeURIComponent(runId)}/approve`,\n {\n method: 'POST',\n data: body,\n },\n )\n }\n\n async cancelWorkflowRun(runId: string): Promise<{ cancelled: boolean; runId: string }> {\n return this.client.fetch<{ cancelled: boolean; runId: string }>(\n `/plugins/workflow/workflows/runs/${encodeURIComponent(runId)}/cancel`,\n { method: 'POST' },\n )\n }\n\n async getWorkflowRuns(\n workflowId: string,\n filters?: { limit?: number; offset?: number; status?: string },\n ): Promise<WorkflowRunHistoryResponse> {\n const params = new URLSearchParams()\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n if (typeof filters?.offset === 'number' && !Number.isNaN(filters.offset)) {\n params.set('offset', String(filters.offset))\n }\n if (filters?.status) {\n params.set('status', filters.status)\n }\n const query = params.toString()\n return this.client.fetch<WorkflowRunHistoryResponse>(\n `/plugins/workflow/workflows/${encodeURIComponent(workflowId)}/runs${query ? `?${query}` : ''}`,\n )\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-cache-source\n * HTTP implementation of CacheDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { CacheDataSource, CacheInvalidationResult } from './cache-source';\n\n/**\n * HTTP implementation of CacheDataSource\n */\nexport class HttpCacheSource implements CacheDataSource {\n constructor(private client: HttpClient) {}\n\n async invalidateCache(): Promise<CacheInvalidationResult> {\n return this.client.fetch<CacheInvalidationResult>('/cache/invalidate', {\n method: 'POST',\n // No Content-Type header needed for empty body POST\n });\n }\n}\n","import type { PrometheusMetrics } from '../contracts/observability';\n\ntype Sample = {\n name: string;\n labels: Record<string, string>;\n value: number;\n};\n\ntype HistogramPoint = {\n le: number;\n count: number;\n};\n\nfunction parseLabels(raw: string | undefined): Record<string, string> {\n if (!raw) {\n return {};\n }\n\n const labels: Record<string, string> = {};\n const pattern = /([a-zA-Z_][a-zA-Z0-9_]*)=\"((?:\\\\\"|[^\"])*)\"/g;\n\n for (const match of raw.matchAll(pattern)) {\n const key = match[1];\n if (!key) {\n continue;\n }\n\n labels[key] = (match[2] ?? '').replace(/\\\\\"/g, '\"');\n }\n\n return labels;\n}\n\nfunction parseSamples(text: string): Sample[] {\n const samples: Sample[] = [];\n\n for (const line of text.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n const match = trimmed.match(/^([a-zA-Z_:][a-zA-Z0-9_:]*)(?:\\{([^}]*)\\})?\\s+(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)$/);\n if (!match) {\n continue;\n }\n\n samples.push({\n name: match[1]!,\n labels: parseLabels(match[2]),\n value: Number(match[3]),\n });\n }\n\n return samples;\n}\n\nfunction sumMetric(samples: Sample[], metricName: string): number {\n return samples\n .filter((sample) => sample.name === metricName)\n .reduce((sum, sample) => sum + sample.value, 0);\n}\n\nfunction latestMetric(samples: Sample[], metricName: string): number | null {\n const metric = [...samples].reverse().find((sample: Sample) => sample.name === metricName);\n return metric ? metric.value : null;\n}\n\nfunction buildHistogram(samples: Sample[], bucketMetric: string): HistogramPoint[] {\n return samples\n .filter((sample) => sample.name === bucketMetric && sample.labels.le)\n .map((sample) => ({\n le: sample.labels.le === '+Inf' ? Number.POSITIVE_INFINITY : Number(sample.labels.le),\n count: sample.value,\n }))\n .sort((a, b) => a.le - b.le);\n}\n\nfunction interpolateQuantile(quantile: number, histogram: HistogramPoint[]): number {\n if (histogram.length === 0) {\n return 0;\n }\n\n const total = histogram.find((point) => !Number.isFinite(point.le))?.count ?? histogram[histogram.length - 1]!.count;\n if (total <= 0) {\n return 0;\n }\n\n const target = total * quantile;\n let previousCount = 0;\n let previousLe = 0;\n\n for (const point of histogram) {\n if (point.count >= target) {\n if (!Number.isFinite(point.le)) {\n return previousLe;\n }\n\n const bucketCount = point.count - previousCount;\n if (bucketCount <= 0) {\n return point.le;\n }\n\n const progress = (target - previousCount) / bucketCount;\n return previousLe + (point.le - previousLe) * progress;\n }\n\n previousCount = point.count;\n if (Number.isFinite(point.le)) {\n previousLe = point.le;\n }\n }\n\n return previousLe;\n}\n\nfunction buildLatency(samples: Sample[]) {\n const count = sumMetric(samples, 'http_request_duration_ms_count');\n const total = sumMetric(samples, 'http_request_duration_ms_sum');\n const histogram = buildHistogram(samples, 'http_request_duration_ms_bucket');\n const finiteBuckets = histogram.filter((point) => Number.isFinite(point.le) && point.count > 0);\n\n return {\n average: count > 0 ? total / count : 0,\n min: finiteBuckets[0]?.le ?? 0,\n max: finiteBuckets[finiteBuckets.length - 1]?.le ?? 0,\n p50: interpolateQuantile(0.5, histogram),\n p95: interpolateQuantile(0.95, histogram),\n p99: interpolateQuantile(0.99, histogram),\n };\n}\n\nfunction groupByLabel(samples: Sample[], metricName: string, label: string): Map<string, Sample[]> {\n const grouped = new Map<string, Sample[]>();\n\n for (const sample of samples) {\n if (sample.name !== metricName || !sample.labels[label]) {\n continue;\n }\n\n const key = sample.labels[label]!;\n const existing = grouped.get(key) ?? [];\n existing.push(sample);\n grouped.set(key, existing);\n }\n\n return grouped;\n}\n\nfunction buildPluginMetrics(samples: Sample[]): PrometheusMetrics['perPlugin'] {\n const groupedCounts = groupByLabel(samples, 'kb_plugin_request_total', 'plugin');\n const durationSums = groupByLabel(samples, 'kb_plugin_request_duration_ms_sum', 'plugin');\n const durationCounts = groupByLabel(samples, 'kb_plugin_request_duration_ms_count', 'plugin');\n\n return Array.from(new Set([\n ...groupedCounts.keys(),\n ...durationSums.keys(),\n ...durationCounts.keys(),\n ])).map((pluginId) => {\n const requests = (groupedCounts.get(pluginId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const errors = (groupedCounts.get(pluginId) ?? [])\n .filter((sample) => Number(sample.labels.status_code ?? 0) >= 400)\n .reduce((sum, sample) => sum + sample.value, 0);\n const totalDuration = (durationSums.get(pluginId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const durationCount = (durationCounts.get(pluginId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n\n return {\n pluginId,\n requests,\n errors,\n latency: {\n average: durationCount > 0 ? totalDuration / durationCount : 0,\n min: 0,\n max: 0,\n },\n };\n });\n}\n\nfunction buildTenantMetrics(samples: Sample[]): PrometheusMetrics['perTenant'] {\n const groupedCounts = groupByLabel(samples, 'kb_tenant_request_total', 'tenant');\n const errorCounts = groupByLabel(samples, 'kb_tenant_request_errors_total', 'tenant');\n const durationSums = groupByLabel(samples, 'kb_tenant_request_duration_ms_sum', 'tenant');\n const durationCounts = groupByLabel(samples, 'kb_tenant_request_duration_ms_count', 'tenant');\n\n return Array.from(new Set([\n ...groupedCounts.keys(),\n ...errorCounts.keys(),\n ...durationSums.keys(),\n ...durationCounts.keys(),\n ])).map((tenantId) => {\n const requests = (groupedCounts.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const errors = (errorCounts.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const totalDuration = (durationSums.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const durationCount = (durationCounts.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n\n return {\n tenantId,\n requests,\n errors,\n latency: {\n average: durationCount > 0 ? totalDuration / durationCount : 0,\n },\n };\n });\n}\n\nfunction buildErrorBreakdown(samples: Sample[]): PrometheusMetrics['errors'] {\n const byStatusCode: Record<number, number> = {};\n\n for (const sample of samples) {\n if (sample.name !== 'http_requests_total') {\n continue;\n }\n\n const statusCode = Number(sample.labels.status_code ?? 0);\n if (statusCode < 400) {\n continue;\n }\n\n byStatusCode[statusCode] = (byStatusCode[statusCode] ?? 0) + sample.value;\n }\n\n return {\n byStatusCode,\n recent: [],\n };\n}\n\nexport function parsePrometheusMetrics(text: string): PrometheusMetrics {\n const samples = parseSamples(text);\n const totalRequests = sumMetric(samples, 'http_requests_total');\n const errors = buildErrorBreakdown(samples);\n const clientErrors = Object.entries(errors.byStatusCode)\n .filter(([code]) => Number(code) >= 400 && Number(code) < 500)\n .reduce((sum, [, count]) => sum + count, 0);\n const serverErrors = Object.entries(errors.byStatusCode)\n .filter(([code]) => Number(code) >= 500)\n .reduce((sum, [, count]) => sum + count, 0);\n const pluginMountTotal = latestMetric(samples, 'kb_plugins_mount_total');\n const pluginMountSucceeded = latestMetric(samples, 'kb_plugins_mount_succeeded');\n const pluginMountFailed = latestMetric(samples, 'kb_plugins_mount_failed');\n const pluginMountElapsedMs = latestMetric(samples, 'kb_plugins_mount_elapsed_ms');\n const uptimeSeconds = latestMetric(samples, 'process_uptime_seconds') ?? 0;\n const redisHealthy = latestMetric(samples, 'kb_redis_healthy');\n const redisTransitions = groupByLabel(samples, 'kb_redis_status_transitions_total', 'state');\n\n return {\n requests: {\n total: totalRequests,\n success: Math.max(0, totalRequests - clientErrors - serverErrors),\n clientErrors,\n serverErrors,\n },\n latency: buildLatency(samples),\n perPlugin: buildPluginMetrics(samples),\n perTenant: buildTenantMetrics(samples),\n errors,\n timestamps: {\n startTime: Date.now() - uptimeSeconds * 1000,\n lastRequest: null,\n },\n redis: {\n updates: sumMetric(samples, 'kb_redis_status_updates_total'),\n healthyTransitions: (redisTransitions.get('healthy') ?? []).reduce((sum, sample) => sum + sample.value, 0),\n unhealthyTransitions: (redisTransitions.get('unhealthy') ?? []).reduce((sum, sample) => sum + sample.value, 0),\n lastStatus: redisHealthy === null\n ? null\n : {\n healthy: redisHealthy >= 1,\n state: redisHealthy >= 1 ? 'healthy' : 'unhealthy',\n role: 'unknown',\n },\n },\n pluginMounts: pluginMountTotal === null\n ? null\n : {\n total: pluginMountTotal,\n succeeded: pluginMountSucceeded ?? 0,\n failed: pluginMountFailed ?? 0,\n elapsedMs: pluginMountElapsedMs ?? 0,\n },\n uptime: {\n seconds: uptimeSeconds,\n startTime: new Date(Date.now() - uptimeSeconds * 1000).toISOString(),\n lastRequest: null,\n },\n };\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-observability-source\n * HTTP implementation of ObservabilityDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport { KBError } from '../errors/kb-error';\nimport type { ObservabilityDataSource } from './observability-source';\nimport type {\n StateBrokerStats,\n DevKitHealth,\n PrometheusMetrics,\n SystemEvent,\n LogQuery,\n LogQueryResponse,\n LogRecord,\n LogSummarizeRequest,\n LogSummarizeResponse,\n HistoricalDataPoint,\n HeatmapCell,\n MetricsHistoryQuery,\n MetricsHeatmapQuery,\n Incident,\n IncidentQuery,\n IncidentCreatePayload,\n IncidentsListResponse,\n IncidentDetailResponse,\n IncidentAnalysisResponse,\n} from '../contracts/observability';\nimport { parsePrometheusMetrics } from './prometheus-metrics-parser';\n\n/**\n * HTTP implementation of ObservabilityDataSource\n */\nexport class HttpObservabilitySource implements ObservabilityDataSource {\n constructor(private client: HttpClient) {}\n\n async getStateBrokerStats(): Promise<StateBrokerStats> {\n try {\n return await this.client.fetch<StateBrokerStats>(\n '/observability/state-broker'\n );\n } catch (error) {\n throw new KBError(\n 'STATE_BROKER_FETCH_FAILED',\n 'Failed to fetch State Broker stats',\n 500,\n error\n );\n }\n }\n\n async getDevKitHealth(): Promise<DevKitHealth> {\n try {\n return await this.client.fetch<DevKitHealth>(\n '/observability/devkit'\n );\n } catch (error) {\n throw new KBError(\n 'DEVKIT_FETCH_FAILED',\n 'Failed to fetch DevKit health',\n 500,\n error\n );\n }\n }\n\n async getPrometheusMetrics(): Promise<PrometheusMetrics> {\n try {\n const payload = await this.client.fetch<string>(\n '/metrics',\n { responseType: 'text' }\n );\n\n return parsePrometheusMetrics(payload);\n } catch (error) {\n throw new KBError(\n 'PROMETHEUS_METRICS_FETCH_FAILED',\n 'Failed to fetch Prometheus metrics',\n 500,\n error\n );\n }\n }\n\n subscribeToSystemEvents(\n onEvent: (event: SystemEvent) => void,\n onError: (error: Error) => void\n ): () => void {\n const eventSource = new EventSource(`${this.client.getBaseUrl()}/events/registry`);\n\n eventSource.addEventListener('registry', (e) => {\n try {\n const event = JSON.parse(e.data) as SystemEvent;\n onEvent(event);\n } catch (err) {\n console.error('Failed to parse registry event:', err);\n }\n });\n\n eventSource.addEventListener('health', (e) => {\n try {\n const event = JSON.parse(e.data) as SystemEvent;\n onEvent(event);\n } catch (err) {\n console.error('Failed to parse health event:', err);\n }\n });\n\n eventSource.onerror = () => {\n onError(new Error('Connection to event stream failed'));\n eventSource.close();\n };\n\n // Return cleanup function\n return () => {\n eventSource.close();\n };\n }\n\n async queryLogs(filters: LogQuery): Promise<LogQueryResponse> {\n try {\n const params = new URLSearchParams();\n\n if (filters.from) {params.append('from', filters.from);}\n if (filters.to) {params.append('to', filters.to);}\n if (filters.level) {params.append('level', filters.level);}\n if (filters.plugin) {params.append('plugin', filters.plugin);}\n if (filters.executionId) {params.append('executionId', filters.executionId);}\n if (filters.tenantId) {params.append('tenantId', filters.tenantId);}\n if (filters.search) {params.append('search', filters.search);}\n if (filters.limit !== undefined) {params.append('limit', String(filters.limit));}\n if (filters.offset !== undefined) {params.append('offset', String(filters.offset));}\n\n const queryString = params.toString();\n const url = queryString ? `/logs?${queryString}` : '/logs';\n\n return await this.client.fetch<LogQueryResponse>(url);\n } catch (error) {\n throw new KBError(\n 'LOGS_QUERY_FAILED',\n 'Failed to query logs',\n 500,\n error\n );\n }\n }\n\n subscribeToLogs(\n onLog: (log: LogRecord) => void,\n onError: (error: Error) => void,\n filters?: LogQuery\n ): () => void {\n // Build query string from filters\n const params = new URLSearchParams();\n if (filters?.level) {params.append('level', filters.level);}\n if (filters?.plugin) {params.append('plugin', filters.plugin);}\n if (filters?.executionId) {params.append('executionId', filters.executionId);}\n if (filters?.tenantId) {params.append('tenantId', filters.tenantId);}\n\n const queryString = params.toString();\n const streamBase = this.client.getBaseUrl();\n const url = queryString\n ? `${streamBase}/logs/stream?${queryString}`\n : `${streamBase}/logs/stream`;\n\n const eventSource = new EventSource(url);\n\n eventSource.addEventListener('log', (e) => {\n try {\n const log = JSON.parse(e.data) as LogRecord;\n onLog(log);\n } catch (err) {\n console.error('Failed to parse log event:', err);\n }\n });\n\n eventSource.onerror = () => {\n onError(new Error('Connection to log stream failed'));\n eventSource.close();\n };\n\n // Return cleanup function\n return () => {\n eventSource.close();\n };\n }\n\n async summarizeLogs(request: LogSummarizeRequest): Promise<LogSummarizeResponse> {\n try {\n return await this.client.fetch<LogSummarizeResponse>('/logs/summarize', {\n method: 'POST',\n data: request,\n });\n } catch (error) {\n throw new KBError(\n 'LOG_SUMMARIZATION_FAILED',\n 'Failed to summarize logs',\n 500,\n error\n );\n }\n }\n\n async getLog(id: string, includeRelated?: boolean): Promise<{ log: LogRecord; related?: LogRecord[] }> {\n try {\n const params = new URLSearchParams();\n if (includeRelated) {\n params.append('includeRelated', 'true');\n }\n\n const queryString = params.toString();\n const url = queryString ? `/logs/${id}?${queryString}` : `/logs/${id}`;\n\n return await this.client.fetch<{ log: LogRecord; related?: LogRecord[] }>(url);\n } catch (error) {\n throw new KBError(\n 'LOG_FETCH_FAILED',\n 'Failed to fetch log',\n 500,\n error\n );\n }\n }\n\n async getRelatedLogs(id: string): Promise<{ total: number; logs: LogRecord[]; correlationKeys: Record<string, unknown> }> {\n try {\n return await this.client.fetch<{ total: number; logs: LogRecord[]; correlationKeys: Record<string, unknown> }>(\n `/logs/${id}/related`\n );\n } catch (error) {\n throw new KBError(\n 'RELATED_LOGS_FETCH_FAILED',\n 'Failed to fetch related logs',\n 500,\n error\n );\n }\n }\n\n async getMetricsHistory(query: MetricsHistoryQuery): Promise<HistoricalDataPoint[]> {\n try {\n const params = new URLSearchParams();\n params.append('metric', query.metric);\n params.append('range', query.range);\n if (query.interval) {params.append('interval', query.interval);}\n\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<HistoricalDataPoint[]>(\n `/observability/metrics/history?${params.toString()}`\n );\n } catch (error) {\n throw new KBError(\n 'METRICS_HISTORY_FETCH_FAILED',\n 'Failed to fetch metrics history',\n 500,\n error\n );\n }\n }\n\n async getMetricsHeatmap(query: MetricsHeatmapQuery): Promise<HeatmapCell[]> {\n try {\n const params = new URLSearchParams();\n params.append('metric', query.metric);\n if (query.days) {params.append('days', String(query.days));}\n\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<HeatmapCell[]>(\n `/observability/metrics/heatmap?${params.toString()}`\n );\n } catch (error) {\n throw new KBError(\n 'METRICS_HEATMAP_FETCH_FAILED',\n 'Failed to fetch metrics heatmap',\n 500,\n error\n );\n }\n }\n\n async queryIncidents(query?: IncidentQuery): Promise<Incident[]> {\n try {\n const params = new URLSearchParams();\n if (query?.limit) {params.append('limit', String(query.limit));}\n if (query?.severity) {\n const severityList = Array.isArray(query.severity) ? query.severity : [query.severity];\n params.append('severity', severityList.join(','));\n }\n if (query?.type) {\n const typeList = Array.isArray(query.type) ? query.type : [query.type];\n params.append('type', typeList.join(','));\n }\n if (query?.from) {params.append('from', String(query.from));}\n if (query?.to) {params.append('to', String(query.to));}\n if (query?.includeResolved !== undefined) {\n params.append('includeResolved', String(query.includeResolved));\n }\n\n const queryString = params.toString();\n const url = queryString ? `/observability/incidents/history?${queryString}` : '/observability/incidents/history';\n\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<Incident[]>(url);\n } catch (error) {\n throw new KBError(\n 'INCIDENTS_QUERY_FAILED',\n 'Failed to query incidents',\n 500,\n error\n );\n }\n }\n\n async createIncident(payload: IncidentCreatePayload): Promise<Incident> {\n try {\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<Incident>(\n '/observability/incidents',\n {\n method: 'POST',\n data: payload,\n }\n );\n } catch (error) {\n throw new KBError(\n 'INCIDENT_CREATE_FAILED',\n 'Failed to create incident',\n 500,\n error\n );\n }\n }\n\n async resolveIncident(id: string, resolutionNotes?: string): Promise<Incident> {\n try {\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<Incident>(\n `/observability/incidents/${id}/resolve`,\n {\n method: 'POST',\n data: { resolutionNotes },\n }\n );\n } catch (error) {\n throw new KBError(\n 'INCIDENT_RESOLVE_FAILED',\n 'Failed to resolve incident',\n 500,\n error\n );\n }\n }\n\n async listIncidents(query?: IncidentQuery): Promise<IncidentsListResponse> {\n try {\n const params = buildIncidentQueryParams(query);\n const url = `/observability/incidents${params ? `?${params}` : ''}`;\n const response = await this.client.fetch<IncidentsListResponse['data']>(url);\n\n return {\n ok: true,\n data: response,\n };\n } catch (error) {\n throw new KBError(\n 'INCIDENTS_LIST_FAILED',\n 'Failed to list incidents',\n 500,\n error\n );\n }\n }\n\n async getIncident(id: string): Promise<IncidentDetailResponse> {\n try {\n const data = await this.client.fetch<Incident>(`/observability/incidents/${id}`);\n\n return {\n ok: true,\n data,\n };\n } catch (error) {\n throw new KBError(\n 'INCIDENT_FETCH_FAILED',\n 'Failed to fetch incident',\n 500,\n error\n );\n }\n }\n\n async analyzeIncident(id: string): Promise<IncidentAnalysisResponse> {\n try {\n const data = await this.client.fetch<IncidentAnalysisResponse['data']>(\n `/observability/incidents/${id}/analyze`,\n { method: 'POST' }\n );\n\n return {\n ok: true,\n data,\n };\n } catch (error) {\n throw new KBError(\n 'INCIDENT_ANALYSIS_FAILED',\n 'Failed to analyze incident',\n 500,\n error\n );\n }\n }\n\n async chatWithInsights(\n question: string,\n context?: {\n includeMetrics?: boolean;\n includeIncidents?: boolean;\n includeHistory?: boolean;\n timeRange?: '1h' | '6h' | '24h' | '7d';\n plugins?: string[];\n }\n ): Promise<{\n answer: string;\n context: string[];\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }> {\n try {\n return await this.client.fetch<{\n answer: string;\n context: string[];\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }>('/observability/insights/chat', {\n method: 'POST',\n data: { question, context },\n });\n } catch (error) {\n throw new KBError(\n 'INSIGHTS_CHAT_FAILED',\n 'Failed to chat with AI insights',\n 500,\n error\n );\n }\n }\n}\n\nfunction buildIncidentQueryParams(query?: IncidentQuery): string {\n if (!query) { return ''; }\n const params = new URLSearchParams();\n if (query.limit !== undefined) { params.append('limit', query.limit.toString()); }\n if (query.severity) {\n const severities = Array.isArray(query.severity) ? query.severity : [query.severity];\n severities.forEach(s => params.append('severity', s));\n }\n if (query.type) {\n const types = Array.isArray(query.type) ? query.type : [query.type];\n types.forEach(t => params.append('type', t));\n }\n if (query.from !== undefined) { params.append('from', query.from.toString()); }\n if (query.to !== undefined) { params.append('to', query.to.toString()); }\n if (query.includeResolved !== undefined) { params.append('includeResolved', query.includeResolved.toString()); }\n return params.toString();\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-analytics-source\n * HTTP implementation of AnalyticsDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { AnalyticsDataSource } from './analytics-source';\nimport type {\n EventsQuery,\n EventsResponse,\n EventsStats,\n BufferStatus,\n DlqStatus,\n} from '../contracts/analytics';\n\n/**\n * HTTP implementation of AnalyticsDataSource\n * Calls REST API /v1/analytics/* endpoints\n */\nexport class HttpAnalyticsSource implements AnalyticsDataSource {\n constructor(private readonly client: HttpClient) {}\n\n async getEvents(query?: EventsQuery): Promise<EventsResponse> {\n const params = new URLSearchParams();\n\n if (query?.type) {\n if (Array.isArray(query.type)) {\n query.type.forEach(t => params.append('type', t));\n } else {\n params.set('type', query.type);\n }\n }\n if (query?.source) {params.set('source', query.source);}\n if (query?.actor) {params.set('actor', query.actor);}\n if (query?.from) {params.set('from', query.from);}\n if (query?.to) {params.set('to', query.to);}\n if (query?.limit) {params.set('limit', String(query.limit));}\n if (query?.offset) {params.set('offset', String(query.offset));}\n\n const path = `/analytics/events${params.toString() ? `?${params}` : ''}`;\n return this.client.fetch<EventsResponse>(path);\n }\n\n async getStats(): Promise<EventsStats> {\n return this.client.fetch<EventsStats>('/analytics/stats');\n }\n\n async getBufferStatus(): Promise<BufferStatus | null> {\n try {\n return this.client.fetch<BufferStatus>('/analytics/buffer/status');\n } catch (_error) {\n // Analytics not configured or buffer not applicable (501)\n return null;\n }\n }\n\n async getDlqStatus(): Promise<DlqStatus | null> {\n try {\n return this.client.fetch<DlqStatus>('/analytics/dlq/status');\n } catch (_error) {\n // Analytics not configured or DLQ not applicable (501)\n return null;\n }\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-adapters-source\n * HTTP implementation of AdaptersDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { AdaptersDataSource, DateRangeOptions, DailyStats } from './adapters-source';\nimport type {\n LLMUsageStats,\n EmbeddingsUsageStats,\n VectorStoreUsageStats,\n CacheUsageStats,\n StorageUsageStats,\n} from '../contracts/adapters';\n\n/**\n * HTTP implementation of AdaptersDataSource\n * Calls REST API /v1/adapters/* endpoints\n */\nexport class HttpAdaptersSource implements AdaptersDataSource {\n constructor(private readonly client: HttpClient) {}\n\n /**\n * Build query string from date range options\n */\n private buildQueryString(options?: DateRangeOptions): string {\n const params = new URLSearchParams();\n\n if (options?.from) {params.append('from', options.from);}\n if (options?.to) {params.append('to', options.to);}\n\n // Legacy model filter\n if (options?.models) {\n const modelsArray = Array.isArray(options.models) ? options.models : [options.models];\n if (modelsArray.length > 0) {params.append('models', modelsArray.join(','));}\n }\n\n // StatsQuery fields\n if (options?.groupBy) {params.append('groupBy', options.groupBy);}\n if (options?.breakdownBy) {params.append('breakdownBy', options.breakdownBy);}\n if (options?.metrics && options.metrics.length > 0) {params.append('metrics', options.metrics.join(','));}\n\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n }\n\n async getLLMUsage(options?: DateRangeOptions): Promise<LLMUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<LLMUsageStats>(`/adapters/llm/usage${query}`);\n }\n\n async getEmbeddingsUsage(options?: DateRangeOptions): Promise<EmbeddingsUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<EmbeddingsUsageStats>(`/adapters/embeddings/usage${query}`);\n }\n\n async getVectorStoreUsage(options?: DateRangeOptions): Promise<VectorStoreUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<VectorStoreUsageStats>(`/adapters/vectorstore/usage${query}`);\n }\n\n async getCacheUsage(options?: DateRangeOptions): Promise<CacheUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<CacheUsageStats>(`/adapters/cache/usage${query}`);\n }\n\n async getStorageUsage(options?: DateRangeOptions): Promise<StorageUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<StorageUsageStats>(`/adapters/storage/usage${query}`);\n }\n\n async getLLMDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/llm/daily-stats${query}`);\n }\n\n async getEmbeddingsDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/embeddings/daily-stats${query}`);\n }\n\n async getVectorStoreDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/vectorstore/daily-stats${query}`);\n }\n\n async getCacheDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/cache/daily-stats${query}`);\n }\n\n async getStorageDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/storage/daily-stats${query}`);\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-platform-source\n * HTTP implementation of PlatformDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { PlatformDataSource } from './platform-source';\nimport type { PlatformConfigPayload } from '@kb-labs/rest-api-contracts';\n\n/**\n * HTTP implementation of PlatformDataSource\n */\nexport class HttpPlatformSource implements PlatformDataSource {\n constructor(private client: HttpClient) {}\n\n /**\n * Get platform configuration\n */\n async getConfig(): Promise<PlatformConfigPayload> {\n // Envelope is already unwrapped by envelope interceptor\n return this.client.fetch<PlatformConfigPayload>('/platform/config');\n }\n}\n","/**\n * HTTP implementation of PluginsDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport { KBError } from '../errors/kb-error';\nimport type {\n PluginsDataSource,\n PluginsRegistryResponse,\n PluginAskRequest,\n PluginAskResponse\n} from './plugins-source';\n\nexport class HttpPluginsSource implements PluginsDataSource {\n constructor(private readonly client: HttpClient) {}\n\n async getPlugins(): Promise<PluginsRegistryResponse> {\n return this.client.fetch<PluginsRegistryResponse>('/plugins/registry');\n }\n\n async askAboutPlugin(pluginId: string, request: PluginAskRequest): Promise<PluginAskResponse> {\n return this.client.fetch<PluginAskResponse>(`/plugins/${encodeURIComponent(pluginId)}/ask`, {\n method: 'POST',\n data: request,\n });\n }\n\n async getPluginReadme(pluginId: string): Promise<string | null> {\n const [scope, name] = this.splitPluginId(pluginId);\n try {\n return await this.client.fetch<string>(`/plugins/@${scope}/${name}/readme`, { responseType: 'text' });\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null;\n }\n throw error;\n }\n }\n\n async getPluginChangelog(pluginId: string): Promise<string | null> {\n const [scope, name] = this.splitPluginId(pluginId);\n try {\n return await this.client.fetch<string>(`/plugins/@${scope}/${name}/changelog`, { responseType: 'text' });\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null;\n }\n throw error;\n }\n }\n\n private splitPluginId(pluginId: string): [string, string] {\n const match = /^@([^/]+)\\/(.+)$/.exec(pluginId);\n if (!match || !match[1] || !match[2]) {\n throw new KBError('VALIDATION_ERROR', `Invalid plugin ID format: ${pluginId}`, 400);\n }\n return [match[1], match[2]];\n }\n}\n","import type { SystemDataSource, RoutesResponse, PlatformHealthSnapshot } from '../sources/system-source';\nimport type { HealthStatus } from '../contracts/system';\nimport type { ServiceObservabilityHealth } from '@kb-labs/core-contracts';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), ms);\n });\n}\n\nexport class MockSystemSource implements SystemDataSource {\n async getHealth(): Promise<HealthStatus> {\n await delay(150);\n const snapshot: ServiceObservabilityHealth = {\n schema: 'kb.observability/1',\n contractVersion: '1.0',\n serviceId: 'rest',\n instanceId: 'mock-rest',\n observedAt: new Date().toISOString(),\n status: 'healthy',\n uptimeSec: 3600,\n metricsEndpoint: '/api/v1/metrics',\n logsSource: 'rest',\n capabilities: ['httpMetrics', 'eventLoopMetrics', 'operationMetrics', 'logCorrelation'],\n checks: [\n { id: 'registry', status: 'ok', message: 'Registry snapshot loaded' },\n { id: 'plugin-routes', status: 'ok', message: '12 plugin routes mounted' },\n ],\n snapshot: {\n cpuPercent: 6.2,\n rssBytes: 188_743_680,\n heapUsedBytes: 73_400_320,\n eventLoopLagMs: 12,\n activeOperations: 3,\n },\n topOperations: [\n { operation: 'http.GET /api/v1/health', count: 42, avgDurationMs: 3.1, maxDurationMs: 8.2, errorCount: 0 },\n ],\n state: 'active',\n };\n\n return {\n ok: true,\n timestamp: new Date().toISOString(),\n sources: [\n { name: 'registry', ok: true, latency: 100 },\n { name: 'plugin-routes', ok: true, latency: 120 },\n ],\n snapshot,\n };\n }\n\n async getPlatformHealth(): Promise<PlatformHealthSnapshot> {\n await delay(120);\n return {\n status: 'healthy',\n uptimeSec: 3600,\n registry: {\n total: 6,\n withRest: 4,\n withStudio: 3,\n errors: 0,\n partial: false,\n stale: false,\n },\n components: [\n { id: '@kb-labs/quality', version: '0.1.0', restRoutes: 11, studioWidgets: 1 },\n { id: '@kb-labs/workflow', version: '0.1.0', restRoutes: 6, studioWidgets: 1 },\n { id: '@kb-labs/marketplace', version: '0.1.0', restRoutes: 5, studioWidgets: 1 },\n { id: '@kb-labs/mind', version: '0.1.0', restRoutes: 3, studioWidgets: 0 },\n { id: '@kb-labs/commit', version: '0.1.0', restRoutes: 0, studioWidgets: 0 },\n { id: '@kb-labs/release', version: '0.1.0', restRoutes: 4, studioWidgets: 0 },\n ],\n };\n }\n\n async getRoutes(): Promise<RoutesResponse> {\n await delay(100);\n return {\n schema: 'kb.routes/1',\n ts: new Date().toISOString(),\n count: 5,\n routes: [\n { method: 'GET', url: '/api/v1/health' },\n { method: 'GET', url: '/api/v1/ready' },\n { method: 'GET', url: '/api/v1/plugins' },\n { method: 'GET', url: '/api/v1/plugins/:id' },\n { method: 'POST', url: '/api/v1/workflows/run' },\n ],\n };\n }\n\n getBaseUrl(): string {\n return 'http://localhost:5050/api/v1';\n }\n}\n","import { ulid } from 'ulid';\nimport type {\n WorkflowDataSource,\n WorkflowRunsFilters,\n WorkflowRunParams,\n DashboardStatsResponse,\n WorkflowListResponse,\n WorkflowInfo,\n JobListFilter,\n JobListResponse,\n JobStatusInfo,\n JobStepsResponse,\n JobLogsResponse,\n CronListResponse,\n WorkflowRunHistoryResponse,\n} from '../sources/workflow-source';\nimport type { WorkflowRun } from '../contracts/workflows';\n\nfunction createMockRun(overrides: Partial<WorkflowRun> = {}): WorkflowRun {\n const now = new Date().toISOString();\n return {\n id: ulid(),\n name: 'demo-workflow',\n version: '1.0.0',\n status: 'success',\n createdAt: now,\n queuedAt: now,\n startedAt: now,\n finishedAt: now,\n trigger: {\n type: 'manual',\n actor: 'mock-user',\n payload: {},\n },\n jobs: [],\n artifacts: [],\n metadata: {},\n ...overrides,\n };\n}\n\nexport class MockWorkflowSource implements WorkflowDataSource {\n private runs: WorkflowRun[] = [createMockRun()];\n\n async listRuns(_filters?: WorkflowRunsFilters) {\n return {\n runs: this.runs,\n total: this.runs.length,\n };\n }\n\n async getRun(runId: string): Promise<WorkflowRun | null> {\n return this.runs.find(run => run.id === runId) ?? null;\n }\n\n async cancelRun(runId: string): Promise<WorkflowRun> {\n const run = await this.getRun(runId);\n if (!run) {\n throw new Error(`Run ${runId} not found`);\n }\n const updated = {\n ...run,\n status: 'cancelled' as WorkflowRun['status'],\n finishedAt: new Date().toISOString(),\n };\n this.runs = this.runs.map(existing => (existing.id === runId ? updated : existing));\n return updated;\n }\n\n async runWorkflow(params: WorkflowRunParams): Promise<WorkflowRun> {\n const run = createMockRun({\n id: ulid(),\n name: params.spec.name,\n version: params.spec.version,\n status: 'queued',\n metadata: params.metadata ?? {},\n });\n this.runs = [run, ...this.runs];\n return run;\n }\n\n async listEvents() {\n return {\n events: [],\n cursor: null,\n };\n }\n\n // 🆕 NEW mock methods for UI\n\n async getStats(): Promise<DashboardStatsResponse> {\n return {\n workflows: {\n total: 5,\n active: 3,\n inactive: 2,\n },\n jobs: {\n running: 2,\n pending: 1,\n completed: 15,\n failed: 3,\n },\n crons: {\n total: 4,\n enabled: 3,\n disabled: 1,\n },\n activeExecutions: [\n {\n id: 'job-1',\n type: 'workflow:demo',\n workflowName: 'Demo Workflow',\n status: 'running',\n progress: 45,\n progressMessage: 'Processing step 2 of 4',\n startedAt: new Date(Date.now() - 30000).toISOString(),\n durationMs: 30000,\n },\n {\n id: 'job-2',\n type: 'workflow:build',\n workflowName: 'Build Pipeline',\n status: 'running',\n progress: 75,\n progressMessage: 'Running tests',\n startedAt: new Date(Date.now() - 120000).toISOString(),\n durationMs: 120000,\n },\n ],\n recentActivity: [\n {\n id: 'job-3',\n type: 'workflow:deploy',\n workflowName: 'Deploy to Production',\n status: 'completed',\n finishedAt: new Date(Date.now() - 300000).toISOString(),\n durationMs: 180000,\n },\n {\n id: 'job-4',\n type: 'workflow:test',\n workflowName: 'Integration Tests',\n status: 'failed',\n finishedAt: new Date(Date.now() - 600000).toISOString(),\n durationMs: 45000,\n error: 'Test suite failed: 3 of 15 tests failed',\n },\n ],\n };\n }\n\n async listWorkflows(_filters?: { limit?: number }): Promise<WorkflowListResponse> {\n return {\n workflows: [\n {\n id: 'demo-workflow',\n name: 'Demo Workflow',\n description: 'Example workflow for testing',\n source: 'manifest',\n pluginId: 'demo-plugin',\n status: 'active',\n tags: ['demo', 'test'],\n },\n {\n id: 'build-pipeline',\n name: 'Build Pipeline',\n description: 'CI/CD build workflow',\n source: 'standalone',\n status: 'active',\n tags: ['ci', 'build'],\n },\n {\n id: 'deploy-prod',\n name: 'Deploy to Production',\n description: 'Production deployment workflow',\n source: 'manifest',\n pluginId: 'deploy-plugin',\n status: 'active',\n tags: ['deploy', 'production'],\n },\n ],\n };\n }\n\n async getWorkflow(workflowId: string): Promise<WorkflowInfo | null> {\n const workflows = await this.listWorkflows();\n return workflows.workflows.find((w) => w.id === workflowId) ?? null;\n }\n\n async runWorkflowById(\n workflowId: string,\n _input?: Record<string, unknown>,\n ): Promise<{ runId: string; status: string }> {\n const runId = ulid();\n console.log(`[MockWorkflowSource] Running workflow ${workflowId}, run ID: ${runId}`);\n return {\n runId,\n status: 'pending',\n };\n }\n\n async listJobs(filters?: JobListFilter): Promise<JobListResponse> {\n const mockJobs: JobStatusInfo[] = [\n {\n id: 'job-1',\n type: 'workflow:demo',\n status: 'running',\n priority: 5,\n createdAt: new Date(Date.now() - 60000).toISOString(),\n startedAt: new Date(Date.now() - 30000).toISOString(),\n attempt: 1,\n maxRetries: 3,\n progress: 45,\n progressMessage: 'Processing step 2 of 4',\n },\n {\n id: 'job-2',\n type: 'workflow:build',\n status: 'completed',\n priority: 8,\n createdAt: new Date(Date.now() - 300000).toISOString(),\n startedAt: new Date(Date.now() - 280000).toISOString(),\n finishedAt: new Date(Date.now() - 120000).toISOString(),\n attempt: 1,\n maxRetries: 3,\n result: { success: true },\n },\n {\n id: 'job-3',\n type: 'workflow:test',\n status: 'failed',\n priority: 5,\n createdAt: new Date(Date.now() - 600000).toISOString(),\n startedAt: new Date(Date.now() - 580000).toISOString(),\n finishedAt: new Date(Date.now() - 535000).toISOString(),\n attempt: 3,\n maxRetries: 3,\n error: 'Test suite failed: 3 of 15 tests failed',\n },\n ];\n\n let filtered = mockJobs;\n if (filters?.status) {\n filtered = filtered.filter((j) => j.status === filters.status);\n }\n if (filters?.type) {\n filtered = filtered.filter((j) => j.type.includes(filters.type!));\n }\n\n return { jobs: filtered };\n }\n\n async getJob(jobId: string): Promise<JobStatusInfo | null> {\n const jobs = await this.listJobs();\n return jobs.jobs.find((j) => j.id === jobId) ?? null;\n }\n\n async getJobSteps(jobId: string): Promise<JobStepsResponse> {\n return {\n jobId,\n workflowName: 'Demo Workflow',\n status: 'running',\n steps: [\n {\n name: 'checkout',\n handler: 'git-checkout',\n status: 'completed',\n startedAt: new Date(Date.now() - 120000).toISOString(),\n finishedAt: new Date(Date.now() - 110000).toISOString(),\n durationMs: 10000,\n },\n {\n name: 'build',\n handler: 'npm-build',\n status: 'running',\n progress: 65,\n startedAt: new Date(Date.now() - 110000).toISOString(),\n },\n {\n name: 'test',\n handler: 'npm-test',\n status: 'pending',\n },\n {\n name: 'deploy',\n handler: 'k8s-deploy',\n status: 'pending',\n },\n ],\n currentStep: 1,\n };\n }\n\n async getJobLogs(\n jobId: string,\n _filters?: { limit?: number; offset?: number; level?: string },\n ): Promise<JobLogsResponse> {\n return {\n jobId,\n logs: [\n {\n timestamp: new Date(Date.now() - 120000).toISOString(),\n level: 'info',\n message: 'Starting workflow execution',\n context: { step: 'init' },\n },\n {\n timestamp: new Date(Date.now() - 115000).toISOString(),\n level: 'info',\n message: 'Checking out code from repository',\n context: { step: 'checkout' },\n },\n {\n timestamp: new Date(Date.now() - 110000).toISOString(),\n level: 'info',\n message: 'Checkout completed successfully',\n context: { step: 'checkout', duration: 10000 },\n },\n {\n timestamp: new Date(Date.now() - 105000).toISOString(),\n level: 'info',\n message: 'Installing dependencies',\n context: { step: 'build' },\n },\n {\n timestamp: new Date(Date.now() - 85000).toISOString(),\n level: 'info',\n message: 'Running build scripts',\n context: { step: 'build' },\n },\n {\n timestamp: new Date(Date.now() - 60000).toISOString(),\n level: 'warn',\n message: 'Build warning: Unused variable \"foo\" in module \"bar\"',\n context: { step: 'build' },\n },\n ],\n total: 6,\n hasMore: false,\n };\n }\n\n async listCronJobs(): Promise<CronListResponse> {\n return {\n crons: [\n {\n id: 'daily-backup',\n schedule: '0 2 * * *',\n jobType: 'backup:database',\n timezone: 'UTC',\n enabled: true,\n lastRun: new Date(Date.now() - 86400000).toISOString(),\n nextRun: new Date(Date.now() + 86400000).toISOString(),\n pluginId: 'backup-plugin',\n },\n {\n id: 'hourly-sync',\n schedule: '0 * * * *',\n jobType: 'sync:data',\n timezone: 'UTC',\n enabled: true,\n lastRun: new Date(Date.now() - 3600000).toISOString(),\n nextRun: new Date(Date.now() + 600000).toISOString(),\n pluginId: 'sync-plugin',\n },\n {\n id: 'weekly-report',\n schedule: '0 9 * * 1',\n jobType: 'report:generate',\n timezone: 'America/New_York',\n enabled: false,\n pluginId: 'report-plugin',\n },\n ],\n };\n }\n\n async cancelWorkflowRun(runId: string): Promise<{ cancelled: boolean; runId: string }> {\n return { cancelled: true, runId };\n }\n\n async getWorkflowRuns(\n workflowId: string,\n _filters?: { limit?: number; offset?: number; status?: string },\n ): Promise<WorkflowRunHistoryResponse> {\n return {\n workflowId,\n runs: [\n {\n id: 'run-1',\n workflowId,\n status: 'completed',\n trigger: { type: 'manual', user: 'admin' },\n startedAt: new Date(Date.now() - 3600000).toISOString(),\n finishedAt: new Date(Date.now() - 3420000).toISOString(),\n durationMs: 180000,\n },\n {\n id: 'run-2',\n workflowId,\n status: 'failed',\n trigger: { type: 'cron' },\n startedAt: new Date(Date.now() - 7200000).toISOString(),\n finishedAt: new Date(Date.now() - 7155000).toISOString(),\n durationMs: 45000,\n error: 'Step \"deploy\" failed: connection timeout',\n },\n {\n id: 'run-3',\n workflowId,\n status: 'completed',\n trigger: { type: 'api', user: 'ci-system' },\n startedAt: new Date(Date.now() - 86400000).toISOString(),\n finishedAt: new Date(Date.now() - 86220000).toISOString(),\n durationMs: 180000,\n },\n ],\n total: 3,\n };\n }\n}\n\n\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-cache-source\n * Mock implementation of CacheDataSource\n */\n\nimport type { CacheDataSource, CacheInvalidationResult } from '../sources/cache-source';\n\n/**\n * Mock implementation of CacheDataSource\n */\nexport class MockCacheSource implements CacheDataSource {\n async invalidateCache(): Promise<CacheInvalidationResult> {\n // Simulate cache invalidation\n return {\n invalidated: true,\n timestamp: new Date().toISOString(),\n previousRev: 1,\n newRev: 2,\n pluginsDiscovered: 4,\n };\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-observability-source\n * Mock implementation of ObservabilityDataSource\n */\n\nimport type { ObservabilityDataSource } from '../sources/observability-source';\nimport type {\n StateBrokerStats,\n DevKitHealth,\n PrometheusMetrics,\n SystemEvent,\n LogRecord,\n LogQuery,\n LogQueryResponse,\n LogSummarizeRequest,\n LogSummarizeResponse,\n HistoricalDataPoint,\n HeatmapCell,\n MetricsHistoryQuery,\n MetricsHeatmapQuery,\n Incident,\n IncidentQuery,\n IncidentCreatePayload,\n IncidentsListResponse,\n IncidentDetailResponse,\n IncidentAnalysisResponse,\n} from '../contracts/observability';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), ms);\n });\n}\n\n/**\n * Mock implementation of ObservabilityDataSource\n *\n * Returns deterministic mock data for development and testing\n */\nexport class MockObservabilitySource implements ObservabilityDataSource {\n async getStateBrokerStats(): Promise<StateBrokerStats> {\n await delay(150);\n\n return {\n uptime: 3_600_000, // 1 hour\n totalEntries: 42,\n totalSize: 10_240, // 10KB\n hitRate: 0.85,\n missRate: 0.15,\n evictions: 5,\n namespaces: {\n mind: {\n entries: 20,\n hits: 100,\n misses: 10,\n size: 5_120,\n },\n workflow: {\n entries: 15,\n hits: 80,\n misses: 5,\n size: 3_072,\n },\n plugin: {\n entries: 7,\n hits: 30,\n misses: 2,\n size: 2_048,\n },\n },\n };\n }\n\n async getDevKitHealth(): Promise<DevKitHealth> {\n await delay(200);\n\n return {\n healthScore: 68,\n grade: 'D',\n issues: {\n duplicateDeps: 30,\n missingReadmes: 12,\n typeErrors: 3012,\n brokenImports: 5,\n unusedExports: 120,\n },\n packages: 91,\n avgTypeCoverage: 91.1,\n };\n }\n\n async getPrometheusMetrics(): Promise<PrometheusMetrics> {\n await delay(180);\n\n const now = Date.now();\n const startTime = now - 7_200_000; // 2 hours ago\n\n return {\n requests: {\n total: 1542,\n success: 1489,\n clientErrors: 38,\n serverErrors: 15,\n },\n latency: {\n average: 47.3,\n min: 3.2,\n max: 892.5,\n p50: 38.1,\n p95: 125.7,\n p99: 287.4,\n },\n perPlugin: [\n {\n pluginId: 'workflow',\n requests: 523,\n errors: 12,\n latency: {\n average: 52.1,\n min: 5.3,\n max: 345.2,\n },\n },\n {\n pluginId: 'mind',\n requests: 387,\n errors: 8,\n latency: {\n average: 68.5,\n min: 12.1,\n max: 892.5,\n },\n },\n {\n pluginId: 'commit',\n requests: 142,\n errors: 3,\n latency: {\n average: 35.2,\n min: 8.7,\n max: 156.3,\n },\n },\n ],\n perTenant: [\n {\n tenantId: 'default',\n requests: 1542,\n errors: 53,\n latency: {\n average: 47.3,\n },\n },\n ],\n errors: {\n byStatusCode: {\n 400: 12,\n 404: 18,\n 422: 8,\n 500: 10,\n 503: 5,\n },\n recent: [\n {\n timestamp: now - 120_000,\n statusCode: 500,\n errorCode: 'INTERNAL_ERROR',\n message: 'Database connection timeout',\n },\n {\n timestamp: now - 300_000,\n statusCode: 404,\n message: 'Resource not found',\n },\n {\n timestamp: now - 450_000,\n statusCode: 422,\n errorCode: 'VALIDATION_ERROR',\n message: 'Invalid request payload',\n },\n ],\n },\n timestamps: {\n startTime,\n lastRequest: now - 2_500,\n },\n redis: {\n updates: 342,\n healthyTransitions: 2,\n unhealthyTransitions: 1,\n lastStatus: {\n healthy: true,\n state: 'ready',\n role: 'master',\n },\n },\n pluginMounts: {\n total: 8,\n succeeded: 7,\n failed: 1,\n elapsedMs: 1247,\n },\n uptime: {\n seconds: 7200,\n startTime: new Date(startTime).toISOString(),\n lastRequest: new Date(now - 2_500).toISOString(),\n },\n };\n }\n\n async queryLogs(filters: LogQuery): Promise<LogQueryResponse> {\n await delay(200);\n\n const now = Date.now();\n const oldest = new Date(now - 3_600_000).toISOString(); // 1 hour ago\n const newest = new Date(now).toISOString();\n\n // Generate mock log records\n const mockLogs: LogRecord[] = Array.from({ length: filters.limit || 20 }, (_, i) => ({\n time: new Date(now - i * 60_000).toISOString(),\n level: ['info', 'warn', 'error'][i % 3] as 'info' | 'warn' | 'error',\n msg: `Mock log entry ${i + 1}`,\n plugin: filters.plugin || ['rest-api', 'workflow', 'mind'][i % 3],\n executionId: filters.executionId || `exec-${i}`,\n tenantId: filters.tenantId || 'default',\n meta: { mockData: true, index: i },\n }));\n\n return {\n ok: true,\n data: {\n logs: mockLogs,\n total: 42,\n filters,\n bufferStats: {\n size: mockLogs.length,\n maxSize: 1000,\n oldest,\n newest,\n },\n },\n };\n }\n\n subscribeToSystemEvents(\n onEvent: (event: SystemEvent) => void,\n _onError: (error: Error) => void\n ): () => void {\n // Simulate periodic events in mock mode\n const interval = setInterval(() => {\n const now = Date.now();\n\n // Alternate between health and registry events\n if (Math.random() > 0.5) {\n onEvent({\n type: 'health',\n status: 'healthy',\n ts: new Date(now).toISOString(),\n ready: true,\n reason: null,\n registryPartial: false,\n registryStale: false,\n registryLoaded: true,\n pluginMountInProgress: false,\n pluginRoutesMounted: true,\n pluginsMounted: 7,\n pluginsFailed: 1,\n lastPluginMountTs: new Date(now - 60000).toISOString(),\n pluginRoutesLastDurationMs: 1247,\n redisEnabled: true,\n redisHealthy: true,\n });\n } else {\n onEvent({\n type: 'registry',\n rev: Math.random().toString(36).substring(7),\n generatedAt: new Date(now).toISOString(),\n partial: false,\n stale: false,\n expiresAt: new Date(now + 300000).toISOString(),\n ttlMs: 300000,\n checksum: Math.random().toString(36).substring(2, 15),\n checksumAlgorithm: 'sha256',\n previousChecksum: null,\n });\n }\n }, 3000); // Event every 3 seconds\n\n // Return cleanup function\n return () => {\n clearInterval(interval);\n };\n }\n\n subscribeToLogs(\n onLog: (log: LogRecord) => void,\n _onError: (error: Error) => void,\n filters?: LogQuery\n ): () => void {\n // Simulate periodic log events in mock mode\n let counter = 0;\n const interval = setInterval(() => {\n const now = Date.now();\n onLog({\n time: new Date(now).toISOString(),\n level: ['info', 'warn', 'error'][counter % 3] as 'info' | 'warn' | 'error',\n msg: `Mock live log ${counter + 1}`,\n plugin: filters?.plugin || ['rest-api', 'workflow', 'mind'][counter % 3],\n executionId: filters?.executionId || `exec-${counter}`,\n tenantId: filters?.tenantId || 'default',\n meta: { mockData: true, counter },\n });\n counter++;\n }, 2000); // Log every 2 seconds\n\n // Return cleanup function\n return () => {\n clearInterval(interval);\n };\n }\n\n async getLog(_id: string, includeRelated?: boolean): Promise<{ log: LogRecord; related?: LogRecord[] }> {\n await delay(200);\n\n const now = Date.now();\n const mockLog: LogRecord = {\n id: _id,\n time: new Date(now - 120_000).toISOString(), // 2 minutes ago\n level: 'error',\n msg: `Mock log entry with id ${_id}`,\n plugin: 'rest-api',\n executionId: `exec-${_id}`,\n tenantId: 'default',\n requestId: `req-${_id}`,\n traceId: `trace-${_id}`,\n err: {\n name: 'MockError',\n message: 'This is a mock error for demonstration',\n stack: `MockError: This is a mock error for demonstration\\n at mockFunction (mock.ts:42)\\n at handler (handler.ts:89)\\n at process (process.ts:123)`,\n },\n meta: { mockData: true },\n };\n\n let related: LogRecord[] | undefined;\n if (includeRelated) {\n // Generate mock related logs\n related = Array.from({ length: 3 }, (_, i) => ({\n id: `${_id}-related-${i}`,\n time: new Date(now - (120_000 + i * 1000)).toISOString(),\n level: ['info', 'debug', 'error'][i % 3] as 'info' | 'debug' | 'error',\n msg: `Mock related log ${i + 1}`,\n plugin: 'rest-api',\n executionId: mockLog.executionId,\n requestId: mockLog.requestId,\n traceId: mockLog.traceId,\n meta: { mockData: true, relatedIndex: i },\n }));\n }\n\n return { log: mockLog, related };\n }\n\n async getRelatedLogs(_id: string): Promise<{ total: number; logs: LogRecord[]; correlationKeys: any }> {\n await delay(150);\n\n const now = Date.now();\n const mockLogs: LogRecord[] = Array.from({ length: 5 }, (_, i) => ({\n id: `${_id}-related-${i}`,\n time: new Date(now - (120_000 + i * 1000)).toISOString(),\n level: ['info', 'debug', 'warn', 'error'][i % 4] as 'info' | 'debug' | 'warn' | 'error',\n msg: `Mock related log ${i + 1}`,\n plugin: 'rest-api',\n executionId: `exec-${_id}`,\n requestId: `req-${_id}`,\n traceId: `trace-${_id}`,\n meta: { mockData: true, relatedIndex: i },\n }));\n\n return {\n total: mockLogs.length,\n logs: mockLogs,\n correlationKeys: {\n requestId: `req-${_id}`,\n traceId: `trace-${_id}`,\n executionId: `exec-${_id}`,\n },\n };\n }\n\n async summarizeLogs(request: LogSummarizeRequest): Promise<LogSummarizeResponse> {\n await delay(1500); // Simulate LLM processing time\n\n return {\n ok: true,\n data: {\n summary: {\n question: request.question,\n timeRange: {\n from: request.timeRange?.from || null,\n to: request.timeRange?.to || null,\n },\n total: 42,\n stats: {\n total: 42,\n byLevel: {\n error: 3,\n warn: 5,\n info: 34,\n },\n byPlugin: {\n 'rest-api': 20,\n 'workflow': 15,\n 'mind': 7,\n },\n topErrors: [\n { message: 'Connection timeout', count: 2 },\n { message: 'Invalid parameter', count: 1 },\n ],\n timeRange: {\n from: request.timeRange?.from || null,\n to: request.timeRange?.to || null,\n },\n },\n groups: null,\n },\n aiSummary: `## Mock AI Summary\n\nBased on the analysis of ${42} log entries:\n\n**Key Findings:**\n- Total of 3 errors and 5 warnings detected\n- Most active component: rest-api (20 logs)\n- Primary issue: Connection timeouts (2 occurrences)\n\n**Timeline:**\nThe system has been mostly stable with info-level logs. Two connection timeout errors were observed, likely related to external service availability.\n\n**Recommendations:**\n1. Investigate network connectivity to external services\n2. Consider implementing retry logic with exponential backoff\n3. Monitor timeout patterns over next 24 hours\n\n*Note: This is mock data from MockObservabilitySource*`,\n message: null,\n },\n };\n }\n\n async getMetricsHistory(query: MetricsHistoryQuery): Promise<HistoricalDataPoint[]> {\n await delay(100);\n\n // Generate mock time-series data\n const now = Date.now();\n const rangeMs = {\n '1m': 60 * 1000,\n '5m': 5 * 60 * 1000,\n '10m': 10 * 60 * 1000,\n '30m': 30 * 60 * 1000,\n '1h': 60 * 60 * 1000,\n }[query.range];\n\n const intervalMs = query.interval === '1m' ? 60 * 1000 : query.interval === '5m' ? 5 * 60 * 1000 : 5000;\n const points: HistoricalDataPoint[] = [];\n\n for (let t = now - rangeMs; t <= now; t += intervalMs) {\n let value = 0;\n\n switch (query.metric) {\n case 'requests':\n value = 100 + Math.floor(Math.random() * 50);\n break;\n case 'errors':\n value = Math.floor(Math.random() * 5);\n break;\n case 'latency':\n value = 30 + Math.floor(Math.random() * 20);\n break;\n case 'uptime':\n value = (now - t) / 1000;\n break;\n }\n\n points.push({ timestamp: t, value });\n }\n\n return points;\n }\n\n async getMetricsHeatmap(query: MetricsHeatmapQuery): Promise<HeatmapCell[]> {\n await delay(150);\n\n const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n const cells: HeatmapCell[] = [];\n\n for (const day of days) {\n for (let hour = 0; hour < 24; hour++) {\n cells.push({ day, hour, value: mockHeatmapValue(query.metric, hour) });\n }\n }\n\n return cells;\n }\n\n async queryIncidents(query?: IncidentQuery): Promise<Incident[]> {\n await delay(200);\n\n const mockIncidents: Incident[] = [\n {\n id: 'inc-1',\n type: 'latency_spike',\n severity: 'warning',\n title: 'Elevated API Latency',\n details: 'Average latency increased to 250ms (baseline: 50ms)',\n rootCause: [\n {\n factor: 'Database connection pool exhaustion',\n confidence: 0.85,\n evidence: 'Connection pool utilization at 100%, wait queue growing',\n },\n {\n factor: 'Increased query complexity',\n confidence: 0.6,\n evidence: 'Average query time increased 3x in the last hour',\n },\n ],\n affectedServices: ['rest-api', 'workflow-runtime'],\n timestamp: Date.now() - 2 * 60 * 60 * 1000, // 2 hours ago\n resolvedAt: Date.now() - 1 * 60 * 60 * 1000, // 1 hour ago\n resolutionNotes: 'Increased connection pool size from 10 to 20',\n metadata: { peakLatency: 350, duration: '45m' },\n },\n {\n id: 'inc-2',\n type: 'error_rate',\n severity: 'critical',\n title: 'High Error Rate in Mind Plugin',\n details: 'Error rate spiked to 15% (baseline: <1%)',\n affectedServices: ['mind-engine'],\n timestamp: Date.now() - 30 * 60 * 1000, // 30 minutes ago\n metadata: { errorCount: 47, requestCount: 310 },\n },\n {\n id: 'inc-3',\n type: 'plugin_failure',\n severity: 'warning',\n title: 'Plugin Mount Timeout',\n details: 'workflow plugin took 15s to mount (expected: <3s)',\n affectedServices: ['workflow-runtime'],\n timestamp: Date.now() - 10 * 60 * 1000, // 10 minutes ago\n resolvedAt: Date.now() - 5 * 60 * 1000, // 5 minutes ago\n resolutionNotes: 'Plugin restarted successfully',\n },\n ];\n\n // Apply filters\n let filtered = [...mockIncidents];\n\n if (query?.severity) {\n const severityList = Array.isArray(query.severity) ? query.severity : [query.severity];\n filtered = filtered.filter(inc => severityList.includes(inc.severity));\n }\n\n if (query?.type) {\n const typeList = Array.isArray(query.type) ? query.type : [query.type];\n filtered = filtered.filter(inc => typeList.includes(inc.type));\n }\n\n if (query?.from) {\n filtered = filtered.filter(inc => inc.timestamp >= query.from!);\n }\n\n if (query?.to) {\n filtered = filtered.filter(inc => inc.timestamp <= query.to!);\n }\n\n if (!query?.includeResolved) {\n filtered = filtered.filter(inc => !inc.resolvedAt);\n }\n\n if (query?.limit) {\n filtered = filtered.slice(0, query.limit);\n }\n\n return filtered;\n }\n\n async createIncident(payload: IncidentCreatePayload): Promise<Incident> {\n await delay(150);\n\n const incident: Incident = {\n id: `inc-${Date.now()}`,\n ...payload,\n timestamp: payload.timestamp || Date.now(),\n };\n\n return incident;\n }\n\n async resolveIncident(_id: string, resolutionNotes?: string): Promise<Incident> {\n await delay(150);\n\n // Mock resolving an incident\n const incident: Incident = {\n id: _id,\n type: 'error_rate',\n severity: 'critical',\n title: 'Mock Incident',\n details: 'Mock incident details',\n timestamp: Date.now() - 60 * 60 * 1000,\n resolvedAt: Date.now(),\n resolutionNotes,\n };\n\n return incident;\n }\n\n async listIncidents(query?: IncidentQuery): Promise<IncidentsListResponse> {\n await delay(150);\n\n const incidents = await this.queryIncidents(query);\n const unresolved = incidents.filter(i => !i.resolvedAt).length;\n\n return {\n ok: true,\n data: {\n incidents,\n summary: {\n total: incidents.length,\n unresolved,\n bySeverity: {\n critical: incidents.filter(i => i.severity === 'critical').length,\n warning: incidents.filter(i => i.severity === 'warning').length,\n info: incidents.filter(i => i.severity === 'info').length,\n },\n showing: incidents.length,\n },\n },\n };\n }\n\n async getIncident(_id: string): Promise<IncidentDetailResponse> {\n await delay(150);\n\n const incident: Incident = {\n id: _id,\n type: 'error_rate',\n severity: 'critical',\n title: 'High Error Rate Detected',\n details: 'Error rate exceeded threshold of 10%',\n timestamp: Date.now() - 60 * 60 * 1000,\n affectedServices: ['rest-api', 'workflow-engine'],\n metadata: {\n errorRate: 15.2,\n threshold: 10,\n },\n relatedData: {\n logs: {\n errorCount: 42,\n warnCount: 18,\n timeRange: [Date.now() - 5 * 60 * 1000, Date.now()],\n sampleErrors: [\n 'TypeError: Cannot read property \\'name\\' of undefined',\n 'Error: Failed to connect to database',\n 'Error: Timeout exceeded for operation',\n ],\n },\n metrics: {\n before: {\n errorRate: 2.1,\n avgLatency: 45,\n totalRequests: 1000,\n },\n during: {\n errorRate: 15.2,\n avgLatency: 120,\n totalRequests: 500,\n totalErrors: 76,\n },\n },\n timeline: [\n {\n timestamp: Date.now(),\n event: 'Incident detected: error_rate',\n source: 'detector',\n },\n {\n timestamp: Date.now() - 2 * 60 * 1000,\n event: 'Error: Failed to connect to database',\n source: 'logs',\n },\n {\n timestamp: Date.now() - 3 * 60 * 1000,\n event: 'Error: Timeout exceeded for operation',\n source: 'logs',\n },\n ],\n },\n };\n\n return {\n ok: true,\n data: incident,\n };\n }\n\n async analyzeIncident(_id: string): Promise<IncidentAnalysisResponse> {\n await delay(800); // Simulate LLM processing time\n\n return {\n ok: true,\n data: {\n summary: 'High error rate detected due to database connection issues and timeout problems. System experienced 15.2% error rate, significantly above the 2.1% baseline.',\n rootCauses: [\n {\n factor: 'Database connection pool exhaustion',\n confidence: 0.85,\n evidence: 'Multiple \"Failed to connect to database\" errors in logs. Error rate correlation with database connection attempts.',\n },\n {\n factor: 'Increased request timeout frequency',\n confidence: 0.72,\n evidence: 'Timeout errors increased from 0% to 8% during incident window. Latency jumped from 45ms to 120ms.',\n },\n {\n factor: 'Potential memory leak in error handler',\n confidence: 0.45,\n evidence: 'TypeError suggests undefined object access, possibly due to improper error handling initialization.',\n },\n ],\n patterns: [\n 'Error rate spike correlates with increased latency (45ms → 120ms)',\n 'Database connection errors preceded timeout errors by ~1 minute',\n 'Error rate increased 7x above baseline during incident',\n ],\n recommendations: [\n 'Increase database connection pool size and implement connection retry logic with exponential backoff',\n 'Add circuit breaker pattern to prevent cascading failures when database is unavailable',\n 'Review error handling code for undefined object access, especially in database connection error paths',\n 'Implement request timeout monitoring and alerting at 75% of threshold',\n 'Consider adding database health check endpoint to proactively detect connection issues',\n ],\n analyzedAt: Date.now(),\n cached: false,\n },\n };\n }\n\n async chatWithInsights(\n question: string,\n context?: {\n includeMetrics?: boolean;\n includeIncidents?: boolean;\n includeHistory?: boolean;\n timeRange?: '1h' | '6h' | '24h' | '7d';\n plugins?: string[];\n }\n ): Promise<{\n answer: string;\n context: string[];\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }> {\n await delay(500);\n\n // Mock AI response\n return {\n answer: `Based on the current system metrics, here's my analysis of \"${question}\": The system is performing well with average latency of 45ms and 99.2% success rate. No critical issues detected.`,\n context: [\n 'Current metrics: 1,234 requests in the last hour',\n 'Average latency: 45ms',\n 'Error rate: 0.8%',\n context?.includeIncidents ? '2 active incidents' : undefined,\n ].filter(Boolean) as string[],\n usage: {\n promptTokens: 150,\n completionTokens: 80,\n totalTokens: 230,\n },\n };\n }\n}\n\nfunction mockHeatmapValue(metric: string, hour: number): number {\n const isBusinessHour = hour >= 9 && hour <= 17;\n if (metric === 'latency') { return 30 + Math.floor(Math.random() * 40) + (isBusinessHour ? 10 : 0); }\n if (metric === 'errors') { return Math.floor(Math.random() * 10); }\n if (metric === 'requests') { return 50 + Math.floor(Math.random() * 100) + (isBusinessHour ? 50 : 0); }\n return 0;\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-analytics-source\n * Mock implementation of AnalyticsDataSource\n */\n\nimport type { AnalyticsDataSource } from '../sources/analytics-source';\nimport type {\n EventsQuery,\n EventsResponse,\n EventsStats,\n BufferStatus,\n DlqStatus,\n AnalyticsEvent,\n} from '../contracts/analytics';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), ms);\n });\n}\n\n/**\n * Mock implementation of AnalyticsDataSource\n * Returns deterministic mock data for development and testing\n */\nexport class MockAnalyticsSource implements AnalyticsDataSource {\n private mockEvents: AnalyticsEvent[];\n\n constructor() {\n this.mockEvents = this.generateMockEvents();\n }\n\n private generateMockEvents(): AnalyticsEvent[] {\n const now = Date.now();\n const events: AnalyticsEvent[] = [];\n\n const eventTypes = [\n 'mind.query.started',\n 'mind.query.completed',\n 'workflow.run.started',\n 'workflow.run.completed',\n 'commit.generated',\n 'plugin.mounted',\n ];\n\n const sources = ['mind', 'workflow', 'commit', 'core'];\n const actors: Array<'user' | 'agent' | 'ci'> = ['user', 'agent', 'ci'];\n\n // Generate 100 mock events\n for (let i = 0; i < 100; i++) {\n const ts = new Date(now - i * 60000).toISOString(); // Events every minute\n const type = eventTypes[Math.floor(Math.random() * eventTypes.length)]!;\n const source = sources[Math.floor(Math.random() * sources.length)]!;\n const actorType = actors[Math.floor(Math.random() * actors.length)]!;\n\n events.push({\n id: `mock-event-${i}`,\n schema: 'kb.v1' as const,\n type,\n ts,\n ingestTs: ts,\n source: {\n product: source,\n version: '1.0.0',\n },\n runId: `run-${Math.floor(i / 5)}`, // Group every 5 events\n actor: {\n type: actorType,\n id: `${actorType}-${Math.floor(Math.random() * 10)}` as string,\n name: `Mock ${actorType}` as string,\n },\n ctx: {\n workspace: '/mock/workspace',\n branch: 'main',\n },\n payload: {\n duration: Math.random() * 1000,\n success: Math.random() > 0.1,\n },\n });\n }\n\n return events;\n }\n\n async getEvents(query?: EventsQuery): Promise<EventsResponse> {\n await delay(150);\n\n let filtered = [...this.mockEvents];\n\n // Apply filters\n if (query?.type) {\n const types = Array.isArray(query.type) ? query.type : [query.type];\n filtered = filtered.filter(e => types.includes(e.type));\n }\n\n if (query?.source) {\n filtered = filtered.filter(e => e.source.product === query.source);\n }\n\n if (query?.actor) {\n filtered = filtered.filter(e => e.actor?.type === query.actor);\n }\n\n // Apply limit\n const limit = query?.limit || 100;\n const offset = query?.offset || 0;\n const paginated = filtered.slice(offset, offset + limit);\n\n return {\n events: paginated,\n total: filtered.length,\n hasMore: offset + limit < filtered.length,\n };\n }\n\n async getStats(): Promise<EventsStats> {\n await delay(180);\n\n const byType: Record<string, number> = {};\n const bySource: Record<string, number> = {};\n const byActor: Record<string, number> = {};\n\n this.mockEvents.forEach(event => {\n byType[event.type] = (byType[event.type] || 0) + 1;\n bySource[event.source.product] = (bySource[event.source.product] || 0) + 1;\n if (event.actor) {\n byActor[event.actor.type] = (byActor[event.actor.type] || 0) + 1;\n }\n });\n\n const timestamps = this.mockEvents.map(e => new Date(e.ts).getTime());\n const oldestTs = Math.min(...timestamps);\n const newestTs = Math.max(...timestamps);\n\n return {\n totalEvents: this.mockEvents.length,\n byType,\n bySource,\n byActor,\n timeRange: {\n from: new Date(oldestTs).toISOString(),\n to: new Date(newestTs).toISOString(),\n },\n };\n }\n\n async getBufferStatus(): Promise<BufferStatus | null> {\n await delay(100);\n\n const timestamps = this.mockEvents.map(e => new Date(e.ts).getTime());\n\n return {\n segments: 3,\n totalSizeBytes: 524288, // 512 KB\n oldestEventTs: new Date(Math.min(...timestamps)).toISOString(),\n newestEventTs: new Date(Math.max(...timestamps)).toISOString(),\n };\n }\n\n async getDlqStatus(): Promise<DlqStatus | null> {\n await delay(100);\n\n return {\n failedEvents: 2,\n oldestFailureTs: new Date(Date.now() - 3600000).toISOString(), // 1 hour ago\n };\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-adapters-source\n * Mock implementation of AdaptersDataSource\n */\n\nimport type { AdaptersDataSource, DateRangeOptions, DailyStats } from '../sources/adapters-source';\nimport type {\n LLMUsageStats,\n EmbeddingsUsageStats,\n VectorStoreUsageStats,\n CacheUsageStats,\n StorageUsageStats,\n} from '../contracts/adapters';\n\n/**\n * Mock adapters data source for testing\n */\nexport class MockAdaptersSource implements AdaptersDataSource {\n async getLLMUsage(_options?: DateRangeOptions): Promise<LLMUsageStats> {\n return {\n totalRequests: 1247,\n totalTokens: 3_456_789,\n totalCost: 12.45,\n totalCacheReadTokens: 0,\n totalBillableTokens: 3_456_789,\n totalCacheSavingsUsd: 0,\n byModel: {\n 'gpt-4': {\n requests: 234,\n promptTokens: 45_678,\n completionTokens: 23_456,\n totalTokens: 69_134,\n cost: 4.15,\n costPer1KTokens: 0.06,\n tokensPerRequest: 295,\n errorRate: 0.5,\n avgDurationMs: 2345,\n cacheReadTokens: 0,\n billableTokens: 69_134,\n cacheSavingsUsd: 0,\n },\n 'gpt-3.5-turbo': {\n requests: 789,\n promptTokens: 234_567,\n completionTokens: 123_456,\n totalTokens: 358_023,\n cost: 0.54,\n costPer1KTokens: 0.0015,\n tokensPerRequest: 454,\n errorRate: 0,\n avgDurationMs: 876,\n cacheReadTokens: 0,\n billableTokens: 358_023,\n cacheSavingsUsd: 0,\n },\n 'claude-3-sonnet': {\n requests: 224,\n promptTokens: 567_890,\n completionTokens: 234_567,\n totalTokens: 802_457,\n cost: 7.76,\n costPer1KTokens: 0.0097,\n tokensPerRequest: 3582,\n errorRate: 1.2,\n avgDurationMs: 1567,\n cacheReadTokens: 0,\n billableTokens: 802_457,\n cacheSavingsUsd: 0,\n },\n },\n errors: 12,\n timeRange: {\n from: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n to: new Date().toISOString(),\n },\n };\n }\n\n async getEmbeddingsUsage(_options?: DateRangeOptions): Promise<EmbeddingsUsageStats> {\n return {\n totalRequests: 3456,\n totalTextLength: 1_234_567,\n totalCost: 2.47,\n errors: 8,\n avgDurationMs: 234,\n batchRequests: 456,\n singleRequests: 3000,\n avgBatchSize: 15.3,\n };\n }\n\n async getVectorStoreUsage(_options?: DateRangeOptions): Promise<VectorStoreUsageStats> {\n return {\n searchQueries: 2345,\n upsertOperations: 567,\n deleteOperations: 89,\n avgSearchDuration: 45.6,\n avgSearchScore: 0.87,\n avgResultsCount: 12.4,\n totalVectorsUpserted: 45_678,\n totalVectorsDeleted: 1234,\n };\n }\n\n async getCacheUsage(_options?: DateRangeOptions): Promise<CacheUsageStats> {\n return {\n totalGets: 15_678,\n hits: 13_456,\n misses: 2222,\n hitRate: 85.8,\n sets: 3456,\n avgGetDuration: 2.3,\n avgSetDuration: 5.7,\n };\n }\n\n async getStorageUsage(_options?: DateRangeOptions): Promise<StorageUsageStats> {\n return {\n readOperations: 8765,\n writeOperations: 2345,\n deleteOperations: 234,\n totalBytesRead: 123_456_789,\n totalBytesWritten: 45_678_901,\n avgReadDuration: 12.4,\n avgWriteDuration: 34.5,\n };\n }\n\n async getLLMDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalTokens: [10000, 60000],\n totalCost: [1, 6],\n avgDurationMs: [500, 2500],\n });\n }\n\n async getEmbeddingsDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalTokens: [5000, 30000],\n totalCost: [0.1, 0.5],\n avgDurationMs: [100, 500],\n });\n }\n\n async getVectorStoreDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalSearches: [100, 500],\n totalUpserts: [50, 200],\n totalDeletes: [10, 50],\n avgDurationMs: [30, 150],\n });\n }\n\n async getCacheDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalHits: [500, 2000],\n totalMisses: [100, 500],\n totalSets: [200, 800],\n hitRate: [70, 95],\n });\n }\n\n async getStorageDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalBytesRead: [1000000, 10000000],\n totalBytesWritten: [500000, 5000000],\n avgDurationMs: [10, 50],\n });\n }\n\n /**\n * Helper to generate mock daily stats\n */\n private generateMockDailyStats(metricsRanges: Record<string, [number, number]>): DailyStats[] {\n const days = 7;\n const stats: DailyStats[] = [];\n const now = new Date();\n\n for (let i = days - 1; i >= 0; i--) {\n const date = new Date(now);\n date.setDate(date.getDate() - i);\n const dateStr = date.toISOString().split('T')[0]!;\n\n const metrics: Record<string, number> = {};\n for (const [key, [min, max]] of Object.entries(metricsRanges)) {\n metrics[key] = Math.floor(Math.random() * (max - min)) + min;\n }\n\n stats.push({\n date: dateStr,\n count: Math.floor(Math.random() * 100) + 50, // 50-150 requests\n metrics,\n });\n }\n\n return stats;\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-platform-source\n * Mock implementation of PlatformDataSource for development\n */\n\nimport type { PlatformDataSource } from '../sources/platform-source';\nimport type { PlatformConfigPayload } from '@kb-labs/rest-api-contracts';\n\n/**\n * Mock platform data source\n */\nexport class MockPlatformSource implements PlatformDataSource {\n async getConfig(): Promise<PlatformConfigPayload> {\n return {\n schema: 'kb.platform.config/1',\n ts: new Date().toISOString(),\n adapters: {\n // Multi-adapter example: array of providers for LLM\n llm: ['@kb-labs/adapters-openai', '@kb-labs/adapters-vibeproxy'],\n embeddings: '@kb-labs/adapters-openai/embeddings',\n storage: '@kb-labs/data-store',\n logger: '@kb-labs/adapters-pino',\n analytics: '@kb-labs/adapters-analytics-file',\n vectorStore: '@kb-labs/adapters-qdrant',\n cache: '@kb-labs/adapters-redis',\n },\n adapterOptions: {\n llm: {\n defaultModel: 'gpt-4o-mini',\n },\n vectorStore: {\n url: 'http://localhost:6333',\n },\n cache: {\n url: 'redis://localhost:6379',\n },\n },\n execution: {\n mode: 'in-process',\n },\n redacted: [],\n };\n }\n}\n","/**\n * Mock implementation of PluginsDataSource for testing\n */\n\nimport type { PluginsDataSource, PluginsRegistryResponse } from '../sources/plugins-source';\nimport type { ManifestV3 } from '@kb-labs/plugin-contracts';\n\nconst mockManifests: PluginsRegistryResponse = {\n manifests: [\n {\n pluginId: '@kb-labs/mind-plugin',\n source: {\n kind: 'workspace',\n path: '/workspace/kb-labs-mind/packages/mind-plugin',\n },\n pluginRoot: '/workspace/kb-labs-mind/packages/mind-plugin',\n discoveredAt: new Date(Date.now() - 3600000).toISOString(), // 1 hour ago\n buildTimestamp: new Date(Date.now() - 7200000).toISOString(), // 2 hours ago\n manifest: {\n schema: 'kb.plugin/3',\n id: '@kb-labs/mind-plugin',\n version: '0.1.0',\n display: {\n name: 'Mind RAG Plugin',\n description: 'Semantic code search and RAG system',\n author: 'KB Labs',\n icon: '🧠',\n tags: ['search', 'ai', 'rag'],\n },\n permissions: {\n fs: { mode: 'read', allow: ['.kb/**', 'src/**'] },\n net: { allowHosts: ['api.openai.com'] },\n },\n platform: {\n requires: ['vectorStore', 'embeddings', 'cache'],\n },\n cli: {\n commands: [\n {\n path: 'mind search',\n describe: 'Query the RAG index',\n handler: './dist/commands/rag-query.js',\n flags: [\n { name: 'text', type: 'string', required: true, description: 'Query text' },\n { name: 'agent', type: 'boolean', description: 'Use agent mode' },\n ],\n },\n {\n path: 'mind index',\n describe: 'Build RAG index',\n handler: './dist/commands/rag-index.js',\n flags: [\n { name: 'scope', type: 'string', default: 'default', description: 'Index scope' },\n ],\n },\n ],\n },\n rest: {\n basePath: '/v1/plugins/mind',\n routes: [\n {\n method: 'POST',\n path: '/search',\n description: 'Semantic code search',\n handler: './dist/rest/search.js',\n timeoutMs: 30000,\n input: { zod: './schemas/search-input.ts#SearchInputSchema' },\n output: { zod: './schemas/search-output.ts#SearchOutputSchema' },\n },\n ],\n },\n } as ManifestV3,\n },\n {\n pluginId: '@kb-labs/workflow-plugin',\n source: {\n kind: 'workspace',\n path: '/workspace/kb-labs-workflow/packages/workflow-plugin',\n },\n pluginRoot: '/workspace/kb-labs-workflow/packages/workflow-plugin',\n discoveredAt: new Date(Date.now() - 3600000).toISOString(), // 1 hour ago\n buildTimestamp: new Date(Date.now() - 5400000).toISOString(), // 1.5 hours ago\n manifest: {\n schema: 'kb.plugin/3',\n id: '@kb-labs/workflow-plugin',\n version: '1.0.0',\n display: {\n name: 'Workflow Engine',\n description: 'Orchestrate multi-step workflows',\n author: 'KB Labs',\n icon: '⚙️',\n tags: ['workflow', 'automation', 'orchestration'],\n },\n permissions: {\n fs: { mode: 'readwrite', allow: ['.kb/workflows/**'] },\n },\n platform: {\n requires: ['storage', 'cache'],\n },\n cli: {\n commands: [\n {\n path: 'workflow run',\n describe: 'Run a workflow',\n handler: './dist/commands/run.js',\n flags: [\n { name: 'workflow-id', type: 'string', required: true },\n { name: 'input', type: 'string' },\n ],\n },\n ],\n },\n rest: {\n basePath: '/v1/plugins/workflow',\n routes: [\n {\n method: 'POST',\n path: '/execute',\n description: 'Execute workflow',\n handler: './dist/rest/execute.js',\n input: { $ref: '#/components/schemas/WorkflowExecuteRequest' },\n output: { $ref: '#/components/schemas/WorkflowExecuteResponse' },\n },\n {\n method: 'GET',\n path: '/status/:runId',\n description: 'Get workflow status',\n handler: './dist/rest/status.js',\n output: { $ref: '#/components/schemas/WorkflowStatus' },\n },\n ],\n },\n jobs: {\n handlers: [\n {\n id: 'cleanup-old-runs',\n handler: './dist/jobs/cleanup.js',\n describe: 'Clean up old workflow runs',\n },\n ],\n cron: [\n {\n jobId: 'cleanup-old-runs',\n schedule: '0 2 * * *',\n enabled: true,\n },\n ],\n },\n } as ManifestV3,\n },\n ],\n};\n\nexport class MockPluginsSource implements PluginsDataSource {\n async getPlugins(): Promise<PluginsRegistryResponse> {\n // Simulate network delay\n await new Promise<void>((resolve) => {\n setTimeout(() => resolve(), 300);\n });\n return {\n ...mockManifests,\n apiBasePath: '/api/v1',\n };\n }\n\n async askAboutPlugin(pluginId: string, request: { question: string }) {\n // Simulate network delay\n await new Promise<void>((resolve) => {\n setTimeout(() => resolve(), 1000);\n });\n\n // Mock AI responses based on question keywords\n const question = request.question.toLowerCase();\n let answer = '';\n\n if (question.includes('permission') || question.includes('access')) {\n answer = `This plugin requires the following permissions:\\n\\n` +\n `- File System: Read-only access to .kb/** and src/** directories\\n` +\n `- Network: Access to api.openai.com for AI operations\\n\\n` +\n `These permissions are necessary for RAG indexing and semantic search functionality.`;\n } else if (question.includes('command') || question.includes('cli')) {\n answer = `The plugin provides 2 CLI commands:\\n\\n` +\n `1. **mind search** - Query the RAG index\\n` +\n ` - Required: --text (query text)\\n` +\n ` - Optional: --agent (use agent mode)\\n\\n` +\n `2. **mind index** - Build RAG index\\n` +\n ` - Optional: --scope (default: 'default')\\n\\n` +\n `Use these commands to perform semantic code search across your codebase.`;\n } else if (question.includes('rest') || question.includes('api') || question.includes('endpoint')) {\n answer = `The plugin exposes 1 REST API endpoint:\\n\\n` +\n `**POST /v1/plugins/mind/search** - Semantic code search\\n` +\n `- Timeout: 30 seconds\\n` +\n `- Input: SearchInputSchema (query text and options)\\n` +\n `- Output: SearchOutputSchema (search results with relevance scores)\\n\\n` +\n `This endpoint allows integration with external tools and web interfaces.`;\n } else {\n answer = `This is the Mind RAG Plugin (v0.1.0) - a semantic code search and RAG system.\\n\\n` +\n `Key features:\\n` +\n `- 2 CLI commands (mind search, mind index)\\n` +\n `- 1 REST API endpoint (/search)\\n` +\n `- AI-powered semantic search\\n` +\n `- Read-only file system access\\n` +\n `- OpenAI API integration\\n\\n` +\n `The plugin helps developers find relevant code using natural language queries.`;\n }\n\n return {\n answer,\n usage: {\n promptTokens: 150,\n completionTokens: 100,\n },\n };\n }\n\n async getPluginReadme(_pluginId: string): Promise<string | null> {\n await new Promise<void>((resolve) => { setTimeout(() => resolve(), 200); });\n return '# Plugin README\\n\\nThis is a mock README for development purposes.';\n }\n\n async getPluginChangelog(_pluginId: string): Promise<string | null> {\n await new Promise<void>((resolve) => { setTimeout(() => resolve(), 200); });\n return null;\n }\n}\n","import type { SystemDataSource } from './sources/system-source';\nimport type { WorkflowDataSource } from './sources/workflow-source';\nimport type { CacheDataSource } from './sources/cache-source';\nimport type { ObservabilityDataSource } from './sources/observability-source';\nimport type { AnalyticsDataSource } from './sources/analytics-source';\nimport type { AdaptersDataSource } from './sources/adapters-source';\nimport type { PlatformDataSource } from './sources/platform-source';\nimport type { PluginsDataSource } from './sources/plugins-source';\nimport { MockSystemSource } from './mocks/mock-system-source';\nimport { MockWorkflowSource } from './mocks/mock-workflow-source';\nimport { MockCacheSource } from './mocks/mock-cache-source';\nimport { MockObservabilitySource } from './mocks/mock-observability-source';\nimport { MockAnalyticsSource } from './mocks/mock-analytics-source';\nimport { MockAdaptersSource } from './mocks/mock-adapters-source';\nimport { MockPlatformSource } from './mocks/mock-platform-source';\nimport { MockPluginsSource } from './mocks/mock-plugins-source';\nimport { HttpSystemSource } from './sources/http-system-source';\nimport { HttpWorkflowSource } from './sources/http-workflow-source';\nimport { HttpCacheSource } from './sources/http-cache-source';\nimport { HttpObservabilitySource } from './sources/http-observability-source';\nimport { HttpAnalyticsSource } from './sources/http-analytics-source';\nimport { HttpAdaptersSource } from './sources/http-adapters-source';\nimport { HttpPlatformSource } from './sources/http-platform-source';\nimport { HttpPluginsSource } from './sources/http-plugins-source';\nimport { HttpClient } from './client/http-client';\n\nexport interface DataSourcesConfig {\n mode: 'mock' | 'http';\n baseUrl?: string;\n /** Bearer token forwarded to Gateway on every request */\n token?: string;\n}\n\nexport interface DataSources {\n system: SystemDataSource;\n workflow: WorkflowDataSource;\n cache: CacheDataSource;\n observability: ObservabilityDataSource;\n analytics: AnalyticsDataSource;\n adapters: AdaptersDataSource;\n platform: PlatformDataSource;\n plugins: PluginsDataSource;\n}\n\nexport function createDataSources(config: DataSourcesConfig): DataSources {\n if (config.mode === 'mock') {\n return {\n system: new MockSystemSource(),\n workflow: new MockWorkflowSource(),\n cache: new MockCacheSource(),\n observability: new MockObservabilitySource(),\n analytics: new MockAnalyticsSource(),\n adapters: new MockAdaptersSource(),\n platform: new MockPlatformSource(),\n plugins: new MockPluginsSource(),\n };\n }\n\n const baseUrl = config.baseUrl || '';\n const client = new HttpClient(baseUrl, config.token);\n\n return {\n system: new HttpSystemSource(client),\n workflow: new HttpWorkflowSource(client),\n cache: new HttpCacheSource(client),\n observability: new HttpObservabilitySource(client),\n analytics: new HttpAnalyticsSource(client),\n adapters: new HttpAdaptersSource(client),\n platform: new HttpPlatformSource(client),\n plugins: new HttpPluginsSource(client),\n };\n}\n","/**\n * @module @kb-labs/studio-data-client/query-keys\n * Query keys factory for TanStack Query\n */\n\nimport type { WorkflowRunsFilters } from './sources/workflow-source';\n\n/**\n * Standardized query keys factory\n */\nexport const qk = {\n // Audit queries\n audit: {\n all: ['audit'] as const,\n summary: () => [...qk.audit.all, 'summary'] as const,\n runs: {\n all: () => [...qk.audit.all, 'runs'] as const,\n list: (params?: { cursor?: string; limit?: number; status?: string }) => \n [...qk.audit.runs.all(), 'list', params] as const,\n byId: (runId: string) => [...qk.audit.runs.all(), 'detail', runId] as const,\n },\n report: {\n latest: () => [...qk.audit.all, 'report', 'latest'] as const,\n byRunId: (runId: string) => [...qk.audit.all, 'report', runId] as const,\n },\n pkg: (name: string) => [...qk.audit.all, 'pkg', name] as const,\n },\n \n // Release queries\n release: {\n all: ['release'] as const,\n preview: (params?: { from?: string; to?: string }) => \n [...qk.release.all, 'preview', params] as const,\n runs: {\n all: () => [...qk.release.all, 'runs'] as const,\n byId: (runId: string) => [...qk.release.runs.all(), 'detail', runId] as const,\n },\n changelog: (params?: { format?: string }) => \n [...qk.release.all, 'changelog', params] as const,\n },\n \n // Jobs queries\n jobs: {\n all: ['jobs'] as const,\n byId: (jobId: string) => [...qk.jobs.all, 'detail', jobId] as const,\n logs: {\n byJobId: (jobId: string, offset?: number) => \n [...qk.jobs.all, 'logs', jobId, offset] as const,\n stream: (jobId: string) => [...qk.jobs.all, 'logs', 'stream', jobId] as const,\n },\n events: (jobId: string) => [...qk.jobs.all, 'events', jobId] as const,\n list: (params?: { cursor?: string; limit?: number; status?: string; kind?: string }) => \n [...qk.jobs.all, 'list', params] as const,\n },\n \n // System queries\n system: {\n all: ['system'] as const,\n health: {\n live: () => [...qk.system.all, 'health', 'live'] as const,\n ready: () => [...qk.system.all, 'health', 'ready'] as const,\n },\n platformHealth: () => [...qk.system.all, 'platform-health'] as const,\n info: () => [...qk.system.all, 'info'] as const,\n capabilities: () => [...qk.system.all, 'capabilities'] as const,\n config: () => [...qk.system.all, 'config'] as const,\n },\n\n // Plugins queries\n plugins: {\n all: ['plugins'] as const,\n registry: () => [...qk.plugins.all, 'registry'] as const,\n },\n workflows: {\n all: ['workflows'] as const,\n list: (filters?: WorkflowRunsFilters) => [...qk.workflows.all, 'list', filters ?? {}] as const,\n run: (runId: string) => [...qk.workflows.all, 'run', runId] as const,\n },\n \n // DevLink queries\n devlink: {\n all: ['devlink'] as const,\n summary: () => [...qk.devlink.all, 'summary'] as const,\n graph: () => [...qk.devlink.all, 'graph'] as const,\n },\n \n // Mind queries\n mind: {\n all: ['mind'] as const,\n summary: () => [...qk.mind.all, 'summary'] as const,\n },\n \n // Analytics queries\n analytics: {\n all: ['analytics'] as const,\n summary: (params?: { start?: string; end?: string }) =>\n [...qk.analytics.all, 'summary', params] as const,\n },\n\n // Platform queries\n platform: {\n all: ['platform'] as const,\n config: () => [...qk.platform.all, 'config'] as const,\n },\n} as const;\n\n// Backward compatibility\nexport const queryKeys = qk;\n\n","import { useQuery } from '@tanstack/react-query';\nimport type { SystemDataSource } from '../sources/system-source';\nimport { qk } from '../query-keys';\n\nexport function usePlatformHealth(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.platformHealth(),\n queryFn: () => source.getPlatformHealth?.() ?? Promise.resolve(null),\n refetchInterval: 30_000,\n staleTime: 15_000,\n });\n}\n\nexport function useHealthStatus(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.health.live(),\n queryFn: async () => {\n try {\n return source.getHealth();\n } catch (error) {\n // If HTTP source fails, return degraded status\n return {\n ok: false,\n timestamp: new Date().toISOString(),\n sources: [{\n name: 'system',\n ok: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }],\n };\n }\n },\n refetchInterval: 30000, // Poll every 30 seconds\n staleTime: 15000,\n retry: 2,\n retryDelay: 1000,\n });\n}\n\nexport function useReadyStatus(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.health.ready(),\n queryFn: async () => {\n if (source.getReady) {\n return source.getReady();\n }\n // Fallback for mock sources\n return {\n ready: true as const,\n };\n },\n refetchInterval: 30000,\n staleTime: 15000,\n retry: 2,\n retryDelay: 1000,\n });\n}\n\nexport function useSystemInfo(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.info(),\n queryFn: async () => {\n if (source.getInfo) {\n return source.getInfo();\n }\n // Fallback for mock sources\n return {\n cwd: process.cwd(),\n repo: undefined,\n profiles: [],\n plugins: [],\n apiVersion: '1.0.0',\n };\n },\n staleTime: 60000, // Cache for 1 minute\n });\n}\n\nexport function useCapabilities(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.capabilities(),\n queryFn: async () => {\n if (source.getCapabilities) {\n return source.getCapabilities();\n }\n // Fallback for mock sources\n return {\n commands: ['audit', 'release', 'devlink', 'mind', 'analytics'],\n adapters: {\n queue: ['memory'],\n storage: ['fs'],\n auth: ['none'],\n },\n };\n },\n staleTime: 60000,\n });\n}\n\n","import { useQuery } from '@tanstack/react-query';\nimport type { PluginsDataSource } from '../sources/plugins-source';\nimport { qk } from '../query-keys';\n\nexport function usePluginsRegistry(source: PluginsDataSource) {\n return useQuery({\n queryKey: qk.plugins.registry(),\n queryFn: () => source.getPlugins(),\n refetchInterval: 60_000,\n staleTime: 30_000,\n });\n}\n","import { useEffect, useState, useMemo } from 'react'\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport { qk } from '../query-keys'\nimport type { WorkflowDataSource, WorkflowRunsFilters, WorkflowRunParams, ResolveApprovalParams } from '../sources/workflow-source'\nimport type { WorkflowLogEvent, WorkflowPresenterEvent } from '../contracts/workflows'\n\nexport function useWorkflowRuns(\n source: WorkflowDataSource,\n filters?: WorkflowRunsFilters,\n) {\n const queryKey = useMemo(() => qk.workflows.list(filters), [filters])\n return useQuery({\n queryKey,\n queryFn: async () => {\n return source.listRuns(filters)\n },\n })\n}\n\nexport function useWorkflowRun(runId: string | null, source: WorkflowDataSource) {\n return useQuery({\n queryKey: qk.workflows.run(runId ?? ''),\n enabled: Boolean(runId),\n queryFn: async () => {\n if (!runId) {\n return null\n }\n return source.getRun(runId)\n },\n })\n}\n\nexport function useCancelWorkflowRun(source: WorkflowDataSource) {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (runId: string) => source.cancelRun(runId),\n onSuccess: (run) => {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.all, exact: false })\n if (run?.id) {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.run(run.id) })\n }\n },\n })\n}\n\nexport function useRunWorkflow(source: WorkflowDataSource) {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (params: WorkflowRunParams) => {\n if (!source.runWorkflow) {\n throw new Error('Workflow source does not support running workflows')\n }\n return source.runWorkflow(params)\n },\n onSuccess: (run) => {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.all, exact: false })\n if (run?.id) {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.run(run.id) })\n }\n },\n })\n}\n\nexport function useResolveApproval(source: WorkflowDataSource) {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (params: ResolveApprovalParams) => {\n if (!source.resolveApproval) {\n throw new Error('Workflow source does not support approvals')\n }\n return source.resolveApproval(params)\n },\n onSuccess: (_data, variables) => {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.run(variables.runId) })\n },\n })\n}\n\nexport interface UseWorkflowLogsOptions {\n follow?: boolean\n idleTimeoutMs?: number\n enabled?: boolean\n baseUrl?: string\n}\n\nexport function useWorkflowLogs(\n runId: string | null,\n options: UseWorkflowLogsOptions = {},\n) {\n const { follow = true, idleTimeoutMs, enabled = true, baseUrl = '' } = options\n const [events, setEvents] = useState<WorkflowLogEvent[]>([])\n const [error, setError] = useState<Error | null>(null)\n const [isConnected, setIsConnected] = useState(false)\n\n useEffect(() => {\n if (!runId || !enabled) {\n setIsConnected(false)\n setError(null)\n return\n }\n\n setEvents([])\n setError(null)\n\n const params = new URLSearchParams()\n if (follow) {\n params.set('follow', '1')\n }\n if (typeof idleTimeoutMs === 'number') {\n params.set('idleTimeoutMs', String(idleTimeoutMs))\n }\n\n const url = `${baseUrl}/workflows/runs/${runId}/logs${params.toString() ? `?${params}` : ''}`\n const eventSource = new EventSource(url)\n\n const handleMessage = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as WorkflowLogEvent\n setEvents((prev) => [...prev, payload])\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to parse workflow log event'))\n }\n }\n\n eventSource.addEventListener('workflow.log', handleMessage)\n eventSource.addEventListener('workflow.done', () => {\n setIsConnected(false)\n eventSource.close()\n })\n eventSource.onopen = () => {\n setIsConnected(true)\n setError(null)\n }\n eventSource.onerror = (_event) => {\n setIsConnected(false)\n setError(new Error('Workflow log stream disconnected'))\n eventSource.close()\n }\n\n return () => {\n eventSource.removeEventListener('workflow.log', handleMessage)\n eventSource.close()\n }\n }, [runId, follow, idleTimeoutMs, enabled])\n\n return {\n events,\n error,\n isConnected,\n }\n}\n\nexport interface UseWorkflowEventsOptions {\n follow?: boolean\n pollIntervalMs?: number\n cursor?: string | null\n enabled?: boolean\n baseUrl?: string\n}\n\nexport function useWorkflowEvents(\n runId: string | null,\n options: UseWorkflowEventsOptions = {},\n) {\n const { follow = true, pollIntervalMs, cursor, enabled = true, baseUrl = '' } = options\n const [events, setEvents] = useState<WorkflowPresenterEvent[]>([])\n const [error, setError] = useState<Error | null>(null)\n const [isConnected, setIsConnected] = useState(false)\n\n useEffect(() => {\n if (!runId || !enabled) {\n return\n }\n\n setEvents([])\n setError(null)\n\n const params = new URLSearchParams()\n if (follow) {\n params.set('follow', '1')\n }\n if (typeof pollIntervalMs === 'number') {\n params.set('pollIntervalMs', String(pollIntervalMs))\n }\n if (cursor) {\n params.set('cursor', cursor)\n }\n\n const url = `${baseUrl}/workflows/runs/${runId}/events${params.toString() ? `?${params}` : ''}`\n const eventSource = new EventSource(url)\n\n const handleMessage = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as WorkflowPresenterEvent\n setEvents((prev) => [...prev, payload])\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to parse workflow event'))\n }\n }\n\n eventSource.addEventListener('workflow.event', handleMessage)\n eventSource.onopen = () => {\n setIsConnected(true)\n setError(null)\n }\n eventSource.onerror = () => {\n setIsConnected(false)\n setError(new Error('Workflow event stream disconnected'))\n eventSource.close()\n }\n\n return () => {\n eventSource.removeEventListener('workflow.event', handleMessage)\n eventSource.close()\n }\n }, [runId, follow, pollIntervalMs, cursor, enabled])\n\n return {\n events,\n error,\n isConnected,\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-observability\n * React Query hooks for observability data\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useState, useEffect } from 'react';\nimport type { ObservabilityDataSource } from '../sources/observability-source';\nimport type {\n SystemEvent,\n LogRecord,\n LogQuery,\n MetricsHistoryQuery,\n MetricsHeatmapQuery,\n IncidentQuery,\n} from '../contracts/observability';\n\n/**\n * Hook to fetch State Broker statistics\n *\n * Auto-refreshes every 5 seconds to show real-time cache metrics\n */\nexport function useStateBrokerStats(source: ObservabilityDataSource) {\n return useQuery({\n queryKey: ['observability', 'state-broker'],\n queryFn: () => source.getStateBrokerStats(),\n refetchInterval: 5000, // Auto-refresh every 5s for real-time updates\n staleTime: 3000, // Consider data stale after 3s\n retry: 2, // Retry failed requests twice\n });\n}\n\n/**\n * Hook to fetch DevKit health snapshot\n *\n * Caches for 1 minute as DevKit health doesn't change frequently\n */\nexport function useDevKitHealth(source: ObservabilityDataSource) {\n return useQuery({\n queryKey: ['observability', 'devkit'],\n queryFn: () => source.getDevKitHealth(),\n staleTime: 60000, // Cache for 1 minute\n gcTime: 300000, // Keep in cache for 5 minutes (React Query v5)\n retry: 1, // DevKit can be slow, only retry once\n });\n}\n\n/**\n * Hook to fetch Prometheus metrics from REST API\n *\n * Auto-refreshes every 10 seconds to show near real-time metrics\n */\nexport function usePrometheusMetrics(source: ObservabilityDataSource) {\n return useQuery({\n queryKey: ['observability', 'prometheus-metrics'],\n queryFn: () => source.getPrometheusMetrics(),\n refetchInterval: 10000, // Auto-refresh every 10s\n staleTime: 8000, // Consider data stale after 8s\n retry: 2, // Retry failed requests twice\n });\n}\n\n/**\n * Hook to connect to system events SSE stream\n *\n * Uses ObservabilityDataSource to subscribe to real-time system events\n */\nexport function useSystemEvents(source: ObservabilityDataSource) {\n const [events, setEvents] = useState<SystemEvent[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n setIsConnected(true);\n setError(null);\n\n const cleanup = source.subscribeToSystemEvents(\n (event) => {\n setEvents((prev) => [event, ...prev].slice(0, 100)); // Keep last 100 events\n },\n (err) => {\n setIsConnected(false);\n setError(err);\n }\n );\n\n return () => {\n cleanup();\n setIsConnected(false);\n };\n }, [source]);\n\n return { events, isConnected, error };\n}\n\n/**\n * Hook to connect to live log stream\n *\n * Uses ObservabilityDataSource to subscribe to real-time logs\n *\n * @param source - Observability data source\n * @param filters - Optional log filters\n */\nexport function useLogStream(source: ObservabilityDataSource, filters?: LogQuery) {\n const [logs, setLogs] = useState<LogRecord[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n setIsConnected(true);\n setError(null);\n\n const cleanup = source.subscribeToLogs(\n (log) => {\n // Add log to beginning (most recent first)\n // Keep max 500 logs in memory for performance\n setLogs((prev) => [log, ...prev].slice(0, 500));\n },\n (err) => {\n setIsConnected(false);\n setError(err);\n },\n filters\n );\n\n return () => {\n cleanup();\n setIsConnected(false);\n };\n }, [source, filters]);\n\n const clearLogs = () => setLogs([]);\n\n return { logs, isConnected, error, clearLogs };\n}\n\n/**\n * Hook to fetch historical metrics time-series data\n *\n * Auto-refreshes every 5 seconds for near real-time charts\n */\nexport function useMetricsHistory(source: ObservabilityDataSource, query: MetricsHistoryQuery) {\n return useQuery({\n queryKey: ['observability', 'metrics-history', query.metric, query.range, query.interval],\n queryFn: () => source.getMetricsHistory(query),\n refetchInterval: 5000, // Auto-refresh every 5s\n staleTime: 3000, // Consider data stale after 3s\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch metrics heatmap data\n *\n * Caches for 1 minute as heatmap data changes slowly\n */\nexport function useMetricsHeatmap(source: ObservabilityDataSource, query: MetricsHeatmapQuery) {\n return useQuery({\n queryKey: ['observability', 'metrics-heatmap', query.metric, query.days],\n queryFn: () => source.getMetricsHeatmap(query),\n staleTime: 60000, // Cache for 1 minute\n gcTime: 300000, // Keep in cache for 5 minutes\n retry: 2,\n });\n}\n\n/**\n * Hook to query incident history\n *\n * Auto-refreshes every 30 seconds to show new incidents\n */\nexport function useIncidents(source: ObservabilityDataSource, query?: IncidentQuery) {\n return useQuery({\n queryKey: ['observability', 'incidents', query],\n queryFn: () => source.queryIncidents(query),\n refetchInterval: 30000, // Auto-refresh every 30s\n staleTime: 20000, // Consider data stale after 20s\n retry: 2,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-analytics\n * React Query hooks for analytics data\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { AnalyticsDataSource } from '../sources/analytics-source';\nimport type { EventsQuery } from '../contracts/analytics';\n\n/**\n * Hook to fetch analytics events\n *\n * @param source - Analytics data source\n * @param query - Optional query filters\n */\nexport function useAnalyticsEvents(source: AnalyticsDataSource, query?: EventsQuery) {\n return useQuery({\n queryKey: ['analytics', 'events', query],\n queryFn: () => source.getEvents(query),\n refetchInterval: 30000, // Auto-refresh every 30s\n staleTime: 25000, // Consider data stale after 25s\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch analytics stats\n *\n * @param source - Analytics data source\n */\nexport function useAnalyticsStats(source: AnalyticsDataSource) {\n return useQuery({\n queryKey: ['analytics', 'stats'],\n queryFn: () => source.getStats(),\n refetchInterval: 30000, // Auto-refresh every 30s\n staleTime: 25000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch buffer status\n *\n * @param source - Analytics data source\n */\nexport function useAnalyticsBufferStatus(source: AnalyticsDataSource) {\n return useQuery({\n queryKey: ['analytics', 'buffer'],\n queryFn: () => source.getBufferStatus(),\n refetchInterval: 10000, // Auto-refresh every 10s\n staleTime: 8000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch DLQ status\n *\n * @param source - Analytics data source\n */\nexport function useAnalyticsDlqStatus(source: AnalyticsDataSource) {\n return useQuery({\n queryKey: ['analytics', 'dlq'],\n queryFn: () => source.getDlqStatus(),\n refetchInterval: 15000, // Auto-refresh every 15s\n staleTime: 12000,\n retry: 2,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-adapters\n * React Query hooks for platform adapter analytics\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { AdaptersDataSource, DateRangeOptions } from '../sources/adapters-source';\n\nconst DAILY_STATS = 'daily-stats';\n\n/**\n * Hook to fetch LLM usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersLLMUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'llm', 'usage', options?.from, options?.to],\n queryFn: () => source.getLLMUsage(options),\n refetchInterval: 60000, // Auto-refresh every 60s (LLM stats change slower)\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Embeddings usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersEmbeddingsUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'embeddings', 'usage', options?.from, options?.to],\n queryFn: () => source.getEmbeddingsUsage(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch VectorStore usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersVectorStoreUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'vectorstore', 'usage', options?.from, options?.to],\n queryFn: () => source.getVectorStoreUsage(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Cache usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersCacheUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'cache', 'usage', options?.from, options?.to],\n queryFn: () => source.getCacheUsage(options),\n refetchInterval: 30000, // Cache stats change faster - refresh every 30s\n staleTime: 25000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Storage usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersStorageUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'storage', 'usage', options?.from, options?.to],\n queryFn: () => source.getStorageUsage(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch LLM daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersLLMDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'llm', DAILY_STATS, options?.from, options?.to, options?.models],\n queryFn: () => source.getLLMDailyStats(options),\n refetchInterval: 60000, // Daily stats change slower\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Embeddings daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersEmbeddingsDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'embeddings', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getEmbeddingsDailyStats(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch VectorStore daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersVectorStoreDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'vectorstore', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getVectorStoreDailyStats(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Cache daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersCacheDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'cache', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getCacheDailyStats(options),\n refetchInterval: 30000, // Cache stats change faster\n staleTime: 25000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Storage daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersStorageDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'storage', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getStorageDailyStats(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-platform\n * Platform configuration hooks\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { PlatformDataSource } from '../sources/platform-source';\nimport { qk } from '../query-keys';\n\n/**\n * Get platform configuration (adapters, options, execution mode)\n */\nexport function usePlatformConfig(source: PlatformDataSource) {\n return useQuery({\n queryKey: qk.platform.config(),\n queryFn: async () => {\n return source.getConfig();\n },\n staleTime: 60000, // Cache for 1 minute (config rarely changes)\n retry: 2,\n retryDelay: 1000,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-job-events\n * React hook for subscribing to job events via SSE with fallback to polling\n */\n\nimport { useEffect, useRef, useState, useCallback } from 'react';\nimport type { JobEventType } from './types';\n\n// Type for job response data\ninterface JobResponseData {\n jobId: string;\n status: string;\n progress?: number;\n error?: string;\n}\n\nconst TERMINAL_STATUSES = new Set(['completed', 'failed', 'cancelled']);\n\nfunction statusToEventType(status: string): JobEventType {\n if (status === 'completed') { return 'job.finished'; }\n if (status === 'failed') { return 'job.failed'; }\n if (status === 'running') { return 'job.started'; }\n return 'job.queued';\n}\n\n/**\n * Job event structure\n */\nexport interface JobEvent {\n type: JobEventType;\n jobId: string;\n timestamp: string;\n data?: {\n status?: string;\n progress?: number;\n error?: string;\n };\n}\n\n/**\n * Hook options\n */\nexport interface UseJobEventsOptions {\n enabled?: boolean;\n pollInterval?: number; // Polling interval in ms (fallback mode)\n baseUrl?: string;\n onEvent?: (event: JobEvent) => void;\n onError?: (error: Error) => void;\n onComplete?: () => void;\n}\n\n/**\n * Hook result\n */\nexport interface UseJobEventsResult {\n events: JobEvent[];\n isConnected: boolean;\n error: Error | null;\n reconnect: () => void;\n}\n\n/**\n * Use job events hook with SSE support and polling fallback\n */\nexport function useJobEvents(\n jobId: string | null,\n options: UseJobEventsOptions = {}\n): UseJobEventsResult {\n const {\n enabled = true,\n pollInterval = 1000,\n baseUrl = '',\n onEvent,\n onError,\n onComplete,\n } = options;\n\n const [events, setEvents] = useState<JobEvent[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n \n const eventSourceRef = useRef<EventSource | null>(null);\n const pollingRef = useRef<NodeJS.Timeout | null>(null);\n const useSSERef = useRef(true); // Try SSE first\n\n const reconnect = useCallback(() => {\n // Clear existing connections\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n \n // Reset state\n setEvents([]);\n setError(null);\n setIsConnected(false);\n useSSERef.current = true;\n }, []);\n\n useEffect(() => {\n if (!enabled || !jobId) {\n return;\n }\n\n const eventsUrl = `${baseUrl}/jobs/${jobId}/events`;\n\n // Try SSE first\n if (useSSERef.current) {\n try {\n const eventSource = new EventSource(eventsUrl);\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n setIsConnected(true);\n setError(null);\n };\n\n eventSource.onmessage = (e) => {\n try {\n const event: JobEvent = JSON.parse(e.data);\n setEvents((prev) => [...prev, event]);\n onEvent?.(event);\n\n // Check if job is complete\n if (event.type === 'job.finished' || event.type === 'job.failed') {\n eventSource.close();\n setIsConnected(false);\n onComplete?.();\n }\n } catch (_err) {\n setError(_err instanceof Error ? _err : new Error('Failed to parse event'));\n onError?.(_err instanceof Error ? _err : new Error('Failed to parse event'));\n }\n };\n\n eventSource.onerror = (_event) => {\n // SSE failed, fallback to polling\n eventSource.close();\n eventSourceRef.current = null;\n useSSERef.current = false;\n setIsConnected(false);\n \n // Start polling fallback\n const poll = async () => {\n try {\n const response = await fetch(`${baseUrl}/jobs/${jobId}`);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n \n const data = await response.json() as JobResponseData;\n const currentStatus = data.status;\n \n // Check if status changed\n const lastEvent = events[events.length - 1];\n if (!lastEvent || lastEvent.data?.status !== currentStatus) {\n const event: JobEvent = {\n type: statusToEventType(currentStatus),\n jobId,\n timestamp: new Date().toISOString(),\n data: {\n status: currentStatus,\n progress: data.progress,\n error: data.error,\n },\n };\n \n setEvents((prev) => [...prev, event]);\n onEvent?.(event);\n\n if (TERMINAL_STATUSES.has(currentStatus)) {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n onComplete?.();\n }\n }\n } catch (_err) {\n const errorInstance = _err instanceof Error ? _err : new Error('Polling failed');\n setError(errorInstance);\n onError?.(errorInstance);\n }\n };\n\n // Start polling immediately\n poll();\n pollingRef.current = setInterval(poll, pollInterval);\n };\n\n // Cleanup\n return () => {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n };\n } catch (_err) {\n // SSE not supported, fallback to polling\n useSSERef.current = false;\n }\n }\n\n // Polling fallback (if SSE not available or disabled)\n if (!useSSERef.current && !pollingRef.current) {\n const poll = async () => {\n try {\n const response = await fetch(`${baseUrl}/jobs/${jobId}`);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n \n const data = await response.json() as JobResponseData;\n const currentStatus = data.status;\n \n // Check if status changed\n setEvents((prev) => {\n const lastEvent = prev[prev.length - 1];\n if (!lastEvent || lastEvent.data?.status !== currentStatus) {\n const event: JobEvent = {\n type: statusToEventType(currentStatus),\n jobId,\n timestamp: new Date().toISOString(),\n data: {\n status: currentStatus,\n progress: data.progress,\n error: data.error,\n },\n };\n \n onEvent?.(event);\n \n if (currentStatus === 'completed' || currentStatus === 'failed' || currentStatus === 'cancelled') {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n onComplete?.();\n }\n \n return [...prev, event];\n }\n return prev;\n });\n \n setIsConnected(true);\n setError(null);\n } catch (_err) {\n const errorInstance = _err instanceof Error ? _err : new Error('Polling failed');\n setError(errorInstance);\n onError?.(errorInstance);\n setIsConnected(false);\n }\n };\n\n // Start polling immediately\n poll();\n pollingRef.current = setInterval(poll, pollInterval);\n\n // Cleanup\n return () => {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n };\n }\n }, [jobId, enabled, pollInterval, onEvent, onError, onComplete, events]);\n\n return {\n events,\n isConnected,\n error,\n reconnect,\n };\n}\n\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-notifications\n * React hook for tracking critical log notifications\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport type { ObservabilityDataSource } from '../sources/observability-source';\nimport type { LogRecord } from '../contracts/observability';\n\nexport interface LogNotification {\n id: string;\n timestamp: string;\n level: 'warn' | 'error';\n message: string;\n plugin?: string;\n executionId?: string;\n error?: {\n name: string;\n message: string;\n };\n read: boolean;\n}\n\nexport interface UseNotificationsResult {\n notifications: LogNotification[];\n unreadCount: number;\n markAsRead: (id: string) => void;\n markAllAsRead: () => void;\n clearAll: () => void;\n clearNotification: (id: string) => void;\n}\n\nconst MAX_NOTIFICATIONS = 50;\n\n/**\n * Hook to track critical log notifications (warn/error) from SSE stream\n *\n * Automatically subscribes to log stream and filters warn/error logs.\n * Maintains a list of recent critical logs with read/unread status.\n *\n * @param source - Observability data source\n * @param maxNotifications - Maximum number of notifications to keep (default: 50)\n */\nexport function useNotifications(\n source: ObservabilityDataSource,\n maxNotifications: number = MAX_NOTIFICATIONS\n): UseNotificationsResult {\n const [notifications, setNotifications] = useState<LogNotification[]>([]);\n\n useEffect(() => {\n return source.subscribeToLogs(\n (log: LogRecord) => {\n // Only track warn and error logs\n if (log.level !== 'warn' && log.level !== 'error') {\n return;\n }\n\n // Safely extract message (handle objects being passed as message)\n let messageText = 'No message';\n if (log.msg) {\n messageText = typeof log.msg === 'string' ? log.msg : JSON.stringify(log.msg);\n }\n\n const notification: LogNotification = {\n id: log.id || `${log.time}-${Math.random().toString(36).slice(2, 9)}`, // Use log.id from database, fallback to generated\n timestamp: log.time,\n level: log.level,\n message: messageText,\n plugin: log.plugin,\n executionId: log.executionId,\n error: log.err\n ? {\n name: String(log.err.name || 'Error'),\n message: String(log.err.message || 'Unknown error'),\n }\n : undefined,\n read: false,\n };\n\n setNotifications((prev) => [notification, ...prev].slice(0, maxNotifications));\n },\n (err) => {\n console.error('Notifications SSE error:', err);\n }\n );\n }, [source, maxNotifications]);\n\n const unreadCount = notifications.filter((n) => !n.read).length;\n\n const markAsRead = useCallback((id: string) => {\n setNotifications((prev) =>\n prev.map((n) => (n.id === id ? { ...n, read: true } : n))\n );\n }, []);\n\n const markAllAsRead = useCallback(() => {\n setNotifications((prev) => prev.map((n) => ({ ...n, read: true })));\n }, []);\n\n const clearAll = useCallback(() => {\n setNotifications([]);\n }, []);\n\n const clearNotification = useCallback((id: string) => {\n setNotifications((prev) => prev.filter((n) => n.id !== id));\n }, []);\n\n return {\n notifications,\n unreadCount,\n markAsRead,\n markAllAsRead,\n clearAll,\n clearNotification,\n };\n}\n"]}
1
+ {"version":3,"sources":["../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/errors/kb-error.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/client/error-mapper.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/client/http-client.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/client/envelope-interceptor.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/contracts/common.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/schemas/common.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/schemas/audit.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/schemas/release.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/schemas/system.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-system-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-workflow-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-cache-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/prometheus-metrics-parser.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-observability-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-analytics-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-adapters-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-platform-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/sources/http-plugins-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-system-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-workflow-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-cache-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-observability-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-analytics-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-adapters-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-platform-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/mocks/mock-plugins-source.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/factory.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/query-keys.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-system.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-plugins.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-workflows.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-observability.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-analytics.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-adapters.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-platform.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-job-events.ts","../../home/runner/work/kb-labs/kb-labs/studio/data-client/src/hooks/use-notifications.ts"],"names":["z","ulid","delay","useQuery","useState","useEffect","useCallback"],"mappings":"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","file":"index.js","sourcesContent":["export class KBError extends Error {\n constructor(\n public code: string,\n override message: string,\n public status?: number,\n public override cause?: unknown\n ) {\n super(message);\n this.name = 'KBError';\n }\n}\n\nexport const errorCodes = {\n NETWORK_ERROR: 'NETWORK_ERROR',\n VALIDATION_ERROR: 'VALIDATION_ERROR',\n AUTH_ERROR: 'AUTH_ERROR',\n NOT_FOUND: 'NOT_FOUND',\n SERVER_ERROR: 'SERVER_ERROR',\n TIMEOUT_ERROR: 'TIMEOUT_ERROR',\n TIMEOUT: 'TIMEOUT',\n CONFLICT: 'CONFLICT',\n RATE_LIMIT: 'RATE_LIMIT',\n TOOL_ERROR: 'TOOL_ERROR',\n} as const;\n\n","import { KBError, errorCodes } from '../errors/kb-error';\nimport type { ResponseError } from './types';\nimport type { ErrorEnvelope } from '@kb-labs/rest-api-contracts';\n\n/**\n * Error envelope structure\n */\ninterface ErrorEnvelopeResponse {\n ok: false;\n error: {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n cause?: string;\n traceId?: string;\n };\n meta?: {\n requestId: string;\n durationMs: number;\n apiVersion: string;\n };\n}\n\n/**\n * Type guard for ErrorEnvelopeResponse\n */\nfunction isErrorEnvelopeResponse(obj: unknown): obj is ErrorEnvelopeResponse {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'ok' in obj &&\n (obj as { ok: unknown }).ok === false &&\n 'error' in obj &&\n typeof (obj as { error: unknown }).error === 'object' &&\n (obj as { error: unknown }).error !== null &&\n 'message' in (obj as { error: object }).error\n );\n}\n\nexport function mapFetchError(error: unknown, response?: Response): KBError {\n if (!response) {\n if (error instanceof KBError) {\n return error;\n }\n if (error instanceof TypeError && error.message.includes('fetch')) {\n return new KBError(errorCodes.NETWORK_ERROR, 'Network request failed', undefined, error);\n }\n return new KBError(errorCodes.NETWORK_ERROR, 'Unknown error occurred', undefined, error);\n }\n\n const parsedBody = error;\n const errorEnvelope =\n parsedBody && typeof parsedBody === 'object' && isErrorEnvelopeResponse(parsedBody)\n ? (parsedBody as ErrorEnvelopeResponse)\n : null;\n const httpError: ResponseError = {\n status: response.status,\n statusText: response.statusText,\n data: parsedBody ?? null,\n };\n\n // Map error codes from api-contracts\n const statusCode = response.status;\n let errorMessage: string | undefined = undefined;\n if (errorEnvelope !== null) {\n const envelope: ErrorEnvelopeResponse = errorEnvelope;\n errorMessage = envelope.error.message;\n }\n \n if (statusCode === 404) {\n return new KBError(errorCodes.NOT_FOUND, errorMessage || 'Resource not found', 404, httpError);\n }\n if (statusCode === 401) {\n return new KBError(errorCodes.AUTH_ERROR, errorMessage || 'Authentication failed', 401, httpError);\n }\n if (statusCode === 403) {\n return new KBError(errorCodes.AUTH_ERROR, errorMessage || 'Forbidden', 403, httpError);\n }\n if (statusCode === 409) {\n return new KBError(errorCodes.CONFLICT, errorMessage || 'Conflict', 409, httpError);\n }\n if (statusCode === 429) {\n return new KBError(errorCodes.RATE_LIMIT, errorMessage || 'Rate limit exceeded', 429, httpError);\n }\n if (statusCode >= 500) {\n return new KBError(errorCodes.SERVER_ERROR, errorMessage || 'Server error', statusCode, httpError);\n }\n return new KBError(errorCodes.NETWORK_ERROR, errorMessage || httpError.statusText || 'Request failed', statusCode, httpError);\n}\n\n/**\n * Map error envelope to KBError\n */\nexport function mapErrorEnvelope(envelope: ErrorEnvelope): KBError {\n const httpError: ResponseError = {\n status: 400, // Default status\n statusText: envelope.error.message,\n data: envelope,\n };\n\n // Map error code from api-contracts to KBError codes\n const errorCode = envelope.error.code;\n \n if (errorCode === 'E_NOT_FOUND') {\n return new KBError(errorCodes.NOT_FOUND, envelope.error.message, 404, httpError);\n }\n if (errorCode === 'E_UNAUTHORIZED') {\n return new KBError(errorCodes.AUTH_ERROR, envelope.error.message, 401, httpError);\n }\n if (errorCode === 'E_FORBIDDEN') {\n return new KBError(errorCodes.AUTH_ERROR, envelope.error.message, 403, httpError);\n }\n if (errorCode === 'E_CONFLICT') {\n return new KBError(errorCodes.CONFLICT, envelope.error.message, 409, httpError);\n }\n if (errorCode === 'E_RATE_LIMIT') {\n return new KBError(errorCodes.RATE_LIMIT, envelope.error.message, 429, httpError);\n }\n if (errorCode === 'E_TIMEOUT') {\n return new KBError(errorCodes.TIMEOUT, envelope.error.message, 408, httpError);\n }\n if (errorCode.startsWith('E_TOOL_')) {\n return new KBError(errorCodes.TOOL_ERROR, envelope.error.message, 500, httpError);\n }\n\n return new KBError(errorCodes.SERVER_ERROR, envelope.error.message, 500, httpError);\n}\n\n","import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse, type AxiosError } from 'axios';\nimport type { RequestInterceptor, ResponseInterceptor, ErrorInterceptor } from './types';\nimport { KBError } from '../errors/kb-error';\nimport { mapFetchError } from './error-mapper';\nimport { ulid } from 'ulid';\n\nexport class HttpClient {\n private client: AxiosInstance;\n private requestInterceptors: RequestInterceptor[] = [];\n private responseInterceptors: ResponseInterceptor[] = [];\n private errorInterceptors: ErrorInterceptor[] = [];\n private baseUrl: string;\n\n constructor(baseUrl: string = '', token?: string) {\n this.baseUrl = baseUrl;\n this.client = axios.create({\n baseURL: baseUrl,\n headers: {\n 'Content-Type': 'application/json',\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n },\n });\n\n // Axios request interceptor: add X-Request-Id\n this.client.interceptors.request.use((config) => {\n if (!config.headers['X-Request-Id']) {\n config.headers['X-Request-Id'] = ulid();\n }\n return config;\n });\n\n // Axios response interceptor: unwrap envelope\n this.client.interceptors.response.use(\n (response) => {\n const data = response.data;\n\n // Check if response is an envelope\n if (data && typeof data === 'object' && 'ok' in data) {\n if (data.ok === true && 'data' in data) {\n // Success envelope: unwrap and return data\n response.data = data.data;\n } else if (data.ok === false && 'error' in data) {\n // Error envelope: throw error\n const error = mapFetchError(data.error, {\n status: response.status,\n statusText: response.statusText,\n } as Response);\n return Promise.reject(error);\n }\n }\n\n return response;\n },\n (error: AxiosError) => {\n // Transform axios error to KBError\n const kbError = mapFetchError(error.response?.data, {\n status: error.response?.status ?? 500,\n statusText: error.response?.statusText ?? 'Unknown Error',\n } as Response);\n return Promise.reject(kbError);\n }\n );\n }\n\n addRequestInterceptor(interceptor: RequestInterceptor): void {\n this.requestInterceptors.push(interceptor);\n }\n\n addResponseInterceptor(interceptor: ResponseInterceptor): void {\n this.responseInterceptors.push(interceptor);\n }\n\n addErrorInterceptor(interceptor: ErrorInterceptor): void {\n this.errorInterceptors.push(interceptor);\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n async fetch<T>(path: string, options: AxiosRequestConfig = {}): Promise<T> {\n try {\n // Apply custom request interceptors (if any)\n const config: AxiosRequestConfig = {\n url: path,\n ...options,\n };\n\n // Note: Custom interceptors work with FetchOptions (headers as Headers object)\n // but axios uses plain objects. If you need custom interceptors, adapt them here.\n\n const response: AxiosResponse<T> = await this.client.request<T>(config);\n\n // Apply custom response interceptors (if any)\n // Note: These expect Response objects from fetch API\n // You may need to adapt or remove these if not used\n\n return response.data;\n } catch (error) {\n const kbError = error instanceof KBError ? error : mapFetchError(error);\n throw await this.processError(kbError);\n }\n }\n\n private async processError(error: KBError): Promise<never> {\n let processedError = error;\n for (const interceptor of this.errorInterceptors) {\n processedError = await interceptor(processedError);\n }\n throw processedError;\n }\n}\n\n","/**\n * @module @kb-labs/studio-data-client/client/envelope-interceptor\n * Envelope interceptor for automatic unwrap of API responses\n */\n\nimport type { ResponseInterceptor } from './types';\n\n/**\n * Envelope response structure\n */\ninterface EnvelopeResponse<T = unknown> {\n ok: boolean;\n data?: T;\n error?: {\n code: string;\n message: string;\n details?: Record<string, unknown>;\n cause?: string;\n traceId?: string;\n };\n meta?: {\n requestId: string;\n durationMs: number;\n apiVersion: string;\n };\n}\n\n/**\n * Create envelope unwrap interceptor\n * Automatically unwraps { ok: true, data: T } to T\n */\nexport function createEnvelopeInterceptor(): ResponseInterceptor {\n return async (response: Response): Promise<Response> => {\n // Only process JSON responses\n const contentType = response.headers.get('content-type');\n if (!contentType?.includes('application/json')) {\n return response;\n }\n\n // Skip streaming responses\n if (contentType.includes('text/event-stream')) {\n return response;\n }\n\n // Clone response to avoid consuming the original\n const clonedResponse = response.clone();\n\n try {\n const envelope = await clonedResponse.json() as EnvelopeResponse;\n\n\n // Check if response is an envelope\n if (envelope && typeof envelope === 'object' && 'ok' in envelope) {\n if (envelope.ok === true && 'data' in envelope) {\n // Success envelope: unwrap data\n const unwrappedData = envelope.data;\n \n // Create new headers with Content-Type explicitly set\n const headers = new Headers(response.headers);\n headers.set('Content-Type', 'application/json');\n \n // Create new response with unwrapped data\n return new Response(JSON.stringify(unwrappedData), {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n } else if (envelope.ok === false && 'error' in envelope) {\n // Error envelope: leave as is for error handler\n return response;\n }\n }\n\n // Not an envelope, return as is\n return response;\n } catch (_error) {\n // If parsing fails, return original response\n return response;\n }\n };\n}\n\n/**\n * Extract envelope metadata from response\n */\nexport function extractEnvelopeMeta(response: Response): {\n requestId?: string;\n apiVersion?: string;\n durationMs?: number;\n} | null {\n try {\n const requestId = response.headers.get('X-Request-Id') || undefined;\n const apiVersion = response.headers.get('X-Schema-Version') || response.headers.get('x-schema-version') || undefined;\n \n return {\n requestId: requestId || undefined,\n apiVersion: apiVersion || undefined,\n };\n } catch {\n return null;\n }\n}\n\n","export const SCHEMA_VERSION = '1.0';\n\nexport type ID = string;\nexport type ISODate = string;\n\nexport interface PackageRef {\n name: string;\n version?: string;\n private?: boolean;\n path?: string;\n}\n\nexport interface RunRef {\n id: ID;\n startedAt: ISODate;\n endedAt?: ISODate;\n status: 'pending' | 'ok' | 'warn' | 'fail';\n}\n\nexport interface ActionResult {\n ok: boolean;\n message?: string;\n runId?: ID;\n}\n\n","import { z } from 'zod';\n\nexport const idSchema = z.string();\nexport const isoDateSchema = z.string().datetime();\n\nexport const packageRefSchema = z.object({\n name: z.string(),\n version: z.string().optional(),\n private: z.boolean().optional(),\n path: z.string().optional(),\n});\n\nexport const runRefSchema = z.object({\n id: idSchema,\n startedAt: isoDateSchema,\n endedAt: isoDateSchema.optional(),\n status: z.enum(['pending', 'ok', 'warn', 'fail']),\n});\n\nexport const actionResultSchema = z.object({\n ok: z.boolean(),\n message: z.string().optional(),\n runId: idSchema.optional(),\n});\n\n","import { z } from 'zod';\nimport { isoDateSchema } from './common';\nimport { packageRefSchema, runRefSchema } from './common';\n\nexport const auditSummarySchema = z.object({\n ts: isoDateSchema,\n totals: z.object({\n packages: z.number(),\n ok: z.number(),\n warn: z.number(),\n fail: z.number(),\n durationMs: z.number(),\n }),\n topFailures: z.array(\n z.object({\n pkg: z.string(),\n checks: z.array(z.enum(['style', 'types', 'tests', 'build', 'devlink', 'mind'])),\n })\n ),\n});\n\nexport const auditCheckSchema = z.object({\n id: z.enum(['style', 'types', 'tests', 'build', 'devlink', 'mind']),\n ok: z.boolean(),\n errors: z.number().optional(),\n warnings: z.number().optional(),\n meta: z.unknown().optional(),\n});\n\nexport const auditPackageReportSchema = z.object({\n pkg: packageRefSchema,\n lastRun: runRefSchema,\n checks: z.array(auditCheckSchema),\n artifacts: z.object({\n json: z.string().optional(),\n md: z.string().optional(),\n txt: z.string().optional(),\n html: z.string().optional(),\n }),\n});\n\n","import { z } from 'zod';\n\nexport const releasePreviewSchema = z.object({\n range: z.object({\n from: z.string(),\n to: z.string(),\n }),\n packages: z.array(\n z.object({\n name: z.string(),\n prev: z.string(),\n next: z.string(),\n bump: z.enum(['major', 'minor', 'patch', 'none']),\n breaking: z.number().optional(),\n })\n ),\n manifestJson: z.string().optional(),\n markdown: z.string().optional(),\n});\n\n","import { z } from 'zod';\nimport { isoDateSchema } from './common';\n\nexport const healthStatusSchema = z.object({\n ok: z.boolean(),\n timestamp: isoDateSchema,\n sources: z.array(\n z.object({\n name: z.string(),\n ok: z.boolean(),\n latency: z.number().optional(),\n error: z.string().optional(),\n })\n ),\n});\n\n","/**\n * @module @kb-labs/studio-data-client/sources/http-system-source\n * HTTP implementation of SystemDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport { KBError } from '../errors/kb-error';\nimport type { SystemDataSource, RoutesResponse, PlatformHealthSnapshot } from './system-source';\nimport type {\n ReadyResponse,\n NotReadyResponse,\n SystemInfoPayload,\n SystemCapabilitiesPayload,\n SystemConfigPayload,\n InfoResponse,\n CapabilitiesResponse,\n ConfigResponse,\n} from '@kb-labs/rest-api-contracts';\nimport type { ServiceObservabilityHealth } from '@kb-labs/core-contracts';\nimport type { HealthStatus } from '../contracts/system';\n\n/**\n * HTTP implementation of SystemDataSource\n */\nexport class HttpSystemSource implements SystemDataSource {\n constructor(private client: HttpClient) {}\n\n async getPlatformHealth(): Promise<PlatformHealthSnapshot> {\n return this.client.fetch<PlatformHealthSnapshot>('/health');\n }\n\n async getHealth(): Promise<HealthStatus> {\n const snapshot = await this.client.fetch<ServiceObservabilityHealth>('/observability/health');\n const degraded = snapshot.status === 'degraded' || snapshot.state === 'partial_observability';\n\n return {\n ok: snapshot.status === 'healthy',\n timestamp: snapshot.observedAt,\n sources: snapshot.checks.length > 0\n ? snapshot.checks.map((check: ServiceObservabilityHealth['checks'][number]) => ({\n name: check.id,\n ok: check.status === 'ok',\n latency: check.latencyMs,\n error: check.status === 'warn'\n ? 'system_degraded'\n : check.status === 'error'\n ? check.message ?? 'system_error'\n : undefined,\n }))\n : [\n {\n name: 'system',\n ok: snapshot.status === 'healthy',\n error: degraded ? 'system_degraded' : undefined,\n },\n ],\n snapshot,\n };\n }\n\n /**\n * Get ready status\n */\n async getReady(): Promise<ReadyResponse | NotReadyResponse> {\n try {\n return this.client.fetch<ReadyResponse>('/ready');\n } catch (error) {\n if (error instanceof KBError && error.status === 503) {\n const payload = (error.cause as { data?: unknown } | undefined)?.data;\n if (payload && typeof payload === 'object' && 'ready' in payload) {\n return payload as NotReadyResponse;\n }\n return {\n ready: false,\n reason: 'unknown',\n } as NotReadyResponse;\n }\n throw error;\n }\n }\n\n /**\n * Get info\n */\n async getInfo(): Promise<SystemInfoPayload> {\n const response = await this.client.fetch<InfoResponse>('/info');\n return response.data;\n }\n\n /**\n * Get capabilities\n */\n async getCapabilities(): Promise<SystemCapabilitiesPayload> {\n const response = await this.client.fetch<CapabilitiesResponse>('/info/capabilities');\n return response.data;\n }\n\n /**\n * Get config (redacted)\n */\n async getConfig(): Promise<SystemConfigPayload> {\n const response = await this.client.fetch<ConfigResponse>('/info/config');\n return response.data;\n }\n\n /**\n * Get all registered API routes\n */\n async getRoutes(): Promise<RoutesResponse> {\n return this.client.fetch<RoutesResponse>('/routes');\n }\n\n /**\n * Get the base URL of the API\n */\n getBaseUrl(): string {\n return this.client.getBaseUrl();\n }\n}\n","import type { HttpClient } from '../client/http-client'\nimport { KBError } from '../errors/kb-error'\nimport type {\n WorkflowDataSource,\n WorkflowRunsFilters,\n WorkflowRunParams,\n DashboardStatsResponse,\n WorkflowListResponse,\n WorkflowInfo,\n JobListFilter,\n JobListResponse,\n JobStatusInfo,\n JobStepsResponse,\n JobLogsResponse,\n CronListResponse,\n WorkflowRunHistoryResponse,\n PendingApprovalsResponse,\n ResolveApprovalParams,\n} from './workflow-source'\nimport type {\n WorkflowRun,\n WorkflowRunsListResponse,\n WorkflowPresenterEvent,\n} from '../contracts/workflows'\n\nfunction buildQuery(params?: WorkflowRunsFilters): string {\n if (!params || Object.keys(params).length === 0) {\n return ''\n }\n const query = new URLSearchParams()\n if (params.status) {\n query.set('status', params.status)\n }\n if (typeof params.limit === 'number' && !Number.isNaN(params.limit)) {\n query.set('limit', String(params.limit))\n }\n const qs = query.toString()\n return qs ? `?${qs}` : ''\n}\n\n// No longer needed with axios (handles JSON automatically)\n\nexport class HttpWorkflowSource implements WorkflowDataSource {\n constructor(private readonly client: HttpClient) {}\n\n async listRuns(filters?: WorkflowRunsFilters): Promise<WorkflowRunsListResponse> {\n const query = buildQuery(filters)\n return this.client.fetch<WorkflowRunsListResponse>(`/plugins/workflow/runs${query}`)\n }\n\n async getRun(runId: string): Promise<WorkflowRun | null> {\n try {\n const response = await this.client.fetch<{ run: WorkflowRun }>(\n `/plugins/workflow/runs/${encodeURIComponent(runId)}`,\n )\n return response.run\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null\n }\n throw error\n }\n }\n\n async cancelRun(runId: string): Promise<WorkflowRun> {\n await this.client.fetch<{ cancelled: boolean; runId: string }>(\n `/plugins/workflow/workflows/runs/${encodeURIComponent(runId)}/cancel`,\n { method: 'POST' },\n )\n // Fetch the updated run after cancel\n const run = await this.getRun(runId)\n if (!run) {\n return { id: runId, status: 'cancelled' } as WorkflowRun\n }\n return run\n }\n\n async runWorkflow(params: WorkflowRunParams): Promise<WorkflowRun> {\n const response = await this.client.fetch<{ run: WorkflowRun }>(\n `/plugins/workflow/workflows/${encodeURIComponent(params.spec.name)}/run`,\n {\n method: 'POST',\n data: {\n input: params.metadata,\n },\n },\n )\n return response.run\n }\n\n async listEvents(\n runId: string,\n options: { cursor?: string | null; limit?: number } = {},\n ): Promise<{ events: WorkflowPresenterEvent[]; cursor: string | null }> {\n const params = new URLSearchParams()\n if (options.cursor) {\n params.set('cursor', options.cursor)\n }\n if (typeof options.limit === 'number' && !Number.isNaN(options.limit)) {\n params.set('limit', String(options.limit))\n }\n const query = params.toString()\n return this.client.fetch<{ events: WorkflowPresenterEvent[]; cursor: string | null }>(\n `/workflows/runs/${runId}/events${query ? `?${query}` : ''}`,\n )\n }\n\n // 🆕 NEW methods for UI\n\n async getStats(): Promise<DashboardStatsResponse> {\n return this.client.fetch<DashboardStatsResponse>('/plugins/workflow/stats')\n }\n\n async listWorkflows(filters?: { limit?: number }): Promise<WorkflowListResponse> {\n const params = new URLSearchParams()\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n const query = params.toString()\n return this.client.fetch<WorkflowListResponse>(\n `/plugins/workflow/workflows${query ? `?${query}` : ''}`,\n )\n }\n\n async getWorkflow(workflowId: string): Promise<WorkflowInfo | null> {\n try {\n return await this.client.fetch<WorkflowInfo>(\n `/plugins/workflow/workflows/${encodeURIComponent(workflowId)}`,\n )\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null\n }\n throw error\n }\n }\n\n async runWorkflowById(\n workflowId: string,\n input?: Record<string, unknown>,\n ): Promise<{ runId: string; status: string }> {\n return this.client.fetch<{ runId: string; status: string }>(\n `/plugins/workflow/workflows/${encodeURIComponent(workflowId)}/run`,\n {\n method: 'POST',\n data: { input },\n },\n )\n }\n\n async listJobs(filters?: JobListFilter): Promise<JobListResponse> {\n const params = new URLSearchParams()\n if (filters?.type) {\n params.set('type', filters.type)\n }\n if (filters?.status) {\n params.set('status', filters.status)\n }\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n if (typeof filters?.offset === 'number' && !Number.isNaN(filters.offset)) {\n params.set('offset', String(filters.offset))\n }\n const query = params.toString()\n return this.client.fetch<JobListResponse>(\n `/plugins/workflow/jobs${query ? `?${query}` : ''}`,\n )\n }\n\n async getJob(jobId: string): Promise<JobStatusInfo | null> {\n try {\n return await this.client.fetch<JobStatusInfo>(\n `/plugins/workflow/jobs/${encodeURIComponent(jobId)}`,\n )\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null\n }\n throw error\n }\n }\n\n async getJobSteps(jobId: string): Promise<JobStepsResponse> {\n return this.client.fetch<JobStepsResponse>(\n `/plugins/workflow/jobs/${encodeURIComponent(jobId)}/steps`,\n )\n }\n\n async getJobLogs(\n jobId: string,\n filters?: { limit?: number; offset?: number; level?: string },\n ): Promise<JobLogsResponse> {\n const params = new URLSearchParams()\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n if (typeof filters?.offset === 'number' && !Number.isNaN(filters.offset)) {\n params.set('offset', String(filters.offset))\n }\n if (filters?.level) {\n params.set('level', filters.level)\n }\n const query = params.toString()\n return this.client.fetch<JobLogsResponse>(\n `/plugins/workflow/jobs/${encodeURIComponent(jobId)}/logs${query ? `?${query}` : ''}`,\n )\n }\n\n async listCronJobs(): Promise<CronListResponse> {\n return this.client.fetch<CronListResponse>('/plugins/workflow/cron')\n }\n\n async getPendingApprovals(runId: string): Promise<PendingApprovalsResponse> {\n return this.client.fetch<PendingApprovalsResponse>(\n `/plugins/workflow/runs/${encodeURIComponent(runId)}/pending-approvals`,\n )\n }\n\n async resolveApproval(params: ResolveApprovalParams): Promise<{ resolved: boolean }> {\n const { runId, ...body } = params\n return this.client.fetch<{ resolved: boolean }>(\n `/plugins/workflow/runs/${encodeURIComponent(runId)}/approve`,\n {\n method: 'POST',\n data: body,\n },\n )\n }\n\n async cancelWorkflowRun(runId: string): Promise<{ cancelled: boolean; runId: string }> {\n return this.client.fetch<{ cancelled: boolean; runId: string }>(\n `/plugins/workflow/workflows/runs/${encodeURIComponent(runId)}/cancel`,\n { method: 'POST' },\n )\n }\n\n async getWorkflowRuns(\n workflowId: string,\n filters?: { limit?: number; offset?: number; status?: string },\n ): Promise<WorkflowRunHistoryResponse> {\n const params = new URLSearchParams()\n if (typeof filters?.limit === 'number' && !Number.isNaN(filters.limit)) {\n params.set('limit', String(filters.limit))\n }\n if (typeof filters?.offset === 'number' && !Number.isNaN(filters.offset)) {\n params.set('offset', String(filters.offset))\n }\n if (filters?.status) {\n params.set('status', filters.status)\n }\n const query = params.toString()\n return this.client.fetch<WorkflowRunHistoryResponse>(\n `/plugins/workflow/workflows/${encodeURIComponent(workflowId)}/runs${query ? `?${query}` : ''}`,\n )\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-cache-source\n * HTTP implementation of CacheDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { CacheDataSource, CacheInvalidationResult } from './cache-source';\n\n/**\n * HTTP implementation of CacheDataSource\n */\nexport class HttpCacheSource implements CacheDataSource {\n constructor(private client: HttpClient) {}\n\n async invalidateCache(): Promise<CacheInvalidationResult> {\n return this.client.fetch<CacheInvalidationResult>('/cache/invalidate', {\n method: 'POST',\n // No Content-Type header needed for empty body POST\n });\n }\n}\n","import type { PrometheusMetrics } from '../contracts/observability';\n\ntype Sample = {\n name: string;\n labels: Record<string, string>;\n value: number;\n};\n\ntype HistogramPoint = {\n le: number;\n count: number;\n};\n\nfunction parseLabels(raw: string | undefined): Record<string, string> {\n if (!raw) {\n return {};\n }\n\n const labels: Record<string, string> = {};\n const pattern = /([a-zA-Z_][a-zA-Z0-9_]*)=\"((?:\\\\\"|[^\"])*)\"/g;\n\n for (const match of raw.matchAll(pattern)) {\n const key = match[1];\n if (!key) {\n continue;\n }\n\n labels[key] = (match[2] ?? '').replace(/\\\\\"/g, '\"');\n }\n\n return labels;\n}\n\nfunction parseSamples(text: string): Sample[] {\n const samples: Sample[] = [];\n\n for (const line of text.split('\\n')) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) {\n continue;\n }\n\n const match = trimmed.match(/^([a-zA-Z_:][a-zA-Z0-9_:]*)(?:\\{([^}]*)\\})?\\s+(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)$/);\n if (!match) {\n continue;\n }\n\n samples.push({\n name: match[1]!,\n labels: parseLabels(match[2]),\n value: Number(match[3]),\n });\n }\n\n return samples;\n}\n\nfunction sumMetric(samples: Sample[], metricName: string): number {\n return samples\n .filter((sample) => sample.name === metricName)\n .reduce((sum, sample) => sum + sample.value, 0);\n}\n\nfunction latestMetric(samples: Sample[], metricName: string): number | null {\n const metric = [...samples].reverse().find((sample: Sample) => sample.name === metricName);\n return metric ? metric.value : null;\n}\n\nfunction buildHistogram(samples: Sample[], bucketMetric: string): HistogramPoint[] {\n return samples\n .filter((sample) => sample.name === bucketMetric && sample.labels.le)\n .map((sample) => ({\n le: sample.labels.le === '+Inf' ? Number.POSITIVE_INFINITY : Number(sample.labels.le),\n count: sample.value,\n }))\n .sort((a, b) => a.le - b.le);\n}\n\nfunction interpolateQuantile(quantile: number, histogram: HistogramPoint[]): number {\n if (histogram.length === 0) {\n return 0;\n }\n\n const total = histogram.find((point) => !Number.isFinite(point.le))?.count ?? histogram[histogram.length - 1]!.count;\n if (total <= 0) {\n return 0;\n }\n\n const target = total * quantile;\n let previousCount = 0;\n let previousLe = 0;\n\n for (const point of histogram) {\n if (point.count >= target) {\n if (!Number.isFinite(point.le)) {\n return previousLe;\n }\n\n const bucketCount = point.count - previousCount;\n if (bucketCount <= 0) {\n return point.le;\n }\n\n const progress = (target - previousCount) / bucketCount;\n return previousLe + (point.le - previousLe) * progress;\n }\n\n previousCount = point.count;\n if (Number.isFinite(point.le)) {\n previousLe = point.le;\n }\n }\n\n return previousLe;\n}\n\nfunction buildLatency(samples: Sample[]) {\n const count = sumMetric(samples, 'http_request_duration_ms_count');\n const total = sumMetric(samples, 'http_request_duration_ms_sum');\n const histogram = buildHistogram(samples, 'http_request_duration_ms_bucket');\n const finiteBuckets = histogram.filter((point) => Number.isFinite(point.le) && point.count > 0);\n\n return {\n average: count > 0 ? total / count : 0,\n min: finiteBuckets[0]?.le ?? 0,\n max: finiteBuckets[finiteBuckets.length - 1]?.le ?? 0,\n p50: interpolateQuantile(0.5, histogram),\n p95: interpolateQuantile(0.95, histogram),\n p99: interpolateQuantile(0.99, histogram),\n };\n}\n\nfunction groupByLabel(samples: Sample[], metricName: string, label: string): Map<string, Sample[]> {\n const grouped = new Map<string, Sample[]>();\n\n for (const sample of samples) {\n if (sample.name !== metricName || !sample.labels[label]) {\n continue;\n }\n\n const key = sample.labels[label]!;\n const existing = grouped.get(key) ?? [];\n existing.push(sample);\n grouped.set(key, existing);\n }\n\n return grouped;\n}\n\nfunction buildPluginMetrics(samples: Sample[]): PrometheusMetrics['perPlugin'] {\n const groupedCounts = groupByLabel(samples, 'kb_plugin_request_total', 'plugin');\n const durationSums = groupByLabel(samples, 'kb_plugin_request_duration_ms_sum', 'plugin');\n const durationCounts = groupByLabel(samples, 'kb_plugin_request_duration_ms_count', 'plugin');\n\n return Array.from(new Set([\n ...groupedCounts.keys(),\n ...durationSums.keys(),\n ...durationCounts.keys(),\n ])).map((pluginId) => {\n const requests = (groupedCounts.get(pluginId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const errors = (groupedCounts.get(pluginId) ?? [])\n .filter((sample) => Number(sample.labels.status_code ?? 0) >= 400)\n .reduce((sum, sample) => sum + sample.value, 0);\n const totalDuration = (durationSums.get(pluginId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const durationCount = (durationCounts.get(pluginId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n\n return {\n pluginId,\n requests,\n errors,\n latency: {\n average: durationCount > 0 ? totalDuration / durationCount : 0,\n min: 0,\n max: 0,\n },\n };\n });\n}\n\nfunction buildTenantMetrics(samples: Sample[]): PrometheusMetrics['perTenant'] {\n const groupedCounts = groupByLabel(samples, 'kb_tenant_request_total', 'tenant');\n const errorCounts = groupByLabel(samples, 'kb_tenant_request_errors_total', 'tenant');\n const durationSums = groupByLabel(samples, 'kb_tenant_request_duration_ms_sum', 'tenant');\n const durationCounts = groupByLabel(samples, 'kb_tenant_request_duration_ms_count', 'tenant');\n\n return Array.from(new Set([\n ...groupedCounts.keys(),\n ...errorCounts.keys(),\n ...durationSums.keys(),\n ...durationCounts.keys(),\n ])).map((tenantId) => {\n const requests = (groupedCounts.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const errors = (errorCounts.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const totalDuration = (durationSums.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n const durationCount = (durationCounts.get(tenantId) ?? []).reduce((sum, sample) => sum + sample.value, 0);\n\n return {\n tenantId,\n requests,\n errors,\n latency: {\n average: durationCount > 0 ? totalDuration / durationCount : 0,\n },\n };\n });\n}\n\nfunction buildErrorBreakdown(samples: Sample[]): PrometheusMetrics['errors'] {\n const byStatusCode: Record<number, number> = {};\n\n for (const sample of samples) {\n if (sample.name !== 'http_requests_total') {\n continue;\n }\n\n const statusCode = Number(sample.labels.status_code ?? 0);\n if (statusCode < 400) {\n continue;\n }\n\n byStatusCode[statusCode] = (byStatusCode[statusCode] ?? 0) + sample.value;\n }\n\n return {\n byStatusCode,\n recent: [],\n };\n}\n\nexport function parsePrometheusMetrics(text: string): PrometheusMetrics {\n const samples = parseSamples(text);\n const totalRequests = sumMetric(samples, 'http_requests_total');\n const errors = buildErrorBreakdown(samples);\n const clientErrors = Object.entries(errors.byStatusCode)\n .filter(([code]) => Number(code) >= 400 && Number(code) < 500)\n .reduce((sum, [, count]) => sum + count, 0);\n const serverErrors = Object.entries(errors.byStatusCode)\n .filter(([code]) => Number(code) >= 500)\n .reduce((sum, [, count]) => sum + count, 0);\n const pluginMountTotal = latestMetric(samples, 'kb_plugins_mount_total');\n const pluginMountSucceeded = latestMetric(samples, 'kb_plugins_mount_succeeded');\n const pluginMountFailed = latestMetric(samples, 'kb_plugins_mount_failed');\n const pluginMountElapsedMs = latestMetric(samples, 'kb_plugins_mount_elapsed_ms');\n const uptimeSeconds = latestMetric(samples, 'process_uptime_seconds') ?? 0;\n const redisHealthy = latestMetric(samples, 'kb_redis_healthy');\n const redisTransitions = groupByLabel(samples, 'kb_redis_status_transitions_total', 'state');\n\n return {\n requests: {\n total: totalRequests,\n success: Math.max(0, totalRequests - clientErrors - serverErrors),\n clientErrors,\n serverErrors,\n },\n latency: buildLatency(samples),\n perPlugin: buildPluginMetrics(samples),\n perTenant: buildTenantMetrics(samples),\n errors,\n timestamps: {\n startTime: Date.now() - uptimeSeconds * 1000,\n lastRequest: null,\n },\n redis: {\n updates: sumMetric(samples, 'kb_redis_status_updates_total'),\n healthyTransitions: (redisTransitions.get('healthy') ?? []).reduce((sum, sample) => sum + sample.value, 0),\n unhealthyTransitions: (redisTransitions.get('unhealthy') ?? []).reduce((sum, sample) => sum + sample.value, 0),\n lastStatus: redisHealthy === null\n ? null\n : {\n healthy: redisHealthy >= 1,\n state: redisHealthy >= 1 ? 'healthy' : 'unhealthy',\n role: 'unknown',\n },\n },\n pluginMounts: pluginMountTotal === null\n ? null\n : {\n total: pluginMountTotal,\n succeeded: pluginMountSucceeded ?? 0,\n failed: pluginMountFailed ?? 0,\n elapsedMs: pluginMountElapsedMs ?? 0,\n },\n uptime: {\n seconds: uptimeSeconds,\n startTime: new Date(Date.now() - uptimeSeconds * 1000).toISOString(),\n lastRequest: null,\n },\n };\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-observability-source\n * HTTP implementation of ObservabilityDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport { KBError } from '../errors/kb-error';\nimport type { ObservabilityDataSource } from './observability-source';\nimport type {\n StateBrokerStats,\n DevKitHealth,\n PrometheusMetrics,\n SystemEvent,\n LogQuery,\n LogQueryResponse,\n LogRecord,\n LogSummarizeRequest,\n LogSummarizeResponse,\n HistoricalDataPoint,\n HeatmapCell,\n MetricsHistoryQuery,\n MetricsHeatmapQuery,\n Incident,\n IncidentQuery,\n IncidentCreatePayload,\n IncidentsListResponse,\n IncidentDetailResponse,\n IncidentAnalysisResponse,\n} from '../contracts/observability';\nimport { parsePrometheusMetrics } from './prometheus-metrics-parser';\n\n/**\n * HTTP implementation of ObservabilityDataSource\n */\nexport class HttpObservabilitySource implements ObservabilityDataSource {\n constructor(private client: HttpClient) {}\n\n async getStateBrokerStats(): Promise<StateBrokerStats> {\n try {\n return await this.client.fetch<StateBrokerStats>(\n '/observability/state-broker'\n );\n } catch (error) {\n throw new KBError(\n 'STATE_BROKER_FETCH_FAILED',\n 'Failed to fetch State Broker stats',\n 500,\n error\n );\n }\n }\n\n async getDevKitHealth(): Promise<DevKitHealth> {\n try {\n return await this.client.fetch<DevKitHealth>(\n '/observability/devkit'\n );\n } catch (error) {\n throw new KBError(\n 'DEVKIT_FETCH_FAILED',\n 'Failed to fetch DevKit health',\n 500,\n error\n );\n }\n }\n\n async getPrometheusMetrics(): Promise<PrometheusMetrics> {\n try {\n const payload = await this.client.fetch<string>(\n '/metrics',\n { responseType: 'text' }\n );\n\n return parsePrometheusMetrics(payload);\n } catch (error) {\n throw new KBError(\n 'PROMETHEUS_METRICS_FETCH_FAILED',\n 'Failed to fetch Prometheus metrics',\n 500,\n error\n );\n }\n }\n\n subscribeToSystemEvents(\n onEvent: (event: SystemEvent) => void,\n onError: (error: Error) => void\n ): () => void {\n const eventSource = new EventSource(`${this.client.getBaseUrl()}/events/registry`);\n\n eventSource.addEventListener('registry', (e) => {\n try {\n const event = JSON.parse(e.data) as SystemEvent;\n onEvent(event);\n } catch (err) {\n console.error('Failed to parse registry event:', err);\n }\n });\n\n eventSource.addEventListener('health', (e) => {\n try {\n const event = JSON.parse(e.data) as SystemEvent;\n onEvent(event);\n } catch (err) {\n console.error('Failed to parse health event:', err);\n }\n });\n\n eventSource.onerror = () => {\n onError(new Error('Connection to event stream failed'));\n eventSource.close();\n };\n\n // Return cleanup function\n return () => {\n eventSource.close();\n };\n }\n\n async queryLogs(filters: LogQuery): Promise<LogQueryResponse> {\n try {\n const params = new URLSearchParams();\n\n if (filters.from) {params.append('from', filters.from);}\n if (filters.to) {params.append('to', filters.to);}\n if (filters.level) {params.append('level', filters.level);}\n if (filters.plugin) {params.append('plugin', filters.plugin);}\n if (filters.executionId) {params.append('executionId', filters.executionId);}\n if (filters.tenantId) {params.append('tenantId', filters.tenantId);}\n if (filters.search) {params.append('search', filters.search);}\n if (filters.limit !== undefined) {params.append('limit', String(filters.limit));}\n if (filters.offset !== undefined) {params.append('offset', String(filters.offset));}\n\n const queryString = params.toString();\n const url = queryString ? `/logs?${queryString}` : '/logs';\n\n return await this.client.fetch<LogQueryResponse>(url);\n } catch (error) {\n throw new KBError(\n 'LOGS_QUERY_FAILED',\n 'Failed to query logs',\n 500,\n error\n );\n }\n }\n\n subscribeToLogs(\n onLog: (log: LogRecord) => void,\n onError: (error: Error) => void,\n filters?: LogQuery\n ): () => void {\n // Build query string from filters\n const params = new URLSearchParams();\n if (filters?.level) {params.append('level', filters.level);}\n if (filters?.plugin) {params.append('plugin', filters.plugin);}\n if (filters?.executionId) {params.append('executionId', filters.executionId);}\n if (filters?.tenantId) {params.append('tenantId', filters.tenantId);}\n\n const queryString = params.toString();\n const streamBase = this.client.getBaseUrl();\n const url = queryString\n ? `${streamBase}/logs/stream?${queryString}`\n : `${streamBase}/logs/stream`;\n\n const eventSource = new EventSource(url);\n\n eventSource.addEventListener('log', (e) => {\n try {\n const log = JSON.parse(e.data) as LogRecord;\n onLog(log);\n } catch (err) {\n console.error('Failed to parse log event:', err);\n }\n });\n\n eventSource.onerror = () => {\n onError(new Error('Connection to log stream failed'));\n eventSource.close();\n };\n\n // Return cleanup function\n return () => {\n eventSource.close();\n };\n }\n\n async summarizeLogs(request: LogSummarizeRequest): Promise<LogSummarizeResponse> {\n try {\n return await this.client.fetch<LogSummarizeResponse>('/logs/summarize', {\n method: 'POST',\n data: request,\n });\n } catch (error) {\n throw new KBError(\n 'LOG_SUMMARIZATION_FAILED',\n 'Failed to summarize logs',\n 500,\n error\n );\n }\n }\n\n async getLog(id: string, includeRelated?: boolean): Promise<{ log: LogRecord; related?: LogRecord[] }> {\n try {\n const params = new URLSearchParams();\n if (includeRelated) {\n params.append('includeRelated', 'true');\n }\n\n const queryString = params.toString();\n const url = queryString ? `/logs/${id}?${queryString}` : `/logs/${id}`;\n\n return await this.client.fetch<{ log: LogRecord; related?: LogRecord[] }>(url);\n } catch (error) {\n throw new KBError(\n 'LOG_FETCH_FAILED',\n 'Failed to fetch log',\n 500,\n error\n );\n }\n }\n\n async getRelatedLogs(id: string): Promise<{ total: number; logs: LogRecord[]; correlationKeys: Record<string, unknown> }> {\n try {\n return await this.client.fetch<{ total: number; logs: LogRecord[]; correlationKeys: Record<string, unknown> }>(\n `/logs/${id}/related`\n );\n } catch (error) {\n throw new KBError(\n 'RELATED_LOGS_FETCH_FAILED',\n 'Failed to fetch related logs',\n 500,\n error\n );\n }\n }\n\n async getMetricsHistory(query: MetricsHistoryQuery): Promise<HistoricalDataPoint[]> {\n try {\n const params = new URLSearchParams();\n params.append('metric', query.metric);\n params.append('range', query.range);\n if (query.interval) {params.append('interval', query.interval);}\n\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<HistoricalDataPoint[]>(\n `/observability/metrics/history?${params.toString()}`\n );\n } catch (error) {\n throw new KBError(\n 'METRICS_HISTORY_FETCH_FAILED',\n 'Failed to fetch metrics history',\n 500,\n error\n );\n }\n }\n\n async getMetricsHeatmap(query: MetricsHeatmapQuery): Promise<HeatmapCell[]> {\n try {\n const params = new URLSearchParams();\n params.append('metric', query.metric);\n if (query.days) {params.append('days', String(query.days));}\n\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<HeatmapCell[]>(\n `/observability/metrics/heatmap?${params.toString()}`\n );\n } catch (error) {\n throw new KBError(\n 'METRICS_HEATMAP_FETCH_FAILED',\n 'Failed to fetch metrics heatmap',\n 500,\n error\n );\n }\n }\n\n async queryIncidents(query?: IncidentQuery): Promise<Incident[]> {\n try {\n const params = new URLSearchParams();\n if (query?.limit) {params.append('limit', String(query.limit));}\n if (query?.severity) {\n const severityList = Array.isArray(query.severity) ? query.severity : [query.severity];\n params.append('severity', severityList.join(','));\n }\n if (query?.type) {\n const typeList = Array.isArray(query.type) ? query.type : [query.type];\n params.append('type', typeList.join(','));\n }\n if (query?.from) {params.append('from', String(query.from));}\n if (query?.to) {params.append('to', String(query.to));}\n if (query?.includeResolved !== undefined) {\n params.append('includeResolved', String(query.includeResolved));\n }\n\n const queryString = params.toString();\n const url = queryString ? `/observability/incidents/history?${queryString}` : '/observability/incidents/history';\n\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<Incident[]>(url);\n } catch (error) {\n throw new KBError(\n 'INCIDENTS_QUERY_FAILED',\n 'Failed to query incidents',\n 500,\n error\n );\n }\n }\n\n async createIncident(payload: IncidentCreatePayload): Promise<Incident> {\n try {\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<Incident>(\n '/observability/incidents',\n {\n method: 'POST',\n data: payload,\n }\n );\n } catch (error) {\n throw new KBError(\n 'INCIDENT_CREATE_FAILED',\n 'Failed to create incident',\n 500,\n error\n );\n }\n }\n\n async resolveIncident(id: string, resolutionNotes?: string): Promise<Incident> {\n try {\n // HttpClient auto-unwraps { ok, data } envelope in response interceptor\n return await this.client.fetch<Incident>(\n `/observability/incidents/${id}/resolve`,\n {\n method: 'POST',\n data: { resolutionNotes },\n }\n );\n } catch (error) {\n throw new KBError(\n 'INCIDENT_RESOLVE_FAILED',\n 'Failed to resolve incident',\n 500,\n error\n );\n }\n }\n\n async listIncidents(query?: IncidentQuery): Promise<IncidentsListResponse> {\n try {\n const params = buildIncidentQueryParams(query);\n const url = `/observability/incidents${params ? `?${params}` : ''}`;\n const response = await this.client.fetch<IncidentsListResponse['data']>(url);\n\n return {\n ok: true,\n data: response,\n };\n } catch (error) {\n throw new KBError(\n 'INCIDENTS_LIST_FAILED',\n 'Failed to list incidents',\n 500,\n error\n );\n }\n }\n\n async getIncident(id: string): Promise<IncidentDetailResponse> {\n try {\n const data = await this.client.fetch<Incident>(`/observability/incidents/${id}`);\n\n return {\n ok: true,\n data,\n };\n } catch (error) {\n throw new KBError(\n 'INCIDENT_FETCH_FAILED',\n 'Failed to fetch incident',\n 500,\n error\n );\n }\n }\n\n async analyzeIncident(id: string): Promise<IncidentAnalysisResponse> {\n try {\n const data = await this.client.fetch<IncidentAnalysisResponse['data']>(\n `/observability/incidents/${id}/analyze`,\n { method: 'POST' }\n );\n\n return {\n ok: true,\n data,\n };\n } catch (error) {\n throw new KBError(\n 'INCIDENT_ANALYSIS_FAILED',\n 'Failed to analyze incident',\n 500,\n error\n );\n }\n }\n\n async chatWithInsights(\n question: string,\n context?: {\n includeMetrics?: boolean;\n includeIncidents?: boolean;\n includeHistory?: boolean;\n timeRange?: '1h' | '6h' | '24h' | '7d';\n plugins?: string[];\n }\n ): Promise<{\n answer: string;\n context: string[];\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }> {\n try {\n return await this.client.fetch<{\n answer: string;\n context: string[];\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }>('/observability/insights/chat', {\n method: 'POST',\n data: { question, context },\n });\n } catch (error) {\n throw new KBError(\n 'INSIGHTS_CHAT_FAILED',\n 'Failed to chat with AI insights',\n 500,\n error\n );\n }\n }\n}\n\nfunction buildIncidentQueryParams(query?: IncidentQuery): string {\n if (!query) { return ''; }\n const params = new URLSearchParams();\n if (query.limit !== undefined) { params.append('limit', query.limit.toString()); }\n if (query.severity) {\n const severities = Array.isArray(query.severity) ? query.severity : [query.severity];\n severities.forEach(s => params.append('severity', s));\n }\n if (query.type) {\n const types = Array.isArray(query.type) ? query.type : [query.type];\n types.forEach(t => params.append('type', t));\n }\n if (query.from !== undefined) { params.append('from', query.from.toString()); }\n if (query.to !== undefined) { params.append('to', query.to.toString()); }\n if (query.includeResolved !== undefined) { params.append('includeResolved', query.includeResolved.toString()); }\n return params.toString();\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-analytics-source\n * HTTP implementation of AnalyticsDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { AnalyticsDataSource } from './analytics-source';\nimport type {\n EventsQuery,\n EventsResponse,\n EventsStats,\n BufferStatus,\n DlqStatus,\n} from '../contracts/analytics';\n\n/**\n * HTTP implementation of AnalyticsDataSource\n * Calls REST API /v1/analytics/* endpoints\n */\nexport class HttpAnalyticsSource implements AnalyticsDataSource {\n constructor(private readonly client: HttpClient) {}\n\n async getEvents(query?: EventsQuery): Promise<EventsResponse> {\n const params = new URLSearchParams();\n\n if (query?.type) {\n if (Array.isArray(query.type)) {\n query.type.forEach(t => params.append('type', t));\n } else {\n params.set('type', query.type);\n }\n }\n if (query?.source) {params.set('source', query.source);}\n if (query?.actor) {params.set('actor', query.actor);}\n if (query?.from) {params.set('from', query.from);}\n if (query?.to) {params.set('to', query.to);}\n if (query?.limit) {params.set('limit', String(query.limit));}\n if (query?.offset) {params.set('offset', String(query.offset));}\n\n const path = `/analytics/events${params.toString() ? `?${params}` : ''}`;\n return this.client.fetch<EventsResponse>(path);\n }\n\n async getStats(): Promise<EventsStats> {\n return this.client.fetch<EventsStats>('/analytics/stats');\n }\n\n async getBufferStatus(): Promise<BufferStatus | null> {\n try {\n return this.client.fetch<BufferStatus>('/analytics/buffer/status');\n } catch (_error) {\n // Analytics not configured or buffer not applicable (501)\n return null;\n }\n }\n\n async getDlqStatus(): Promise<DlqStatus | null> {\n try {\n return this.client.fetch<DlqStatus>('/analytics/dlq/status');\n } catch (_error) {\n // Analytics not configured or DLQ not applicable (501)\n return null;\n }\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-adapters-source\n * HTTP implementation of AdaptersDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { AdaptersDataSource, DateRangeOptions, DailyStats } from './adapters-source';\nimport type {\n LLMUsageStats,\n EmbeddingsUsageStats,\n VectorStoreUsageStats,\n CacheUsageStats,\n StorageUsageStats,\n} from '../contracts/adapters';\n\n/**\n * HTTP implementation of AdaptersDataSource\n * Calls REST API /v1/adapters/* endpoints\n */\nexport class HttpAdaptersSource implements AdaptersDataSource {\n constructor(private readonly client: HttpClient) {}\n\n /**\n * Build query string from date range options\n */\n private buildQueryString(options?: DateRangeOptions): string {\n const params = new URLSearchParams();\n\n if (options?.from) {params.append('from', options.from);}\n if (options?.to) {params.append('to', options.to);}\n\n // Legacy model filter\n if (options?.models) {\n const modelsArray = Array.isArray(options.models) ? options.models : [options.models];\n if (modelsArray.length > 0) {params.append('models', modelsArray.join(','));}\n }\n\n // StatsQuery fields\n if (options?.groupBy) {params.append('groupBy', options.groupBy);}\n if (options?.breakdownBy) {params.append('breakdownBy', options.breakdownBy);}\n if (options?.metrics && options.metrics.length > 0) {params.append('metrics', options.metrics.join(','));}\n\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n }\n\n async getLLMUsage(options?: DateRangeOptions): Promise<LLMUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<LLMUsageStats>(`/adapters/llm/usage${query}`);\n }\n\n async getEmbeddingsUsage(options?: DateRangeOptions): Promise<EmbeddingsUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<EmbeddingsUsageStats>(`/adapters/embeddings/usage${query}`);\n }\n\n async getVectorStoreUsage(options?: DateRangeOptions): Promise<VectorStoreUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<VectorStoreUsageStats>(`/adapters/vectorstore/usage${query}`);\n }\n\n async getCacheUsage(options?: DateRangeOptions): Promise<CacheUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<CacheUsageStats>(`/adapters/cache/usage${query}`);\n }\n\n async getStorageUsage(options?: DateRangeOptions): Promise<StorageUsageStats> {\n const query = this.buildQueryString(options);\n return this.client.fetch<StorageUsageStats>(`/adapters/storage/usage${query}`);\n }\n\n async getLLMDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/llm/daily-stats${query}`);\n }\n\n async getEmbeddingsDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/embeddings/daily-stats${query}`);\n }\n\n async getVectorStoreDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/vectorstore/daily-stats${query}`);\n }\n\n async getCacheDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/cache/daily-stats${query}`);\n }\n\n async getStorageDailyStats(options?: DateRangeOptions): Promise<DailyStats[]> {\n const query = this.buildQueryString(options);\n return this.client.fetch<DailyStats[]>(`/adapters/storage/daily-stats${query}`);\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/sources/http-platform-source\n * HTTP implementation of PlatformDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport type { PlatformDataSource } from './platform-source';\nimport type { PlatformConfigPayload } from '@kb-labs/rest-api-contracts';\n\n/**\n * HTTP implementation of PlatformDataSource\n */\nexport class HttpPlatformSource implements PlatformDataSource {\n constructor(private client: HttpClient) {}\n\n /**\n * Get platform configuration\n */\n async getConfig(): Promise<PlatformConfigPayload> {\n // Envelope is already unwrapped by envelope interceptor\n return this.client.fetch<PlatformConfigPayload>('/platform/config');\n }\n}\n","/**\n * HTTP implementation of PluginsDataSource\n */\n\nimport type { HttpClient } from '../client/http-client';\nimport { KBError } from '../errors/kb-error';\nimport type {\n PluginsDataSource,\n PluginsRegistryResponse,\n PluginAskRequest,\n PluginAskResponse\n} from './plugins-source';\n\nexport class HttpPluginsSource implements PluginsDataSource {\n constructor(private readonly client: HttpClient) {}\n\n async getPlugins(): Promise<PluginsRegistryResponse> {\n return this.client.fetch<PluginsRegistryResponse>('/plugins/registry');\n }\n\n async askAboutPlugin(pluginId: string, request: PluginAskRequest): Promise<PluginAskResponse> {\n return this.client.fetch<PluginAskResponse>(`/plugins/${encodeURIComponent(pluginId)}/ask`, {\n method: 'POST',\n data: request,\n });\n }\n\n async getPluginReadme(pluginId: string): Promise<string | null> {\n const [scope, name] = this.splitPluginId(pluginId);\n try {\n return await this.client.fetch<string>(`/plugins/@${scope}/${name}/readme`, { responseType: 'text' });\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null;\n }\n throw error;\n }\n }\n\n async getPluginChangelog(pluginId: string): Promise<string | null> {\n const [scope, name] = this.splitPluginId(pluginId);\n try {\n return await this.client.fetch<string>(`/plugins/@${scope}/${name}/changelog`, { responseType: 'text' });\n } catch (error) {\n if (error instanceof KBError && error.status === 404) {\n return null;\n }\n throw error;\n }\n }\n\n private splitPluginId(pluginId: string): [string, string] {\n const match = /^@([^/]+)\\/(.+)$/.exec(pluginId);\n if (!match || !match[1] || !match[2]) {\n throw new KBError('VALIDATION_ERROR', `Invalid plugin ID format: ${pluginId}`, 400);\n }\n return [match[1], match[2]];\n }\n}\n","import type { SystemDataSource, RoutesResponse, PlatformHealthSnapshot } from '../sources/system-source';\nimport type { HealthStatus } from '../contracts/system';\nimport type { ServiceObservabilityHealth } from '@kb-labs/core-contracts';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), ms);\n });\n}\n\nexport class MockSystemSource implements SystemDataSource {\n async getHealth(): Promise<HealthStatus> {\n await delay(150);\n const snapshot: ServiceObservabilityHealth = {\n schema: 'kb.observability/1',\n contractVersion: '1.0',\n serviceId: 'rest',\n instanceId: 'mock-rest',\n observedAt: new Date().toISOString(),\n status: 'healthy',\n uptimeSec: 3600,\n metricsEndpoint: '/api/v1/metrics',\n logsSource: 'rest',\n capabilities: ['httpMetrics', 'eventLoopMetrics', 'operationMetrics', 'logCorrelation'],\n checks: [\n { id: 'registry', status: 'ok', message: 'Registry snapshot loaded' },\n { id: 'plugin-routes', status: 'ok', message: '12 plugin routes mounted' },\n ],\n snapshot: {\n cpuPercent: 6.2,\n rssBytes: 188_743_680,\n heapUsedBytes: 73_400_320,\n eventLoopLagMs: 12,\n activeOperations: 3,\n },\n topOperations: [\n { operation: 'http.GET /api/v1/health', count: 42, avgDurationMs: 3.1, maxDurationMs: 8.2, errorCount: 0 },\n ],\n state: 'active',\n };\n\n return {\n ok: true,\n timestamp: new Date().toISOString(),\n sources: [\n { name: 'registry', ok: true, latency: 100 },\n { name: 'plugin-routes', ok: true, latency: 120 },\n ],\n snapshot,\n };\n }\n\n async getPlatformHealth(): Promise<PlatformHealthSnapshot> {\n await delay(120);\n return {\n status: 'healthy',\n uptimeSec: 3600,\n registry: {\n total: 6,\n withRest: 4,\n withStudio: 3,\n errors: 0,\n partial: false,\n stale: false,\n },\n components: [\n { id: '@kb-labs/quality', version: '0.1.0', restRoutes: 11, studioWidgets: 1 },\n { id: '@kb-labs/workflow', version: '0.1.0', restRoutes: 6, studioWidgets: 1 },\n { id: '@kb-labs/marketplace', version: '0.1.0', restRoutes: 5, studioWidgets: 1 },\n { id: '@kb-labs/mind', version: '0.1.0', restRoutes: 3, studioWidgets: 0 },\n { id: '@kb-labs/commit', version: '0.1.0', restRoutes: 0, studioWidgets: 0 },\n { id: '@kb-labs/release', version: '0.1.0', restRoutes: 4, studioWidgets: 0 },\n ],\n };\n }\n\n async getRoutes(): Promise<RoutesResponse> {\n await delay(100);\n return {\n schema: 'kb.routes/1',\n ts: new Date().toISOString(),\n count: 5,\n routes: [\n { method: 'GET', url: '/api/v1/health' },\n { method: 'GET', url: '/api/v1/ready' },\n { method: 'GET', url: '/api/v1/plugins' },\n { method: 'GET', url: '/api/v1/plugins/:id' },\n { method: 'POST', url: '/api/v1/workflows/run' },\n ],\n };\n }\n\n getBaseUrl(): string {\n return 'http://localhost:5050/api/v1';\n }\n}\n","import { ulid } from 'ulid';\nimport type {\n WorkflowDataSource,\n WorkflowRunsFilters,\n WorkflowRunParams,\n DashboardStatsResponse,\n WorkflowListResponse,\n WorkflowInfo,\n JobListFilter,\n JobListResponse,\n JobStatusInfo,\n JobStepsResponse,\n JobLogsResponse,\n CronListResponse,\n WorkflowRunHistoryResponse,\n} from '../sources/workflow-source';\nimport type { WorkflowRun } from '../contracts/workflows';\n\nfunction createMockRun(overrides: Partial<WorkflowRun> = {}): WorkflowRun {\n const now = new Date().toISOString();\n return {\n id: ulid(),\n name: 'demo-workflow',\n version: '1.0.0',\n status: 'success',\n createdAt: now,\n queuedAt: now,\n startedAt: now,\n finishedAt: now,\n trigger: {\n type: 'manual',\n actor: 'mock-user',\n payload: {},\n },\n jobs: [],\n artifacts: [],\n metadata: {},\n ...overrides,\n };\n}\n\nexport class MockWorkflowSource implements WorkflowDataSource {\n private runs: WorkflowRun[] = [createMockRun()];\n\n async listRuns(_filters?: WorkflowRunsFilters) {\n return {\n runs: this.runs,\n total: this.runs.length,\n };\n }\n\n async getRun(runId: string): Promise<WorkflowRun | null> {\n return this.runs.find(run => run.id === runId) ?? null;\n }\n\n async cancelRun(runId: string): Promise<WorkflowRun> {\n const run = await this.getRun(runId);\n if (!run) {\n throw new Error(`Run ${runId} not found`);\n }\n const updated = {\n ...run,\n status: 'cancelled' as WorkflowRun['status'],\n finishedAt: new Date().toISOString(),\n };\n this.runs = this.runs.map(existing => (existing.id === runId ? updated : existing));\n return updated;\n }\n\n async runWorkflow(params: WorkflowRunParams): Promise<WorkflowRun> {\n const run = createMockRun({\n id: ulid(),\n name: params.spec.name,\n version: params.spec.version,\n status: 'queued',\n metadata: params.metadata ?? {},\n });\n this.runs = [run, ...this.runs];\n return run;\n }\n\n async listEvents() {\n return {\n events: [],\n cursor: null,\n };\n }\n\n // 🆕 NEW mock methods for UI\n\n async getStats(): Promise<DashboardStatsResponse> {\n return {\n workflows: {\n total: 5,\n active: 3,\n inactive: 2,\n },\n jobs: {\n running: 2,\n pending: 1,\n completed: 15,\n failed: 3,\n },\n crons: {\n total: 4,\n enabled: 3,\n disabled: 1,\n },\n activeExecutions: [\n {\n id: 'job-1',\n type: 'workflow:demo',\n workflowName: 'Demo Workflow',\n status: 'running',\n progress: 45,\n progressMessage: 'Processing step 2 of 4',\n startedAt: new Date(Date.now() - 30000).toISOString(),\n durationMs: 30000,\n },\n {\n id: 'job-2',\n type: 'workflow:build',\n workflowName: 'Build Pipeline',\n status: 'running',\n progress: 75,\n progressMessage: 'Running tests',\n startedAt: new Date(Date.now() - 120000).toISOString(),\n durationMs: 120000,\n },\n ],\n recentActivity: [\n {\n id: 'job-3',\n type: 'workflow:deploy',\n workflowName: 'Deploy to Production',\n status: 'completed',\n finishedAt: new Date(Date.now() - 300000).toISOString(),\n durationMs: 180000,\n },\n {\n id: 'job-4',\n type: 'workflow:test',\n workflowName: 'Integration Tests',\n status: 'failed',\n finishedAt: new Date(Date.now() - 600000).toISOString(),\n durationMs: 45000,\n error: 'Test suite failed: 3 of 15 tests failed',\n },\n ],\n };\n }\n\n async listWorkflows(_filters?: { limit?: number }): Promise<WorkflowListResponse> {\n return {\n workflows: [\n {\n id: 'demo-workflow',\n name: 'Demo Workflow',\n description: 'Example workflow for testing',\n source: 'manifest',\n pluginId: 'demo-plugin',\n status: 'active',\n tags: ['demo', 'test'],\n },\n {\n id: 'build-pipeline',\n name: 'Build Pipeline',\n description: 'CI/CD build workflow',\n source: 'standalone',\n status: 'active',\n tags: ['ci', 'build'],\n },\n {\n id: 'deploy-prod',\n name: 'Deploy to Production',\n description: 'Production deployment workflow',\n source: 'manifest',\n pluginId: 'deploy-plugin',\n status: 'active',\n tags: ['deploy', 'production'],\n },\n ],\n };\n }\n\n async getWorkflow(workflowId: string): Promise<WorkflowInfo | null> {\n const workflows = await this.listWorkflows();\n return workflows.workflows.find((w) => w.id === workflowId) ?? null;\n }\n\n async runWorkflowById(\n workflowId: string,\n _input?: Record<string, unknown>,\n ): Promise<{ runId: string; status: string }> {\n const runId = ulid();\n console.log(`[MockWorkflowSource] Running workflow ${workflowId}, run ID: ${runId}`);\n return {\n runId,\n status: 'pending',\n };\n }\n\n async listJobs(filters?: JobListFilter): Promise<JobListResponse> {\n const mockJobs: JobStatusInfo[] = [\n {\n id: 'job-1',\n type: 'workflow:demo',\n status: 'running',\n priority: 5,\n createdAt: new Date(Date.now() - 60000).toISOString(),\n startedAt: new Date(Date.now() - 30000).toISOString(),\n attempt: 1,\n maxRetries: 3,\n progress: 45,\n progressMessage: 'Processing step 2 of 4',\n },\n {\n id: 'job-2',\n type: 'workflow:build',\n status: 'completed',\n priority: 8,\n createdAt: new Date(Date.now() - 300000).toISOString(),\n startedAt: new Date(Date.now() - 280000).toISOString(),\n finishedAt: new Date(Date.now() - 120000).toISOString(),\n attempt: 1,\n maxRetries: 3,\n result: { success: true },\n },\n {\n id: 'job-3',\n type: 'workflow:test',\n status: 'failed',\n priority: 5,\n createdAt: new Date(Date.now() - 600000).toISOString(),\n startedAt: new Date(Date.now() - 580000).toISOString(),\n finishedAt: new Date(Date.now() - 535000).toISOString(),\n attempt: 3,\n maxRetries: 3,\n error: 'Test suite failed: 3 of 15 tests failed',\n },\n ];\n\n let filtered = mockJobs;\n if (filters?.status) {\n filtered = filtered.filter((j) => j.status === filters.status);\n }\n if (filters?.type) {\n filtered = filtered.filter((j) => j.type.includes(filters.type!));\n }\n\n return { jobs: filtered };\n }\n\n async getJob(jobId: string): Promise<JobStatusInfo | null> {\n const jobs = await this.listJobs();\n return jobs.jobs.find((j) => j.id === jobId) ?? null;\n }\n\n async getJobSteps(jobId: string): Promise<JobStepsResponse> {\n return {\n jobId,\n workflowName: 'Demo Workflow',\n status: 'running',\n steps: [\n {\n name: 'checkout',\n handler: 'git-checkout',\n status: 'completed',\n startedAt: new Date(Date.now() - 120000).toISOString(),\n finishedAt: new Date(Date.now() - 110000).toISOString(),\n durationMs: 10000,\n },\n {\n name: 'build',\n handler: 'npm-build',\n status: 'running',\n progress: 65,\n startedAt: new Date(Date.now() - 110000).toISOString(),\n },\n {\n name: 'test',\n handler: 'npm-test',\n status: 'pending',\n },\n {\n name: 'deploy',\n handler: 'k8s-deploy',\n status: 'pending',\n },\n ],\n currentStep: 1,\n };\n }\n\n async getJobLogs(\n jobId: string,\n _filters?: { limit?: number; offset?: number; level?: string },\n ): Promise<JobLogsResponse> {\n return {\n jobId,\n logs: [\n {\n timestamp: new Date(Date.now() - 120000).toISOString(),\n level: 'info',\n message: 'Starting workflow execution',\n context: { step: 'init' },\n },\n {\n timestamp: new Date(Date.now() - 115000).toISOString(),\n level: 'info',\n message: 'Checking out code from repository',\n context: { step: 'checkout' },\n },\n {\n timestamp: new Date(Date.now() - 110000).toISOString(),\n level: 'info',\n message: 'Checkout completed successfully',\n context: { step: 'checkout', duration: 10000 },\n },\n {\n timestamp: new Date(Date.now() - 105000).toISOString(),\n level: 'info',\n message: 'Installing dependencies',\n context: { step: 'build' },\n },\n {\n timestamp: new Date(Date.now() - 85000).toISOString(),\n level: 'info',\n message: 'Running build scripts',\n context: { step: 'build' },\n },\n {\n timestamp: new Date(Date.now() - 60000).toISOString(),\n level: 'warn',\n message: 'Build warning: Unused variable \"foo\" in module \"bar\"',\n context: { step: 'build' },\n },\n ],\n total: 6,\n hasMore: false,\n };\n }\n\n async listCronJobs(): Promise<CronListResponse> {\n return {\n crons: [\n {\n id: 'daily-backup',\n schedule: '0 2 * * *',\n jobType: 'backup:database',\n timezone: 'UTC',\n enabled: true,\n lastRun: new Date(Date.now() - 86400000).toISOString(),\n nextRun: new Date(Date.now() + 86400000).toISOString(),\n pluginId: 'backup-plugin',\n },\n {\n id: 'hourly-sync',\n schedule: '0 * * * *',\n jobType: 'sync:data',\n timezone: 'UTC',\n enabled: true,\n lastRun: new Date(Date.now() - 3600000).toISOString(),\n nextRun: new Date(Date.now() + 600000).toISOString(),\n pluginId: 'sync-plugin',\n },\n {\n id: 'weekly-report',\n schedule: '0 9 * * 1',\n jobType: 'report:generate',\n timezone: 'America/New_York',\n enabled: false,\n pluginId: 'report-plugin',\n },\n ],\n };\n }\n\n async cancelWorkflowRun(runId: string): Promise<{ cancelled: boolean; runId: string }> {\n return { cancelled: true, runId };\n }\n\n async getWorkflowRuns(\n workflowId: string,\n _filters?: { limit?: number; offset?: number; status?: string },\n ): Promise<WorkflowRunHistoryResponse> {\n return {\n workflowId,\n runs: [\n {\n id: 'run-1',\n workflowId,\n status: 'completed',\n trigger: { type: 'manual', user: 'admin' },\n startedAt: new Date(Date.now() - 3600000).toISOString(),\n finishedAt: new Date(Date.now() - 3420000).toISOString(),\n durationMs: 180000,\n },\n {\n id: 'run-2',\n workflowId,\n status: 'failed',\n trigger: { type: 'cron' },\n startedAt: new Date(Date.now() - 7200000).toISOString(),\n finishedAt: new Date(Date.now() - 7155000).toISOString(),\n durationMs: 45000,\n error: 'Step \"deploy\" failed: connection timeout',\n },\n {\n id: 'run-3',\n workflowId,\n status: 'completed',\n trigger: { type: 'api', user: 'ci-system' },\n startedAt: new Date(Date.now() - 86400000).toISOString(),\n finishedAt: new Date(Date.now() - 86220000).toISOString(),\n durationMs: 180000,\n },\n ],\n total: 3,\n };\n }\n}\n\n\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-cache-source\n * Mock implementation of CacheDataSource\n */\n\nimport type { CacheDataSource, CacheInvalidationResult } from '../sources/cache-source';\n\n/**\n * Mock implementation of CacheDataSource\n */\nexport class MockCacheSource implements CacheDataSource {\n async invalidateCache(): Promise<CacheInvalidationResult> {\n // Simulate cache invalidation\n return {\n invalidated: true,\n timestamp: new Date().toISOString(),\n previousRev: 1,\n newRev: 2,\n pluginsDiscovered: 4,\n };\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-observability-source\n * Mock implementation of ObservabilityDataSource\n */\n\nimport type { ObservabilityDataSource } from '../sources/observability-source';\nimport type {\n StateBrokerStats,\n DevKitHealth,\n PrometheusMetrics,\n SystemEvent,\n LogRecord,\n LogQuery,\n LogQueryResponse,\n LogSummarizeRequest,\n LogSummarizeResponse,\n HistoricalDataPoint,\n HeatmapCell,\n MetricsHistoryQuery,\n MetricsHeatmapQuery,\n Incident,\n IncidentQuery,\n IncidentCreatePayload,\n IncidentsListResponse,\n IncidentDetailResponse,\n IncidentAnalysisResponse,\n} from '../contracts/observability';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), ms);\n });\n}\n\n/**\n * Mock implementation of ObservabilityDataSource\n *\n * Returns deterministic mock data for development and testing\n */\nexport class MockObservabilitySource implements ObservabilityDataSource {\n async getStateBrokerStats(): Promise<StateBrokerStats> {\n await delay(150);\n\n return {\n uptime: 3_600_000, // 1 hour\n totalEntries: 42,\n totalSize: 10_240, // 10KB\n hitRate: 0.85,\n missRate: 0.15,\n evictions: 5,\n namespaces: {\n mind: {\n entries: 20,\n hits: 100,\n misses: 10,\n size: 5_120,\n },\n workflow: {\n entries: 15,\n hits: 80,\n misses: 5,\n size: 3_072,\n },\n plugin: {\n entries: 7,\n hits: 30,\n misses: 2,\n size: 2_048,\n },\n },\n };\n }\n\n async getDevKitHealth(): Promise<DevKitHealth> {\n await delay(200);\n\n return {\n healthScore: 68,\n grade: 'D',\n issues: {\n duplicateDeps: 30,\n missingReadmes: 12,\n typeErrors: 3012,\n brokenImports: 5,\n unusedExports: 120,\n },\n packages: 91,\n avgTypeCoverage: 91.1,\n };\n }\n\n async getPrometheusMetrics(): Promise<PrometheusMetrics> {\n await delay(180);\n\n const now = Date.now();\n const startTime = now - 7_200_000; // 2 hours ago\n\n return {\n requests: {\n total: 1542,\n success: 1489,\n clientErrors: 38,\n serverErrors: 15,\n },\n latency: {\n average: 47.3,\n min: 3.2,\n max: 892.5,\n p50: 38.1,\n p95: 125.7,\n p99: 287.4,\n },\n perPlugin: [\n {\n pluginId: 'workflow',\n requests: 523,\n errors: 12,\n latency: {\n average: 52.1,\n min: 5.3,\n max: 345.2,\n },\n },\n {\n pluginId: 'mind',\n requests: 387,\n errors: 8,\n latency: {\n average: 68.5,\n min: 12.1,\n max: 892.5,\n },\n },\n {\n pluginId: 'commit',\n requests: 142,\n errors: 3,\n latency: {\n average: 35.2,\n min: 8.7,\n max: 156.3,\n },\n },\n ],\n perTenant: [\n {\n tenantId: 'default',\n requests: 1542,\n errors: 53,\n latency: {\n average: 47.3,\n },\n },\n ],\n errors: {\n byStatusCode: {\n 400: 12,\n 404: 18,\n 422: 8,\n 500: 10,\n 503: 5,\n },\n recent: [\n {\n timestamp: now - 120_000,\n statusCode: 500,\n errorCode: 'INTERNAL_ERROR',\n message: 'Database connection timeout',\n },\n {\n timestamp: now - 300_000,\n statusCode: 404,\n message: 'Resource not found',\n },\n {\n timestamp: now - 450_000,\n statusCode: 422,\n errorCode: 'VALIDATION_ERROR',\n message: 'Invalid request payload',\n },\n ],\n },\n timestamps: {\n startTime,\n lastRequest: now - 2_500,\n },\n redis: {\n updates: 342,\n healthyTransitions: 2,\n unhealthyTransitions: 1,\n lastStatus: {\n healthy: true,\n state: 'ready',\n role: 'master',\n },\n },\n pluginMounts: {\n total: 8,\n succeeded: 7,\n failed: 1,\n elapsedMs: 1247,\n },\n uptime: {\n seconds: 7200,\n startTime: new Date(startTime).toISOString(),\n lastRequest: new Date(now - 2_500).toISOString(),\n },\n };\n }\n\n async queryLogs(filters: LogQuery): Promise<LogQueryResponse> {\n await delay(200);\n\n const now = Date.now();\n const oldest = new Date(now - 3_600_000).toISOString(); // 1 hour ago\n const newest = new Date(now).toISOString();\n\n // Generate mock log records\n const mockLogs: LogRecord[] = Array.from({ length: filters.limit || 20 }, (_, i) => ({\n time: new Date(now - i * 60_000).toISOString(),\n level: ['info', 'warn', 'error'][i % 3] as 'info' | 'warn' | 'error',\n msg: `Mock log entry ${i + 1}`,\n plugin: filters.plugin || ['rest-api', 'workflow', 'mind'][i % 3],\n executionId: filters.executionId || `exec-${i}`,\n tenantId: filters.tenantId || 'default',\n meta: { mockData: true, index: i },\n }));\n\n return {\n ok: true,\n data: {\n logs: mockLogs,\n total: 42,\n filters,\n bufferStats: {\n size: mockLogs.length,\n maxSize: 1000,\n oldest,\n newest,\n },\n },\n };\n }\n\n subscribeToSystemEvents(\n onEvent: (event: SystemEvent) => void,\n _onError: (error: Error) => void\n ): () => void {\n // Simulate periodic events in mock mode\n const interval = setInterval(() => {\n const now = Date.now();\n\n // Alternate between health and registry events\n if (Math.random() > 0.5) {\n onEvent({\n type: 'health',\n status: 'healthy',\n ts: new Date(now).toISOString(),\n ready: true,\n reason: null,\n registryPartial: false,\n registryStale: false,\n registryLoaded: true,\n pluginMountInProgress: false,\n pluginRoutesMounted: true,\n pluginsMounted: 7,\n pluginsFailed: 1,\n lastPluginMountTs: new Date(now - 60000).toISOString(),\n pluginRoutesLastDurationMs: 1247,\n redisEnabled: true,\n redisHealthy: true,\n });\n } else {\n onEvent({\n type: 'registry',\n rev: Math.random().toString(36).substring(7),\n generatedAt: new Date(now).toISOString(),\n partial: false,\n stale: false,\n expiresAt: new Date(now + 300000).toISOString(),\n ttlMs: 300000,\n checksum: Math.random().toString(36).substring(2, 15),\n checksumAlgorithm: 'sha256',\n previousChecksum: null,\n });\n }\n }, 3000); // Event every 3 seconds\n\n // Return cleanup function\n return () => {\n clearInterval(interval);\n };\n }\n\n subscribeToLogs(\n onLog: (log: LogRecord) => void,\n _onError: (error: Error) => void,\n filters?: LogQuery\n ): () => void {\n // Simulate periodic log events in mock mode\n let counter = 0;\n const interval = setInterval(() => {\n const now = Date.now();\n onLog({\n time: new Date(now).toISOString(),\n level: ['info', 'warn', 'error'][counter % 3] as 'info' | 'warn' | 'error',\n msg: `Mock live log ${counter + 1}`,\n plugin: filters?.plugin || ['rest-api', 'workflow', 'mind'][counter % 3],\n executionId: filters?.executionId || `exec-${counter}`,\n tenantId: filters?.tenantId || 'default',\n meta: { mockData: true, counter },\n });\n counter++;\n }, 2000); // Log every 2 seconds\n\n // Return cleanup function\n return () => {\n clearInterval(interval);\n };\n }\n\n async getLog(_id: string, includeRelated?: boolean): Promise<{ log: LogRecord; related?: LogRecord[] }> {\n await delay(200);\n\n const now = Date.now();\n const mockLog: LogRecord = {\n id: _id,\n time: new Date(now - 120_000).toISOString(), // 2 minutes ago\n level: 'error',\n msg: `Mock log entry with id ${_id}`,\n plugin: 'rest-api',\n executionId: `exec-${_id}`,\n tenantId: 'default',\n requestId: `req-${_id}`,\n traceId: `trace-${_id}`,\n err: {\n name: 'MockError',\n message: 'This is a mock error for demonstration',\n stack: `MockError: This is a mock error for demonstration\\n at mockFunction (mock.ts:42)\\n at handler (handler.ts:89)\\n at process (process.ts:123)`,\n },\n meta: { mockData: true },\n };\n\n let related: LogRecord[] | undefined;\n if (includeRelated) {\n // Generate mock related logs\n related = Array.from({ length: 3 }, (_, i) => ({\n id: `${_id}-related-${i}`,\n time: new Date(now - (120_000 + i * 1000)).toISOString(),\n level: ['info', 'debug', 'error'][i % 3] as 'info' | 'debug' | 'error',\n msg: `Mock related log ${i + 1}`,\n plugin: 'rest-api',\n executionId: mockLog.executionId,\n requestId: mockLog.requestId,\n traceId: mockLog.traceId,\n meta: { mockData: true, relatedIndex: i },\n }));\n }\n\n return { log: mockLog, related };\n }\n\n async getRelatedLogs(_id: string): Promise<{ total: number; logs: LogRecord[]; correlationKeys: any }> {\n await delay(150);\n\n const now = Date.now();\n const mockLogs: LogRecord[] = Array.from({ length: 5 }, (_, i) => ({\n id: `${_id}-related-${i}`,\n time: new Date(now - (120_000 + i * 1000)).toISOString(),\n level: ['info', 'debug', 'warn', 'error'][i % 4] as 'info' | 'debug' | 'warn' | 'error',\n msg: `Mock related log ${i + 1}`,\n plugin: 'rest-api',\n executionId: `exec-${_id}`,\n requestId: `req-${_id}`,\n traceId: `trace-${_id}`,\n meta: { mockData: true, relatedIndex: i },\n }));\n\n return {\n total: mockLogs.length,\n logs: mockLogs,\n correlationKeys: {\n requestId: `req-${_id}`,\n traceId: `trace-${_id}`,\n executionId: `exec-${_id}`,\n },\n };\n }\n\n async summarizeLogs(request: LogSummarizeRequest): Promise<LogSummarizeResponse> {\n await delay(1500); // Simulate LLM processing time\n\n return {\n ok: true,\n data: {\n summary: {\n question: request.question,\n timeRange: {\n from: request.timeRange?.from || null,\n to: request.timeRange?.to || null,\n },\n total: 42,\n stats: {\n total: 42,\n byLevel: {\n error: 3,\n warn: 5,\n info: 34,\n },\n byPlugin: {\n 'rest-api': 20,\n 'workflow': 15,\n 'mind': 7,\n },\n topErrors: [\n { message: 'Connection timeout', count: 2 },\n { message: 'Invalid parameter', count: 1 },\n ],\n timeRange: {\n from: request.timeRange?.from || null,\n to: request.timeRange?.to || null,\n },\n },\n groups: null,\n },\n aiSummary: `## Mock AI Summary\n\nBased on the analysis of ${42} log entries:\n\n**Key Findings:**\n- Total of 3 errors and 5 warnings detected\n- Most active component: rest-api (20 logs)\n- Primary issue: Connection timeouts (2 occurrences)\n\n**Timeline:**\nThe system has been mostly stable with info-level logs. Two connection timeout errors were observed, likely related to external service availability.\n\n**Recommendations:**\n1. Investigate network connectivity to external services\n2. Consider implementing retry logic with exponential backoff\n3. Monitor timeout patterns over next 24 hours\n\n*Note: This is mock data from MockObservabilitySource*`,\n message: null,\n },\n };\n }\n\n async getMetricsHistory(query: MetricsHistoryQuery): Promise<HistoricalDataPoint[]> {\n await delay(100);\n\n // Generate mock time-series data\n const now = Date.now();\n const rangeMs = {\n '1m': 60 * 1000,\n '5m': 5 * 60 * 1000,\n '10m': 10 * 60 * 1000,\n '30m': 30 * 60 * 1000,\n '1h': 60 * 60 * 1000,\n }[query.range];\n\n const intervalMs = query.interval === '1m' ? 60 * 1000 : query.interval === '5m' ? 5 * 60 * 1000 : 5000;\n const points: HistoricalDataPoint[] = [];\n\n for (let t = now - rangeMs; t <= now; t += intervalMs) {\n let value = 0;\n\n switch (query.metric) {\n case 'requests':\n value = 100 + Math.floor(Math.random() * 50);\n break;\n case 'errors':\n value = Math.floor(Math.random() * 5);\n break;\n case 'latency':\n value = 30 + Math.floor(Math.random() * 20);\n break;\n case 'uptime':\n value = (now - t) / 1000;\n break;\n }\n\n points.push({ timestamp: t, value });\n }\n\n return points;\n }\n\n async getMetricsHeatmap(query: MetricsHeatmapQuery): Promise<HeatmapCell[]> {\n await delay(150);\n\n const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n const cells: HeatmapCell[] = [];\n\n for (const day of days) {\n for (let hour = 0; hour < 24; hour++) {\n cells.push({ day, hour, value: mockHeatmapValue(query.metric, hour) });\n }\n }\n\n return cells;\n }\n\n async queryIncidents(query?: IncidentQuery): Promise<Incident[]> {\n await delay(200);\n\n const mockIncidents: Incident[] = [\n {\n id: 'inc-1',\n type: 'latency_spike',\n severity: 'warning',\n title: 'Elevated API Latency',\n details: 'Average latency increased to 250ms (baseline: 50ms)',\n rootCause: [\n {\n factor: 'Database connection pool exhaustion',\n confidence: 0.85,\n evidence: 'Connection pool utilization at 100%, wait queue growing',\n },\n {\n factor: 'Increased query complexity',\n confidence: 0.6,\n evidence: 'Average query time increased 3x in the last hour',\n },\n ],\n affectedServices: ['rest-api', 'workflow-runtime'],\n timestamp: Date.now() - 2 * 60 * 60 * 1000, // 2 hours ago\n resolvedAt: Date.now() - 1 * 60 * 60 * 1000, // 1 hour ago\n resolutionNotes: 'Increased connection pool size from 10 to 20',\n metadata: { peakLatency: 350, duration: '45m' },\n },\n {\n id: 'inc-2',\n type: 'error_rate',\n severity: 'critical',\n title: 'High Error Rate in Mind Plugin',\n details: 'Error rate spiked to 15% (baseline: <1%)',\n affectedServices: ['mind-engine'],\n timestamp: Date.now() - 30 * 60 * 1000, // 30 minutes ago\n metadata: { errorCount: 47, requestCount: 310 },\n },\n {\n id: 'inc-3',\n type: 'plugin_failure',\n severity: 'warning',\n title: 'Plugin Mount Timeout',\n details: 'workflow plugin took 15s to mount (expected: <3s)',\n affectedServices: ['workflow-runtime'],\n timestamp: Date.now() - 10 * 60 * 1000, // 10 minutes ago\n resolvedAt: Date.now() - 5 * 60 * 1000, // 5 minutes ago\n resolutionNotes: 'Plugin restarted successfully',\n },\n ];\n\n // Apply filters\n let filtered = [...mockIncidents];\n\n if (query?.severity) {\n const severityList = Array.isArray(query.severity) ? query.severity : [query.severity];\n filtered = filtered.filter(inc => severityList.includes(inc.severity));\n }\n\n if (query?.type) {\n const typeList = Array.isArray(query.type) ? query.type : [query.type];\n filtered = filtered.filter(inc => typeList.includes(inc.type));\n }\n\n if (query?.from) {\n filtered = filtered.filter(inc => inc.timestamp >= query.from!);\n }\n\n if (query?.to) {\n filtered = filtered.filter(inc => inc.timestamp <= query.to!);\n }\n\n if (!query?.includeResolved) {\n filtered = filtered.filter(inc => !inc.resolvedAt);\n }\n\n if (query?.limit) {\n filtered = filtered.slice(0, query.limit);\n }\n\n return filtered;\n }\n\n async createIncident(payload: IncidentCreatePayload): Promise<Incident> {\n await delay(150);\n\n const incident: Incident = {\n id: `inc-${Date.now()}`,\n ...payload,\n timestamp: payload.timestamp || Date.now(),\n };\n\n return incident;\n }\n\n async resolveIncident(_id: string, resolutionNotes?: string): Promise<Incident> {\n await delay(150);\n\n // Mock resolving an incident\n const incident: Incident = {\n id: _id,\n type: 'error_rate',\n severity: 'critical',\n title: 'Mock Incident',\n details: 'Mock incident details',\n timestamp: Date.now() - 60 * 60 * 1000,\n resolvedAt: Date.now(),\n resolutionNotes,\n };\n\n return incident;\n }\n\n async listIncidents(query?: IncidentQuery): Promise<IncidentsListResponse> {\n await delay(150);\n\n const incidents = await this.queryIncidents(query);\n const unresolved = incidents.filter(i => !i.resolvedAt).length;\n\n return {\n ok: true,\n data: {\n incidents,\n summary: {\n total: incidents.length,\n unresolved,\n bySeverity: {\n critical: incidents.filter(i => i.severity === 'critical').length,\n warning: incidents.filter(i => i.severity === 'warning').length,\n info: incidents.filter(i => i.severity === 'info').length,\n },\n showing: incidents.length,\n },\n },\n };\n }\n\n async getIncident(_id: string): Promise<IncidentDetailResponse> {\n await delay(150);\n\n const incident: Incident = {\n id: _id,\n type: 'error_rate',\n severity: 'critical',\n title: 'High Error Rate Detected',\n details: 'Error rate exceeded threshold of 10%',\n timestamp: Date.now() - 60 * 60 * 1000,\n affectedServices: ['rest-api', 'workflow-engine'],\n metadata: {\n errorRate: 15.2,\n threshold: 10,\n },\n relatedData: {\n logs: {\n errorCount: 42,\n warnCount: 18,\n timeRange: [Date.now() - 5 * 60 * 1000, Date.now()],\n sampleErrors: [\n 'TypeError: Cannot read property \\'name\\' of undefined',\n 'Error: Failed to connect to database',\n 'Error: Timeout exceeded for operation',\n ],\n },\n metrics: {\n before: {\n errorRate: 2.1,\n avgLatency: 45,\n totalRequests: 1000,\n },\n during: {\n errorRate: 15.2,\n avgLatency: 120,\n totalRequests: 500,\n totalErrors: 76,\n },\n },\n timeline: [\n {\n timestamp: Date.now(),\n event: 'Incident detected: error_rate',\n source: 'detector',\n },\n {\n timestamp: Date.now() - 2 * 60 * 1000,\n event: 'Error: Failed to connect to database',\n source: 'logs',\n },\n {\n timestamp: Date.now() - 3 * 60 * 1000,\n event: 'Error: Timeout exceeded for operation',\n source: 'logs',\n },\n ],\n },\n };\n\n return {\n ok: true,\n data: incident,\n };\n }\n\n async analyzeIncident(_id: string): Promise<IncidentAnalysisResponse> {\n await delay(800); // Simulate LLM processing time\n\n return {\n ok: true,\n data: {\n summary: 'High error rate detected due to database connection issues and timeout problems. System experienced 15.2% error rate, significantly above the 2.1% baseline.',\n rootCauses: [\n {\n factor: 'Database connection pool exhaustion',\n confidence: 0.85,\n evidence: 'Multiple \"Failed to connect to database\" errors in logs. Error rate correlation with database connection attempts.',\n },\n {\n factor: 'Increased request timeout frequency',\n confidence: 0.72,\n evidence: 'Timeout errors increased from 0% to 8% during incident window. Latency jumped from 45ms to 120ms.',\n },\n {\n factor: 'Potential memory leak in error handler',\n confidence: 0.45,\n evidence: 'TypeError suggests undefined object access, possibly due to improper error handling initialization.',\n },\n ],\n patterns: [\n 'Error rate spike correlates with increased latency (45ms → 120ms)',\n 'Database connection errors preceded timeout errors by ~1 minute',\n 'Error rate increased 7x above baseline during incident',\n ],\n recommendations: [\n 'Increase database connection pool size and implement connection retry logic with exponential backoff',\n 'Add circuit breaker pattern to prevent cascading failures when database is unavailable',\n 'Review error handling code for undefined object access, especially in database connection error paths',\n 'Implement request timeout monitoring and alerting at 75% of threshold',\n 'Consider adding database health check endpoint to proactively detect connection issues',\n ],\n analyzedAt: Date.now(),\n cached: false,\n },\n };\n }\n\n async chatWithInsights(\n question: string,\n context?: {\n includeMetrics?: boolean;\n includeIncidents?: boolean;\n includeHistory?: boolean;\n timeRange?: '1h' | '6h' | '24h' | '7d';\n plugins?: string[];\n }\n ): Promise<{\n answer: string;\n context: string[];\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }> {\n await delay(500);\n\n // Mock AI response\n return {\n answer: `Based on the current system metrics, here's my analysis of \"${question}\": The system is performing well with average latency of 45ms and 99.2% success rate. No critical issues detected.`,\n context: [\n 'Current metrics: 1,234 requests in the last hour',\n 'Average latency: 45ms',\n 'Error rate: 0.8%',\n context?.includeIncidents ? '2 active incidents' : undefined,\n ].filter(Boolean) as string[],\n usage: {\n promptTokens: 150,\n completionTokens: 80,\n totalTokens: 230,\n },\n };\n }\n}\n\nfunction mockHeatmapValue(metric: string, hour: number): number {\n const isBusinessHour = hour >= 9 && hour <= 17;\n if (metric === 'latency') { return 30 + Math.floor(Math.random() * 40) + (isBusinessHour ? 10 : 0); }\n if (metric === 'errors') { return Math.floor(Math.random() * 10); }\n if (metric === 'requests') { return 50 + Math.floor(Math.random() * 100) + (isBusinessHour ? 50 : 0); }\n return 0;\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-analytics-source\n * Mock implementation of AnalyticsDataSource\n */\n\nimport type { AnalyticsDataSource } from '../sources/analytics-source';\nimport type {\n EventsQuery,\n EventsResponse,\n EventsStats,\n BufferStatus,\n DlqStatus,\n AnalyticsEvent,\n} from '../contracts/analytics';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise<void>((resolve) => {\n setTimeout(() => resolve(), ms);\n });\n}\n\n/**\n * Mock implementation of AnalyticsDataSource\n * Returns deterministic mock data for development and testing\n */\nexport class MockAnalyticsSource implements AnalyticsDataSource {\n private mockEvents: AnalyticsEvent[];\n\n constructor() {\n this.mockEvents = this.generateMockEvents();\n }\n\n private generateMockEvents(): AnalyticsEvent[] {\n const now = Date.now();\n const events: AnalyticsEvent[] = [];\n\n const eventTypes = [\n 'mind.query.started',\n 'mind.query.completed',\n 'workflow.run.started',\n 'workflow.run.completed',\n 'commit.generated',\n 'plugin.mounted',\n ];\n\n const sources = ['mind', 'workflow', 'commit', 'core'];\n const actors: Array<'user' | 'agent' | 'ci'> = ['user', 'agent', 'ci'];\n\n // Generate 100 mock events\n for (let i = 0; i < 100; i++) {\n const ts = new Date(now - i * 60000).toISOString(); // Events every minute\n const type = eventTypes[Math.floor(Math.random() * eventTypes.length)]!;\n const source = sources[Math.floor(Math.random() * sources.length)]!;\n const actorType = actors[Math.floor(Math.random() * actors.length)]!;\n\n events.push({\n id: `mock-event-${i}`,\n schema: 'kb.v1' as const,\n type,\n ts,\n ingestTs: ts,\n source: {\n product: source,\n version: '1.0.0',\n },\n runId: `run-${Math.floor(i / 5)}`, // Group every 5 events\n actor: {\n type: actorType,\n id: `${actorType}-${Math.floor(Math.random() * 10)}` as string,\n name: `Mock ${actorType}` as string,\n },\n ctx: {\n workspace: '/mock/workspace',\n branch: 'main',\n },\n payload: {\n duration: Math.random() * 1000,\n success: Math.random() > 0.1,\n },\n });\n }\n\n return events;\n }\n\n async getEvents(query?: EventsQuery): Promise<EventsResponse> {\n await delay(150);\n\n let filtered = [...this.mockEvents];\n\n // Apply filters\n if (query?.type) {\n const types = Array.isArray(query.type) ? query.type : [query.type];\n filtered = filtered.filter(e => types.includes(e.type));\n }\n\n if (query?.source) {\n filtered = filtered.filter(e => e.source.product === query.source);\n }\n\n if (query?.actor) {\n filtered = filtered.filter(e => e.actor?.type === query.actor);\n }\n\n // Apply limit\n const limit = query?.limit || 100;\n const offset = query?.offset || 0;\n const paginated = filtered.slice(offset, offset + limit);\n\n return {\n events: paginated,\n total: filtered.length,\n hasMore: offset + limit < filtered.length,\n };\n }\n\n async getStats(): Promise<EventsStats> {\n await delay(180);\n\n const byType: Record<string, number> = {};\n const bySource: Record<string, number> = {};\n const byActor: Record<string, number> = {};\n\n this.mockEvents.forEach(event => {\n byType[event.type] = (byType[event.type] || 0) + 1;\n bySource[event.source.product] = (bySource[event.source.product] || 0) + 1;\n if (event.actor) {\n byActor[event.actor.type] = (byActor[event.actor.type] || 0) + 1;\n }\n });\n\n const timestamps = this.mockEvents.map(e => new Date(e.ts).getTime());\n const oldestTs = Math.min(...timestamps);\n const newestTs = Math.max(...timestamps);\n\n return {\n totalEvents: this.mockEvents.length,\n byType,\n bySource,\n byActor,\n timeRange: {\n from: new Date(oldestTs).toISOString(),\n to: new Date(newestTs).toISOString(),\n },\n };\n }\n\n async getBufferStatus(): Promise<BufferStatus | null> {\n await delay(100);\n\n const timestamps = this.mockEvents.map(e => new Date(e.ts).getTime());\n\n return {\n segments: 3,\n totalSizeBytes: 524288, // 512 KB\n oldestEventTs: new Date(Math.min(...timestamps)).toISOString(),\n newestEventTs: new Date(Math.max(...timestamps)).toISOString(),\n };\n }\n\n async getDlqStatus(): Promise<DlqStatus | null> {\n await delay(100);\n\n return {\n failedEvents: 2,\n oldestFailureTs: new Date(Date.now() - 3600000).toISOString(), // 1 hour ago\n };\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-adapters-source\n * Mock implementation of AdaptersDataSource\n */\n\nimport type { AdaptersDataSource, DateRangeOptions, DailyStats } from '../sources/adapters-source';\nimport type {\n LLMUsageStats,\n EmbeddingsUsageStats,\n VectorStoreUsageStats,\n CacheUsageStats,\n StorageUsageStats,\n} from '../contracts/adapters';\n\n/**\n * Mock adapters data source for testing\n */\nexport class MockAdaptersSource implements AdaptersDataSource {\n async getLLMUsage(_options?: DateRangeOptions): Promise<LLMUsageStats> {\n return {\n totalRequests: 1247,\n totalTokens: 3_456_789,\n totalCost: 12.45,\n totalCacheReadTokens: 0,\n totalBillableTokens: 3_456_789,\n totalCacheSavingsUsd: 0,\n byModel: {\n 'gpt-4': {\n requests: 234,\n promptTokens: 45_678,\n completionTokens: 23_456,\n totalTokens: 69_134,\n cost: 4.15,\n costPer1KTokens: 0.06,\n tokensPerRequest: 295,\n errorRate: 0.5,\n avgDurationMs: 2345,\n cacheReadTokens: 0,\n billableTokens: 69_134,\n cacheSavingsUsd: 0,\n },\n 'gpt-3.5-turbo': {\n requests: 789,\n promptTokens: 234_567,\n completionTokens: 123_456,\n totalTokens: 358_023,\n cost: 0.54,\n costPer1KTokens: 0.0015,\n tokensPerRequest: 454,\n errorRate: 0,\n avgDurationMs: 876,\n cacheReadTokens: 0,\n billableTokens: 358_023,\n cacheSavingsUsd: 0,\n },\n 'claude-3-sonnet': {\n requests: 224,\n promptTokens: 567_890,\n completionTokens: 234_567,\n totalTokens: 802_457,\n cost: 7.76,\n costPer1KTokens: 0.0097,\n tokensPerRequest: 3582,\n errorRate: 1.2,\n avgDurationMs: 1567,\n cacheReadTokens: 0,\n billableTokens: 802_457,\n cacheSavingsUsd: 0,\n },\n },\n errors: 12,\n timeRange: {\n from: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n to: new Date().toISOString(),\n },\n };\n }\n\n async getEmbeddingsUsage(_options?: DateRangeOptions): Promise<EmbeddingsUsageStats> {\n return {\n totalRequests: 3456,\n totalTextLength: 1_234_567,\n totalCost: 2.47,\n errors: 8,\n avgDurationMs: 234,\n batchRequests: 456,\n singleRequests: 3000,\n avgBatchSize: 15.3,\n };\n }\n\n async getVectorStoreUsage(_options?: DateRangeOptions): Promise<VectorStoreUsageStats> {\n return {\n searchQueries: 2345,\n upsertOperations: 567,\n deleteOperations: 89,\n avgSearchDuration: 45.6,\n avgSearchScore: 0.87,\n avgResultsCount: 12.4,\n totalVectorsUpserted: 45_678,\n totalVectorsDeleted: 1234,\n };\n }\n\n async getCacheUsage(_options?: DateRangeOptions): Promise<CacheUsageStats> {\n return {\n totalGets: 15_678,\n hits: 13_456,\n misses: 2222,\n hitRate: 85.8,\n sets: 3456,\n avgGetDuration: 2.3,\n avgSetDuration: 5.7,\n };\n }\n\n async getStorageUsage(_options?: DateRangeOptions): Promise<StorageUsageStats> {\n return {\n readOperations: 8765,\n writeOperations: 2345,\n deleteOperations: 234,\n totalBytesRead: 123_456_789,\n totalBytesWritten: 45_678_901,\n avgReadDuration: 12.4,\n avgWriteDuration: 34.5,\n };\n }\n\n async getLLMDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalTokens: [10000, 60000],\n totalCost: [1, 6],\n avgDurationMs: [500, 2500],\n });\n }\n\n async getEmbeddingsDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalTokens: [5000, 30000],\n totalCost: [0.1, 0.5],\n avgDurationMs: [100, 500],\n });\n }\n\n async getVectorStoreDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalSearches: [100, 500],\n totalUpserts: [50, 200],\n totalDeletes: [10, 50],\n avgDurationMs: [30, 150],\n });\n }\n\n async getCacheDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalHits: [500, 2000],\n totalMisses: [100, 500],\n totalSets: [200, 800],\n hitRate: [70, 95],\n });\n }\n\n async getStorageDailyStats(_options?: DateRangeOptions): Promise<DailyStats[]> {\n return this.generateMockDailyStats({\n totalBytesRead: [1000000, 10000000],\n totalBytesWritten: [500000, 5000000],\n avgDurationMs: [10, 50],\n });\n }\n\n /**\n * Helper to generate mock daily stats\n */\n private generateMockDailyStats(metricsRanges: Record<string, [number, number]>): DailyStats[] {\n const days = 7;\n const stats: DailyStats[] = [];\n const now = new Date();\n\n for (let i = days - 1; i >= 0; i--) {\n const date = new Date(now);\n date.setDate(date.getDate() - i);\n const dateStr = date.toISOString().split('T')[0]!;\n\n const metrics: Record<string, number> = {};\n for (const [key, [min, max]] of Object.entries(metricsRanges)) {\n metrics[key] = Math.floor(Math.random() * (max - min)) + min;\n }\n\n stats.push({\n date: dateStr,\n count: Math.floor(Math.random() * 100) + 50, // 50-150 requests\n metrics,\n });\n }\n\n return stats;\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/mocks/mock-platform-source\n * Mock implementation of PlatformDataSource for development\n */\n\nimport type { PlatformDataSource } from '../sources/platform-source';\nimport type { PlatformConfigPayload } from '@kb-labs/rest-api-contracts';\n\n/**\n * Mock platform data source\n */\nexport class MockPlatformSource implements PlatformDataSource {\n async getConfig(): Promise<PlatformConfigPayload> {\n return {\n schema: 'kb.platform.config/1',\n ts: new Date().toISOString(),\n adapters: {\n // Multi-adapter example: array of providers for LLM\n llm: ['@kb-labs/adapters-openai', '@kb-labs/adapters-vibeproxy'],\n embeddings: '@kb-labs/adapters-openai/embeddings',\n storage: '@kb-labs/data-store',\n logger: '@kb-labs/adapters-pino',\n analytics: '@kb-labs/adapters-analytics-file',\n vectorStore: '@kb-labs/adapters-qdrant',\n cache: '@kb-labs/adapters-redis',\n },\n adapterOptions: {\n llm: {\n defaultModel: 'gpt-4o-mini',\n },\n vectorStore: {\n url: 'http://localhost:6333',\n },\n cache: {\n url: 'redis://localhost:6379',\n },\n },\n execution: {\n mode: 'in-process',\n },\n redacted: [],\n };\n }\n}\n","/**\n * Mock implementation of PluginsDataSource for testing\n */\n\nimport type { PluginsDataSource, PluginsRegistryResponse } from '../sources/plugins-source';\nimport type { ManifestV3 } from '@kb-labs/plugin-contracts';\n\nconst mockManifests: PluginsRegistryResponse = {\n manifests: [\n {\n pluginId: '@kb-labs/mind-plugin',\n source: {\n kind: 'workspace',\n path: '/workspace/kb-labs-mind/packages/mind-plugin',\n },\n pluginRoot: '/workspace/kb-labs-mind/packages/mind-plugin',\n discoveredAt: new Date(Date.now() - 3600000).toISOString(), // 1 hour ago\n buildTimestamp: new Date(Date.now() - 7200000).toISOString(), // 2 hours ago\n manifest: {\n schema: 'kb.plugin/3',\n id: '@kb-labs/mind-plugin',\n version: '0.1.0',\n display: {\n name: 'Mind RAG Plugin',\n description: 'Semantic code search and RAG system',\n author: 'KB Labs',\n icon: '🧠',\n tags: ['search', 'ai', 'rag'],\n },\n permissions: {\n fs: { mode: 'read', allow: ['.kb/**', 'src/**'] },\n net: { allowHosts: ['api.openai.com'] },\n },\n platform: {\n requires: ['vectorStore', 'embeddings', 'cache'],\n },\n cli: {\n commands: [\n {\n path: 'mind search',\n describe: 'Query the RAG index',\n handler: './dist/commands/rag-query.js',\n flags: [\n { name: 'text', type: 'string', required: true, description: 'Query text' },\n { name: 'agent', type: 'boolean', description: 'Use agent mode' },\n ],\n },\n {\n path: 'mind index',\n describe: 'Build RAG index',\n handler: './dist/commands/rag-index.js',\n flags: [\n { name: 'scope', type: 'string', default: 'default', description: 'Index scope' },\n ],\n },\n ],\n },\n rest: {\n basePath: '/v1/plugins/mind',\n routes: [\n {\n method: 'POST',\n path: '/search',\n description: 'Semantic code search',\n handler: './dist/rest/search.js',\n timeoutMs: 30000,\n input: { zod: './schemas/search-input.ts#SearchInputSchema' },\n output: { zod: './schemas/search-output.ts#SearchOutputSchema' },\n },\n ],\n },\n } as ManifestV3,\n },\n {\n pluginId: '@kb-labs/workflow-plugin',\n source: {\n kind: 'workspace',\n path: '/workspace/kb-labs-workflow/packages/workflow-plugin',\n },\n pluginRoot: '/workspace/kb-labs-workflow/packages/workflow-plugin',\n discoveredAt: new Date(Date.now() - 3600000).toISOString(), // 1 hour ago\n buildTimestamp: new Date(Date.now() - 5400000).toISOString(), // 1.5 hours ago\n manifest: {\n schema: 'kb.plugin/3',\n id: '@kb-labs/workflow-plugin',\n version: '1.0.0',\n display: {\n name: 'Workflow Engine',\n description: 'Orchestrate multi-step workflows',\n author: 'KB Labs',\n icon: '⚙️',\n tags: ['workflow', 'automation', 'orchestration'],\n },\n permissions: {\n fs: { mode: 'readwrite', allow: ['.kb/workflows/**'] },\n },\n platform: {\n requires: ['storage', 'cache'],\n },\n cli: {\n commands: [\n {\n path: 'workflow run',\n describe: 'Run a workflow',\n handler: './dist/commands/run.js',\n flags: [\n { name: 'workflow-id', type: 'string', required: true },\n { name: 'input', type: 'string' },\n ],\n },\n ],\n },\n rest: {\n basePath: '/v1/plugins/workflow',\n routes: [\n {\n method: 'POST',\n path: '/execute',\n description: 'Execute workflow',\n handler: './dist/rest/execute.js',\n input: { $ref: '#/components/schemas/WorkflowExecuteRequest' },\n output: { $ref: '#/components/schemas/WorkflowExecuteResponse' },\n },\n {\n method: 'GET',\n path: '/status/:runId',\n description: 'Get workflow status',\n handler: './dist/rest/status.js',\n output: { $ref: '#/components/schemas/WorkflowStatus' },\n },\n ],\n },\n jobs: {\n handlers: [\n {\n id: 'cleanup-old-runs',\n handler: './dist/jobs/cleanup.js',\n describe: 'Clean up old workflow runs',\n },\n ],\n cron: [\n {\n jobId: 'cleanup-old-runs',\n schedule: '0 2 * * *',\n enabled: true,\n },\n ],\n },\n } as ManifestV3,\n },\n ],\n};\n\nexport class MockPluginsSource implements PluginsDataSource {\n async getPlugins(): Promise<PluginsRegistryResponse> {\n // Simulate network delay\n await new Promise<void>((resolve) => {\n setTimeout(() => resolve(), 300);\n });\n return {\n ...mockManifests,\n apiBasePath: '/api/v1',\n };\n }\n\n async askAboutPlugin(pluginId: string, request: { question: string }) {\n // Simulate network delay\n await new Promise<void>((resolve) => {\n setTimeout(() => resolve(), 1000);\n });\n\n // Mock AI responses based on question keywords\n const question = request.question.toLowerCase();\n let answer = '';\n\n if (question.includes('permission') || question.includes('access')) {\n answer = `This plugin requires the following permissions:\\n\\n` +\n `- File System: Read-only access to .kb/** and src/** directories\\n` +\n `- Network: Access to api.openai.com for AI operations\\n\\n` +\n `These permissions are necessary for RAG indexing and semantic search functionality.`;\n } else if (question.includes('command') || question.includes('cli')) {\n answer = `The plugin provides 2 CLI commands:\\n\\n` +\n `1. **mind search** - Query the RAG index\\n` +\n ` - Required: --text (query text)\\n` +\n ` - Optional: --agent (use agent mode)\\n\\n` +\n `2. **mind index** - Build RAG index\\n` +\n ` - Optional: --scope (default: 'default')\\n\\n` +\n `Use these commands to perform semantic code search across your codebase.`;\n } else if (question.includes('rest') || question.includes('api') || question.includes('endpoint')) {\n answer = `The plugin exposes 1 REST API endpoint:\\n\\n` +\n `**POST /v1/plugins/mind/search** - Semantic code search\\n` +\n `- Timeout: 30 seconds\\n` +\n `- Input: SearchInputSchema (query text and options)\\n` +\n `- Output: SearchOutputSchema (search results with relevance scores)\\n\\n` +\n `This endpoint allows integration with external tools and web interfaces.`;\n } else {\n answer = `This is the Mind RAG Plugin (v0.1.0) - a semantic code search and RAG system.\\n\\n` +\n `Key features:\\n` +\n `- 2 CLI commands (mind search, mind index)\\n` +\n `- 1 REST API endpoint (/search)\\n` +\n `- AI-powered semantic search\\n` +\n `- Read-only file system access\\n` +\n `- OpenAI API integration\\n\\n` +\n `The plugin helps developers find relevant code using natural language queries.`;\n }\n\n return {\n answer,\n usage: {\n promptTokens: 150,\n completionTokens: 100,\n },\n };\n }\n\n async getPluginReadme(_pluginId: string): Promise<string | null> {\n await new Promise<void>((resolve) => { setTimeout(() => resolve(), 200); });\n return '# Plugin README\\n\\nThis is a mock README for development purposes.';\n }\n\n async getPluginChangelog(_pluginId: string): Promise<string | null> {\n await new Promise<void>((resolve) => { setTimeout(() => resolve(), 200); });\n return null;\n }\n}\n","import type { SystemDataSource } from './sources/system-source';\nimport type { WorkflowDataSource } from './sources/workflow-source';\nimport type { CacheDataSource } from './sources/cache-source';\nimport type { ObservabilityDataSource } from './sources/observability-source';\nimport type { AnalyticsDataSource } from './sources/analytics-source';\nimport type { AdaptersDataSource } from './sources/adapters-source';\nimport type { PlatformDataSource } from './sources/platform-source';\nimport type { PluginsDataSource } from './sources/plugins-source';\nimport { MockSystemSource } from './mocks/mock-system-source';\nimport { MockWorkflowSource } from './mocks/mock-workflow-source';\nimport { MockCacheSource } from './mocks/mock-cache-source';\nimport { MockObservabilitySource } from './mocks/mock-observability-source';\nimport { MockAnalyticsSource } from './mocks/mock-analytics-source';\nimport { MockAdaptersSource } from './mocks/mock-adapters-source';\nimport { MockPlatformSource } from './mocks/mock-platform-source';\nimport { MockPluginsSource } from './mocks/mock-plugins-source';\nimport { HttpSystemSource } from './sources/http-system-source';\nimport { HttpWorkflowSource } from './sources/http-workflow-source';\nimport { HttpCacheSource } from './sources/http-cache-source';\nimport { HttpObservabilitySource } from './sources/http-observability-source';\nimport { HttpAnalyticsSource } from './sources/http-analytics-source';\nimport { HttpAdaptersSource } from './sources/http-adapters-source';\nimport { HttpPlatformSource } from './sources/http-platform-source';\nimport { HttpPluginsSource } from './sources/http-plugins-source';\nimport { HttpClient } from './client/http-client';\n\nexport interface DataSourcesConfig {\n mode: 'mock' | 'http';\n baseUrl?: string;\n /** Bearer token forwarded to Gateway on every request */\n token?: string;\n}\n\nexport interface DataSources {\n system: SystemDataSource;\n workflow: WorkflowDataSource;\n cache: CacheDataSource;\n observability: ObservabilityDataSource;\n analytics: AnalyticsDataSource;\n adapters: AdaptersDataSource;\n platform: PlatformDataSource;\n plugins: PluginsDataSource;\n}\n\nexport function createDataSources(config: DataSourcesConfig): DataSources {\n if (config.mode === 'mock') {\n return {\n system: new MockSystemSource(),\n workflow: new MockWorkflowSource(),\n cache: new MockCacheSource(),\n observability: new MockObservabilitySource(),\n analytics: new MockAnalyticsSource(),\n adapters: new MockAdaptersSource(),\n platform: new MockPlatformSource(),\n plugins: new MockPluginsSource(),\n };\n }\n\n const baseUrl = config.baseUrl || '';\n const client = new HttpClient(baseUrl, config.token);\n\n return {\n system: new HttpSystemSource(client),\n workflow: new HttpWorkflowSource(client),\n cache: new HttpCacheSource(client),\n observability: new HttpObservabilitySource(client),\n analytics: new HttpAnalyticsSource(client),\n adapters: new HttpAdaptersSource(client),\n platform: new HttpPlatformSource(client),\n plugins: new HttpPluginsSource(client),\n };\n}\n","/**\n * @module @kb-labs/studio-data-client/query-keys\n * Query keys factory for TanStack Query\n */\n\nimport type { WorkflowRunsFilters } from './sources/workflow-source';\n\n/**\n * Standardized query keys factory\n */\nexport const qk = {\n // Audit queries\n audit: {\n all: ['audit'] as const,\n summary: () => [...qk.audit.all, 'summary'] as const,\n runs: {\n all: () => [...qk.audit.all, 'runs'] as const,\n list: (params?: { cursor?: string; limit?: number; status?: string }) => \n [...qk.audit.runs.all(), 'list', params] as const,\n byId: (runId: string) => [...qk.audit.runs.all(), 'detail', runId] as const,\n },\n report: {\n latest: () => [...qk.audit.all, 'report', 'latest'] as const,\n byRunId: (runId: string) => [...qk.audit.all, 'report', runId] as const,\n },\n pkg: (name: string) => [...qk.audit.all, 'pkg', name] as const,\n },\n \n // Release queries\n release: {\n all: ['release'] as const,\n preview: (params?: { from?: string; to?: string }) => \n [...qk.release.all, 'preview', params] as const,\n runs: {\n all: () => [...qk.release.all, 'runs'] as const,\n byId: (runId: string) => [...qk.release.runs.all(), 'detail', runId] as const,\n },\n changelog: (params?: { format?: string }) => \n [...qk.release.all, 'changelog', params] as const,\n },\n \n // Jobs queries\n jobs: {\n all: ['jobs'] as const,\n byId: (jobId: string) => [...qk.jobs.all, 'detail', jobId] as const,\n logs: {\n byJobId: (jobId: string, offset?: number) => \n [...qk.jobs.all, 'logs', jobId, offset] as const,\n stream: (jobId: string) => [...qk.jobs.all, 'logs', 'stream', jobId] as const,\n },\n events: (jobId: string) => [...qk.jobs.all, 'events', jobId] as const,\n list: (params?: { cursor?: string; limit?: number; status?: string; kind?: string }) => \n [...qk.jobs.all, 'list', params] as const,\n },\n \n // System queries\n system: {\n all: ['system'] as const,\n health: {\n live: () => [...qk.system.all, 'health', 'live'] as const,\n ready: () => [...qk.system.all, 'health', 'ready'] as const,\n },\n platformHealth: () => [...qk.system.all, 'platform-health'] as const,\n info: () => [...qk.system.all, 'info'] as const,\n capabilities: () => [...qk.system.all, 'capabilities'] as const,\n config: () => [...qk.system.all, 'config'] as const,\n },\n\n // Plugins queries\n plugins: {\n all: ['plugins'] as const,\n registry: () => [...qk.plugins.all, 'registry'] as const,\n },\n workflows: {\n all: ['workflows'] as const,\n list: (filters?: WorkflowRunsFilters) => [...qk.workflows.all, 'list', filters ?? {}] as const,\n run: (runId: string) => [...qk.workflows.all, 'run', runId] as const,\n },\n \n // DevLink queries\n devlink: {\n all: ['devlink'] as const,\n summary: () => [...qk.devlink.all, 'summary'] as const,\n graph: () => [...qk.devlink.all, 'graph'] as const,\n },\n \n // Mind queries\n mind: {\n all: ['mind'] as const,\n summary: () => [...qk.mind.all, 'summary'] as const,\n },\n \n // Analytics queries\n analytics: {\n all: ['analytics'] as const,\n summary: (params?: { start?: string; end?: string }) =>\n [...qk.analytics.all, 'summary', params] as const,\n },\n\n // Platform queries\n platform: {\n all: ['platform'] as const,\n config: () => [...qk.platform.all, 'config'] as const,\n },\n} as const;\n\n// Backward compatibility\nexport const queryKeys = qk;\n\n","import { useQuery } from '@tanstack/react-query';\nimport type { SystemDataSource } from '../sources/system-source';\nimport { qk } from '../query-keys';\n\nexport function usePlatformHealth(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.platformHealth(),\n queryFn: () => source.getPlatformHealth?.() ?? Promise.resolve(null),\n refetchInterval: 30_000,\n staleTime: 15_000,\n });\n}\n\nexport function useHealthStatus(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.health.live(),\n queryFn: async () => {\n try {\n return source.getHealth();\n } catch (error) {\n // If HTTP source fails, return degraded status\n return {\n ok: false,\n timestamp: new Date().toISOString(),\n sources: [{\n name: 'system',\n ok: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }],\n };\n }\n },\n refetchInterval: 30000, // Poll every 30 seconds\n staleTime: 15000,\n retry: 2,\n retryDelay: 1000,\n });\n}\n\nexport function useReadyStatus(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.health.ready(),\n queryFn: async () => {\n if (source.getReady) {\n return source.getReady();\n }\n // Fallback for mock sources\n return {\n ready: true as const,\n };\n },\n refetchInterval: 30000,\n staleTime: 15000,\n retry: 2,\n retryDelay: 1000,\n });\n}\n\nexport function useSystemInfo(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.info(),\n queryFn: async () => {\n if (source.getInfo) {\n return source.getInfo();\n }\n // Fallback for mock sources\n return {\n cwd: process.cwd(),\n repo: undefined,\n profiles: [],\n plugins: [],\n apiVersion: '1.0.0',\n };\n },\n staleTime: 60000, // Cache for 1 minute\n });\n}\n\nexport function useCapabilities(source: SystemDataSource) {\n return useQuery({\n queryKey: qk.system.capabilities(),\n queryFn: async () => {\n if (source.getCapabilities) {\n return source.getCapabilities();\n }\n // Fallback for mock sources\n return {\n commands: ['audit', 'release', 'devlink', 'mind', 'analytics'],\n adapters: {\n queue: ['memory'],\n storage: ['fs'],\n auth: ['none'],\n },\n };\n },\n staleTime: 60000,\n });\n}\n\n","import { useQuery } from '@tanstack/react-query';\nimport type { PluginsDataSource } from '../sources/plugins-source';\nimport { qk } from '../query-keys';\n\nexport function usePluginsRegistry(source: PluginsDataSource) {\n return useQuery({\n queryKey: qk.plugins.registry(),\n queryFn: () => source.getPlugins(),\n refetchInterval: 60_000,\n staleTime: 30_000,\n });\n}\n","import { useEffect, useState, useMemo } from 'react'\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport { qk } from '../query-keys'\nimport type { WorkflowDataSource, WorkflowRunsFilters, WorkflowRunParams, ResolveApprovalParams } from '../sources/workflow-source'\nimport type { WorkflowLogEvent, WorkflowPresenterEvent } from '../contracts/workflows'\n\nexport function useWorkflowRuns(\n source: WorkflowDataSource,\n filters?: WorkflowRunsFilters,\n) {\n const queryKey = useMemo(() => qk.workflows.list(filters), [filters])\n return useQuery({\n queryKey,\n queryFn: async () => {\n return source.listRuns(filters)\n },\n })\n}\n\nexport function useWorkflowRun(runId: string | null, source: WorkflowDataSource) {\n return useQuery({\n queryKey: qk.workflows.run(runId ?? ''),\n enabled: Boolean(runId),\n queryFn: async () => {\n if (!runId) {\n return null\n }\n return source.getRun(runId)\n },\n })\n}\n\nexport function useCancelWorkflowRun(source: WorkflowDataSource) {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (runId: string) => source.cancelRun(runId),\n onSuccess: (run) => {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.all, exact: false })\n if (run?.id) {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.run(run.id) })\n }\n },\n })\n}\n\nexport function useRunWorkflow(source: WorkflowDataSource) {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (params: WorkflowRunParams) => {\n if (!source.runWorkflow) {\n throw new Error('Workflow source does not support running workflows')\n }\n return source.runWorkflow(params)\n },\n onSuccess: (run) => {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.all, exact: false })\n if (run?.id) {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.run(run.id) })\n }\n },\n })\n}\n\nexport function useResolveApproval(source: WorkflowDataSource) {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (params: ResolveApprovalParams) => {\n if (!source.resolveApproval) {\n throw new Error('Workflow source does not support approvals')\n }\n return source.resolveApproval(params)\n },\n onSuccess: (_data, variables) => {\n void queryClient.invalidateQueries({ queryKey: qk.workflows.run(variables.runId) })\n },\n })\n}\n\nexport interface UseWorkflowLogsOptions {\n follow?: boolean\n idleTimeoutMs?: number\n enabled?: boolean\n baseUrl?: string\n}\n\nexport function useWorkflowLogs(\n runId: string | null,\n options: UseWorkflowLogsOptions = {},\n) {\n const { follow = true, idleTimeoutMs, enabled = true, baseUrl = '' } = options\n const [events, setEvents] = useState<WorkflowLogEvent[]>([])\n const [error, setError] = useState<Error | null>(null)\n const [isConnected, setIsConnected] = useState(false)\n\n useEffect(() => {\n if (!runId || !enabled) {\n setIsConnected(false)\n setError(null)\n return\n }\n\n setEvents([])\n setError(null)\n\n const params = new URLSearchParams()\n if (follow) {\n params.set('follow', '1')\n }\n if (typeof idleTimeoutMs === 'number') {\n params.set('idleTimeoutMs', String(idleTimeoutMs))\n }\n\n const url = `${baseUrl}/workflows/runs/${runId}/logs${params.toString() ? `?${params}` : ''}`\n const eventSource = new EventSource(url)\n\n const handleMessage = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as WorkflowLogEvent\n setEvents((prev) => [...prev, payload])\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to parse workflow log event'))\n }\n }\n\n eventSource.addEventListener('workflow.log', handleMessage)\n eventSource.addEventListener('workflow.done', () => {\n setIsConnected(false)\n eventSource.close()\n })\n eventSource.onopen = () => {\n setIsConnected(true)\n setError(null)\n }\n eventSource.onerror = (_event) => {\n setIsConnected(false)\n setError(new Error('Workflow log stream disconnected'))\n eventSource.close()\n }\n\n return () => {\n eventSource.removeEventListener('workflow.log', handleMessage)\n eventSource.close()\n }\n }, [runId, follow, idleTimeoutMs, enabled])\n\n return {\n events,\n error,\n isConnected,\n }\n}\n\nexport interface UseWorkflowEventsOptions {\n follow?: boolean\n pollIntervalMs?: number\n cursor?: string | null\n enabled?: boolean\n baseUrl?: string\n}\n\nexport function useWorkflowEvents(\n runId: string | null,\n options: UseWorkflowEventsOptions = {},\n) {\n const { follow = true, pollIntervalMs, cursor, enabled = true, baseUrl = '' } = options\n const [events, setEvents] = useState<WorkflowPresenterEvent[]>([])\n const [error, setError] = useState<Error | null>(null)\n const [isConnected, setIsConnected] = useState(false)\n\n useEffect(() => {\n if (!runId || !enabled) {\n return\n }\n\n setEvents([])\n setError(null)\n\n const params = new URLSearchParams()\n if (follow) {\n params.set('follow', '1')\n }\n if (typeof pollIntervalMs === 'number') {\n params.set('pollIntervalMs', String(pollIntervalMs))\n }\n if (cursor) {\n params.set('cursor', cursor)\n }\n\n const url = `${baseUrl}/workflows/runs/${runId}/events${params.toString() ? `?${params}` : ''}`\n const eventSource = new EventSource(url)\n\n const handleMessage = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as WorkflowPresenterEvent\n setEvents((prev) => [...prev, payload])\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to parse workflow event'))\n }\n }\n\n eventSource.addEventListener('workflow.event', handleMessage)\n eventSource.onopen = () => {\n setIsConnected(true)\n setError(null)\n }\n eventSource.onerror = () => {\n setIsConnected(false)\n setError(new Error('Workflow event stream disconnected'))\n eventSource.close()\n }\n\n return () => {\n eventSource.removeEventListener('workflow.event', handleMessage)\n eventSource.close()\n }\n }, [runId, follow, pollIntervalMs, cursor, enabled])\n\n return {\n events,\n error,\n isConnected,\n }\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-observability\n * React Query hooks for observability data\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useState, useEffect } from 'react';\nimport type { ObservabilityDataSource } from '../sources/observability-source';\nimport type {\n SystemEvent,\n LogRecord,\n LogQuery,\n MetricsHistoryQuery,\n MetricsHeatmapQuery,\n IncidentQuery,\n} from '../contracts/observability';\n\n/**\n * Hook to fetch State Broker statistics\n *\n * Auto-refreshes every 5 seconds to show real-time cache metrics\n */\nexport function useStateBrokerStats(source: ObservabilityDataSource) {\n return useQuery({\n queryKey: ['observability', 'state-broker'],\n queryFn: () => source.getStateBrokerStats(),\n refetchInterval: 5000, // Auto-refresh every 5s for real-time updates\n staleTime: 3000, // Consider data stale after 3s\n retry: 2, // Retry failed requests twice\n });\n}\n\n/**\n * Hook to fetch DevKit health snapshot\n *\n * Caches for 1 minute as DevKit health doesn't change frequently\n */\nexport function useDevKitHealth(source: ObservabilityDataSource) {\n return useQuery({\n queryKey: ['observability', 'devkit'],\n queryFn: () => source.getDevKitHealth(),\n staleTime: 60000, // Cache for 1 minute\n gcTime: 300000, // Keep in cache for 5 minutes (React Query v5)\n retry: 1, // DevKit can be slow, only retry once\n });\n}\n\n/**\n * Hook to fetch Prometheus metrics from REST API\n *\n * Auto-refreshes every 10 seconds to show near real-time metrics\n */\nexport function usePrometheusMetrics(source: ObservabilityDataSource) {\n return useQuery({\n queryKey: ['observability', 'prometheus-metrics'],\n queryFn: () => source.getPrometheusMetrics(),\n refetchInterval: 10000, // Auto-refresh every 10s\n staleTime: 8000, // Consider data stale after 8s\n retry: 2, // Retry failed requests twice\n });\n}\n\n/**\n * Hook to connect to system events SSE stream\n *\n * Uses ObservabilityDataSource to subscribe to real-time system events\n */\nexport function useSystemEvents(source: ObservabilityDataSource) {\n const [events, setEvents] = useState<SystemEvent[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n setIsConnected(true);\n setError(null);\n\n const cleanup = source.subscribeToSystemEvents(\n (event) => {\n setEvents((prev) => [event, ...prev].slice(0, 100)); // Keep last 100 events\n },\n (err) => {\n setIsConnected(false);\n setError(err);\n }\n );\n\n return () => {\n cleanup();\n setIsConnected(false);\n };\n }, [source]);\n\n return { events, isConnected, error };\n}\n\n/**\n * Hook to connect to live log stream\n *\n * Uses ObservabilityDataSource to subscribe to real-time logs\n *\n * @param source - Observability data source\n * @param filters - Optional log filters\n */\nexport function useLogStream(source: ObservabilityDataSource, filters?: LogQuery) {\n const [logs, setLogs] = useState<LogRecord[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n setIsConnected(true);\n setError(null);\n\n const cleanup = source.subscribeToLogs(\n (log) => {\n // Add log to beginning (most recent first)\n // Keep max 500 logs in memory for performance\n setLogs((prev) => [log, ...prev].slice(0, 500));\n },\n (err) => {\n setIsConnected(false);\n setError(err);\n },\n filters\n );\n\n return () => {\n cleanup();\n setIsConnected(false);\n };\n }, [source, filters]);\n\n const clearLogs = () => setLogs([]);\n\n return { logs, isConnected, error, clearLogs };\n}\n\n/**\n * Hook to fetch historical metrics time-series data\n *\n * Auto-refreshes every 5 seconds for near real-time charts\n */\nexport function useMetricsHistory(source: ObservabilityDataSource, query: MetricsHistoryQuery) {\n return useQuery({\n queryKey: ['observability', 'metrics-history', query.metric, query.range, query.interval],\n queryFn: () => source.getMetricsHistory(query),\n refetchInterval: 5000, // Auto-refresh every 5s\n staleTime: 3000, // Consider data stale after 3s\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch metrics heatmap data\n *\n * Caches for 1 minute as heatmap data changes slowly\n */\nexport function useMetricsHeatmap(source: ObservabilityDataSource, query: MetricsHeatmapQuery) {\n return useQuery({\n queryKey: ['observability', 'metrics-heatmap', query.metric, query.days],\n queryFn: () => source.getMetricsHeatmap(query),\n staleTime: 60000, // Cache for 1 minute\n gcTime: 300000, // Keep in cache for 5 minutes\n retry: 2,\n });\n}\n\n/**\n * Hook to query incident history\n *\n * Auto-refreshes every 30 seconds to show new incidents\n */\nexport function useIncidents(source: ObservabilityDataSource, query?: IncidentQuery) {\n return useQuery({\n queryKey: ['observability', 'incidents', query],\n queryFn: () => source.queryIncidents(query),\n refetchInterval: 30000, // Auto-refresh every 30s\n staleTime: 20000, // Consider data stale after 20s\n retry: 2,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-analytics\n * React Query hooks for analytics data\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { AnalyticsDataSource } from '../sources/analytics-source';\nimport type { EventsQuery } from '../contracts/analytics';\n\n/**\n * Hook to fetch analytics events\n *\n * @param source - Analytics data source\n * @param query - Optional query filters\n */\nexport function useAnalyticsEvents(source: AnalyticsDataSource, query?: EventsQuery) {\n return useQuery({\n queryKey: ['analytics', 'events', query],\n queryFn: () => source.getEvents(query),\n refetchInterval: 30000, // Auto-refresh every 30s\n staleTime: 25000, // Consider data stale after 25s\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch analytics stats\n *\n * @param source - Analytics data source\n */\nexport function useAnalyticsStats(source: AnalyticsDataSource) {\n return useQuery({\n queryKey: ['analytics', 'stats'],\n queryFn: () => source.getStats(),\n refetchInterval: 30000, // Auto-refresh every 30s\n staleTime: 25000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch buffer status\n *\n * @param source - Analytics data source\n */\nexport function useAnalyticsBufferStatus(source: AnalyticsDataSource) {\n return useQuery({\n queryKey: ['analytics', 'buffer'],\n queryFn: () => source.getBufferStatus(),\n refetchInterval: 10000, // Auto-refresh every 10s\n staleTime: 8000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch DLQ status\n *\n * @param source - Analytics data source\n */\nexport function useAnalyticsDlqStatus(source: AnalyticsDataSource) {\n return useQuery({\n queryKey: ['analytics', 'dlq'],\n queryFn: () => source.getDlqStatus(),\n refetchInterval: 15000, // Auto-refresh every 15s\n staleTime: 12000,\n retry: 2,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-adapters\n * React Query hooks for platform adapter analytics\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { AdaptersDataSource, DateRangeOptions } from '../sources/adapters-source';\n\nconst DAILY_STATS = 'daily-stats';\n\n/**\n * Hook to fetch LLM usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersLLMUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'llm', 'usage', options?.from, options?.to],\n queryFn: () => source.getLLMUsage(options),\n refetchInterval: 60000, // Auto-refresh every 60s (LLM stats change slower)\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Embeddings usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersEmbeddingsUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'embeddings', 'usage', options?.from, options?.to],\n queryFn: () => source.getEmbeddingsUsage(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch VectorStore usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersVectorStoreUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'vectorstore', 'usage', options?.from, options?.to],\n queryFn: () => source.getVectorStoreUsage(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Cache usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersCacheUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'cache', 'usage', options?.from, options?.to],\n queryFn: () => source.getCacheUsage(options),\n refetchInterval: 30000, // Cache stats change faster - refresh every 30s\n staleTime: 25000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Storage usage statistics\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersStorageUsage(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'storage', 'usage', options?.from, options?.to],\n queryFn: () => source.getStorageUsage(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch LLM daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersLLMDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'llm', DAILY_STATS, options?.from, options?.to, options?.models],\n queryFn: () => source.getLLMDailyStats(options),\n refetchInterval: 60000, // Daily stats change slower\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Embeddings daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersEmbeddingsDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'embeddings', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getEmbeddingsDailyStats(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch VectorStore daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersVectorStoreDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'vectorstore', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getVectorStoreDailyStats(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Cache daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersCacheDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'cache', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getCacheDailyStats(options),\n refetchInterval: 30000, // Cache stats change faster\n staleTime: 25000,\n retry: 2,\n });\n}\n\n/**\n * Hook to fetch Storage daily statistics for time-series charts\n *\n * @param source - Adapters data source\n * @param options - Optional date range filter\n */\nexport function useAdaptersStorageDailyStats(source: AdaptersDataSource, options?: DateRangeOptions) {\n return useQuery({\n queryKey: ['adapters', 'storage', DAILY_STATS, options?.from, options?.to],\n queryFn: () => source.getStorageDailyStats(options),\n refetchInterval: 60000,\n staleTime: 50000,\n retry: 2,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-platform\n * Platform configuration hooks\n */\n\nimport { useQuery } from '@tanstack/react-query';\nimport type { PlatformDataSource } from '../sources/platform-source';\nimport { qk } from '../query-keys';\n\n/**\n * Get platform configuration (adapters, options, execution mode)\n */\nexport function usePlatformConfig(source: PlatformDataSource) {\n return useQuery({\n queryKey: qk.platform.config(),\n queryFn: async () => {\n return source.getConfig();\n },\n staleTime: 60000, // Cache for 1 minute (config rarely changes)\n retry: 2,\n retryDelay: 1000,\n });\n}\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-job-events\n * React hook for subscribing to job events via SSE with fallback to polling\n */\n\nimport { useEffect, useRef, useState, useCallback } from 'react';\nimport type { JobEventType } from './types';\n\n// Type for job response data\ninterface JobResponseData {\n jobId: string;\n status: string;\n progress?: number;\n error?: string;\n}\n\nconst TERMINAL_STATUSES = new Set(['completed', 'failed', 'cancelled']);\n\nfunction statusToEventType(status: string): JobEventType {\n if (status === 'completed') { return 'job.finished'; }\n if (status === 'failed') { return 'job.failed'; }\n if (status === 'running') { return 'job.started'; }\n return 'job.queued';\n}\n\n/**\n * Job event structure\n */\nexport interface JobEvent {\n type: JobEventType;\n jobId: string;\n timestamp: string;\n data?: {\n status?: string;\n progress?: number;\n error?: string;\n };\n}\n\n/**\n * Hook options\n */\nexport interface UseJobEventsOptions {\n enabled?: boolean;\n pollInterval?: number; // Polling interval in ms (fallback mode)\n baseUrl?: string;\n onEvent?: (event: JobEvent) => void;\n onError?: (error: Error) => void;\n onComplete?: () => void;\n}\n\n/**\n * Hook result\n */\nexport interface UseJobEventsResult {\n events: JobEvent[];\n isConnected: boolean;\n error: Error | null;\n reconnect: () => void;\n}\n\n/**\n * Use job events hook with SSE support and polling fallback\n */\nexport function useJobEvents(\n jobId: string | null,\n options: UseJobEventsOptions = {}\n): UseJobEventsResult {\n const {\n enabled = true,\n pollInterval = 1000,\n baseUrl = '',\n onEvent,\n onError,\n onComplete,\n } = options;\n\n const [events, setEvents] = useState<JobEvent[]>([]);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n \n const eventSourceRef = useRef<EventSource | null>(null);\n const pollingRef = useRef<NodeJS.Timeout | null>(null);\n const useSSERef = useRef(true); // Try SSE first\n\n const reconnect = useCallback(() => {\n // Clear existing connections\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n \n // Reset state\n setEvents([]);\n setError(null);\n setIsConnected(false);\n useSSERef.current = true;\n }, []);\n\n useEffect(() => {\n if (!enabled || !jobId) {\n return;\n }\n\n const eventsUrl = `${baseUrl}/jobs/${jobId}/events`;\n\n // Try SSE first\n if (useSSERef.current) {\n try {\n const eventSource = new EventSource(eventsUrl);\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n setIsConnected(true);\n setError(null);\n };\n\n eventSource.onmessage = (e) => {\n try {\n const event: JobEvent = JSON.parse(e.data);\n setEvents((prev) => [...prev, event]);\n onEvent?.(event);\n\n // Check if job is complete\n if (event.type === 'job.finished' || event.type === 'job.failed') {\n eventSource.close();\n setIsConnected(false);\n onComplete?.();\n }\n } catch (_err) {\n setError(_err instanceof Error ? _err : new Error('Failed to parse event'));\n onError?.(_err instanceof Error ? _err : new Error('Failed to parse event'));\n }\n };\n\n eventSource.onerror = (_event) => {\n // SSE failed, fallback to polling\n eventSource.close();\n eventSourceRef.current = null;\n useSSERef.current = false;\n setIsConnected(false);\n \n // Start polling fallback\n const poll = async () => {\n try {\n const response = await fetch(`${baseUrl}/jobs/${jobId}`);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n \n const data = await response.json() as JobResponseData;\n const currentStatus = data.status;\n \n // Check if status changed\n const lastEvent = events[events.length - 1];\n if (!lastEvent || lastEvent.data?.status !== currentStatus) {\n const event: JobEvent = {\n type: statusToEventType(currentStatus),\n jobId,\n timestamp: new Date().toISOString(),\n data: {\n status: currentStatus,\n progress: data.progress,\n error: data.error,\n },\n };\n \n setEvents((prev) => [...prev, event]);\n onEvent?.(event);\n\n if (TERMINAL_STATUSES.has(currentStatus)) {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n onComplete?.();\n }\n }\n } catch (_err) {\n const errorInstance = _err instanceof Error ? _err : new Error('Polling failed');\n setError(errorInstance);\n onError?.(errorInstance);\n }\n };\n\n // Start polling immediately\n poll();\n pollingRef.current = setInterval(poll, pollInterval);\n };\n\n // Cleanup\n return () => {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n };\n } catch (_err) {\n // SSE not supported, fallback to polling\n useSSERef.current = false;\n }\n }\n\n // Polling fallback (if SSE not available or disabled)\n if (!useSSERef.current && !pollingRef.current) {\n const poll = async () => {\n try {\n const response = await fetch(`${baseUrl}/jobs/${jobId}`);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n \n const data = await response.json() as JobResponseData;\n const currentStatus = data.status;\n \n // Check if status changed\n setEvents((prev) => {\n const lastEvent = prev[prev.length - 1];\n if (!lastEvent || lastEvent.data?.status !== currentStatus) {\n const event: JobEvent = {\n type: statusToEventType(currentStatus),\n jobId,\n timestamp: new Date().toISOString(),\n data: {\n status: currentStatus,\n progress: data.progress,\n error: data.error,\n },\n };\n \n onEvent?.(event);\n \n if (currentStatus === 'completed' || currentStatus === 'failed' || currentStatus === 'cancelled') {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n onComplete?.();\n }\n \n return [...prev, event];\n }\n return prev;\n });\n \n setIsConnected(true);\n setError(null);\n } catch (_err) {\n const errorInstance = _err instanceof Error ? _err : new Error('Polling failed');\n setError(errorInstance);\n onError?.(errorInstance);\n setIsConnected(false);\n }\n };\n\n // Start polling immediately\n poll();\n pollingRef.current = setInterval(poll, pollInterval);\n\n // Cleanup\n return () => {\n if (pollingRef.current) {\n clearInterval(pollingRef.current);\n pollingRef.current = null;\n }\n };\n }\n }, [jobId, enabled, pollInterval, onEvent, onError, onComplete, events]);\n\n return {\n events,\n isConnected,\n error,\n reconnect,\n };\n}\n\n","/**\n * @module @kb-labs/studio-data-client/hooks/use-notifications\n * React hook for tracking critical log notifications\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport type { ObservabilityDataSource } from '../sources/observability-source';\nimport type { LogRecord } from '../contracts/observability';\n\nexport interface LogNotification {\n id: string;\n timestamp: string;\n level: 'warn' | 'error';\n message: string;\n plugin?: string;\n executionId?: string;\n error?: {\n name: string;\n message: string;\n };\n read: boolean;\n}\n\nexport interface UseNotificationsResult {\n notifications: LogNotification[];\n unreadCount: number;\n markAsRead: (id: string) => void;\n markAllAsRead: () => void;\n clearAll: () => void;\n clearNotification: (id: string) => void;\n}\n\nconst MAX_NOTIFICATIONS = 50;\n\n/**\n * Hook to track critical log notifications (warn/error) from SSE stream\n *\n * Automatically subscribes to log stream and filters warn/error logs.\n * Maintains a list of recent critical logs with read/unread status.\n *\n * @param source - Observability data source\n * @param maxNotifications - Maximum number of notifications to keep (default: 50)\n */\nexport function useNotifications(\n source: ObservabilityDataSource,\n maxNotifications: number = MAX_NOTIFICATIONS\n): UseNotificationsResult {\n const [notifications, setNotifications] = useState<LogNotification[]>([]);\n\n useEffect(() => {\n return source.subscribeToLogs(\n (log: LogRecord) => {\n // Only track warn and error logs\n if (log.level !== 'warn' && log.level !== 'error') {\n return;\n }\n\n // Safely extract message (handle objects being passed as message)\n let messageText = 'No message';\n if (log.msg) {\n messageText = typeof log.msg === 'string' ? log.msg : JSON.stringify(log.msg);\n }\n\n const notification: LogNotification = {\n id: log.id || `${log.time}-${Math.random().toString(36).slice(2, 9)}`, // Use log.id from database, fallback to generated\n timestamp: log.time,\n level: log.level,\n message: messageText,\n plugin: log.plugin,\n executionId: log.executionId,\n error: log.err\n ? {\n name: String(log.err.name || 'Error'),\n message: String(log.err.message || 'Unknown error'),\n }\n : undefined,\n read: false,\n };\n\n setNotifications((prev) => [notification, ...prev].slice(0, maxNotifications));\n },\n (err) => {\n console.error('Notifications SSE error:', err);\n }\n );\n }, [source, maxNotifications]);\n\n const unreadCount = notifications.filter((n) => !n.read).length;\n\n const markAsRead = useCallback((id: string) => {\n setNotifications((prev) =>\n prev.map((n) => (n.id === id ? { ...n, read: true } : n))\n );\n }, []);\n\n const markAllAsRead = useCallback(() => {\n setNotifications((prev) => prev.map((n) => ({ ...n, read: true })));\n }, []);\n\n const clearAll = useCallback(() => {\n setNotifications([]);\n }, []);\n\n const clearNotification = useCallback((id: string) => {\n setNotifications((prev) => prev.filter((n) => n.id !== id));\n }, []);\n\n return {\n notifications,\n unreadCount,\n markAsRead,\n markAllAsRead,\n clearAll,\n clearNotification,\n };\n}\n"]}