{"version":3,"sources":["../src/services/base/api.service.ts","../src/services/observation/event.service.ts","../src/config/environmentMap.ts","../src/config/defaultConfig.ts","../src/config/runtimeConfig.ts","../src/utils/timestamp.ts","../src/utils/object.ts","../src/utils/detect-mutation.ts","../src/core/enrich.ts","../src/core/validate.ts","../src/core/capture.ts","../src/services/observation/event-explanation.service.ts","../src/services/execution/trace.service.ts","../src/services/execution/causal-thread.service.ts","../src/services/analysis/anomaly.service.ts","../src/sdk/VectryCore.ts"],"sourcesContent":["import { VectryConfig } from '../../interfaces';\nimport { Response } from '../../types/response';\n\nexport interface EndpointMap {\n  get?: string;\n  create?: string;\n  update?: string;\n  delete?: string;\n  patch?: string;\n  put?: string;\n  [key: string]: string | undefined;\n}\n\nexport interface IApiService {\n  config: VectryConfig,\n  baseUrl: string, \n  endpoints: EndpointMap\n}\n\nexport abstract class ApiService {\n  protected apiServiceConfig: VectryConfig;\n  protected endpointUrl: string;\n  protected endpoints: EndpointMap;\n\n  constructor(apiServiceParameters: IApiService) {\n    this.apiServiceConfig = apiServiceParameters.config;\n    this.endpointUrl = apiServiceParameters.baseUrl;\n    this.endpoints = apiServiceParameters.endpoints;\n  }\n\n  protected objectToQueryString(obj: any): string {\n    if (!obj || typeof obj !== 'object') return '';\n    const build = (o: any, prefix = ''): string[] =>\n      Object.keys(o).flatMap((key) => {\n        const k = prefix ? `${prefix}[${key}]` : key;\n        const v = o[key];\n        if (v && typeof v === 'object') return build(v, k);\n        return `${encodeURIComponent(k)}=${encodeURIComponent(v ?? '')}`;\n      });\n\n    const query = build(obj).join('&');\n    return query ? `?${query}` : '';\n  }\n\n  async getByParameters(data: { queryselector: string; [key: string]: any }): Promise<Response | undefined> {\n    if (!data?.queryselector) throw new Error('Missing queryselector');\n\n    const query = this.objectToQueryString(data);\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${this.endpoints.get ?? ''}${data.queryselector}${query}`;\n\n    return this.apiServiceConfig?.transport?.get(fullPath, {});\n  }\n\n  async create(payload: any): Promise<Response | undefined> {\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${this.endpoints.create ?? ''}`;\n    return this.apiServiceConfig?.transport?.post(fullPath, payload);\n  }\n\n  async update(payload: any): Promise<Response | undefined> {\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${this.endpoints.update ?? ''}`;\n    return this.apiServiceConfig?.transport?.patch(fullPath, payload);\n  }\n\n  async delete(payload: any): Promise<Response | undefined> {\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${this.endpoints.delete ?? ''}`;\n    return this.apiServiceConfig?.transport?.delete(fullPath, payload);\n  }\n\n  async post(payload: any, endpoint?: string): Promise<Response | undefined> {\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${endpoint ?? this.endpoints.post ?? ''}`;\n    return this.apiServiceConfig?.transport?.post(fullPath, payload);\n  }\n\n  async put(payload: any, endpoint?: string): Promise<Response | undefined> {\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${endpoint ?? this.endpoints.put ?? ''}`;\n    return this.apiServiceConfig?.transport?.put(fullPath, payload);\n  }\n\n  async patch(payload: any, endpoint?: string): Promise<Response | undefined> {\n    const fullPath = `${this.apiServiceConfig.baseUrl}${this.endpointUrl}${endpoint ?? this.endpoints.patch ?? ''}`;\n    return this.apiServiceConfig?.transport?.patch(fullPath, payload);\n  }\n}\n","import { VectryConfig } from '../../interfaces';\nimport { Event, Response } from '../../types';\nimport { ApiService } from '../base/api.service';\n\nexport class EventService extends ApiService {\n  constructor(config: VectryConfig) {\n    super({\n      config,\n      baseUrl: '/causal/observation/event',\n      endpoints: {\n        get: '/',\n        create: '',\n        update: '',\n        delete: ''\n      }\n    });\n  }\n\n  /**\n   * Fetches events based on custom filtering parameters.\n   * @param data An object containing the query selector and filters.\n   */\n  async getByParameters(data: { queryselector: string; [key: string]: any }): Promise<Response | undefined> {\n    return super.getByParameters(data);\n  }\n\n  /**\n   * Sends a new event to the backend.\n   * @param payload Event data to be created.\n   */\n  async create(payload: Partial<Event>): Promise<Response | undefined> {\n    return super.create(payload);\n  }\n\n  /**\n   * Updates an existing event.\n   * @param payload Event data to be updated.\n   */\n  async update(payload: Partial<Event>): Promise<Response | undefined> {\n    return super.update(payload);\n  }\n\n  /**\n   * Deletes an event.\n   * @param payload Identifier or full object of the event to delete.\n   */\n  async delete(payload: Partial<Event>): Promise<Response | undefined> {\n    return super.delete(payload);\n  }\n}\n","export const EnvironmentBaseUrls: Record<string, string> = {\n  local: 'http://localhost:3101',\n  development: 'https://vectry-backend-svc-dev.azurewebsites.net',\n  production: 'https://api.vectry.io'\n};\n","import { VectryConfig } from \"../interfaces\";\nimport { EnvironmentBaseUrls } from \"./environmentMap\";\n\nexport const defaultConfig: VectryConfig = {\n  organizationId: '',\n  vectryEnvironment: 'production',\n  baseUrl: EnvironmentBaseUrls['production'],\n  contextProvider: async () => ({ user: { id: 'anonymous' } }),\n  autoFlush: true,\n  flushIntervalMs: 10000,\n  enrichers: [],\n};\n","import { VectryConfig } from '../interfaces';\nimport { defaultConfig } from './defaultConfig';\n\nlet currentConfig: VectryConfig = { ...defaultConfig };\n\n/**\n * Retrieves the current Vectry runtime configuration.\n * @returns {VectryConfig}\n */\nexport function getRuntimeConfig(): VectryConfig {\n  return currentConfig;\n}\n\n/**\n * Merges and updates the runtime configuration.\n * @param config Partial configuration to override defaults.\n */\nexport function setRuntimeConfig(config: Partial<VectryConfig>) {\n  currentConfig = {\n    ...defaultConfig,\n    ...currentConfig,\n    ...config,\n  };\n}\n","export function getCurrentTimestamp(): string {\n  return new Date().toISOString();\n}\n\nexport function normalizeTimestamp(input: string | number | Date): string {\n  if (input instanceof Date) return input.toISOString();\n  if (typeof input === 'number') return new Date(input).toISOString();\n  return new Date(input).toISOString();\n}\n","export function deepClone<T>(obj: T): T {\n    return JSON.parse(JSON.stringify(obj));\n  }\n  \n  export function isEmptyObject(obj: Record<string, any>): boolean {\n    return Object.keys(obj).length === 0 && obj.constructor === Object;\n  }\n  ","export interface IMutationInput {\n  original: Record<string, any>;\n  updated: Record<string, any>;\n  ignoreProperties?: string[];\n}\n\n/**\n * Compares two object snapshots and returns a structured mutation result.\n * Ignores any keys specified in `ignoreProperties`.\n * If no differences are found, returns null.\n *\n * @param input Object containing `original`, `updated` and optional `ignoreProperties`\n * @returns A mutation object with only the fields that changed, or null\n */\nexport function detectMutation(input: IMutationInput): IMutationInput | null {\n  const { original, updated, ignoreProperties = [] } = input;\n  const originalDiff: Record<string, any> = {};\n  const updatedDiff: Record<string, any> = {};\n\n  function compare(key: string, a: any, b: any): boolean {\n    if (ignoreProperties.includes(key)) return false;\n\n    const bothObjects = typeof a === 'object' && typeof b === 'object' && a !== null && b !== null;\n\n    if (bothObjects && !Array.isArray(a) && !Array.isArray(b)) {\n      const nested = detectMutation({ original: a, updated: b, ignoreProperties });\n      if (nested) {\n        originalDiff[key] = nested.original;\n        updatedDiff[key] = nested.updated;\n        return true;\n      }\n      return false;\n    }\n\n    const isDifferent = JSON.stringify(a) !== JSON.stringify(b);\n    if (isDifferent) {\n      originalDiff[key] = a;\n      updatedDiff[key] = b;\n    }\n\n    return isDifferent;\n  }\n\n  const keys = new Set([...Object.keys(original || {}), ...Object.keys(updated || {})]);\n\n  let hasDiff = false;\n  for (const key of keys) {\n    if (compare(key, original?.[key], updated?.[key])) {\n      hasDiff = true;\n    }\n  }\n\n  return hasDiff ? { original: originalDiff, updated: updatedDiff } : null;\n}\n","\nimport { Event } from '../types';\nimport { getCurrentTimestamp } from '../utils';\n\n\n/**\n * Enriches an Event with system-generated fields like id, created timestamp,\n * and ensures required nested objects are present.\n * \n * @param event - Partial input provided by the integrator.\n * @returns Complete Event object, ready to be validated and sent.\n */\nexport function enrichEvent(event: Event): Event {\n  return {\n    ...event,\n    created: {\n      user: { id: 'anonymous' }, // Can be replaced by context provider later\n      timestamp: getCurrentTimestamp(),\n    },\n    status: {\n      id: 1,\n      name: 'active',\n      title: 'Active',\n    },\n    metadata: event.metadata ?? {},\n    context: event.context ?? {},\n  };\n}\n","import { Event } from '../types';\n\nexport function validateEvent(event: Event): void {\n  const requiredFields = [\n    'organization_id',\n    'namespace',\n    'actor_id',\n    'actor_type'\n  ];\n\n  const missing = requiredFields.filter((field) => !(event as any)[field]);\n  if (missing.length > 0) {\n    throw new Error(`Missing required event fields: ${missing.join(', ')}`);\n  }\n}\n","import { Event, Response } from '../types';\nimport { EventService } from '../services/observation/event.service';\nimport { getRuntimeConfig } from '../config/runtimeConfig';\nimport { enrichEvent } from './enrich';\nimport { validateEvent } from './validate';\n\nexport async function capture(event: Event): Promise<Response | undefined> {\n  const config = getRuntimeConfig();\n  if (!config.transport) {\n    throw new Error('Transport not initialized in runtime config.');\n  }\n\n  const enriched = enrichEvent(event);\n  validateEvent(enriched);\n\n  const service = new EventService(config);\n  return await service.create(enriched);\n}\n","import { VectryConfig } from '../../interfaces';\nimport { EventExplanation, Response } from '../../types';\nimport { ApiService } from '../base/api.service';\n\nexport class EventExplanationService extends ApiService {\n  constructor(config: VectryConfig) {\n    super({\n      config,\n      baseUrl: '/causal/observation/event',\n      endpoints: {\n        get: '/',\n        create: '',\n        update: '',\n        delete: ''\n      }\n    });\n  }\n\n  /**\n   * Fetches events based on custom filtering parameters.\n   * @param data An object containing the query selector and filters.\n   */\n  async getByParameters(data: {\n    queryselector: string;\n    [key: string]: any;\n  }): Promise<Response | undefined> {\n    return super.getByParameters(data);\n  }\n\n  /**\n   * Sends a new event to the backend.\n   * @param payload EventExplanation data to be created.\n   */\n  async create(payload: Partial<EventExplanation>): Promise<Response | undefined> {\n    return super.create(payload);\n  }\n\n  /**\n   * Updates an existing event.\n   * @param payload EventExplanation data to be updated.\n   */\n  async update(payload: Partial<EventExplanation>): Promise<Response | undefined> {\n    return super.update(payload);\n  }\n\n  /**\n   * Deletes an event.\n   * @param payload Identifier or full object of the event to delete.\n   */\n  async delete(payload: Partial<EventExplanation>): Promise<Response | undefined> {\n    return super.delete(payload);\n  }\n}\n","import { VectryConfig } from '../../interfaces';\nimport { Response, Trace } from '../../types';\nimport { ApiService } from '../base/api.service';\n\nexport class TraceService extends ApiService {\n  constructor(config: VectryConfig) {\n    super({\n      config,\n      baseUrl: '/causal/observation/event',\n      endpoints: {\n        get: '/',\n        create: '',\n        update: '',\n        delete: ''\n      }\n    });\n  }\n\n  /**\n   * Fetches events based on custom filtering parameters.\n   * @param data An object containing the query selector and filters.\n   */\n  async getByParameters(data: { queryselector: string; [key: string]: any }): Promise<Response | undefined> {\n    return super.getByParameters(data);\n  }\n\n  /**\n   * Sends a new event to the backend.\n   * @param payload Trace data to be created.\n   */\n  async create(payload: Partial<Trace>): Promise<Response | undefined> {\n    return super.create(payload);\n  }\n\n  /**\n   * Updates an existing event.\n   * @param payload Trace data to be updated.\n   */\n  async update(payload: Partial<Trace>): Promise<Response | undefined> {\n    return super.update(payload);\n  }\n\n  /**\n   * Deletes an event.\n   * @param payload Identifier or full object of the event to delete.\n   */\n  async delete(payload: Partial<Trace>): Promise<Response | undefined> {\n    return super.delete(payload);\n  }\n}\n","import { VectryConfig } from '../../interfaces';\nimport { CausalThread, Response } from '../../types';\nimport { ApiService } from '../base/api.service';\n\nexport class CausalThreadService extends ApiService {\n  constructor(config: VectryConfig) {\n    super({\n      config,\n      baseUrl: '/causal/observation/event',\n      endpoints: {\n        get: '/',\n        create: '',\n        update: '',\n        delete: ''\n      }\n    });\n  }\n\n  /**\n   * Fetches events based on custom filtering parameters.\n   * @param data An object containing the query selector and filters.\n   */\n  async getByParameters(data: {\n    queryselector: string;\n    [key: string]: any;\n  }): Promise<Response | undefined> {\n    return super.getByParameters(data);\n  }\n\n  /**\n   * Sends a new event to the backend.\n   * @param payload CausalThread data to be created.\n   */\n  async create(payload: Partial<CausalThread>): Promise<Response | undefined> {\n    return super.create(payload);\n  }\n\n  /**\n   * Updates an existing event.\n   * @param payload CausalThread data to be updated.\n   */\n  async update(payload: Partial<CausalThread>): Promise<Response | undefined> {\n    return super.update(payload);\n  }\n\n  /**\n   * Deletes an event.\n   * @param payload Identifier or full object of the event to delete.\n   */\n  async delete(payload: Partial<CausalThread>): Promise<Response | undefined> {\n    return super.delete(payload);\n  }\n}\n","import { VectryConfig } from '../../interfaces';\nimport { Anomaly, Response } from '../../types';\nimport { ApiService } from '../base/api.service';\n\nexport class AnomalyService extends ApiService {\n  constructor(config: VectryConfig) {\n    super({\n      config,\n      baseUrl: '/causal/observation/event',\n      endpoints: {\n        get: '/',\n        create: '',\n        update: '',\n        delete: ''\n      }\n    });\n  }\n\n  /**\n   * Fetches events based on custom filtering parameters.\n   * @param data An object containing the query selector and filters.\n   */\n  async getByParameters(data: { queryselector: string; [key: string]: any }): Promise<Response | undefined> {\n    return super.getByParameters(data);\n  }\n\n  /**\n   * Sends a new event to the backend.\n   * @param payload Anomaly data to be created.\n   */\n  async create(payload: Partial<Anomaly>): Promise<Response | undefined> {\n    return super.create(payload);\n  }\n\n  /**\n   * Updates an existing event.\n   * @param payload Anomaly data to be updated.\n   */\n  async update(payload: Partial<Anomaly>): Promise<Response | undefined> {\n    return super.update(payload);\n  }\n\n  /**\n   * Deletes an event.\n   * @param payload Identifier or full object of the event to delete.\n   */\n  async delete(payload: Partial<Anomaly>): Promise<Response | undefined> {\n    return super.delete(payload);\n  }\n}\n","import { ITransport, VectryConfig } from '../interfaces';\nimport { capture as coreCapture } from '../core/capture';\nimport {\n  AnomalyService,\n  CausalThreadService,\n  EventExplanationService,\n  EventService,\n  TraceService\n} from '../services';\nimport { setRuntimeConfig } from '../config/runtimeConfig';\nimport { defaultConfig } from '../config/defaultConfig';\nimport { detectMutation } from '../utils';\n\nexport class VectryCore {\n  private transport: ITransport | undefined;\n  \n  public detectMutation = detectMutation;\n\n  public organizationId?: string;\n\n  public event: EventService;\n  public trace: TraceService;\n  public thread: CausalThreadService;\n  public eventExplanation: EventExplanationService;\n  public anomaly: AnomalyService;\n\n  constructor(args: VectryConfig) {\n    this.transport = args.transport;\n    this.organizationId = args.organizationId;\n\n    setRuntimeConfig({\n      ...defaultConfig,\n      ...args\n    });\n\n    this.event = new EventService({ transport: this.transport } as VectryConfig);\n    this.trace = new TraceService({ transport: this.transport } as VectryConfig);\n    this.thread = new CausalThreadService({ transport: this.transport } as VectryConfig);\n    this.eventExplanation = new EventExplanationService({ transport: this.transport } as VectryConfig);\n    this.anomaly = new AnomalyService({ transport: this.transport } as VectryConfig);\n  }\n\n  /**\n   * Captures a raw event and sends it to Vectry using the core handler.\n   * Automatically enriches, validates, and dispatches the event.\n   */\n  async capture(event: any) {\n    if (!event) {\n      throw new Error('Event cannot be null or undefined');\n    }\n\n    return coreCapture(event);\n  }\n}\n"],"mappings":"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","names":[]}