UNPKG

@vfarcic/dot-ai

Version:

AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance

131 lines (130 loc) 4.41 kB
"use strict"; /** * PostHog Telemetry Configuration * * Manages telemetry configuration from environment variables with sensible defaults. * Telemetry is opt-out (enabled by default) and can be disabled via DOT_AI_TELEMETRY=false. */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.loadTelemetryConfig = loadTelemetryConfig; const fs_1 = require("fs"); const path = __importStar(require("path")); /** * Default PostHog configuration * The API key is public and safe to expose - it can only write events, not read data. */ const DEFAULT_POSTHOG_KEY = 'phc_NALnABhyc3UNGS8fJlFiaR6Ry0OuunkRDSgaEOb8uZV'; const DEFAULT_POSTHOG_HOST = 'https://eu.i.posthog.com'; /** * Load service version from package.json */ function getDotAiVersion() { try { const packageJsonPath = path.join(__dirname, '../../../package.json'); const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf8')); return packageJson.version || '0.0.0'; } catch { return '0.0.0'; } } /** * Get AI provider from environment */ function getAiProvider() { // Check explicit provider setting const provider = process.env.AI_PROVIDER?.toLowerCase(); if (provider) { return provider; } // Infer from available API keys if (process.env.ANTHROPIC_API_KEY) return 'anthropic'; if (process.env.OPENAI_API_KEY) return 'openai'; if (process.env.GOOGLE_API_KEY) return 'google'; if (process.env.XAI_API_KEY) return 'xai'; if (process.env.AWS_ACCESS_KEY_ID) return 'amazon_bedrock'; return 'unknown'; } /** * Check if telemetry is enabled * * Default: enabled (opt-out model). * Users can disable with DOT_AI_TELEMETRY=false. */ function isTelemetryEnabled() { const telemetryEnv = process.env.DOT_AI_TELEMETRY?.toLowerCase(); // Explicit disable if (telemetryEnv === 'false' || telemetryEnv === '0' || telemetryEnv === 'no' || telemetryEnv === 'off') { return false; } // Default: enabled return true; } /** * Check if debug mode is enabled */ function isDebugMode() { const debugEnv = process.env.DEBUG_DOT_AI?.toLowerCase(); return debugEnv === 'true' || debugEnv === '1' || debugEnv === 'yes'; } /** * Load telemetry configuration from environment variables */ function loadTelemetryConfig() { const config = { enabled: isTelemetryEnabled(), posthogKey: process.env.DOT_AI_POSTHOG_KEY || DEFAULT_POSTHOG_KEY, posthogHost: process.env.DOT_AI_POSTHOG_HOST || DEFAULT_POSTHOG_HOST, dotAiVersion: getDotAiVersion(), aiProvider: getAiProvider(), debug: isDebugMode() }; // Log configuration in debug mode if (config.debug) { console.log('[Telemetry] Configuration loaded:', { enabled: config.enabled, posthogHost: config.posthogHost, dotAiVersion: config.dotAiVersion, aiProvider: config.aiProvider, }); } return config; }