@fractary/codex-cli 0.6.5 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +32 -7
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +28 -6
- package/dist/cli.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tsup/assets/cjs_shims.js","../src/config/migrate-config.ts","../src/config/config-types.ts","../src/client/codex-client.ts","../src/utils/codex-repository.ts","../src/cli.ts","../src/commands/document/index.ts","../src/commands/document/fetch.ts","../src/client/get-client.ts","../src/commands/config/index.ts","../src/commands/config/init.ts","../src/commands/config/migrate.ts","../src/commands/cache/index.ts","../src/commands/cache/list.ts","../src/commands/cache/clear.ts","../src/commands/cache/stats.ts","../src/commands/cache/health.ts","../src/commands/sync.ts","../src/commands/types/index.ts","../src/commands/types/list.ts","../src/commands/types/show.ts","../src/commands/types/add.ts","../src/commands/types/remove.ts"],"names":["fs","path","yaml","CodexError","ConfigurationError","PermissionDeniedError","ValidationError","readYamlConfig","resolveEnvVarsInConfig","path2","result","spawn","path6","os","fs6","CodexClient","crypto","Command","chalk","fs2","fs3","path3","fileExists","fs4","path4","formatSize","fs5","path5","path7","ensureCodexCloned","formatTtl","path8","path9"],"mappings":"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","file":"cli.cjs","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","/**\r\n * Configuration migration utility\r\n *\r\n * Converts legacy v2.x JSON config to v3.0 YAML format\r\n */\r\n\r\nimport * as fs from 'fs/promises';\r\nimport * as path from 'path';\r\nimport * as yaml from 'js-yaml';\r\nimport {\r\n type CodexYamlConfig,\r\n type LegacyCodexConfig,\r\n type StorageProviderConfig,\r\n parseDuration,\r\n parseSize\r\n} from './config-types';\r\n\r\n/**\r\n * Migration result\r\n */\r\nexport interface MigrationResult {\r\n success: boolean;\r\n yamlConfig: CodexYamlConfig;\r\n warnings: string[];\r\n backupPath?: string;\r\n}\r\n\r\n/**\r\n * Detect if a config file is legacy JSON format\r\n */\r\nexport async function isLegacyConfig(configPath: string): Promise<boolean> {\r\n try {\r\n const content = await fs.readFile(configPath, 'utf-8');\r\n const config = JSON.parse(content);\r\n\r\n // Check for legacy v2.x structure\r\n return (\r\n config.version === '3.0' ||\r\n config.organizationSlug !== undefined ||\r\n config.directories !== undefined ||\r\n config.rules !== undefined\r\n );\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Migrate legacy JSON config to v3.0 YAML format\r\n */\r\nexport async function migrateConfig(\r\n legacyConfigPath: string,\r\n options?: {\r\n createBackup?: boolean;\r\n backupSuffix?: string;\r\n }\r\n): Promise<MigrationResult> {\r\n const warnings: string[] = [];\r\n\r\n try {\r\n // Read legacy config\r\n const content = await fs.readFile(legacyConfigPath, 'utf-8');\r\n const legacy: LegacyCodexConfig = JSON.parse(content);\r\n\r\n // Create backup if requested\r\n let backupPath: string | undefined;\r\n if (options?.createBackup !== false) {\r\n const suffix = options?.backupSuffix || new Date().toISOString().replace(/[:.]/g, '-');\r\n backupPath = `${legacyConfigPath}.backup-${suffix}`;\r\n await fs.writeFile(backupPath, content, 'utf-8');\r\n }\r\n\r\n // Build YAML config\r\n const yamlConfig: CodexYamlConfig = {\r\n organization: legacy.organization || legacy.organizationSlug || 'default'\r\n };\r\n\r\n // Migrate cache configuration\r\n if (legacy.cache) {\r\n yamlConfig.cacheDir = legacy.cache.directory || '.fractary/codex/cache';\r\n\r\n // Note: Legacy config had cache.defaultTtl, cache.maxSize with string formats\r\n // These are now handled by CacheManager config separately\r\n }\r\n\r\n // Migrate storage providers\r\n if (legacy.storage?.providers) {\r\n yamlConfig.storage = [];\r\n\r\n // Convert providers object to array\r\n for (const [type, config] of Object.entries(legacy.storage.providers)) {\r\n if (type === 'github') {\r\n const githubConfig = config as any;\r\n yamlConfig.storage.push({\r\n type: 'github',\r\n token: githubConfig.token || '${GITHUB_TOKEN}',\r\n apiBaseUrl: githubConfig.baseUrl || 'https://api.github.com',\r\n branch: githubConfig.branch || 'main',\r\n priority: 50\r\n });\r\n } else if (type === 'http') {\r\n const httpConfig = config as any;\r\n yamlConfig.storage.push({\r\n type: 'http',\r\n baseUrl: httpConfig.baseUrl,\r\n headers: httpConfig.headers,\r\n timeout: httpConfig.timeout || 30000,\r\n priority: 100\r\n });\r\n } else if (type === 'local') {\r\n const localConfig = config as any;\r\n yamlConfig.storage.push({\r\n type: 'local',\r\n basePath: localConfig.basePath || './knowledge',\r\n followSymlinks: localConfig.followSymlinks || false,\r\n priority: 10\r\n });\r\n } else {\r\n warnings.push(`Unknown storage provider type: ${type}`);\r\n }\r\n }\r\n\r\n // If no providers configured, add default GitHub\r\n if (yamlConfig.storage.length === 0) {\r\n yamlConfig.storage.push({\r\n type: 'github',\r\n token: '${GITHUB_TOKEN}',\r\n apiBaseUrl: 'https://api.github.com',\r\n branch: 'main',\r\n priority: 50\r\n });\r\n warnings.push('No storage providers found, added default GitHub provider');\r\n }\r\n }\r\n\r\n // Migrate custom types\r\n if (legacy.types?.custom && Array.isArray(legacy.types.custom)) {\r\n yamlConfig.types = {\r\n custom: {}\r\n };\r\n\r\n for (const customType of legacy.types.custom) {\r\n if (customType.name) {\r\n yamlConfig.types.custom[customType.name] = {\r\n description: customType.description,\r\n patterns: customType.patterns || [],\r\n defaultTtl: customType.defaultTtl,\r\n archiveAfterDays: customType.archiveAfterDays,\r\n archiveStorage: customType.archiveStorage\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Migrate sync configuration\r\n if (legacy.sync) {\r\n yamlConfig.sync = {\r\n bidirectional: true,\r\n conflictResolution: 'prompt',\r\n exclude: [\r\n 'node_modules/**',\r\n '.git/**',\r\n '**/*.log',\r\n '.env'\r\n ]\r\n };\r\n\r\n if (legacy.sync.environments) {\r\n warnings.push('Sync environments are not directly supported in v3.0 - please configure sync rules manually');\r\n }\r\n }\r\n\r\n // Migrate MCP configuration\r\n if (legacy.mcp) {\r\n yamlConfig.mcp = {\r\n enabled: legacy.mcp.enabled || false,\r\n port: legacy.mcp.port || 3000\r\n };\r\n }\r\n\r\n return {\r\n success: true,\r\n yamlConfig,\r\n warnings,\r\n backupPath\r\n };\r\n } catch (error) {\r\n throw new Error(\r\n `Migration failed: ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Write YAML config to file\r\n */\r\nexport async function writeYamlConfig(\r\n config: CodexYamlConfig,\r\n outputPath: string\r\n): Promise<void> {\r\n // Ensure directory exists\r\n const dir = path.dirname(outputPath);\r\n await fs.mkdir(dir, { recursive: true });\r\n\r\n // Convert to YAML with nice formatting\r\n const yamlContent = yaml.dump(config, {\r\n indent: 2,\r\n lineWidth: 80,\r\n noRefs: true,\r\n sortKeys: false\r\n });\r\n\r\n // Write to file\r\n await fs.writeFile(outputPath, yamlContent, 'utf-8');\r\n}\r\n\r\n/**\r\n * Get default YAML config (v4.0 standard)\r\n */\r\nexport function getDefaultYamlConfig(organization: string): CodexYamlConfig {\r\n return {\r\n organization,\r\n cacheDir: '.fractary/codex/cache',\r\n\r\n storage: [\r\n {\r\n type: 'local',\r\n basePath: './knowledge',\r\n followSymlinks: false,\r\n priority: 10\r\n },\r\n {\r\n type: 'github',\r\n token: '${GITHUB_TOKEN}',\r\n apiBaseUrl: 'https://api.github.com',\r\n branch: 'main',\r\n priority: 50\r\n },\r\n {\r\n type: 'http',\r\n baseUrl: 'https://codex.example.com',\r\n timeout: 30000,\r\n priority: 100\r\n }\r\n ],\r\n\r\n types: {\r\n custom: {}\r\n },\r\n\r\n permissions: {\r\n default: 'read',\r\n rules: [\r\n {\r\n pattern: 'internal/**',\r\n permission: 'none'\r\n },\r\n {\r\n pattern: 'public/**',\r\n permission: 'read'\r\n }\r\n ]\r\n },\r\n\r\n sync: {\r\n bidirectional: true,\r\n conflictResolution: 'prompt',\r\n exclude: [\r\n 'node_modules/**',\r\n '.git/**',\r\n '**/*.log',\r\n '.env'\r\n ]\r\n },\r\n\r\n mcp: {\r\n enabled: false,\r\n port: 3000\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Read YAML config from file\r\n */\r\nexport async function readYamlConfig(configPath: string): Promise<CodexYamlConfig> {\r\n const content = await fs.readFile(configPath, 'utf-8');\r\n const config = yaml.load(content) as CodexYamlConfig;\r\n\r\n if (!config.organization) {\r\n throw new Error('Invalid config: organization is required');\r\n }\r\n\r\n return config;\r\n}\r\n","/**\r\n * Configuration types for Codex v3.0 YAML format\r\n *\r\n * Based on the SDK's Configuration Guide:\r\n * https://github.com/fractary/codex/blob/main/docs/guides/configuration.md\r\n */\r\n\r\n/**\r\n * Storage provider type\r\n */\r\nexport type StorageProviderType = 'local' | 'github' | 'http' | 's3';\r\n\r\n/**\r\n * Local filesystem storage configuration\r\n */\r\nexport interface LocalStorageConfig {\r\n type: 'local';\r\n basePath: string;\r\n followSymlinks?: boolean;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * GitHub storage configuration\r\n */\r\nexport interface GitHubStorageConfig {\r\n type: 'github';\r\n token?: string; // Or use environment variable\r\n apiBaseUrl?: string; // For GitHub Enterprise\r\n rawBaseUrl?: string;\r\n branch?: string;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * HTTP storage configuration\r\n */\r\nexport interface HttpStorageConfig {\r\n type: 'http';\r\n baseUrl: string;\r\n headers?: Record<string, string>;\r\n timeout?: number;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * S3 storage configuration (future)\r\n */\r\nexport interface S3StorageConfig {\r\n type: 's3';\r\n bucket: string;\r\n region?: string;\r\n accessKeyId?: string;\r\n secretAccessKey?: string;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * Union type for all storage providers\r\n */\r\nexport type StorageProviderConfig =\r\n | LocalStorageConfig\r\n | GitHubStorageConfig\r\n | HttpStorageConfig\r\n | S3StorageConfig;\r\n\r\n/**\r\n * Cache configuration\r\n */\r\nexport interface CacheConfig {\r\n directory?: string;\r\n defaultTtl?: number; // In seconds\r\n maxSize?: number; // In bytes\r\n maxMemoryEntries?: number;\r\n maxMemorySize?: number; // In bytes\r\n enablePersistence?: boolean;\r\n}\r\n\r\n/**\r\n * Custom artifact type definition\r\n */\r\nexport interface CustomTypeConfig {\r\n name: string;\r\n description?: string;\r\n patterns: string[];\r\n defaultTtl?: number; // In seconds\r\n archiveAfterDays?: number | null;\r\n archiveStorage?: 'local' | 'cloud' | 'drive' | null;\r\n}\r\n\r\n/**\r\n * Types configuration\r\n */\r\nexport interface TypesConfig {\r\n custom?: Record<string, Omit<CustomTypeConfig, 'name'>>;\r\n}\r\n\r\n/**\r\n * Permission level\r\n */\r\nexport type PermissionLevel = 'none' | 'read' | 'write' | 'admin';\r\n\r\n/**\r\n * Permission rule\r\n */\r\nexport interface PermissionRule {\r\n pattern: string;\r\n permission: PermissionLevel;\r\n users?: string[];\r\n}\r\n\r\n/**\r\n * Permissions configuration\r\n */\r\nexport interface PermissionsConfig {\r\n default?: PermissionLevel;\r\n rules?: PermissionRule[];\r\n}\r\n\r\n/**\r\n * Sync configuration\r\n */\r\nexport interface SyncConfig {\r\n bidirectional?: boolean;\r\n conflictResolution?: 'prompt' | 'local' | 'remote' | 'newest' | 'skip';\r\n exclude?: string[];\r\n rules?: SyncRule[];\r\n // Directional sync patterns (added for PR #29)\r\n to_codex?: string[];\r\n from_codex?: string[];\r\n default_to_codex?: string[];\r\n default_from_codex?: string[];\r\n}\r\n\r\n/**\r\n * Sync rule\r\n */\r\nexport interface SyncRule {\r\n pattern: string;\r\n direction?: 'to-codex' | 'from-codex' | 'bidirectional';\r\n}\r\n\r\n/**\r\n * MCP server configuration\r\n */\r\nexport interface McpConfig {\r\n enabled?: boolean;\r\n port?: number;\r\n}\r\n\r\n/**\r\n * Codex v3.0 YAML configuration\r\n *\r\n * This is the format that will be written to .fractary/codex/config.yaml\r\n */\r\nexport interface CodexYamlConfig {\r\n organization: string;\r\n cacheDir?: string;\r\n storage?: StorageProviderConfig[];\r\n types?: TypesConfig;\r\n permissions?: PermissionsConfig;\r\n sync?: SyncConfig;\r\n mcp?: McpConfig;\r\n}\r\n\r\n/**\r\n * Legacy JSON configuration (v2.x)\r\n *\r\n * This is the format currently used in .fractary/plugins/codex/config.json\r\n */\r\nexport interface LegacyCodexConfig {\r\n version?: string;\r\n organization?: string;\r\n organizationSlug?: string;\r\n cache?: {\r\n directory?: string;\r\n defaultTtl?: string | number;\r\n maxSize?: string | number;\r\n cleanupInterval?: string;\r\n };\r\n storage?: {\r\n providers?: Record<string, any>;\r\n defaultProvider?: string;\r\n };\r\n types?: {\r\n custom?: any[];\r\n };\r\n sync?: {\r\n environments?: Record<string, string>;\r\n defaultEnvironment?: string;\r\n };\r\n mcp?: {\r\n enabled?: boolean;\r\n port?: number;\r\n };\r\n}\r\n\r\n/**\r\n * Parse a duration string to seconds\r\n *\r\n * Supports formats like: \"1h\", \"24h\", \"7d\", \"1w\", \"1M\", \"1y\"\r\n */\r\nexport function parseDuration(duration: string | number): number {\r\n if (typeof duration === 'number') {\r\n return duration;\r\n }\r\n\r\n const match = duration.match(/^(\\d+)([smhdwMy])$/);\r\n if (!match) {\r\n throw new Error(`Invalid duration format: ${duration}`);\r\n }\r\n\r\n const [, valueStr, unit] = match;\r\n const value = parseInt(valueStr, 10);\r\n\r\n switch (unit) {\r\n case 's': return value;\r\n case 'm': return value * 60;\r\n case 'h': return value * 3600;\r\n case 'd': return value * 86400;\r\n case 'w': return value * 604800;\r\n case 'M': return value * 2592000; // 30 days\r\n case 'y': return value * 31536000; // 365 days\r\n default: throw new Error(`Unknown duration unit: ${unit}`);\r\n }\r\n}\r\n\r\n/**\r\n * Parse a size string to bytes\r\n *\r\n * Supports formats like: \"100MB\", \"1GB\", \"50MB\"\r\n */\r\nexport function parseSize(size: string | number): number {\r\n if (typeof size === 'number') {\r\n return size;\r\n }\r\n\r\n const match = size.match(/^(\\d+(?:\\.\\d+)?)\\s*(B|KB|MB|GB)$/i);\r\n if (!match) {\r\n throw new Error(`Invalid size format: ${size}`);\r\n }\r\n\r\n const [, valueStr, unit] = match;\r\n const value = parseFloat(valueStr);\r\n\r\n switch (unit.toUpperCase()) {\r\n case 'B': return value;\r\n case 'KB': return value * 1024;\r\n case 'MB': return value * 1024 * 1024;\r\n case 'GB': return value * 1024 * 1024 * 1024;\r\n default: throw new Error(`Unknown size unit: ${unit}`);\r\n }\r\n}\r\n\r\n/**\r\n * Resolve environment variables in a string\r\n *\r\n * Supports ${VAR_NAME} syntax\r\n */\r\nexport function resolveEnvVars(value: string): string {\r\n return value.replace(/\\$\\{([^}]+)\\}/g, (_, varName) => {\r\n const envValue = process.env[varName];\r\n if (envValue === undefined) {\r\n console.warn(`Warning: Environment variable ${varName} is not set`);\r\n return `\\${${varName}}`; // Keep original if not found\r\n }\r\n return envValue;\r\n });\r\n}\r\n\r\n/**\r\n * Deep resolve environment variables in an object\r\n */\r\nexport function resolveEnvVarsInConfig<T>(config: T): T {\r\n if (typeof config === 'string') {\r\n return resolveEnvVars(config) as any;\r\n }\r\n\r\n if (Array.isArray(config)) {\r\n return config.map(item => resolveEnvVarsInConfig(item)) as any;\r\n }\r\n\r\n if (config !== null && typeof config === 'object') {\r\n const result: any = {};\r\n for (const [key, value] of Object.entries(config)) {\r\n result[key] = resolveEnvVarsInConfig(value);\r\n }\r\n return result;\r\n }\r\n\r\n return config;\r\n}\r\n","/**\r\n * CodexClient - Unified client wrapper for Codex SDK\r\n *\r\n * Following the pattern from the CLI Integration Guide:\r\n * https://github.com/fractary/codex/blob/main/docs/guides/cli-integration.md\r\n *\r\n * This wrapper encapsulates CacheManager, StorageManager, and TypeRegistry,\r\n * providing a clean interface for CLI commands.\r\n */\r\n\r\n// Type-only imports\r\nimport type {\r\n CacheManager,\r\n StorageManager,\r\n TypeRegistry,\r\n CacheStats,\r\n FetchResult as SDKFetchResult,\r\n ParsedReference,\r\n ResolvedReference,\r\n FetchOptions as SDKFetchOptions,\r\n} from '@fractary/codex';\r\n// Dynamic imports for config utilities to avoid loading js-yaml at module time\r\n// import { readYamlConfig } from '../config/migrate-config';\r\n// import { resolveEnvVarsInConfig } from '../config/config-types';\r\nimport * as path from 'path';\r\n\r\n/**\r\n * Options for creating CodexClient\r\n */\r\nexport interface CodexClientOptions {\r\n cacheDir?: string;\r\n organizationSlug?: string;\r\n}\r\n\r\n/**\r\n * Options for fetch operations\r\n */\r\nexport interface FetchOptions {\r\n bypassCache?: boolean;\r\n ttl?: number;\r\n}\r\n\r\n/**\r\n * Result from fetch operation\r\n */\r\nexport interface FetchResult {\r\n content: Buffer;\r\n fromCache: boolean;\r\n metadata?: {\r\n fetchedAt?: string;\r\n expiresAt?: string;\r\n contentLength?: number;\r\n };\r\n}\r\n\r\n/**\r\n * Unified Codex client\r\n *\r\n * Provides high-level operations for:\r\n * - Document fetching with integrated caching\r\n * - Cache management and invalidation\r\n * - Type registry access\r\n */\r\nexport class CodexClient {\r\n private cache: CacheManager;\r\n private storage: StorageManager;\r\n private types: TypeRegistry;\r\n private organization: string;\r\n\r\n /**\r\n * Private constructor - use CodexClient.create() instead\r\n */\r\n private constructor(\r\n cache: CacheManager,\r\n storage: StorageManager,\r\n types: TypeRegistry,\r\n organization: string\r\n ) {\r\n this.cache = cache;\r\n this.storage = storage;\r\n this.types = types;\r\n this.organization = organization;\r\n }\r\n\r\n /**\r\n * Create a new CodexClient instance\r\n *\r\n * @param options - Optional configuration\r\n * @returns Promise resolving to CodexClient instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const client = await CodexClient.create();\r\n * ```\r\n */\r\n static async create(options?: CodexClientOptions): Promise<CodexClient> {\r\n // Dynamic import of SDK\r\n const {\r\n CacheManager,\r\n createStorageManager,\r\n createDefaultRegistry,\r\n CodexError,\r\n ConfigurationError\r\n } = await import('@fractary/codex');\r\n\r\n // Dynamic import of config utilities (to avoid loading js-yaml at module time)\r\n const { readYamlConfig } = await import('../config/migrate-config');\r\n const { resolveEnvVarsInConfig } = await import('../config/config-types');\r\n\r\n try {\r\n // Load YAML configuration\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n let config;\r\n\r\n try {\r\n config = await readYamlConfig(configPath);\r\n // Resolve environment variables in config\r\n config = resolveEnvVarsInConfig(config);\r\n } catch (error) {\r\n throw new ConfigurationError(\r\n `Failed to load configuration from ${configPath}. Run \"fractary codex init\" to create a configuration.`\r\n );\r\n }\r\n\r\n const organization = options?.organizationSlug || config.organization;\r\n const cacheDir = options?.cacheDir || config.cacheDir || '.codex-cache';\r\n\r\n // Build storage manager config from YAML storage providers\r\n const storageConfig: any = {};\r\n\r\n if (config.storage && Array.isArray(config.storage)) {\r\n for (const provider of config.storage) {\r\n if (provider.type === 'github') {\r\n storageConfig.github = {\r\n token: provider.token || process.env.GITHUB_TOKEN,\r\n apiBaseUrl: provider.apiBaseUrl || 'https://api.github.com',\r\n branch: provider.branch || 'main'\r\n };\r\n } else if (provider.type === 'http') {\r\n storageConfig.http = {\r\n baseUrl: provider.baseUrl,\r\n headers: provider.headers,\r\n timeout: provider.timeout || 30000\r\n };\r\n } else if (provider.type === 'local') {\r\n storageConfig.local = {\r\n basePath: provider.basePath || './knowledge',\r\n followSymlinks: provider.followSymlinks || false\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Initialize storage manager\r\n const storage = createStorageManager(storageConfig);\r\n\r\n // Initialize cache manager\r\n const cache = new CacheManager({\r\n cacheDir,\r\n defaultTtl: 86400, // 24 hours\r\n maxMemoryEntries: 100,\r\n maxMemorySize: 50 * 1024 * 1024, // 50MB\r\n enablePersistence: true\r\n });\r\n\r\n // Connect storage to cache\r\n cache.setStorageManager(storage);\r\n\r\n // Initialize type registry with built-in types\r\n const types = createDefaultRegistry();\r\n\r\n // Load and register custom types from config\r\n if (config.types?.custom) {\r\n for (const [name, customType] of Object.entries(config.types.custom)) {\r\n const ct = customType as any; // Type from YAML config\r\n types.register({\r\n name,\r\n description: ct.description || `Custom type: ${name}`,\r\n patterns: ct.patterns || [],\r\n defaultTtl: ct.defaultTtl || 86400,\r\n archiveAfterDays: ct.archiveAfterDays !== undefined ? ct.archiveAfterDays : null,\r\n archiveStorage: ct.archiveStorage || null\r\n });\r\n }\r\n }\r\n\r\n return new CodexClient(cache, storage, types, organization);\r\n } catch (error) {\r\n if (error instanceof CodexError) {\r\n throw error;\r\n }\r\n throw new CodexError(\r\n `Failed to initialize CodexClient: ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Fetch a document by codex:// URI\r\n *\r\n * This method:\r\n * 1. Validates the URI format\r\n * 2. Resolves the URI to a reference\r\n * 3. Uses CacheManager.get() which handles cache-first fetch\r\n *\r\n * @param uri - Codex URI (e.g., codex://org/project/path/to/file.md)\r\n * @param options - Fetch options\r\n * @returns Promise resolving to fetch result\r\n *\r\n * @throws {CodexError} If URI format is invalid or fetch fails\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await client.fetch('codex://fractary/codex/docs/README.md');\r\n * console.log(result.content.toString());\r\n * ```\r\n */\r\n async fetch(uri: string, options?: FetchOptions): Promise<FetchResult> {\r\n // Dynamic import of SDK functions\r\n const { validateUri, resolveReference, CodexError } = await import('@fractary/codex');\r\n\r\n // Validate URI early\r\n if (!validateUri(uri)) {\r\n throw new CodexError(`Invalid codex URI: ${uri}`);\r\n }\r\n\r\n // Resolve URI to reference (with cache path)\r\n const resolved = resolveReference(uri);\r\n if (!resolved) {\r\n throw new CodexError(`Failed to resolve URI: ${uri}`);\r\n }\r\n\r\n try {\r\n // If bypassing cache, fetch directly from storage\r\n if (options?.bypassCache) {\r\n const result = await this.storage.fetch(resolved);\r\n return {\r\n content: result.content,\r\n fromCache: false,\r\n metadata: {\r\n fetchedAt: new Date().toISOString(),\r\n contentLength: result.size\r\n }\r\n };\r\n }\r\n\r\n // Use CacheManager.get() which handles cache-first fetch\r\n const result = await this.cache.get(resolved, {\r\n ttl: options?.ttl\r\n });\r\n\r\n return {\r\n content: result.content,\r\n fromCache: true, // CacheManager.get handles cache logic\r\n metadata: {\r\n contentLength: result.size\r\n }\r\n };\r\n } catch (error) {\r\n throw new CodexError(\r\n `Failed to fetch ${uri}: ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Invalidate cache entries\r\n *\r\n * @param pattern - Optional glob pattern to match entries\r\n * If not provided, clears all entries\r\n *\r\n * @example\r\n * ```typescript\r\n * // Clear all cache\r\n * await client.invalidateCache();\r\n *\r\n * // Clear specific URI\r\n * await client.invalidateCache('codex://fractary/codex/docs/README.md');\r\n * ```\r\n */\r\n async invalidateCache(pattern?: string): Promise<void> {\r\n if (pattern) {\r\n await this.cache.invalidate(pattern);\r\n } else {\r\n await this.cache.clear();\r\n }\r\n }\r\n\r\n /**\r\n * Get cache statistics\r\n *\r\n * @returns Promise resolving to cache stats\r\n *\r\n * @example\r\n * ```typescript\r\n * const stats = await client.getCacheStats();\r\n * console.log(`Cache entries: ${stats.totalEntries}`);\r\n * console.log(`Total size: ${stats.totalSize}`);\r\n * ```\r\n */\r\n async getCacheStats(): Promise<CacheStats> {\r\n return this.cache.getStats();\r\n }\r\n\r\n /**\r\n * Get the type registry\r\n *\r\n * Provides access to built-in and custom artifact types\r\n *\r\n * @returns TypeRegistry instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const registry = client.getTypeRegistry();\r\n * const types = registry.list();\r\n * ```\r\n */\r\n getTypeRegistry(): TypeRegistry {\r\n return this.types;\r\n }\r\n\r\n /**\r\n * Get the cache manager (for advanced operations)\r\n *\r\n * @returns CacheManager instance\r\n */\r\n getCacheManager(): CacheManager {\r\n return this.cache;\r\n }\r\n\r\n /**\r\n * Get the storage manager (for advanced operations)\r\n *\r\n * @returns StorageManager instance\r\n */\r\n getStorageManager(): StorageManager {\r\n return this.storage;\r\n }\r\n\r\n /**\r\n * Get the organization slug\r\n *\r\n * @returns Organization slug string\r\n */\r\n getOrganization(): string {\r\n return this.organization;\r\n }\r\n}\r\n\r\n// Re-export SDK error classes for convenience\r\nexport {\r\n CodexError,\r\n ConfigurationError,\r\n ValidationError,\r\n PermissionDeniedError\r\n} from '@fractary/codex';\r\n","/**\n * Codex Repository Utilities\n *\n * Handles cloning and updating the central codex repository for routing-aware sync.\n */\n\nimport * as path from 'path';\nimport * as os from 'os';\nimport * as fs from 'fs/promises';\nimport { spawn } from 'child_process';\nimport type { CodexYamlConfig } from '../config/config-types';\n\n/**\n * Execute a command using spawn (safer than exec)\n */\nfunction spawnAsync(command: string, args: string[], options: { cwd: string }): Promise<string> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n ...options,\n env: process.env,\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n child.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n child.on('error', (error) => {\n reject(error);\n });\n\n child.on('close', (code) => {\n if (code !== 0) {\n const error: any = new Error(stderr || `Command exited with code ${code}`);\n error.code = code;\n reject(error);\n } else {\n resolve(stdout);\n }\n });\n });\n}\n\n/**\n * Extended config interface with codex_repository field\n */\ninterface CodexConfigWithRepo extends CodexYamlConfig {\n codex_repository?: string;\n}\n\n/**\n * Sanitize a path component to prevent path traversal attacks\n * Removes dangerous sequences like ../ and path separators\n */\nfunction sanitizePathComponent(component: string): string {\n if (!component || typeof component !== 'string') {\n throw new Error('Path component must be a non-empty string');\n }\n\n // Remove path traversal sequences and path separators\n const sanitized = component\n .replace(/\\.\\./g, '')\n .replace(/[/\\\\]/g, '')\n .trim();\n\n if (!sanitized) {\n throw new Error(`Invalid path component: ${component}`);\n }\n\n return sanitized;\n}\n\n/**\n * Validate a GitHub organization or repository name\n * Ensures it contains only safe characters\n */\nfunction validateGitHubName(name: string, type: 'organization' | 'repository'): void {\n if (!name || typeof name !== 'string') {\n throw new Error(`GitHub ${type} name must be a non-empty string`);\n }\n\n // GitHub names can only contain alphanumeric characters, hyphens, underscores, and dots\n if (!/^[a-zA-Z0-9._-]+$/.test(name)) {\n throw new Error(`Invalid GitHub ${type} name: ${name}. Must contain only alphanumeric characters, hyphens, underscores, and dots.`);\n }\n\n // Additional checks\n if (name.startsWith('.') || name.startsWith('-')) {\n throw new Error(`GitHub ${type} name cannot start with a dot or hyphen: ${name}`);\n }\n}\n\n/**\n * Get the temporary directory path for codex clone\n * Includes process ID to prevent race conditions\n */\nexport function getTempCodexPath(config: CodexConfigWithRepo): string {\n const codexRepo = config.codex_repository || 'codex';\n\n // Sanitize path components to prevent path traversal\n const sanitizedOrg = sanitizePathComponent(config.organization);\n const sanitizedRepo = sanitizePathComponent(codexRepo);\n\n // Include process ID to prevent concurrent sync conflicts\n return path.join(\n os.tmpdir(),\n 'fractary-codex-clone',\n `${sanitizedOrg}-${sanitizedRepo}-${process.pid}`\n );\n}\n\n/**\n * Check if a directory is a valid git repository\n */\nexport async function isValidGitRepo(repoPath: string): Promise<boolean> {\n try {\n const gitDir = path.join(repoPath, '.git');\n const stats = await fs.stat(gitDir);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Construct the git repository URL from config\n */\nexport function getCodexRepoUrl(config: CodexConfigWithRepo): string {\n const codexRepo = config.codex_repository || 'codex';\n\n // Validate GitHub names to prevent URL injection\n validateGitHubName(config.organization, 'organization');\n validateGitHubName(codexRepo, 'repository');\n\n // Default to GitHub\n // Format: https://github.com/{org}/{repo}.git\n return `https://github.com/${config.organization}/${codexRepo}.git`;\n}\n\n/**\n * Execute a git command in a directory using spawn (safe from command injection)\n */\nasync function execGit(repoPath: string, args: string[]): Promise<string> {\n try {\n const stdout = await spawnAsync('git', args, {\n cwd: repoPath,\n });\n\n return stdout;\n } catch (error: any) {\n // Provide specific error messages based on error code\n if (error.code === 'ENOENT') {\n throw new Error(`Git command not found. Ensure git is installed and in PATH.`);\n }\n if (error.code === 'EACCES') {\n throw new Error(`Permission denied accessing repository at ${repoPath}`);\n }\n if (error.code === 128) {\n throw new Error(`Git authentication failed. Check your credentials and repository access.`);\n }\n // For other errors, include the original message\n throw error;\n }\n}\n\n/**\n * Clone a git repository using spawn (safe from command injection)\n */\nasync function gitClone(\n url: string,\n targetPath: string,\n options?: { branch?: string; depth?: number }\n): Promise<void> {\n // Ensure parent directory exists\n const parentDir = path.dirname(targetPath);\n await fs.mkdir(parentDir, { recursive: true });\n\n // Build args array (safe from command injection)\n const args = ['clone'];\n\n if (options?.depth) {\n // Validate depth is a positive integer\n if (!Number.isInteger(options.depth) || options.depth <= 0) {\n throw new Error(`Invalid depth parameter: ${options.depth}. Must be a positive integer.`);\n }\n args.push('--depth', String(options.depth));\n }\n\n if (options?.branch) {\n // Branch validation already done in gitCheckout, but validate here too\n if (!/^[\\w\\-./]+$/.test(options.branch)) {\n throw new Error(`Invalid branch name: ${options.branch}`);\n }\n args.push('--branch', options.branch);\n }\n\n // Add single-branch flag for performance\n args.push('--single-branch');\n\n args.push(url, targetPath);\n\n // Execute clone using spawn (parent directory is cwd)\n await spawnAsync('git', args, { cwd: parentDir });\n}\n\n/**\n * Fetch updates from remote\n */\nasync function gitFetch(repoPath: string, branch?: string): Promise<void> {\n // For shallow clones, fetch the specific branch if provided\n if (branch) {\n // Validate branch name\n if (!/^[\\w\\-./]+$/.test(branch)) {\n throw new Error(`Invalid branch name: ${branch}`);\n }\n await execGit(repoPath, ['fetch', 'origin', `${branch}:${branch}`]);\n } else {\n await execGit(repoPath, ['fetch', 'origin']);\n }\n}\n\n/**\n * Checkout a branch\n */\nasync function gitCheckout(repoPath: string, branch: string): Promise<void> {\n // Validate branch name to prevent command injection\n if (!/^[\\w\\-./]+$/.test(branch)) {\n throw new Error(`Invalid branch name: ${branch}`);\n }\n await execGit(repoPath, ['checkout', branch]);\n}\n\n/**\n * Pull latest changes\n */\nasync function gitPull(repoPath: string): Promise<void> {\n await execGit(repoPath, ['pull']);\n}\n\n/**\n * Ensure the codex repository is cloned and up-to-date\n *\n * This function will:\n * 1. Check if the repository already exists in temp directory\n * 2. If it exists and is valid, update it (fetch + checkout + pull)\n * 3. If it doesn't exist, clone it fresh (shallow clone for efficiency)\n * 4. Return the path to the cloned repository\n *\n * @param config - Codex configuration\n * @param options - Clone options\n * @returns Path to the cloned codex repository\n */\nexport async function ensureCodexCloned(\n config: CodexConfigWithRepo,\n options?: { force?: boolean; branch?: string }\n): Promise<string> {\n const tempPath = getTempCodexPath(config);\n const branch = options?.branch || 'main';\n\n // If already exists and not forcing a fresh clone, update it\n if (await isValidGitRepo(tempPath) && !options?.force) {\n try {\n await gitFetch(tempPath, branch);\n await gitCheckout(tempPath, branch);\n await gitPull(tempPath);\n return tempPath;\n } catch (error: any) {\n // If update fails, remove and clone fresh\n console.warn(`Failed to update existing clone: ${error.message}`);\n console.warn(`Removing and cloning fresh...`);\n await fs.rm(tempPath, { recursive: true, force: true });\n }\n }\n\n // Clone fresh\n const repoUrl = getCodexRepoUrl(config);\n\n // Remove existing directory if present\n try {\n await fs.rm(tempPath, { recursive: true, force: true });\n } catch (error: any) {\n // Log but don't fail - directory might not exist yet\n console.warn(`Could not remove existing directory ${tempPath}: ${error.message}`);\n }\n\n await gitClone(repoUrl, tempPath, {\n branch,\n depth: 1, // Shallow clone for efficiency\n });\n\n return tempPath;\n}\n","/**\n * Fractary Codex CLI - Command-line interface for knowledge management\n *\n * Pull-based document retrieval with codex:// URI scheme and intelligent caching.\n *\n * @see https://github.com/fractary/codex\n */\n\nimport { Command } from 'commander';\nimport { documentCommand } from './commands/document/index.js';\nimport { configCommand } from './commands/config/index.js';\nimport { cacheCommand } from './commands/cache/index.js';\nimport { syncCommand } from './commands/sync.js';\nimport { typesCommand } from './commands/types/index.js';\n\n/**\n * Create and configure the CLI\n */\nfunction createCLI(): Command {\n const program = new Command('fractary-codex');\n\n program\n .description('Centralized knowledge management and distribution for AI agents')\n .version('0.3.0');\n\n // Core commands (v3.0 - noun-verb pattern)\n program.addCommand(documentCommand()); // Document operations (fetch)\n program.addCommand(configCommand()); // Configuration operations (init, migrate)\n program.addCommand(cacheCommand()); // Cache management (list, clear, stats, health)\n program.addCommand(syncCommand()); // Bidirectional sync\n program.addCommand(typesCommand()); // Type registry (list, show, add, remove)\n\n return program;\n}\n\n/**\n * Main execution\n */\nasync function main() {\n try {\n const program = createCLI();\n await program.parseAsync(process.argv);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n}\n\n// Run the CLI\nmain();\n","/**\r\n * Document command group (v3.0)\r\n *\r\n * Manages document operations with subcommands:\r\n * - fetch: Retrieve documents by URI\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { fetchCommand } from './fetch.js';\r\n\r\nexport function documentCommand(): Command {\r\n const cmd = new Command('document');\r\n\r\n cmd\r\n .description('Manage document operations');\r\n\r\n // Register subcommands\r\n cmd.addCommand(fetchCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Fetch document command (v3.0)\r\n *\r\n * Retrieves documents by codex:// URI reference using SDK's CodexClient:\r\n * - Cache-first retrieval for fast access\r\n * - TTL-based cache invalidation\r\n * - Multiple storage provider support\r\n * - Automatic URI validation and resolution\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as crypto from 'crypto';\r\nimport * as fs from 'fs/promises';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Calculate content hash\r\n */\r\nfunction hashContent(content: Buffer): string {\r\n return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);\r\n}\r\n\r\nexport function fetchCommand(): Command {\r\n const cmd = new Command('fetch');\r\n\r\n cmd\r\n .description('Fetch a document by codex:// URI reference')\r\n .argument('<uri>', 'Codex URI (e.g., codex://org/project/docs/file.md)')\r\n .option('--bypass-cache', 'Skip cache and fetch directly from source')\r\n .option('--ttl <seconds>', 'Override default TTL (in seconds)', parseInt)\r\n .option('--json', 'Output as JSON with metadata')\r\n .option('--output <file>', 'Write content to file instead of stdout')\r\n .action(async (uri: string, options) => {\r\n try {\r\n // Dynamically import validateUri to avoid loading SDK at module time\r\n const { validateUri } = await import('@fractary/codex');\r\n\r\n // Validate URI format\r\n if (!validateUri(uri)) {\r\n console.error(chalk.red('Error: Invalid URI format'));\r\n console.log(chalk.dim('Expected: codex://org/project/path/to/file.md'));\r\n console.log(chalk.dim('Example: codex://fractary/codex/docs/api.md'));\r\n process.exit(1);\r\n }\r\n\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Show fetching message (unless JSON output)\r\n if (!options.json && !options.bypassCache) {\r\n console.error(chalk.dim(`Fetching ${uri}...`));\r\n }\r\n\r\n // Fetch using CodexClient\r\n const result = await client.fetch(uri, {\r\n bypassCache: options.bypassCache,\r\n ttl: options.ttl\r\n });\r\n\r\n // Output handling\r\n if (options.json) {\r\n const output = {\r\n uri,\r\n content: result.content.toString('utf-8'),\r\n metadata: {\r\n fromCache: result.fromCache,\r\n fetchedAt: result.metadata?.fetchedAt,\r\n expiresAt: result.metadata?.expiresAt,\r\n contentLength: result.metadata?.contentLength || result.content.length,\r\n contentHash: hashContent(result.content)\r\n }\r\n };\r\n console.log(JSON.stringify(output, null, 2));\r\n } else if (options.output) {\r\n // Write to file\r\n await fs.writeFile(options.output, result.content);\r\n console.log(chalk.green('✓'), `Written to ${options.output}`);\r\n console.log(chalk.dim(` Size: ${result.content.length} bytes`));\r\n if (result.fromCache) {\r\n console.log(chalk.dim(' Source: cache'));\r\n } else {\r\n console.log(chalk.dim(' Source: storage'));\r\n }\r\n } else {\r\n // Print to stdout\r\n if (result.fromCache && !options.bypassCache) {\r\n console.error(chalk.green('✓'), chalk.dim('from cache\\n'));\r\n } else {\r\n console.error(chalk.green('✓'), chalk.dim('fetched\\n'));\r\n }\r\n console.log(result.content.toString('utf-8'));\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n\r\n // Provide helpful error messages\r\n if (error.message.includes('Failed to load configuration')) {\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a configuration.'));\r\n } else if (error.message.includes('GITHUB_TOKEN')) {\r\n console.log(chalk.dim('\\nSet your GitHub token: export GITHUB_TOKEN=\"your_token\"'));\r\n } else if (error.message.includes('not found') || error.message.includes('404')) {\r\n console.log(chalk.dim('\\nThe document may not exist or you may not have access.'));\r\n console.log(chalk.dim('Check the URI and ensure your storage providers are configured correctly.'));\r\n }\r\n\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Singleton getter for CodexClient\r\n *\r\n * Provides lazy initialization of the CodexClient instance.\r\n * This ensures we only create one client instance across all command invocations,\r\n * avoiding repeated configuration loading and manager initialization.\r\n *\r\n * Uses dynamic imports to avoid loading @fractary/codex SDK at module load time,\r\n * which prevents CLI hangs when running simple commands like --help.\r\n *\r\n * @example\r\n * ```typescript\r\n * import { getClient } from './get-client';\r\n *\r\n * export async function fetchCommand(uri: string) {\r\n * const client = await getClient();\r\n * const result = await client.fetch(uri);\r\n * console.log(result.content.toString());\r\n * }\r\n * ```\r\n */\r\n\r\n// Import types only\r\nimport type { CodexClient, CodexClientOptions } from './codex-client';\r\n\r\n/**\r\n * Singleton instance\r\n */\r\nlet clientInstance: CodexClient | null = null;\r\n\r\n/**\r\n * Get the CodexClient singleton instance\r\n *\r\n * On first call, creates and initializes the client.\r\n * Subsequent calls return the same instance.\r\n *\r\n * @param options - Optional configuration (only used on first call)\r\n * @returns Promise resolving to CodexClient instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const client = await getClient();\r\n * const stats = await client.getCacheStats();\r\n * ```\r\n */\r\nexport async function getClient(options?: CodexClientOptions): Promise<CodexClient> {\r\n if (!clientInstance) {\r\n // Dynamic import to avoid loading SDK at module time\r\n const { CodexClient } = await import('./codex-client');\r\n clientInstance = await CodexClient.create(options);\r\n }\r\n return clientInstance;\r\n}\r\n\r\n/**\r\n * Reset the singleton instance\r\n *\r\n * Useful for testing or when configuration changes require a fresh client.\r\n *\r\n * @example\r\n * ```typescript\r\n * // After changing configuration\r\n * resetClient();\r\n * const client = await getClient(); // Will create new instance\r\n * ```\r\n */\r\nexport function resetClient(): void {\r\n clientInstance = null;\r\n}\r\n\r\n/**\r\n * Check if client has been initialized\r\n *\r\n * @returns true if client instance exists\r\n */\r\nexport function isClientInitialized(): boolean {\r\n return clientInstance !== null;\r\n}\r\n","/**\r\n * Config command group (v3.0)\r\n *\r\n * Manages configuration operations with subcommands:\r\n * - init: Initialize configuration\r\n * - migrate: Migrate configuration from v2.0 to v3.0\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { initCommand } from './init.js';\r\nimport { migrateCommand } from './migrate.js';\r\n\r\nexport function configCommand(): Command {\r\n const cmd = new Command('config');\r\n\r\n cmd\r\n .description('Manage configuration');\r\n\r\n // Register subcommands\r\n cmd.addCommand(initCommand());\r\n cmd.addCommand(migrateCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Initialize Codex project command (v3.0 YAML)\r\n *\r\n * Creates .fractary/codex/config.yaml configuration with:\r\n * - Organization detection from git remote\r\n * - Multi-provider storage configuration\r\n * - Cache configuration\r\n * - Type registry setup\r\n * - Optional MCP server registration\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs/promises';\r\nimport { getDefaultYamlConfig, writeYamlConfig } from '../../config/migrate-config';\r\n\r\n/**\r\n * Extract org from git remote URL\r\n */\r\nasync function getOrgFromGitRemote(): Promise<string | null> {\r\n try {\r\n const { execSync } = require('child_process');\r\n const remote = execSync('git remote get-url origin 2>/dev/null', { encoding: 'utf-8' }).trim();\r\n\r\n // Parse GitHub URL: git@github.com:org/repo.git or https://github.com/org/repo.git\r\n const sshMatch = remote.match(/git@github\\.com:([^/]+)\\//);\r\n const httpsMatch = remote.match(/github\\.com\\/([^/]+)\\//);\r\n\r\n return sshMatch?.[1] || httpsMatch?.[1] || null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Check if file exists\r\n */\r\nasync function fileExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function initCommand(): Command {\r\n const cmd = new Command('init');\r\n\r\n cmd\r\n .description('Initialize Codex v3.0 with YAML configuration')\r\n .option('--org <slug>', 'Organization slug (e.g., \"fractary\")')\r\n .option('--mcp', 'Enable MCP server registration')\r\n .option('--force', 'Overwrite existing configuration')\r\n .action(async (options) => {\r\n try {\r\n console.log(chalk.blue('Initializing Codex v3.0 (YAML format)...\\n'));\r\n\r\n // Resolve organization\r\n let org = options.org;\r\n\r\n if (!org) {\r\n // Try git remote first\r\n org = await getOrgFromGitRemote();\r\n }\r\n\r\n if (!org) {\r\n // Try SDK's resolveOrganization (dynamic import)\r\n try {\r\n const { resolveOrganization } = await import('@fractary/codex');\r\n org = resolveOrganization({\r\n repoName: path.basename(process.cwd())\r\n });\r\n } catch {\r\n // SDK method failed, continue\r\n }\r\n }\r\n\r\n if (!org) {\r\n // Default fallback\r\n org = path.basename(process.cwd()).split('-')[0] || 'default';\r\n console.log(chalk.yellow(`⚠ Could not detect organization, using: ${org}`));\r\n console.log(chalk.dim(' Use --org <slug> to specify explicitly\\n'));\r\n } else {\r\n console.log(chalk.dim(`Organization: ${chalk.cyan(org)}\\n`));\r\n }\r\n\r\n // Config path (v4.0 standard)\r\n const configDir = path.join(process.cwd(), '.fractary', 'codex');\r\n const configPath = path.join(configDir, 'config.yaml');\r\n const configExists = await fileExists(configPath);\r\n\r\n if (configExists && !options.force) {\r\n console.log(chalk.yellow('⚠ Configuration already exists at .fractary/codex/config.yaml'));\r\n console.log(chalk.dim('Use --force to overwrite'));\r\n process.exit(1);\r\n }\r\n\r\n // Create directory structure\r\n console.log('Creating directory structure...');\r\n\r\n const dirs = [\r\n '.fractary/codex',\r\n '.fractary/codex/cache'\r\n ];\r\n\r\n for (const dir of dirs) {\r\n await fs.mkdir(path.join(process.cwd(), dir), { recursive: true });\r\n console.log(chalk.green('✓'), chalk.dim(dir + '/'));\r\n }\r\n\r\n // Create configuration\r\n console.log('\\nCreating YAML configuration...');\r\n\r\n const config = getDefaultYamlConfig(org);\r\n\r\n // Enable MCP if requested\r\n if (options.mcp && config.mcp) {\r\n config.mcp.enabled = true;\r\n }\r\n\r\n // Write YAML config\r\n await writeYamlConfig(config, configPath);\r\n console.log(chalk.green('✓'), chalk.dim('.fractary/codex/config.yaml'));\r\n\r\n // Success message\r\n console.log(chalk.green('\\n✓ Codex v4.0 initialized successfully!\\n'));\r\n\r\n console.log(chalk.bold('Configuration:'));\r\n console.log(chalk.dim(` Organization: ${org}`));\r\n console.log(chalk.dim(` Cache: .fractary/codex/cache/`));\r\n console.log(chalk.dim(` Config: .fractary/codex/config.yaml`));\r\n if (options.mcp) {\r\n console.log(chalk.dim(` MCP Server: Enabled (port 3000)`));\r\n }\r\n\r\n console.log(chalk.bold('\\nStorage providers configured:'));\r\n console.log(chalk.dim(' - Local filesystem (./knowledge)'));\r\n console.log(chalk.dim(' - GitHub (requires GITHUB_TOKEN)'));\r\n console.log(chalk.dim(' - HTTP endpoint'));\r\n\r\n console.log(chalk.bold('\\nNext steps:'));\r\n console.log(chalk.dim(' 1. Set your GitHub token: export GITHUB_TOKEN=\"your_token\"'));\r\n console.log(chalk.dim(' 2. Edit .fractary/codex/config.yaml to configure storage providers'));\r\n console.log(chalk.dim(' 3. Fetch a document: fractary codex fetch codex://org/project/path'));\r\n console.log(chalk.dim(' 4. Check cache: fractary codex cache list'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Migrate command (v3.0)\r\n *\r\n * Migrates legacy v2.x JSON configurations to v3.0 YAML format:\r\n * - Detects legacy config at .fractary/plugins/codex/config.json\r\n * - Creates backup of old config\r\n * - Transforms to v3.0 YAML format\r\n * - Writes to .fractary/codex/config.yaml\r\n * - Validates migration result\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs/promises';\r\nimport {\r\n migrateConfig,\r\n writeYamlConfig,\r\n type MigrationResult\r\n} from '../../config/migrate-config';\r\n\r\n/**\r\n * Check if file exists\r\n */\r\nasync function fileExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Read file content\r\n */\r\nasync function readFileContent(filePath: string): Promise<string> {\r\n return fs.readFile(filePath, 'utf-8');\r\n}\r\n\r\nexport function migrateCommand(): Command {\r\n const cmd = new Command('migrate');\r\n\r\n cmd\r\n .description('Migrate legacy JSON configuration to v3.0 YAML format')\r\n .option('--dry-run', 'Show migration plan without executing')\r\n .option('--no-backup', 'Skip creating backup of old config')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n const legacyConfigPath = path.join(process.cwd(), '.fractary', 'plugins', 'codex', 'config.json');\r\n const newConfigPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n\r\n // Check if legacy config exists\r\n if (!await fileExists(legacyConfigPath)) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n status: 'no_config',\r\n message: 'No legacy configuration file found',\r\n path: legacyConfigPath\r\n }));\r\n } else {\r\n console.log(chalk.yellow('⚠ No legacy configuration file found.'));\r\n console.log(chalk.dim(` Expected: ${legacyConfigPath}`));\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a new v3.0 YAML configuration.'));\r\n }\r\n return;\r\n }\r\n\r\n // Check if new YAML config already exists\r\n if (await fileExists(newConfigPath) && !options.dryRun) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n status: 'already_migrated',\r\n message: 'YAML configuration already exists',\r\n path: newConfigPath\r\n }));\r\n } else {\r\n console.log(chalk.yellow('⚠ YAML configuration already exists.'));\r\n console.log(chalk.dim(` Path: ${newConfigPath}`));\r\n console.log(chalk.dim('\\nUse \"fractary codex init --force\" to recreate.'));\r\n }\r\n return;\r\n }\r\n\r\n // Load and validate legacy config\r\n const legacyContent = await readFileContent(legacyConfigPath);\r\n let legacyConfig: any;\r\n\r\n try {\r\n legacyConfig = JSON.parse(legacyContent);\r\n } catch {\r\n console.error(chalk.red('Error:'), 'Invalid JSON in legacy config file.');\r\n process.exit(1);\r\n }\r\n\r\n if (!options.json && !options.dryRun) {\r\n console.log(chalk.blue('Migrating Codex configuration to v3.0 YAML format...\\n'));\r\n }\r\n\r\n // Perform migration using utility\r\n const migrationResult: MigrationResult = await migrateConfig(\r\n legacyConfigPath,\r\n {\r\n createBackup: options.backup !== false,\r\n backupSuffix: new Date().toISOString().replace(/[:.]/g, '-')\r\n }\r\n );\r\n\r\n // Display migration plan\r\n if (!options.json) {\r\n console.log(chalk.bold('Legacy Configuration:'));\r\n console.log(chalk.dim(` Path: ${legacyConfigPath}`));\r\n console.log(chalk.dim(` Organization: ${legacyConfig.organization || legacyConfig.organizationSlug || 'unknown'}`));\r\n console.log('');\r\n\r\n console.log(chalk.bold('Migration Changes:'));\r\n console.log(chalk.green(' + Format: JSON → YAML'));\r\n console.log(chalk.green(' + Location: .fractary/plugins/codex/ → .fractary/'));\r\n console.log(chalk.green(' + File: config.json → codex.yaml'));\r\n console.log(chalk.green(' + Storage: Multi-provider configuration'));\r\n console.log(chalk.green(' + Cache: Modern cache management'));\r\n console.log(chalk.green(' + Types: Custom type registry'));\r\n\r\n if (migrationResult.warnings.length > 0) {\r\n console.log('');\r\n console.log(chalk.yellow('Warnings:'));\r\n for (const warning of migrationResult.warnings) {\r\n console.log(chalk.yellow(' ⚠'), chalk.dim(warning));\r\n }\r\n }\r\n\r\n console.log('');\r\n\r\n if (options.dryRun) {\r\n console.log(chalk.blue('Dry run - no changes made.'));\r\n console.log(chalk.dim('Run without --dry-run to execute migration.'));\r\n return;\r\n }\r\n }\r\n\r\n // JSON output for dry run\r\n if (options.json) {\r\n const output: any = {\r\n status: options.dryRun ? 'migration_ready' : 'migrated',\r\n dryRun: options.dryRun || false,\r\n legacyConfig: {\r\n path: legacyConfigPath,\r\n organization: legacyConfig.organization || legacyConfig.organizationSlug\r\n },\r\n newConfig: {\r\n path: newConfigPath,\r\n organization: migrationResult.yamlConfig.organization\r\n },\r\n warnings: migrationResult.warnings,\r\n backupPath: migrationResult.backupPath\r\n };\r\n\r\n console.log(JSON.stringify(output, null, 2));\r\n\r\n if (options.dryRun) {\r\n return;\r\n }\r\n }\r\n\r\n // Write new YAML config\r\n if (!options.dryRun) {\r\n await writeYamlConfig(migrationResult.yamlConfig, newConfigPath);\r\n\r\n // Create cache directory\r\n const cacheDir = path.join(process.cwd(), '.codex-cache');\r\n await fs.mkdir(cacheDir, { recursive: true });\r\n\r\n if (!options.json) {\r\n console.log(chalk.green('✓'), 'YAML configuration created');\r\n console.log(chalk.green('✓'), 'Cache directory initialized');\r\n if (migrationResult.backupPath) {\r\n console.log(chalk.green('✓'), 'Legacy config backed up');\r\n }\r\n\r\n console.log('');\r\n console.log(chalk.bold('New Configuration:'));\r\n console.log(chalk.dim(` Path: ${newConfigPath}`));\r\n console.log(chalk.dim(` Organization: ${migrationResult.yamlConfig.organization}`));\r\n console.log(chalk.dim(` Cache: ${migrationResult.yamlConfig.cacheDir || '.codex-cache'}`));\r\n console.log(chalk.dim(` Storage Providers: ${migrationResult.yamlConfig.storage?.length || 0}`));\r\n\r\n console.log('');\r\n console.log(chalk.bold('Next Steps:'));\r\n console.log(chalk.dim(' 1. Review the new configuration: .fractary/codex/config.yaml'));\r\n console.log(chalk.dim(' 2. Set your GitHub token: export GITHUB_TOKEN=\"your_token\"'));\r\n console.log(chalk.dim(' 3. Test fetching: fractary codex fetch codex://org/project/path'));\r\n\r\n if (migrationResult.backupPath) {\r\n console.log('');\r\n console.log(chalk.dim(`Backup saved: ${path.basename(migrationResult.backupPath)}`));\r\n }\r\n }\r\n }\r\n\r\n } catch (error: any) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n status: 'error',\r\n message: error.message\r\n }));\r\n } else {\r\n console.error(chalk.red('Error:'), error.message);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Cache command group (v3.0)\r\n *\r\n * Manages the codex document cache with subcommands:\r\n * - list: View cached entries\r\n * - clear: Remove cache entries\r\n * - stats: Display cache statistics\r\n * - health: Diagnostics and auto-repair\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { cacheListCommand } from './list';\r\nimport { cacheClearCommand } from './clear';\r\nimport { cacheStatsCommand } from './stats';\r\nimport { healthCommand } from './health';\r\n\r\nexport function cacheCommand(): Command {\r\n const cmd = new Command('cache');\r\n\r\n cmd\r\n .description('Manage the codex document cache');\r\n\r\n // Register subcommands\r\n cmd.addCommand(cacheListCommand());\r\n cmd.addCommand(cacheClearCommand());\r\n cmd.addCommand(cacheStatsCommand());\r\n cmd.addCommand(healthCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Cache list command (v3.0)\r\n *\r\n * Lists cache information using SDK's CacheManager\r\n *\r\n * Note: The SDK's CacheManager doesn't expose individual cache entries.\r\n * Use 'cache stats' for detailed cache statistics.\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nexport function cacheListCommand(): Command {\r\n const cmd = new Command('list');\r\n\r\n cmd\r\n .description('List cache information')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Get cache stats from SDK\r\n const stats = await client.getCacheStats();\r\n\r\n if (stats.entryCount === 0) {\r\n if (options.json) {\r\n console.log(JSON.stringify({ entries: 0, message: 'Cache is empty' }));\r\n } else {\r\n console.log(chalk.yellow('Cache is empty.'));\r\n console.log(chalk.dim('Fetch some documents to populate the cache.'));\r\n }\r\n return;\r\n }\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n entryCount: stats.entryCount,\r\n totalSize: stats.totalSize,\r\n freshCount: stats.freshCount,\r\n staleCount: stats.staleCount,\r\n expiredCount: stats.expiredCount\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display cache overview\r\n console.log(chalk.bold('Cache Overview\\n'));\r\n\r\n console.log(chalk.bold('Entries:'));\r\n console.log(` Total: ${chalk.cyan(stats.entryCount.toString())} entries`);\r\n console.log(` Fresh: ${chalk.green(stats.freshCount.toString())} entries`);\r\n console.log(` Stale: ${stats.staleCount > 0 ? chalk.yellow(stats.staleCount.toString()) : chalk.dim('0')} entries`);\r\n console.log(` Expired: ${stats.expiredCount > 0 ? chalk.red(stats.expiredCount.toString()) : chalk.dim('0')} entries`);\r\n console.log('');\r\n\r\n console.log(chalk.bold('Storage:'));\r\n console.log(` Total size: ${chalk.cyan(formatSize(stats.totalSize))}`);\r\n console.log('');\r\n\r\n // Health indicator\r\n const healthPercent = stats.entryCount > 0 ? (stats.freshCount / stats.entryCount) * 100 : 100;\r\n const healthColor = healthPercent > 80 ? chalk.green : healthPercent > 50 ? chalk.yellow : chalk.red;\r\n console.log(`Cache health: ${healthColor(`${healthPercent.toFixed(0)}% fresh`)}`);\r\n console.log('');\r\n\r\n console.log(chalk.dim('Note: Individual cache entries are managed by the SDK.'));\r\n console.log(chalk.dim('Use \"fractary codex cache stats\" for detailed statistics.'));\r\n console.log(chalk.dim('Use \"fractary codex cache clear\" to clear cache entries.'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Cache clear command (v3.0)\r\n *\r\n * Clears cache entries using SDK's CacheManager\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\nexport function cacheClearCommand(): Command {\r\n const cmd = new Command('clear');\r\n\r\n cmd\r\n .description('Clear cache entries')\r\n .option('--all', 'Clear entire cache')\r\n .option('--pattern <glob>', 'Clear entries matching URI pattern (e.g., \"codex://fractary/*\")')\r\n .option('--dry-run', 'Show what would be cleared without actually clearing')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Get stats before clearing (for reporting)\r\n const statsBefore = await client.getCacheStats();\r\n\r\n if (statsBefore.entryCount === 0) {\r\n console.log(chalk.yellow('Cache is already empty. Nothing to clear.'));\r\n return;\r\n }\r\n\r\n // Determine what to clear\r\n let pattern: string | undefined;\r\n\r\n if (options.all) {\r\n pattern = undefined; // Clear all\r\n } else if (options.pattern) {\r\n pattern = options.pattern;\r\n } else {\r\n console.log(chalk.yellow('Please specify what to clear:'));\r\n console.log(chalk.dim(' --all Clear entire cache'));\r\n console.log(chalk.dim(' --pattern Clear entries matching pattern (e.g., \"codex://fractary/*\")'));\r\n console.log('');\r\n console.log(chalk.dim('Examples:'));\r\n console.log(chalk.dim(' fractary codex cache clear --all'));\r\n console.log(chalk.dim(' fractary codex cache clear --pattern \"codex://fractary/cli/*\"'));\r\n return;\r\n }\r\n\r\n if (options.dryRun) {\r\n console.log(chalk.blue('Dry run - would clear:\\n'));\r\n if (pattern) {\r\n console.log(chalk.dim(` Pattern: ${pattern}`));\r\n console.log(chalk.dim(` This would invalidate matching cache entries`));\r\n } else {\r\n console.log(chalk.dim(` All cache entries (${statsBefore.entryCount} entries)`));\r\n }\r\n console.log(chalk.dim(`\\nTotal size: ${formatSize(statsBefore.totalSize)}`));\r\n return;\r\n }\r\n\r\n // Perform invalidation\r\n if (pattern) {\r\n console.log(chalk.blue(`Clearing cache entries matching pattern: ${pattern}\\n`));\r\n await client.invalidateCache(pattern);\r\n } else {\r\n console.log(chalk.blue(`Clearing entire cache (${statsBefore.entryCount} entries)...\\n`));\r\n await client.invalidateCache();\r\n }\r\n\r\n // Get stats after clearing\r\n const statsAfter = await client.getCacheStats();\r\n const entriesCleared = statsBefore.entryCount - statsAfter.entryCount;\r\n const sizeFreed = statsBefore.totalSize - statsAfter.totalSize;\r\n\r\n // Summary\r\n console.log(chalk.green(`✓ Cleared ${entriesCleared} entries (${formatSize(sizeFreed)} freed)`));\r\n\r\n if (statsAfter.entryCount > 0) {\r\n console.log(chalk.dim(` Remaining: ${statsAfter.entryCount} entries (${formatSize(statsAfter.totalSize)})`));\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n","/**\r\n * Cache stats command (v3.0)\r\n *\r\n * Display cache statistics using SDK's CacheManager\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nexport function cacheStatsCommand(): Command {\r\n const cmd = new Command('stats');\r\n\r\n cmd\r\n .description('Display cache statistics')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Get cache stats from SDK\r\n const stats = await client.getCacheStats();\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify(stats, null, 2));\r\n return;\r\n }\r\n\r\n // Display formatted output\r\n console.log(chalk.bold('Cache Statistics\\n'));\r\n\r\n console.log(chalk.bold('Overview'));\r\n console.log(` Total entries: ${chalk.cyan(stats.entryCount.toString())}`);\r\n console.log(` Total size: ${chalk.cyan(formatSize(stats.totalSize))}`);\r\n console.log(` Fresh entries: ${chalk.green(stats.freshCount.toString())}`);\r\n console.log(` Stale entries: ${stats.staleCount > 0 ? chalk.yellow(stats.staleCount.toString()) : chalk.dim('0')}`);\r\n console.log(` Expired entries: ${stats.expiredCount > 0 ? chalk.red(stats.expiredCount.toString()) : chalk.dim('0')}`);\r\n console.log('');\r\n\r\n // Health indicator based on fresh vs total ratio\r\n const healthPercent = stats.entryCount > 0 ? (stats.freshCount / stats.entryCount) * 100 : 100;\r\n const healthColor = healthPercent > 80 ? chalk.green : healthPercent > 50 ? chalk.yellow : chalk.red;\r\n console.log(`Cache health: ${healthColor(`${healthPercent.toFixed(0)}% fresh`)}`);\r\n\r\n if (stats.expiredCount > 0) {\r\n console.log(chalk.dim('\\nRun \"fractary codex cache clear --pattern <pattern>\" to clean up entries.'));\r\n }\r\n\r\n if (stats.entryCount === 0) {\r\n console.log(chalk.dim('\\nNo cached entries. Fetch some documents to populate the cache.'));\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Health command (v3.0)\r\n *\r\n * Comprehensive diagnostics for codex SDK setup:\r\n * - YAML configuration validation\r\n * - CodexClient initialization\r\n * - Cache health via CacheManager\r\n * - Storage provider connectivity\r\n * - Type registry validation\r\n * - Legacy configuration detection\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs/promises';\r\nimport { getClient } from '../../client/get-client';\r\nimport { readYamlConfig } from '../../config/migrate-config';\r\n\r\ninterface HealthCheck {\r\n name: string;\r\n status: 'pass' | 'warn' | 'fail';\r\n message: string;\r\n details?: string;\r\n}\r\n\r\n/**\r\n * Check if file exists\r\n */\r\nasync function fileExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Check YAML configuration\r\n */\r\nasync function checkConfiguration(): Promise<HealthCheck> {\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n const legacyConfigPath = path.join(process.cwd(), '.fractary', 'plugins', 'codex', 'config.json');\r\n\r\n try {\r\n // Check for YAML config\r\n if (!await fileExists(configPath)) {\r\n // Check for legacy config\r\n if (await fileExists(legacyConfigPath)) {\r\n return {\r\n name: 'Configuration',\r\n status: 'warn',\r\n message: 'Legacy JSON configuration detected',\r\n details: 'Run \"fractary codex migrate\" to upgrade to YAML format'\r\n };\r\n }\r\n\r\n return {\r\n name: 'Configuration',\r\n status: 'fail',\r\n message: 'No configuration found',\r\n details: 'Run \"fractary codex init\" to create configuration'\r\n };\r\n }\r\n\r\n // Validate YAML config\r\n const config = await readYamlConfig(configPath);\r\n\r\n if (!config.organization) {\r\n return {\r\n name: 'Configuration',\r\n status: 'warn',\r\n message: 'No organization configured',\r\n details: 'Organization slug is required'\r\n };\r\n }\r\n\r\n // Check storage providers\r\n const providerCount = config.storage?.length || 0;\r\n if (providerCount === 0) {\r\n return {\r\n name: 'Configuration',\r\n status: 'warn',\r\n message: 'No storage providers configured',\r\n details: 'At least one storage provider is recommended'\r\n };\r\n }\r\n\r\n return {\r\n name: 'Configuration',\r\n status: 'pass',\r\n message: 'Valid YAML configuration',\r\n details: `Organization: ${config.organization}, ${providerCount} storage provider(s)`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Configuration',\r\n status: 'fail',\r\n message: 'Invalid configuration',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check SDK client initialization\r\n */\r\nasync function checkSDKClient(): Promise<HealthCheck> {\r\n try {\r\n const client = await getClient();\r\n const organization = client.getOrganization();\r\n\r\n return {\r\n name: 'SDK Client',\r\n status: 'pass',\r\n message: 'CodexClient initialized successfully',\r\n details: `Organization: ${organization}`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'SDK Client',\r\n status: 'fail',\r\n message: 'Failed to initialize CodexClient',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check cache health\r\n */\r\nasync function checkCache(): Promise<HealthCheck> {\r\n try {\r\n const client = await getClient();\r\n const stats = await client.getCacheStats();\r\n\r\n if (stats.entryCount === 0) {\r\n return {\r\n name: 'Cache',\r\n status: 'warn',\r\n message: 'Cache is empty',\r\n details: 'Fetch some documents to populate cache'\r\n };\r\n }\r\n\r\n const healthPercent = stats.entryCount > 0 ? (stats.freshCount / stats.entryCount) * 100 : 100;\r\n\r\n if (healthPercent < 50) {\r\n return {\r\n name: 'Cache',\r\n status: 'warn',\r\n message: `${stats.entryCount} entries (${healthPercent.toFixed(0)}% fresh)`,\r\n details: `${stats.expiredCount} expired, ${stats.staleCount} stale`\r\n };\r\n }\r\n\r\n return {\r\n name: 'Cache',\r\n status: 'pass',\r\n message: `${stats.entryCount} entries (${healthPercent.toFixed(0)}% fresh)`,\r\n details: `${formatSize(stats.totalSize)} total`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Cache',\r\n status: 'fail',\r\n message: 'Cache check failed',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check storage providers\r\n */\r\nasync function checkStorage(): Promise<HealthCheck> {\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n\r\n try {\r\n const config = await readYamlConfig(configPath);\r\n const providers = config.storage || [];\r\n\r\n if (providers.length === 0) {\r\n return {\r\n name: 'Storage',\r\n status: 'warn',\r\n message: 'No storage providers configured',\r\n details: 'Configure at least one provider in .fractary/codex/config.yaml'\r\n };\r\n }\r\n\r\n const providerTypes = providers.map(p => p.type).join(', ');\r\n const hasGitHub = providers.some(p => p.type === 'github');\r\n\r\n if (hasGitHub && !process.env.GITHUB_TOKEN) {\r\n return {\r\n name: 'Storage',\r\n status: 'warn',\r\n message: `${providers.length} provider(s): ${providerTypes}`,\r\n details: 'GITHUB_TOKEN not set (required for GitHub provider)'\r\n };\r\n }\r\n\r\n return {\r\n name: 'Storage',\r\n status: 'pass',\r\n message: `${providers.length} provider(s): ${providerTypes}`,\r\n details: 'All configured providers available'\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Storage',\r\n status: 'fail',\r\n message: 'Storage check failed',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check type registry\r\n */\r\nasync function checkTypes(): Promise<HealthCheck> {\r\n try {\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n const allTypes = registry.list();\r\n\r\n const builtinCount = allTypes.filter(t => registry.isBuiltIn(t.name)).length;\r\n const customCount = allTypes.length - builtinCount;\r\n\r\n return {\r\n name: 'Type Registry',\r\n status: 'pass',\r\n message: `${allTypes.length} types registered`,\r\n details: `${builtinCount} built-in, ${customCount} custom`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Type Registry',\r\n status: 'fail',\r\n message: 'Type registry check failed',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nexport function healthCommand(): Command {\r\n const cmd = new Command('health');\r\n\r\n cmd\r\n .description('Run diagnostics on codex setup')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n // Run all health checks\r\n const checks: HealthCheck[] = [];\r\n\r\n checks.push(await checkConfiguration());\r\n checks.push(await checkSDKClient());\r\n checks.push(await checkCache());\r\n checks.push(await checkStorage());\r\n checks.push(await checkTypes());\r\n\r\n // Count results\r\n const passed = checks.filter(c => c.status === 'pass').length;\r\n const warned = checks.filter(c => c.status === 'warn').length;\r\n const failed = checks.filter(c => c.status === 'fail').length;\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n summary: {\r\n total: checks.length,\r\n passed,\r\n warned,\r\n failed,\r\n healthy: failed === 0\r\n },\r\n checks\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display results\r\n console.log(chalk.bold('Codex Health Check\\n'));\r\n\r\n for (const check of checks) {\r\n const icon = check.status === 'pass' ? chalk.green('✓') :\r\n check.status === 'warn' ? chalk.yellow('⚠') :\r\n chalk.red('✗');\r\n\r\n const statusColor = check.status === 'pass' ? chalk.green :\r\n check.status === 'warn' ? chalk.yellow :\r\n chalk.red;\r\n\r\n console.log(`${icon} ${chalk.bold(check.name)}`);\r\n console.log(` ${statusColor(check.message)}`);\r\n if (check.details) {\r\n console.log(` ${chalk.dim(check.details)}`);\r\n }\r\n console.log('');\r\n }\r\n\r\n // Summary\r\n console.log(chalk.dim('─'.repeat(60)));\r\n\r\n const overallStatus = failed > 0 ? chalk.red('UNHEALTHY') :\r\n warned > 0 ? chalk.yellow('DEGRADED') :\r\n chalk.green('HEALTHY');\r\n\r\n console.log(`Status: ${overallStatus}`);\r\n console.log(chalk.dim(`${passed} passed, ${warned} warnings, ${failed} failed`));\r\n\r\n if (failed > 0 || warned > 0) {\r\n console.log('');\r\n console.log(chalk.dim('Run checks individually for more details:'));\r\n console.log(chalk.dim(' fractary codex cache stats'));\r\n console.log(chalk.dim(' fractary codex types list'));\r\n }\r\n\r\n // Exit with error if any checks failed\r\n if (failed > 0) {\r\n process.exit(1);\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Sync command (v3.0)\r\n *\r\n * Synchronizes project with the codex repository using SDK SyncManager:\r\n * - Multi-directional sync (to-codex, from-codex, bidirectional)\r\n * - Manifest tracking for sync state\r\n * - Conflict detection and resolution\r\n * - Pattern-based file filtering\r\n * - Dry-run mode\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\n// Import types only\r\nimport type {\r\n SyncDirection,\r\n SyncOptions\r\n} from '@fractary/codex';\r\nimport { readYamlConfig } from '../config/migrate-config';\r\n\r\n/**\r\n * Get environment branch mapping\r\n */\r\nfunction getEnvironmentBranch(config: any, env: string): string {\r\n const envMap = config.sync?.environments || {\r\n dev: 'develop',\r\n test: 'test',\r\n staging: 'staging',\r\n prod: 'main'\r\n };\r\n\r\n return envMap[env] || env;\r\n}\r\n\r\n/**\r\n * Format bytes to human-readable size\r\n */\r\nfunction formatBytes(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\n/**\r\n * Format duration in milliseconds\r\n */\r\nfunction formatDuration(ms: number): string {\r\n if (ms < 1000) return `${ms}ms`;\r\n return `${(ms / 1000).toFixed(1)}s`;\r\n}\r\n\r\nexport function syncCommand(): Command {\r\n const cmd = new Command('sync');\r\n\r\n cmd\r\n .description('Sync single project with codex repository')\r\n .argument('[name]', 'Project name (auto-detected if not provided)')\r\n .option('--env <env>', 'Target environment (dev/test/staging/prod)', 'prod')\r\n .option('--dry-run', 'Show what would sync without executing')\r\n .option('--direction <dir>', 'Sync direction (to-codex/from-codex/bidirectional)', 'bidirectional')\r\n .option('--include <pattern>', 'Include files matching pattern (can be used multiple times)', (val, prev: string[]) => prev.concat([val]), [])\r\n .option('--exclude <pattern>', 'Exclude files matching pattern (can be used multiple times)', (val, prev: string[]) => prev.concat([val]), [])\r\n .option('--force', 'Force sync without checking timestamps')\r\n .option('--json', 'Output as JSON')\r\n .action(async (name: string | undefined, options) => {\r\n try {\r\n // Load YAML config\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n let config;\r\n\r\n try {\r\n config = await readYamlConfig(configPath);\r\n } catch (error) {\r\n console.error(chalk.red('Error:'), 'Codex not initialized.');\r\n console.log(chalk.dim('Run \"fractary codex init\" first.'));\r\n process.exit(1);\r\n }\r\n\r\n // Dynamic import to avoid loading SDK at module time\r\n const { createSyncManager, createLocalStorage, detectCurrentProject } = await import('@fractary/codex');\r\n\r\n // Determine project name\r\n let projectName = name;\r\n if (!projectName) {\r\n const detected = detectCurrentProject();\r\n projectName = detected.project || undefined;\r\n }\r\n\r\n if (!projectName) {\r\n console.error(chalk.red('Error:'), 'Could not determine project name.');\r\n console.log(chalk.dim('Provide project name as argument or run from a git repository.'));\r\n process.exit(1);\r\n }\r\n\r\n // Validate direction\r\n const validDirections: SyncDirection[] = ['to-codex', 'from-codex', 'bidirectional'];\r\n if (!validDirections.includes(options.direction as SyncDirection)) {\r\n console.error(chalk.red('Error:'), `Invalid direction: ${options.direction}`);\r\n console.log(chalk.dim('Valid options: to-codex, from-codex, bidirectional'));\r\n process.exit(1);\r\n }\r\n\r\n const direction = options.direction as SyncDirection;\r\n const targetBranch = getEnvironmentBranch(config, options.env);\r\n\r\n // Create LocalStorage instance\r\n const localStorage = createLocalStorage({\r\n baseDir: process.cwd()\r\n });\r\n\r\n // Create SyncManager\r\n // Cast config.sync to any to avoid type incompatibility between CLI and SDK SyncConfig types\r\n const syncManager = createSyncManager({\r\n localStorage,\r\n config: config.sync as any,\r\n manifestPath: path.join(process.cwd(), '.fractary', '.codex-sync-manifest.json')\r\n });\r\n\r\n // Get include patterns from config or use defaults\r\n // For to-codex: use config.sync.to_codex if available\r\n // For from-codex: config.sync.from_codex is handled by routing scanner\r\n const defaultToCodexPatterns = [\r\n 'docs/**/*.md',\r\n 'specs/**/*.md',\r\n '.fractary/standards/**',\r\n '.fractary/templates/**'\r\n ];\r\n\r\n // Use to_codex config if available, otherwise fall back to defaults\r\n // Cast to any to handle type differences between CLI and SDK config types\r\n const syncConfig = config.sync as any;\r\n const configIncludePatterns = syncConfig?.to_codex || defaultToCodexPatterns;\r\n\r\n // CLI options override config\r\n const includePatterns = options.include.length > 0 ? options.include : configIncludePatterns;\r\n const excludePatterns = [\r\n ...(syncConfig?.exclude || []),\r\n ...options.exclude\r\n ];\r\n\r\n // Scan local files using proper glob pattern matching\r\n const sourceDir = process.cwd();\r\n const { glob: globSync } = await import('glob');\r\n\r\n // Match files using glob patterns\r\n const matchedFilePaths = new Set<string>();\r\n\r\n for (const pattern of includePatterns) {\r\n try {\r\n const matches = await globSync(pattern, {\r\n cwd: sourceDir,\r\n dot: true,\r\n nodir: true,\r\n ignore: excludePatterns\r\n });\r\n matches.forEach(match => matchedFilePaths.add(match));\r\n } catch (error: any) {\r\n console.error(chalk.yellow(`Warning: Invalid pattern \"${pattern}\": ${error.message}`));\r\n }\r\n }\r\n\r\n // Convert matched paths to file objects with stat info\r\n const targetFiles = await Promise.all(\r\n Array.from(matchedFilePaths).map(async (filePath) => {\r\n const fullPath = path.join(sourceDir, filePath);\r\n const stats = await import('fs/promises').then(fs => fs.stat(fullPath));\r\n return {\r\n path: filePath,\r\n size: stats.size,\r\n mtime: stats.mtimeMs\r\n };\r\n })\r\n );\r\n\r\n // Create sync plan with options\r\n // Note: include/exclude patterns are used for to-codex direction.\r\n // For from-codex (routing-aware), these patterns are ignored to avoid\r\n // double filtering, since routing rules already determine which files sync.\r\n const syncOptions: SyncOptions = {\r\n direction,\r\n dryRun: options.dryRun,\r\n force: options.force,\r\n include: includePatterns,\r\n exclude: excludePatterns\r\n };\r\n\r\n let plan;\r\n let routingScan;\r\n\r\n // Use routing-aware sync for from-codex direction\r\n if (direction === 'from-codex') {\r\n let codexRepoPath: string;\r\n\r\n try {\r\n const { ensureCodexCloned } = await import('../utils/codex-repository.js');\r\n\r\n if (!options.json) {\r\n console.log(chalk.blue('ℹ Cloning/updating codex repository...'));\r\n }\r\n\r\n // Clone codex to temp directory\r\n codexRepoPath = await ensureCodexCloned(config, {\r\n branch: targetBranch\r\n });\r\n\r\n if (!options.json) {\r\n console.log(chalk.dim(` Codex cloned to: ${codexRepoPath}`));\r\n console.log(chalk.dim(' Scanning for files routing to this project...\\n'));\r\n } else {\r\n console.log(JSON.stringify({\r\n info: 'Routing-aware sync: cloned codex repository and scanning for files targeting this project',\r\n codexPath: codexRepoPath\r\n }, null, 2));\r\n }\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), 'Failed to clone codex repository');\r\n console.error(chalk.dim(` ${error.message}`));\r\n\r\n // Provide error-specific troubleshooting\r\n console.log(chalk.yellow('\\nTroubleshooting:'));\r\n if (error.message.includes('Git command not found')) {\r\n console.log(chalk.dim(' Git is not installed or not in PATH.'));\r\n console.log(chalk.dim(' Install git: https://git-scm.com/downloads'));\r\n } else if (error.message.includes('authentication failed') || error.message.includes('Authentication failed')) {\r\n console.log(chalk.dim(' GitHub authentication is required for private repositories.'));\r\n console.log(chalk.dim(' 1. Check auth status: gh auth status'));\r\n console.log(chalk.dim(' 2. Login if needed: gh auth login'));\r\n console.log(chalk.dim(' 3. Or set GITHUB_TOKEN environment variable'));\r\n } else if (error.message.includes('Permission denied')) {\r\n console.log(chalk.dim(' Permission denied accessing repository files.'));\r\n console.log(chalk.dim(' 1. Check file/directory permissions'));\r\n console.log(chalk.dim(' 2. Ensure you have access to the repository'));\r\n } else if (error.message.includes('not found') || error.message.includes('does not exist')) {\r\n console.log(chalk.dim(` Repository not found: ${config.organization}/${(config as any).codex_repository || 'codex'}`));\r\n console.log(chalk.dim(' 1. Verify the repository exists on GitHub'));\r\n console.log(chalk.dim(' 2. Check organization and repository names in config'));\r\n } else {\r\n // Generic troubleshooting for other errors\r\n console.log(chalk.dim(' 1. Ensure git is installed: git --version'));\r\n console.log(chalk.dim(' 2. Check GitHub auth: gh auth status'));\r\n console.log(chalk.dim(` 3. Verify repo exists: ${config.organization}/${(config as any).codex_repository || 'codex'}`));\r\n }\r\n process.exit(1);\r\n }\r\n\r\n // Use temp clone path for routing scan\r\n const planWithRouting = await syncManager.createRoutingAwarePlan(\r\n config.organization,\r\n projectName,\r\n codexRepoPath,\r\n syncOptions\r\n );\r\n\r\n plan = planWithRouting;\r\n routingScan = planWithRouting.routingScan;\r\n } else {\r\n plan = await syncManager.createPlan(\r\n config.organization,\r\n projectName,\r\n sourceDir,\r\n targetFiles,\r\n syncOptions\r\n );\r\n }\r\n\r\n if (plan.totalFiles === 0) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n project: projectName,\r\n organization: config.organization,\r\n files: [],\r\n synced: 0\r\n }, null, 2));\r\n } else {\r\n console.log(chalk.yellow('No files to sync.'));\r\n }\r\n return;\r\n }\r\n\r\n if (options.json) {\r\n const output = {\r\n project: projectName,\r\n organization: config.organization,\r\n environment: options.env,\r\n branch: targetBranch,\r\n direction,\r\n dryRun: options.dryRun || false,\r\n plan: {\r\n totalFiles: plan.totalFiles,\r\n totalBytes: plan.totalBytes,\r\n estimatedTime: plan.estimatedTime,\r\n conflicts: plan.conflicts.length,\r\n skipped: plan.skipped.length\r\n },\r\n files: plan.files.map(f => ({\r\n path: f.path,\r\n operation: f.operation,\r\n size: f.size\r\n }))\r\n };\r\n\r\n if (options.dryRun) {\r\n console.log(JSON.stringify(output, null, 2));\r\n return;\r\n }\r\n\r\n // Execute and add results\r\n const result = await syncManager.executePlan(plan, syncOptions);\r\n console.log(JSON.stringify({\r\n ...output,\r\n result: {\r\n success: result.success,\r\n synced: result.synced,\r\n failed: result.failed,\r\n skipped: result.skipped,\r\n duration: result.duration,\r\n errors: result.errors\r\n }\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display sync plan\r\n console.log(chalk.bold('Sync Plan\\n'));\r\n console.log(` Project: ${chalk.cyan(projectName)}`);\r\n console.log(` Organization: ${chalk.cyan(config.organization)}`);\r\n console.log(` Environment: ${chalk.cyan(options.env)} (${targetBranch})`);\r\n console.log(` Direction: ${chalk.cyan(direction)}`);\r\n console.log(` Files: ${chalk.cyan(plan.totalFiles.toString())}`);\r\n console.log(` Total size: ${chalk.cyan(formatBytes(plan.totalBytes))}`);\r\n if (plan.estimatedTime) {\r\n console.log(` Est. time: ${chalk.dim(formatDuration(plan.estimatedTime))}`);\r\n }\r\n\r\n // Display routing statistics if using routing-aware sync\r\n if (routingScan) {\r\n console.log('');\r\n console.log(chalk.bold('Routing Statistics\\n'));\r\n console.log(` Scanned: ${chalk.cyan(routingScan.stats.totalScanned.toString())} files`);\r\n console.log(` Matched: ${chalk.cyan(routingScan.stats.totalMatched.toString())} files`);\r\n console.log(` Source projects: ${chalk.cyan(routingScan.stats.sourceProjects.length.toString())}`);\r\n if (routingScan.stats.sourceProjects.length > 0) {\r\n console.log(chalk.dim(` ${routingScan.stats.sourceProjects.slice(0, 5).join(', ')}`));\r\n if (routingScan.stats.sourceProjects.length > 5) {\r\n console.log(chalk.dim(` ... and ${routingScan.stats.sourceProjects.length - 5} more`));\r\n }\r\n }\r\n console.log(` Scan time: ${chalk.dim(formatDuration(routingScan.stats.durationMs))}`);\r\n }\r\n\r\n console.log('');\r\n\r\n if (plan.conflicts.length > 0) {\r\n console.log(chalk.yellow(`⚠ ${plan.conflicts.length} conflicts detected:`));\r\n for (const conflict of plan.conflicts.slice(0, 5)) {\r\n console.log(chalk.yellow(` • ${conflict.path}`));\r\n }\r\n if (plan.conflicts.length > 5) {\r\n console.log(chalk.dim(` ... and ${plan.conflicts.length - 5} more`));\r\n }\r\n console.log('');\r\n }\r\n\r\n if (plan.skipped.length > 0) {\r\n console.log(chalk.dim(`${plan.skipped.length} files skipped (no changes)`));\r\n console.log('');\r\n }\r\n\r\n if (options.dryRun) {\r\n console.log(chalk.blue('Dry run - would sync:\\n'));\r\n\r\n const filesToShow = plan.files.slice(0, 10);\r\n for (const file of filesToShow) {\r\n const arrow = direction === 'to-codex' ? '→' : direction === 'from-codex' ? '←' : '↔';\r\n const opColor = file.operation === 'create' ? chalk.green :\r\n file.operation === 'update' ? chalk.yellow :\r\n chalk.dim;\r\n console.log(\r\n chalk.dim(` ${arrow}`),\r\n opColor(file.operation.padEnd(7)),\r\n file.path,\r\n chalk.dim(`(${formatBytes(file.size || 0)})`)\r\n );\r\n }\r\n\r\n if (plan.files.length > 10) {\r\n console.log(chalk.dim(` ... and ${plan.files.length - 10} more files`));\r\n }\r\n\r\n console.log(chalk.dim(`\\nTotal: ${plan.totalFiles} files (${formatBytes(plan.totalBytes)})`));\r\n console.log(chalk.dim('Run without --dry-run to execute sync.'));\r\n return;\r\n }\r\n\r\n // Execute sync\r\n console.log(chalk.blue('Syncing...\\n'));\r\n\r\n const startTime = Date.now();\r\n const result = await syncManager.executePlan(plan, syncOptions);\r\n const duration = Date.now() - startTime;\r\n\r\n // Summary\r\n console.log('');\r\n if (result.success) {\r\n console.log(chalk.green(`✓ Sync completed successfully`));\r\n console.log(chalk.dim(` Synced: ${result.synced} files`));\r\n if (result.skipped > 0) {\r\n console.log(chalk.dim(` Skipped: ${result.skipped} files`));\r\n }\r\n console.log(chalk.dim(` Duration: ${formatDuration(duration)}`));\r\n } else {\r\n console.log(chalk.yellow(`⚠ Sync completed with errors`));\r\n console.log(chalk.green(` Synced: ${result.synced} files`));\r\n console.log(chalk.red(` Failed: ${result.failed} files`));\r\n if (result.skipped > 0) {\r\n console.log(chalk.dim(` Skipped: ${result.skipped} files`));\r\n }\r\n\r\n if (result.errors.length > 0) {\r\n console.log('');\r\n console.log(chalk.red('Errors:'));\r\n for (const error of result.errors.slice(0, 5)) {\r\n console.log(chalk.red(` • ${error.path}: ${error.error}`));\r\n }\r\n if (result.errors.length > 5) {\r\n console.log(chalk.dim(` ... and ${result.errors.length - 5} more errors`));\r\n }\r\n }\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types command group (v3.0)\r\n *\r\n * Manages the artifact type registry:\r\n * - list: View all types (built-in and custom)\r\n * - show: View details for a specific type\r\n * - add: Register a custom type\r\n * - remove: Unregister a custom type\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { typesListCommand } from './list';\r\nimport { typesShowCommand } from './show';\r\nimport { typesAddCommand } from './add';\r\nimport { typesRemoveCommand } from './remove';\r\n\r\nexport function typesCommand(): Command {\r\n const cmd = new Command('types');\r\n\r\n cmd\r\n .description('Manage artifact type registry');\r\n\r\n // Register subcommands\r\n cmd.addCommand(typesListCommand());\r\n cmd.addCommand(typesShowCommand());\r\n cmd.addCommand(typesAddCommand());\r\n cmd.addCommand(typesRemoveCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types list command (v3.0)\r\n *\r\n * Lists all artifact types using SDK's TypeRegistry\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format TTL from seconds to human-readable string\r\n */\r\nfunction formatTtl(seconds: number): string {\r\n if (seconds < 60) return `${seconds}s`;\r\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\r\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\r\n return `${Math.floor(seconds / 86400)}d`;\r\n}\r\n\r\nexport function typesListCommand(): Command {\r\n const cmd = new Command('list');\r\n\r\n cmd\r\n .description('List all artifact types')\r\n .option('--json', 'Output as JSON')\r\n .option('--custom-only', 'Show only custom types')\r\n .option('--builtin-only', 'Show only built-in types')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Get all types from registry\r\n const allTypes = registry.list();\r\n\r\n // Filter based on options\r\n let types = allTypes;\r\n if (options.customOnly) {\r\n types = allTypes.filter(t => !registry.isBuiltIn(t.name));\r\n } else if (options.builtinOnly) {\r\n types = allTypes.filter(t => registry.isBuiltIn(t.name));\r\n }\r\n\r\n if (options.json) {\r\n const builtinCount = types.filter(t => registry.isBuiltIn(t.name)).length;\r\n const customCount = types.length - builtinCount;\r\n\r\n console.log(JSON.stringify({\r\n count: types.length,\r\n builtinCount,\r\n customCount,\r\n types: types.map(t => ({\r\n name: t.name,\r\n description: t.description,\r\n patterns: t.patterns,\r\n defaultTtl: t.defaultTtl,\r\n ttl: formatTtl(t.defaultTtl),\r\n builtin: registry.isBuiltIn(t.name),\r\n archiveAfterDays: t.archiveAfterDays,\r\n archiveStorage: t.archiveStorage\r\n }))\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n if (types.length === 0) {\r\n console.log(chalk.yellow('No types found.'));\r\n return;\r\n }\r\n\r\n console.log(chalk.bold('Artifact Types\\n'));\r\n\r\n // Group by built-in vs custom\r\n const builtinTypes = types.filter(t => registry.isBuiltIn(t.name));\r\n const customTypes = types.filter(t => !registry.isBuiltIn(t.name));\r\n\r\n if (builtinTypes.length > 0 && !options.customOnly) {\r\n console.log(chalk.bold('Built-in Types'));\r\n console.log(chalk.dim('─'.repeat(70)));\r\n\r\n for (const type of builtinTypes) {\r\n const patternStr = type.patterns[0] || '';\r\n console.log(` ${chalk.cyan(type.name.padEnd(12))} ${patternStr.padEnd(30)} ${chalk.dim(`TTL: ${formatTtl(type.defaultTtl)}`)}`);\r\n console.log(` ${chalk.dim(' '.repeat(12) + type.description)}`);\r\n }\r\n console.log('');\r\n }\r\n\r\n if (customTypes.length > 0 && !options.builtinOnly) {\r\n console.log(chalk.bold('Custom Types'));\r\n console.log(chalk.dim('─'.repeat(70)));\r\n\r\n for (const type of customTypes) {\r\n const patternStr = type.patterns[0] || '';\r\n console.log(` ${chalk.green(type.name.padEnd(12))} ${patternStr.padEnd(30)} ${chalk.dim(`TTL: ${formatTtl(type.defaultTtl)}`)}`);\r\n console.log(` ${chalk.dim(' '.repeat(12) + type.description)}`);\r\n }\r\n console.log('');\r\n }\r\n\r\n // Summary\r\n console.log(chalk.dim(`Total: ${types.length} types (${builtinTypes.length} built-in, ${customTypes.length} custom)`));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types show command (v3.0)\r\n *\r\n * Shows details for a specific artifact type using SDK's TypeRegistry\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format TTL from seconds to human-readable string\r\n */\r\nfunction formatTtl(seconds: number): string {\r\n if (seconds < 60) return `${seconds}s`;\r\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\r\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\r\n return `${Math.floor(seconds / 86400)}d`;\r\n}\r\n\r\nexport function typesShowCommand(): Command {\r\n const cmd = new Command('show');\r\n\r\n cmd\r\n .description('Show details for a specific type')\r\n .argument('<name>', 'Type name')\r\n .option('--json', 'Output as JSON')\r\n .action(async (name: string, options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Get type from registry\r\n const type = registry.get(name);\r\n\r\n if (!type) {\r\n console.error(chalk.red('Error:'), `Type \"${name}\" not found.`);\r\n console.log(chalk.dim('Run \"fractary codex types list\" to see available types.'));\r\n process.exit(1);\r\n }\r\n\r\n const isBuiltin = registry.isBuiltIn(name);\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n name: type.name,\r\n builtin: isBuiltin,\r\n description: type.description,\r\n patterns: type.patterns,\r\n defaultTtl: type.defaultTtl,\r\n ttl: formatTtl(type.defaultTtl),\r\n archiveAfterDays: type.archiveAfterDays,\r\n archiveStorage: type.archiveStorage,\r\n syncPatterns: type.syncPatterns,\r\n excludePatterns: type.excludePatterns\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display formatted output\r\n const nameColor = isBuiltin ? chalk.cyan : chalk.green;\r\n console.log(chalk.bold(`Type: ${nameColor(name)}\\n`));\r\n\r\n console.log(` ${chalk.dim('Source:')} ${isBuiltin ? 'Built-in' : 'Custom'}`);\r\n console.log(` ${chalk.dim('Description:')} ${type.description}`);\r\n console.log(` ${chalk.dim('TTL:')} ${formatTtl(type.defaultTtl)} (${type.defaultTtl} seconds)`);\r\n console.log('');\r\n\r\n console.log(chalk.bold('Patterns'));\r\n for (const pattern of type.patterns) {\r\n console.log(` ${chalk.dim('•')} ${pattern}`);\r\n }\r\n\r\n if (type.archiveAfterDays !== null) {\r\n console.log('');\r\n console.log(chalk.bold('Archive Settings'));\r\n console.log(` ${chalk.dim('After:')} ${type.archiveAfterDays} days`);\r\n console.log(` ${chalk.dim('Storage:')} ${type.archiveStorage || 'not set'}`);\r\n }\r\n\r\n if (type.syncPatterns && type.syncPatterns.length > 0) {\r\n console.log('');\r\n console.log(chalk.bold('Sync Patterns'));\r\n for (const pattern of type.syncPatterns) {\r\n console.log(` ${chalk.dim('•')} ${pattern}`);\r\n }\r\n }\r\n\r\n if (type.excludePatterns && type.excludePatterns.length > 0) {\r\n console.log('');\r\n console.log(chalk.bold('Exclude Patterns'));\r\n for (const pattern of type.excludePatterns) {\r\n console.log(` ${chalk.dim('•')} ${pattern}`);\r\n }\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types add command (v3.0)\r\n *\r\n * Registers a custom artifact type in YAML configuration\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport { readYamlConfig, writeYamlConfig } from '../../config/migrate-config';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Validate type name\r\n */\r\nfunction isValidTypeName(name: string): boolean {\r\n return /^[a-z][a-z0-9-]*$/.test(name);\r\n}\r\n\r\n/**\r\n * Parse TTL string to seconds\r\n */\r\nfunction parseTtl(ttl: string): number {\r\n const match = ttl.match(/^(\\d+)([smhd])$/);\r\n if (!match) {\r\n throw new Error('Invalid TTL format');\r\n }\r\n\r\n const value = parseInt(match[1], 10);\r\n const unit = match[2];\r\n\r\n switch (unit) {\r\n case 's': return value;\r\n case 'm': return value * 60;\r\n case 'h': return value * 3600;\r\n case 'd': return value * 86400;\r\n default: throw new Error('Unknown TTL unit');\r\n }\r\n}\r\n\r\n/**\r\n * Format TTL from seconds to human-readable string\r\n */\r\nfunction formatTtl(seconds: number): string {\r\n if (seconds < 60) return `${seconds}s`;\r\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\r\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\r\n return `${Math.floor(seconds / 86400)}d`;\r\n}\r\n\r\nexport function typesAddCommand(): Command {\r\n const cmd = new Command('add');\r\n\r\n cmd\r\n .description('Add a custom artifact type')\r\n .argument('<name>', 'Type name (lowercase, alphanumeric with hyphens)')\r\n .requiredOption('--pattern <glob>', 'File pattern (glob syntax)')\r\n .option('--ttl <duration>', 'Cache TTL (e.g., \"24h\", \"7d\")', '24h')\r\n .option('--description <text>', 'Type description')\r\n .option('--json', 'Output as JSON')\r\n .action(async (name: string, options) => {\r\n try {\r\n // Validate type name\r\n if (!isValidTypeName(name)) {\r\n console.error(chalk.red('Error:'), 'Invalid type name.');\r\n console.log(chalk.dim('Type name must be lowercase, start with a letter, and contain only letters, numbers, and hyphens.'));\r\n process.exit(1);\r\n }\r\n\r\n // Get registry to check for conflicts\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Check for built-in type conflict\r\n if (registry.isBuiltIn(name)) {\r\n console.error(chalk.red('Error:'), `Cannot override built-in type \"${name}\".`);\r\n const builtinNames = registry.list().filter(t => registry.isBuiltIn(t.name)).map(t => t.name);\r\n console.log(chalk.dim('Built-in types: ' + builtinNames.join(', ')));\r\n process.exit(1);\r\n }\r\n\r\n // Check if type already exists\r\n if (registry.has(name)) {\r\n console.error(chalk.red('Error:'), `Custom type \"${name}\" already exists.`);\r\n console.log(chalk.dim('Use \"fractary codex types remove\" first to remove it.'));\r\n process.exit(1);\r\n }\r\n\r\n // Parse and validate TTL\r\n let ttlSeconds: number;\r\n try {\r\n ttlSeconds = parseTtl(options.ttl);\r\n } catch {\r\n console.error(chalk.red('Error:'), 'Invalid TTL format.');\r\n console.log(chalk.dim('Expected format: <number><unit> where unit is s (seconds), m (minutes), h (hours), or d (days)'));\r\n console.log(chalk.dim('Examples: 30m, 24h, 7d'));\r\n process.exit(1);\r\n }\r\n\r\n // Load YAML configuration\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n const config = await readYamlConfig(configPath);\r\n\r\n // Initialize types.custom if needed\r\n if (!config.types) {\r\n config.types = { custom: {} };\r\n }\r\n if (!config.types.custom) {\r\n config.types.custom = {};\r\n }\r\n\r\n // Add the new type to config\r\n config.types.custom[name] = {\r\n description: options.description || `Custom type: ${name}`,\r\n patterns: [options.pattern],\r\n defaultTtl: ttlSeconds\r\n };\r\n\r\n // Save config\r\n await writeYamlConfig(config, configPath);\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n success: true,\r\n type: {\r\n name,\r\n description: config.types.custom[name].description,\r\n patterns: config.types.custom[name].patterns,\r\n defaultTtl: ttlSeconds,\r\n ttl: formatTtl(ttlSeconds),\r\n builtin: false\r\n },\r\n message: 'Custom type added successfully. Changes will take effect on next CLI invocation.'\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n console.log(chalk.green('✓'), `Added custom type \"${chalk.cyan(name)}\"`);\r\n console.log('');\r\n console.log(` ${chalk.dim('Pattern:')} ${options.pattern}`);\r\n console.log(` ${chalk.dim('TTL:')} ${formatTtl(ttlSeconds)} (${ttlSeconds} seconds)`);\r\n if (options.description) {\r\n console.log(` ${chalk.dim('Description:')} ${options.description}`);\r\n }\r\n console.log('');\r\n console.log(chalk.dim('Note: Custom type will be available on next CLI invocation.'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n if (error.message.includes('Failed to load configuration')) {\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a configuration.'));\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types remove command (v3.0)\r\n *\r\n * Unregisters a custom artifact type from YAML configuration\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport { readYamlConfig, writeYamlConfig } from '../../config/migrate-config';\r\nimport { getClient } from '../../client/get-client';\r\n\r\nexport function typesRemoveCommand(): Command {\r\n const cmd = new Command('remove');\r\n\r\n cmd\r\n .description('Remove a custom artifact type')\r\n .argument('<name>', 'Type name to remove')\r\n .option('--json', 'Output as JSON')\r\n .option('--force', 'Skip confirmation')\r\n .action(async (name: string, options) => {\r\n try {\r\n // Get registry to check type status\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Check for built-in type\r\n if (registry.isBuiltIn(name)) {\r\n console.error(chalk.red('Error:'), `Cannot remove built-in type \"${name}\".`);\r\n console.log(chalk.dim('Built-in types are permanent and cannot be removed.'));\r\n process.exit(1);\r\n }\r\n\r\n // Check if custom type exists\r\n if (!registry.has(name)) {\r\n console.error(chalk.red('Error:'), `Custom type \"${name}\" not found.`);\r\n console.log(chalk.dim('Run \"fractary codex types list --custom-only\" to see custom types.'));\r\n process.exit(1);\r\n }\r\n\r\n // Get type info before removal\r\n const typeInfo = registry.get(name)!;\r\n\r\n // Load YAML configuration\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n const config = await readYamlConfig(configPath);\r\n\r\n // Check if custom type exists in config\r\n if (!config.types?.custom?.[name]) {\r\n console.error(chalk.red('Error:'), `Custom type \"${name}\" not found in configuration.`);\r\n process.exit(1);\r\n }\r\n\r\n // Remove the type from config\r\n delete config.types.custom[name];\r\n\r\n // Clean up empty objects\r\n if (Object.keys(config.types.custom).length === 0) {\r\n delete config.types.custom;\r\n }\r\n if (config.types && Object.keys(config.types).length === 0) {\r\n delete config.types;\r\n }\r\n\r\n // Save config\r\n await writeYamlConfig(config, configPath);\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n success: true,\r\n removed: {\r\n name: typeInfo.name,\r\n description: typeInfo.description,\r\n patterns: typeInfo.patterns,\r\n defaultTtl: typeInfo.defaultTtl\r\n },\r\n message: 'Custom type removed successfully. Changes will take effect on next CLI invocation.'\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n console.log(chalk.green('✓'), `Removed custom type \"${chalk.cyan(name)}\"`);\r\n console.log('');\r\n console.log(chalk.dim('Removed configuration:'));\r\n console.log(` ${chalk.dim('Pattern:')} ${typeInfo.patterns.join(', ')}`);\r\n console.log(` ${chalk.dim('Description:')} ${typeInfo.description}`);\r\n console.log('');\r\n console.log(chalk.dim('Note: Custom type will be removed on next CLI invocation.'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n if (error.message.includes('Failed to load configuration')) {\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a configuration.'));\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tsup/assets/cjs_shims.js","../src/config/migrate-config.ts","../src/config/config-types.ts","../src/client/codex-client.ts","../src/utils/codex-repository.ts","../src/cli.ts","../src/commands/document/index.ts","../src/commands/document/fetch.ts","../src/client/get-client.ts","../src/commands/config/index.ts","../src/commands/config/init.ts","../src/commands/config/migrate.ts","../src/commands/cache/index.ts","../src/commands/cache/list.ts","../src/commands/cache/clear.ts","../src/commands/cache/stats.ts","../src/commands/cache/health.ts","../src/commands/sync.ts","../src/commands/types/index.ts","../src/commands/types/list.ts","../src/commands/types/show.ts","../src/commands/types/add.ts","../src/commands/types/remove.ts"],"names":["fs","path","yaml","CodexError","ConfigurationError","PermissionDeniedError","ValidationError","readYamlConfig","resolveEnvVarsInConfig","path2","result","spawn","path6","os","fs6","CodexClient","crypto","Command","chalk","fs2","fs3","path3","fileExists","fs4","path4","formatSize","fs5","path5","path7","ensureCodexCloned","formatTtl","path8","path9","__filename","fileURLToPath","__dirname","dirname","readFileSync","join"],"mappings":"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","file":"cli.cjs","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","/**\r\n * Configuration migration utility\r\n *\r\n * Converts legacy v2.x JSON config to v3.0 YAML format\r\n */\r\n\r\nimport * as fs from 'fs/promises';\r\nimport * as path from 'path';\r\nimport * as yaml from 'js-yaml';\r\nimport {\r\n type CodexYamlConfig,\r\n type LegacyCodexConfig,\r\n type StorageProviderConfig,\r\n parseDuration,\r\n parseSize\r\n} from './config-types';\r\n\r\n/**\r\n * Migration result\r\n */\r\nexport interface MigrationResult {\r\n success: boolean;\r\n yamlConfig: CodexYamlConfig;\r\n warnings: string[];\r\n backupPath?: string;\r\n}\r\n\r\n/**\r\n * Detect if a config file is legacy JSON format\r\n */\r\nexport async function isLegacyConfig(configPath: string): Promise<boolean> {\r\n try {\r\n const content = await fs.readFile(configPath, 'utf-8');\r\n const config = JSON.parse(content);\r\n\r\n // Check for legacy v2.x structure\r\n return (\r\n config.version === '3.0' ||\r\n config.organizationSlug !== undefined ||\r\n config.directories !== undefined ||\r\n config.rules !== undefined\r\n );\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Migrate legacy JSON config to v3.0 YAML format\r\n */\r\nexport async function migrateConfig(\r\n legacyConfigPath: string,\r\n options?: {\r\n createBackup?: boolean;\r\n backupSuffix?: string;\r\n }\r\n): Promise<MigrationResult> {\r\n const warnings: string[] = [];\r\n\r\n try {\r\n // Read legacy config\r\n const content = await fs.readFile(legacyConfigPath, 'utf-8');\r\n const legacy: LegacyCodexConfig = JSON.parse(content);\r\n\r\n // Create backup if requested\r\n let backupPath: string | undefined;\r\n if (options?.createBackup !== false) {\r\n const suffix = options?.backupSuffix || new Date().toISOString().replace(/[:.]/g, '-');\r\n backupPath = `${legacyConfigPath}.backup-${suffix}`;\r\n await fs.writeFile(backupPath, content, 'utf-8');\r\n }\r\n\r\n // Build YAML config\r\n const yamlConfig: CodexYamlConfig = {\r\n organization: legacy.organization || legacy.organizationSlug || 'default'\r\n };\r\n\r\n // Migrate cache configuration\r\n if (legacy.cache) {\r\n yamlConfig.cacheDir = legacy.cache.directory || '.fractary/codex/cache';\r\n\r\n // Note: Legacy config had cache.defaultTtl, cache.maxSize with string formats\r\n // These are now handled by CacheManager config separately\r\n }\r\n\r\n // Migrate storage providers\r\n if (legacy.storage?.providers) {\r\n yamlConfig.storage = [];\r\n\r\n // Convert providers object to array\r\n for (const [type, config] of Object.entries(legacy.storage.providers)) {\r\n if (type === 'github') {\r\n const githubConfig = config as any;\r\n yamlConfig.storage.push({\r\n type: 'github',\r\n token: githubConfig.token || '${GITHUB_TOKEN}',\r\n apiBaseUrl: githubConfig.baseUrl || 'https://api.github.com',\r\n branch: githubConfig.branch || 'main',\r\n priority: 50\r\n });\r\n } else if (type === 'http') {\r\n const httpConfig = config as any;\r\n yamlConfig.storage.push({\r\n type: 'http',\r\n baseUrl: httpConfig.baseUrl,\r\n headers: httpConfig.headers,\r\n timeout: httpConfig.timeout || 30000,\r\n priority: 100\r\n });\r\n } else if (type === 'local') {\r\n const localConfig = config as any;\r\n yamlConfig.storage.push({\r\n type: 'local',\r\n basePath: localConfig.basePath || './knowledge',\r\n followSymlinks: localConfig.followSymlinks || false,\r\n priority: 10\r\n });\r\n } else {\r\n warnings.push(`Unknown storage provider type: ${type}`);\r\n }\r\n }\r\n\r\n // If no providers configured, add default GitHub\r\n if (yamlConfig.storage.length === 0) {\r\n yamlConfig.storage.push({\r\n type: 'github',\r\n token: '${GITHUB_TOKEN}',\r\n apiBaseUrl: 'https://api.github.com',\r\n branch: 'main',\r\n priority: 50\r\n });\r\n warnings.push('No storage providers found, added default GitHub provider');\r\n }\r\n }\r\n\r\n // Migrate custom types\r\n if (legacy.types?.custom && Array.isArray(legacy.types.custom)) {\r\n yamlConfig.types = {\r\n custom: {}\r\n };\r\n\r\n for (const customType of legacy.types.custom) {\r\n if (customType.name) {\r\n yamlConfig.types.custom[customType.name] = {\r\n description: customType.description,\r\n patterns: customType.patterns || [],\r\n defaultTtl: customType.defaultTtl,\r\n archiveAfterDays: customType.archiveAfterDays,\r\n archiveStorage: customType.archiveStorage\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Migrate sync configuration\r\n if (legacy.sync) {\r\n yamlConfig.sync = {\r\n bidirectional: true,\r\n conflictResolution: 'prompt',\r\n exclude: [\r\n 'node_modules/**',\r\n '.git/**',\r\n '**/*.log',\r\n '.env'\r\n ]\r\n };\r\n\r\n if (legacy.sync.environments) {\r\n warnings.push('Sync environments are not directly supported in v3.0 - please configure sync rules manually');\r\n }\r\n }\r\n\r\n // Migrate MCP configuration\r\n if (legacy.mcp) {\r\n yamlConfig.mcp = {\r\n enabled: legacy.mcp.enabled || false,\r\n port: legacy.mcp.port || 3000\r\n };\r\n }\r\n\r\n return {\r\n success: true,\r\n yamlConfig,\r\n warnings,\r\n backupPath\r\n };\r\n } catch (error) {\r\n throw new Error(\r\n `Migration failed: ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Write YAML config to file\r\n */\r\nexport async function writeYamlConfig(\r\n config: CodexYamlConfig,\r\n outputPath: string\r\n): Promise<void> {\r\n // Ensure directory exists\r\n const dir = path.dirname(outputPath);\r\n await fs.mkdir(dir, { recursive: true });\r\n\r\n // Convert to YAML with nice formatting\r\n const yamlContent = yaml.dump(config, {\r\n indent: 2,\r\n lineWidth: 80,\r\n noRefs: true,\r\n sortKeys: false\r\n });\r\n\r\n // Write to file\r\n await fs.writeFile(outputPath, yamlContent, 'utf-8');\r\n}\r\n\r\n/**\r\n * Get default YAML config (v4.0 standard)\r\n */\r\nexport function getDefaultYamlConfig(organization: string): CodexYamlConfig {\r\n return {\r\n organization,\r\n cacheDir: '.fractary/codex/cache',\r\n\r\n storage: [\r\n {\r\n type: 'local',\r\n basePath: './knowledge',\r\n followSymlinks: false,\r\n priority: 10\r\n },\r\n {\r\n type: 'github',\r\n token: '${GITHUB_TOKEN}',\r\n apiBaseUrl: 'https://api.github.com',\r\n branch: 'main',\r\n priority: 50\r\n },\r\n {\r\n type: 'http',\r\n baseUrl: 'https://codex.example.com',\r\n timeout: 30000,\r\n priority: 100\r\n }\r\n ],\r\n\r\n types: {\r\n custom: {}\r\n },\r\n\r\n permissions: {\r\n default: 'read',\r\n rules: [\r\n {\r\n pattern: 'internal/**',\r\n permission: 'none'\r\n },\r\n {\r\n pattern: 'public/**',\r\n permission: 'read'\r\n }\r\n ]\r\n },\r\n\r\n sync: {\r\n bidirectional: true,\r\n conflictResolution: 'prompt',\r\n exclude: [\r\n 'node_modules/**',\r\n '.git/**',\r\n '**/*.log',\r\n '.env'\r\n ]\r\n },\r\n\r\n mcp: {\r\n enabled: false,\r\n port: 3000\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Read YAML config from file\r\n */\r\nexport async function readYamlConfig(configPath: string): Promise<CodexYamlConfig> {\r\n const content = await fs.readFile(configPath, 'utf-8');\r\n const config = yaml.load(content) as CodexYamlConfig;\r\n\r\n if (!config.organization) {\r\n throw new Error('Invalid config: organization is required');\r\n }\r\n\r\n return config;\r\n}\r\n","/**\r\n * Configuration types for Codex v3.0 YAML format\r\n *\r\n * Based on the SDK's Configuration Guide:\r\n * https://github.com/fractary/codex/blob/main/docs/guides/configuration.md\r\n */\r\n\r\n/**\r\n * Storage provider type\r\n */\r\nexport type StorageProviderType = 'local' | 'github' | 'http' | 's3';\r\n\r\n/**\r\n * Local filesystem storage configuration\r\n */\r\nexport interface LocalStorageConfig {\r\n type: 'local';\r\n basePath: string;\r\n followSymlinks?: boolean;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * GitHub storage configuration\r\n */\r\nexport interface GitHubStorageConfig {\r\n type: 'github';\r\n token?: string; // Or use environment variable\r\n apiBaseUrl?: string; // For GitHub Enterprise\r\n rawBaseUrl?: string;\r\n branch?: string;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * HTTP storage configuration\r\n */\r\nexport interface HttpStorageConfig {\r\n type: 'http';\r\n baseUrl: string;\r\n headers?: Record<string, string>;\r\n timeout?: number;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * S3 storage configuration (future)\r\n */\r\nexport interface S3StorageConfig {\r\n type: 's3';\r\n bucket: string;\r\n region?: string;\r\n accessKeyId?: string;\r\n secretAccessKey?: string;\r\n priority?: number;\r\n}\r\n\r\n/**\r\n * Union type for all storage providers\r\n */\r\nexport type StorageProviderConfig =\r\n | LocalStorageConfig\r\n | GitHubStorageConfig\r\n | HttpStorageConfig\r\n | S3StorageConfig;\r\n\r\n/**\r\n * Cache configuration\r\n */\r\nexport interface CacheConfig {\r\n directory?: string;\r\n defaultTtl?: number; // In seconds\r\n maxSize?: number; // In bytes\r\n maxMemoryEntries?: number;\r\n maxMemorySize?: number; // In bytes\r\n enablePersistence?: boolean;\r\n}\r\n\r\n/**\r\n * Custom artifact type definition\r\n */\r\nexport interface CustomTypeConfig {\r\n name: string;\r\n description?: string;\r\n patterns: string[];\r\n defaultTtl?: number; // In seconds\r\n archiveAfterDays?: number | null;\r\n archiveStorage?: 'local' | 'cloud' | 'drive' | null;\r\n}\r\n\r\n/**\r\n * Types configuration\r\n */\r\nexport interface TypesConfig {\r\n custom?: Record<string, Omit<CustomTypeConfig, 'name'>>;\r\n}\r\n\r\n/**\r\n * Permission level\r\n */\r\nexport type PermissionLevel = 'none' | 'read' | 'write' | 'admin';\r\n\r\n/**\r\n * Permission rule\r\n */\r\nexport interface PermissionRule {\r\n pattern: string;\r\n permission: PermissionLevel;\r\n users?: string[];\r\n}\r\n\r\n/**\r\n * Permissions configuration\r\n */\r\nexport interface PermissionsConfig {\r\n default?: PermissionLevel;\r\n rules?: PermissionRule[];\r\n}\r\n\r\n/**\r\n * Sync configuration\r\n */\r\nexport interface SyncConfig {\r\n bidirectional?: boolean;\r\n conflictResolution?: 'prompt' | 'local' | 'remote' | 'newest' | 'skip';\r\n exclude?: string[];\r\n rules?: SyncRule[];\r\n // Directional sync patterns (added for PR #29)\r\n to_codex?: string[];\r\n from_codex?: string[];\r\n default_to_codex?: string[];\r\n default_from_codex?: string[];\r\n}\r\n\r\n/**\r\n * Sync rule\r\n */\r\nexport interface SyncRule {\r\n pattern: string;\r\n direction?: 'to-codex' | 'from-codex' | 'bidirectional';\r\n}\r\n\r\n/**\r\n * MCP server configuration\r\n */\r\nexport interface McpConfig {\r\n enabled?: boolean;\r\n port?: number;\r\n}\r\n\r\n/**\r\n * Codex v3.0 YAML configuration\r\n *\r\n * This is the format that will be written to .fractary/codex/config.yaml\r\n */\r\nexport interface CodexYamlConfig {\r\n organization: string;\r\n cacheDir?: string;\r\n storage?: StorageProviderConfig[];\r\n types?: TypesConfig;\r\n permissions?: PermissionsConfig;\r\n sync?: SyncConfig;\r\n mcp?: McpConfig;\r\n}\r\n\r\n/**\r\n * Legacy JSON configuration (v2.x)\r\n *\r\n * This is the format currently used in .fractary/plugins/codex/config.json\r\n */\r\nexport interface LegacyCodexConfig {\r\n version?: string;\r\n organization?: string;\r\n organizationSlug?: string;\r\n cache?: {\r\n directory?: string;\r\n defaultTtl?: string | number;\r\n maxSize?: string | number;\r\n cleanupInterval?: string;\r\n };\r\n storage?: {\r\n providers?: Record<string, any>;\r\n defaultProvider?: string;\r\n };\r\n types?: {\r\n custom?: any[];\r\n };\r\n sync?: {\r\n environments?: Record<string, string>;\r\n defaultEnvironment?: string;\r\n };\r\n mcp?: {\r\n enabled?: boolean;\r\n port?: number;\r\n };\r\n}\r\n\r\n/**\r\n * Parse a duration string to seconds\r\n *\r\n * Supports formats like: \"1h\", \"24h\", \"7d\", \"1w\", \"1M\", \"1y\"\r\n */\r\nexport function parseDuration(duration: string | number): number {\r\n if (typeof duration === 'number') {\r\n return duration;\r\n }\r\n\r\n const match = duration.match(/^(\\d+)([smhdwMy])$/);\r\n if (!match) {\r\n throw new Error(`Invalid duration format: ${duration}`);\r\n }\r\n\r\n const [, valueStr, unit] = match;\r\n const value = parseInt(valueStr, 10);\r\n\r\n switch (unit) {\r\n case 's': return value;\r\n case 'm': return value * 60;\r\n case 'h': return value * 3600;\r\n case 'd': return value * 86400;\r\n case 'w': return value * 604800;\r\n case 'M': return value * 2592000; // 30 days\r\n case 'y': return value * 31536000; // 365 days\r\n default: throw new Error(`Unknown duration unit: ${unit}`);\r\n }\r\n}\r\n\r\n/**\r\n * Parse a size string to bytes\r\n *\r\n * Supports formats like: \"100MB\", \"1GB\", \"50MB\"\r\n */\r\nexport function parseSize(size: string | number): number {\r\n if (typeof size === 'number') {\r\n return size;\r\n }\r\n\r\n const match = size.match(/^(\\d+(?:\\.\\d+)?)\\s*(B|KB|MB|GB)$/i);\r\n if (!match) {\r\n throw new Error(`Invalid size format: ${size}`);\r\n }\r\n\r\n const [, valueStr, unit] = match;\r\n const value = parseFloat(valueStr);\r\n\r\n switch (unit.toUpperCase()) {\r\n case 'B': return value;\r\n case 'KB': return value * 1024;\r\n case 'MB': return value * 1024 * 1024;\r\n case 'GB': return value * 1024 * 1024 * 1024;\r\n default: throw new Error(`Unknown size unit: ${unit}`);\r\n }\r\n}\r\n\r\n/**\r\n * Resolve environment variables in a string\r\n *\r\n * Supports ${VAR_NAME} syntax\r\n */\r\nexport function resolveEnvVars(value: string): string {\r\n return value.replace(/\\$\\{([^}]+)\\}/g, (_, varName) => {\r\n const envValue = process.env[varName];\r\n if (envValue === undefined) {\r\n console.warn(`Warning: Environment variable ${varName} is not set`);\r\n return `\\${${varName}}`; // Keep original if not found\r\n }\r\n return envValue;\r\n });\r\n}\r\n\r\n/**\r\n * Deep resolve environment variables in an object\r\n */\r\nexport function resolveEnvVarsInConfig<T>(config: T): T {\r\n if (typeof config === 'string') {\r\n return resolveEnvVars(config) as any;\r\n }\r\n\r\n if (Array.isArray(config)) {\r\n return config.map(item => resolveEnvVarsInConfig(item)) as any;\r\n }\r\n\r\n if (config !== null && typeof config === 'object') {\r\n const result: any = {};\r\n for (const [key, value] of Object.entries(config)) {\r\n result[key] = resolveEnvVarsInConfig(value);\r\n }\r\n return result;\r\n }\r\n\r\n return config;\r\n}\r\n","/**\r\n * CodexClient - Unified client wrapper for Codex SDK\r\n *\r\n * Following the pattern from the CLI Integration Guide:\r\n * https://github.com/fractary/codex/blob/main/docs/guides/cli-integration.md\r\n *\r\n * This wrapper encapsulates CacheManager, StorageManager, and TypeRegistry,\r\n * providing a clean interface for CLI commands.\r\n */\r\n\r\n// Type-only imports\r\nimport type {\r\n CacheManager,\r\n StorageManager,\r\n TypeRegistry,\r\n CacheStats,\r\n FetchResult as SDKFetchResult,\r\n ParsedReference,\r\n ResolvedReference,\r\n FetchOptions as SDKFetchOptions,\r\n} from '@fractary/codex';\r\n// Dynamic imports for config utilities to avoid loading js-yaml at module time\r\n// import { readYamlConfig } from '../config/migrate-config';\r\n// import { resolveEnvVarsInConfig } from '../config/config-types';\r\nimport * as path from 'path';\r\n\r\n/**\r\n * Options for creating CodexClient\r\n */\r\nexport interface CodexClientOptions {\r\n cacheDir?: string;\r\n organizationSlug?: string;\r\n}\r\n\r\n/**\r\n * Options for fetch operations\r\n */\r\nexport interface FetchOptions {\r\n bypassCache?: boolean;\r\n ttl?: number;\r\n}\r\n\r\n/**\r\n * Result from fetch operation\r\n */\r\nexport interface FetchResult {\r\n content: Buffer;\r\n fromCache: boolean;\r\n metadata?: {\r\n fetchedAt?: string;\r\n expiresAt?: string;\r\n contentLength?: number;\r\n };\r\n}\r\n\r\n/**\r\n * Unified Codex client\r\n *\r\n * Provides high-level operations for:\r\n * - Document fetching with integrated caching\r\n * - Cache management and invalidation\r\n * - Type registry access\r\n */\r\nexport class CodexClient {\r\n private cache: CacheManager;\r\n private storage: StorageManager;\r\n private types: TypeRegistry;\r\n private organization: string;\r\n\r\n /**\r\n * Private constructor - use CodexClient.create() instead\r\n */\r\n private constructor(\r\n cache: CacheManager,\r\n storage: StorageManager,\r\n types: TypeRegistry,\r\n organization: string\r\n ) {\r\n this.cache = cache;\r\n this.storage = storage;\r\n this.types = types;\r\n this.organization = organization;\r\n }\r\n\r\n /**\r\n * Create a new CodexClient instance\r\n *\r\n * @param options - Optional configuration\r\n * @returns Promise resolving to CodexClient instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const client = await CodexClient.create();\r\n * ```\r\n */\r\n static async create(options?: CodexClientOptions): Promise<CodexClient> {\r\n // Dynamic import of SDK\r\n const {\r\n CacheManager,\r\n createStorageManager,\r\n createDefaultRegistry,\r\n CodexError,\r\n ConfigurationError\r\n } = await import('@fractary/codex');\r\n\r\n // Dynamic import of config utilities (to avoid loading js-yaml at module time)\r\n const { readYamlConfig } = await import('../config/migrate-config');\r\n const { resolveEnvVarsInConfig } = await import('../config/config-types');\r\n\r\n try {\r\n // Load YAML configuration\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n let config;\r\n\r\n try {\r\n config = await readYamlConfig(configPath);\r\n // Resolve environment variables in config\r\n config = resolveEnvVarsInConfig(config);\r\n } catch (error) {\r\n throw new ConfigurationError(\r\n `Failed to load configuration from ${configPath}. Run \"fractary codex init\" to create a configuration.`\r\n );\r\n }\r\n\r\n const organization = options?.organizationSlug || config.organization;\r\n const cacheDir = options?.cacheDir || config.cacheDir || '.codex-cache';\r\n\r\n // Build storage manager config from YAML storage providers\r\n const storageConfig: any = {};\r\n\r\n if (config.storage && Array.isArray(config.storage)) {\r\n for (const provider of config.storage) {\r\n if (provider.type === 'github') {\r\n storageConfig.github = {\r\n token: provider.token || process.env.GITHUB_TOKEN,\r\n apiBaseUrl: provider.apiBaseUrl || 'https://api.github.com',\r\n branch: provider.branch || 'main'\r\n };\r\n } else if (provider.type === 'http') {\r\n storageConfig.http = {\r\n baseUrl: provider.baseUrl,\r\n headers: provider.headers,\r\n timeout: provider.timeout || 30000\r\n };\r\n } else if (provider.type === 'local') {\r\n storageConfig.local = {\r\n basePath: provider.basePath || './knowledge',\r\n followSymlinks: provider.followSymlinks || false\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Initialize storage manager\r\n const storage = createStorageManager(storageConfig);\r\n\r\n // Initialize cache manager\r\n const cache = new CacheManager({\r\n cacheDir,\r\n defaultTtl: 86400, // 24 hours\r\n maxMemoryEntries: 100,\r\n maxMemorySize: 50 * 1024 * 1024, // 50MB\r\n enablePersistence: true\r\n });\r\n\r\n // Connect storage to cache\r\n cache.setStorageManager(storage);\r\n\r\n // Initialize type registry with built-in types\r\n const types = createDefaultRegistry();\r\n\r\n // Load and register custom types from config\r\n if (config.types?.custom) {\r\n for (const [name, customType] of Object.entries(config.types.custom)) {\r\n const ct = customType as any; // Type from YAML config\r\n types.register({\r\n name,\r\n description: ct.description || `Custom type: ${name}`,\r\n patterns: ct.patterns || [],\r\n defaultTtl: ct.defaultTtl || 86400,\r\n archiveAfterDays: ct.archiveAfterDays !== undefined ? ct.archiveAfterDays : null,\r\n archiveStorage: ct.archiveStorage || null\r\n });\r\n }\r\n }\r\n\r\n return new CodexClient(cache, storage, types, organization);\r\n } catch (error) {\r\n if (error instanceof CodexError) {\r\n throw error;\r\n }\r\n throw new CodexError(\r\n `Failed to initialize CodexClient: ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Fetch a document by codex:// URI\r\n *\r\n * This method:\r\n * 1. Validates the URI format\r\n * 2. Resolves the URI to a reference\r\n * 3. Uses CacheManager.get() which handles cache-first fetch\r\n *\r\n * @param uri - Codex URI (e.g., codex://org/project/path/to/file.md)\r\n * @param options - Fetch options\r\n * @returns Promise resolving to fetch result\r\n *\r\n * @throws {CodexError} If URI format is invalid or fetch fails\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await client.fetch('codex://fractary/codex/docs/README.md');\r\n * console.log(result.content.toString());\r\n * ```\r\n */\r\n async fetch(uri: string, options?: FetchOptions): Promise<FetchResult> {\r\n // Dynamic import of SDK functions\r\n const { validateUri, resolveReference, CodexError } = await import('@fractary/codex');\r\n\r\n // Validate URI early\r\n if (!validateUri(uri)) {\r\n throw new CodexError(`Invalid codex URI: ${uri}`);\r\n }\r\n\r\n // Resolve URI to reference (with cache path)\r\n const resolved = resolveReference(uri);\r\n if (!resolved) {\r\n throw new CodexError(`Failed to resolve URI: ${uri}`);\r\n }\r\n\r\n try {\r\n // If bypassing cache, fetch directly from storage\r\n if (options?.bypassCache) {\r\n const result = await this.storage.fetch(resolved);\r\n return {\r\n content: result.content,\r\n fromCache: false,\r\n metadata: {\r\n fetchedAt: new Date().toISOString(),\r\n contentLength: result.size\r\n }\r\n };\r\n }\r\n\r\n // Use CacheManager.get() which handles cache-first fetch\r\n const result = await this.cache.get(resolved, {\r\n ttl: options?.ttl\r\n });\r\n\r\n return {\r\n content: result.content,\r\n fromCache: true, // CacheManager.get handles cache logic\r\n metadata: {\r\n contentLength: result.size\r\n }\r\n };\r\n } catch (error) {\r\n throw new CodexError(\r\n `Failed to fetch ${uri}: ${error instanceof Error ? error.message : String(error)}`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Invalidate cache entries\r\n *\r\n * @param pattern - Optional glob pattern to match entries\r\n * If not provided, clears all entries\r\n *\r\n * @example\r\n * ```typescript\r\n * // Clear all cache\r\n * await client.invalidateCache();\r\n *\r\n * // Clear specific URI\r\n * await client.invalidateCache('codex://fractary/codex/docs/README.md');\r\n * ```\r\n */\r\n async invalidateCache(pattern?: string): Promise<void> {\r\n if (pattern) {\r\n await this.cache.invalidate(pattern);\r\n } else {\r\n await this.cache.clear();\r\n }\r\n }\r\n\r\n /**\r\n * Get cache statistics\r\n *\r\n * @returns Promise resolving to cache stats\r\n *\r\n * @example\r\n * ```typescript\r\n * const stats = await client.getCacheStats();\r\n * console.log(`Cache entries: ${stats.totalEntries}`);\r\n * console.log(`Total size: ${stats.totalSize}`);\r\n * ```\r\n */\r\n async getCacheStats(): Promise<CacheStats> {\r\n return this.cache.getStats();\r\n }\r\n\r\n /**\r\n * Get the type registry\r\n *\r\n * Provides access to built-in and custom artifact types\r\n *\r\n * @returns TypeRegistry instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const registry = client.getTypeRegistry();\r\n * const types = registry.list();\r\n * ```\r\n */\r\n getTypeRegistry(): TypeRegistry {\r\n return this.types;\r\n }\r\n\r\n /**\r\n * Get the cache manager (for advanced operations)\r\n *\r\n * @returns CacheManager instance\r\n */\r\n getCacheManager(): CacheManager {\r\n return this.cache;\r\n }\r\n\r\n /**\r\n * Get the storage manager (for advanced operations)\r\n *\r\n * @returns StorageManager instance\r\n */\r\n getStorageManager(): StorageManager {\r\n return this.storage;\r\n }\r\n\r\n /**\r\n * Get the organization slug\r\n *\r\n * @returns Organization slug string\r\n */\r\n getOrganization(): string {\r\n return this.organization;\r\n }\r\n}\r\n\r\n// Re-export SDK error classes for convenience\r\nexport {\r\n CodexError,\r\n ConfigurationError,\r\n ValidationError,\r\n PermissionDeniedError\r\n} from '@fractary/codex';\r\n","/**\n * Codex Repository Utilities\n *\n * Handles cloning and updating the central codex repository for routing-aware sync.\n */\n\nimport * as path from 'path';\nimport * as os from 'os';\nimport * as fs from 'fs/promises';\nimport { spawn } from 'child_process';\nimport type { CodexYamlConfig } from '../config/config-types';\n\n/**\n * Execute a command using spawn (safer than exec)\n */\nfunction spawnAsync(command: string, args: string[], options: { cwd: string }): Promise<string> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n ...options,\n env: process.env,\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n child.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n child.on('error', (error) => {\n reject(error);\n });\n\n child.on('close', (code) => {\n if (code !== 0) {\n const error: any = new Error(stderr || `Command exited with code ${code}`);\n error.code = code;\n reject(error);\n } else {\n resolve(stdout);\n }\n });\n });\n}\n\n/**\n * Extended config interface with codex_repository field\n */\ninterface CodexConfigWithRepo extends CodexYamlConfig {\n codex_repository?: string;\n}\n\n/**\n * Sanitize a path component to prevent path traversal attacks\n * Removes dangerous sequences like ../ and path separators\n */\nfunction sanitizePathComponent(component: string): string {\n if (!component || typeof component !== 'string') {\n throw new Error('Path component must be a non-empty string');\n }\n\n // Remove path traversal sequences and path separators\n const sanitized = component\n .replace(/\\.\\./g, '')\n .replace(/[/\\\\]/g, '')\n .trim();\n\n if (!sanitized) {\n throw new Error(`Invalid path component: ${component}`);\n }\n\n return sanitized;\n}\n\n/**\n * Validate a GitHub organization or repository name\n * Ensures it contains only safe characters\n */\nfunction validateGitHubName(name: string, type: 'organization' | 'repository'): void {\n if (!name || typeof name !== 'string') {\n throw new Error(`GitHub ${type} name must be a non-empty string`);\n }\n\n // GitHub names can only contain alphanumeric characters, hyphens, underscores, and dots\n if (!/^[a-zA-Z0-9._-]+$/.test(name)) {\n throw new Error(`Invalid GitHub ${type} name: ${name}. Must contain only alphanumeric characters, hyphens, underscores, and dots.`);\n }\n\n // Additional checks\n if (name.startsWith('.') || name.startsWith('-')) {\n throw new Error(`GitHub ${type} name cannot start with a dot or hyphen: ${name}`);\n }\n}\n\n/**\n * Get the temporary directory path for codex clone\n * Includes process ID to prevent race conditions\n */\nexport function getTempCodexPath(config: CodexConfigWithRepo): string {\n const codexRepo = config.codex_repository || 'codex';\n\n // Sanitize path components to prevent path traversal\n const sanitizedOrg = sanitizePathComponent(config.organization);\n const sanitizedRepo = sanitizePathComponent(codexRepo);\n\n // Include process ID to prevent concurrent sync conflicts\n return path.join(\n os.tmpdir(),\n 'fractary-codex-clone',\n `${sanitizedOrg}-${sanitizedRepo}-${process.pid}`\n );\n}\n\n/**\n * Check if a directory is a valid git repository\n */\nexport async function isValidGitRepo(repoPath: string): Promise<boolean> {\n try {\n const gitDir = path.join(repoPath, '.git');\n const stats = await fs.stat(gitDir);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Construct the git repository URL from config\n */\nexport function getCodexRepoUrl(config: CodexConfigWithRepo): string {\n const codexRepo = config.codex_repository || 'codex';\n\n // Validate GitHub names to prevent URL injection\n validateGitHubName(config.organization, 'organization');\n validateGitHubName(codexRepo, 'repository');\n\n // Default to GitHub\n // Format: https://github.com/{org}/{repo}.git\n return `https://github.com/${config.organization}/${codexRepo}.git`;\n}\n\n/**\n * Execute a git command in a directory using spawn (safe from command injection)\n */\nasync function execGit(repoPath: string, args: string[]): Promise<string> {\n try {\n const stdout = await spawnAsync('git', args, {\n cwd: repoPath,\n });\n\n return stdout;\n } catch (error: any) {\n // Provide specific error messages based on error code\n if (error.code === 'ENOENT') {\n throw new Error(`Git command not found. Ensure git is installed and in PATH.`);\n }\n if (error.code === 'EACCES') {\n throw new Error(`Permission denied accessing repository at ${repoPath}`);\n }\n if (error.code === 128) {\n throw new Error(`Git authentication failed. Check your credentials and repository access.`);\n }\n // For other errors, include the original message\n throw error;\n }\n}\n\n/**\n * Clone a git repository using spawn (safe from command injection)\n */\nasync function gitClone(\n url: string,\n targetPath: string,\n options?: { branch?: string; depth?: number }\n): Promise<void> {\n // Ensure parent directory exists\n const parentDir = path.dirname(targetPath);\n await fs.mkdir(parentDir, { recursive: true });\n\n // Build args array (safe from command injection)\n const args = ['clone'];\n\n if (options?.depth) {\n // Validate depth is a positive integer\n if (!Number.isInteger(options.depth) || options.depth <= 0) {\n throw new Error(`Invalid depth parameter: ${options.depth}. Must be a positive integer.`);\n }\n args.push('--depth', String(options.depth));\n }\n\n if (options?.branch) {\n // Branch validation already done in gitCheckout, but validate here too\n if (!/^[\\w\\-./]+$/.test(options.branch)) {\n throw new Error(`Invalid branch name: ${options.branch}`);\n }\n args.push('--branch', options.branch);\n }\n\n // Add single-branch flag for performance\n args.push('--single-branch');\n\n args.push(url, targetPath);\n\n // Execute clone using spawn (parent directory is cwd)\n await spawnAsync('git', args, { cwd: parentDir });\n}\n\n/**\n * Fetch updates from remote\n */\nasync function gitFetch(repoPath: string, branch?: string): Promise<void> {\n // For shallow clones, fetch the specific branch if provided\n if (branch) {\n // Validate branch name\n if (!/^[\\w\\-./]+$/.test(branch)) {\n throw new Error(`Invalid branch name: ${branch}`);\n }\n await execGit(repoPath, ['fetch', 'origin', `${branch}:${branch}`]);\n } else {\n await execGit(repoPath, ['fetch', 'origin']);\n }\n}\n\n/**\n * Checkout a branch\n */\nasync function gitCheckout(repoPath: string, branch: string): Promise<void> {\n // Validate branch name to prevent command injection\n if (!/^[\\w\\-./]+$/.test(branch)) {\n throw new Error(`Invalid branch name: ${branch}`);\n }\n await execGit(repoPath, ['checkout', branch]);\n}\n\n/**\n * Pull latest changes\n */\nasync function gitPull(repoPath: string): Promise<void> {\n await execGit(repoPath, ['pull']);\n}\n\n/**\n * Ensure the codex repository is cloned and up-to-date\n *\n * This function will:\n * 1. Check if the repository already exists in temp directory\n * 2. If it exists and is valid, update it (fetch + checkout + pull)\n * 3. If it doesn't exist, clone it fresh (shallow clone for efficiency)\n * 4. Return the path to the cloned repository\n *\n * @param config - Codex configuration\n * @param options - Clone options\n * @returns Path to the cloned codex repository\n */\nexport async function ensureCodexCloned(\n config: CodexConfigWithRepo,\n options?: { force?: boolean; branch?: string }\n): Promise<string> {\n const tempPath = getTempCodexPath(config);\n const branch = options?.branch || 'main';\n\n // If already exists and not forcing a fresh clone, update it\n if (await isValidGitRepo(tempPath) && !options?.force) {\n try {\n await gitFetch(tempPath, branch);\n await gitCheckout(tempPath, branch);\n await gitPull(tempPath);\n return tempPath;\n } catch (error: any) {\n // If update fails, remove and clone fresh\n console.warn(`Failed to update existing clone: ${error.message}`);\n console.warn(`Removing and cloning fresh...`);\n await fs.rm(tempPath, { recursive: true, force: true });\n }\n }\n\n // Clone fresh\n const repoUrl = getCodexRepoUrl(config);\n\n // Remove existing directory if present\n try {\n await fs.rm(tempPath, { recursive: true, force: true });\n } catch (error: any) {\n // Log but don't fail - directory might not exist yet\n console.warn(`Could not remove existing directory ${tempPath}: ${error.message}`);\n }\n\n await gitClone(repoUrl, tempPath, {\n branch,\n depth: 1, // Shallow clone for efficiency\n });\n\n return tempPath;\n}\n","/**\n * Fractary Codex CLI - Command-line interface for knowledge management\n *\n * Pull-based document retrieval with codex:// URI scheme and intelligent caching.\n *\n * @see https://github.com/fractary/codex\n */\n\nimport { Command } from 'commander';\nimport { documentCommand } from './commands/document/index.js';\nimport { configCommand } from './commands/config/index.js';\nimport { cacheCommand } from './commands/cache/index.js';\nimport { syncCommand } from './commands/sync.js';\nimport { typesCommand } from './commands/types/index.js';\nimport { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, join } from 'path';\n\n// Read version from package.json\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));\nconst VERSION = packageJson.version;\n\n/**\n * Create and configure the CLI\n */\nfunction createCLI(): Command {\n const program = new Command('fractary-codex');\n\n program\n .description('Centralized knowledge management and distribution for AI agents')\n .version(VERSION);\n\n // Core commands (v3.0 - noun-verb pattern)\n program.addCommand(documentCommand()); // Document operations (fetch)\n program.addCommand(configCommand()); // Configuration operations (init, migrate)\n program.addCommand(cacheCommand()); // Cache management (list, clear, stats, health)\n program.addCommand(syncCommand()); // Bidirectional sync\n program.addCommand(typesCommand()); // Type registry (list, show, add, remove)\n\n return program;\n}\n\n/**\n * Main execution\n */\nasync function main() {\n try {\n const program = createCLI();\n await program.parseAsync(process.argv);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n}\n\n// Run the CLI\nmain();\n","/**\r\n * Document command group (v3.0)\r\n *\r\n * Manages document operations with subcommands:\r\n * - fetch: Retrieve documents by URI\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { fetchCommand } from './fetch.js';\r\n\r\nexport function documentCommand(): Command {\r\n const cmd = new Command('document');\r\n\r\n cmd\r\n .description('Manage document operations');\r\n\r\n // Register subcommands\r\n cmd.addCommand(fetchCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Fetch document command (v3.0)\r\n *\r\n * Retrieves documents by codex:// URI reference using SDK's CodexClient:\r\n * - Cache-first retrieval for fast access\r\n * - TTL-based cache invalidation\r\n * - Multiple storage provider support\r\n * - Automatic URI validation and resolution\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as crypto from 'crypto';\r\nimport * as fs from 'fs/promises';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Calculate content hash\r\n */\r\nfunction hashContent(content: Buffer): string {\r\n return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);\r\n}\r\n\r\nexport function fetchCommand(): Command {\r\n const cmd = new Command('fetch');\r\n\r\n cmd\r\n .description('Fetch a document by codex:// URI reference')\r\n .argument('<uri>', 'Codex URI (e.g., codex://org/project/docs/file.md)')\r\n .option('--bypass-cache', 'Skip cache and fetch directly from source')\r\n .option('--ttl <seconds>', 'Override default TTL (in seconds)', parseInt)\r\n .option('--json', 'Output as JSON with metadata')\r\n .option('--output <file>', 'Write content to file instead of stdout')\r\n .action(async (uri: string, options) => {\r\n try {\r\n // Dynamically import validateUri to avoid loading SDK at module time\r\n const { validateUri } = await import('@fractary/codex');\r\n\r\n // Validate URI format\r\n if (!validateUri(uri)) {\r\n console.error(chalk.red('Error: Invalid URI format'));\r\n console.log(chalk.dim('Expected: codex://org/project/path/to/file.md'));\r\n console.log(chalk.dim('Example: codex://fractary/codex/docs/api.md'));\r\n process.exit(1);\r\n }\r\n\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Show fetching message (unless JSON output)\r\n if (!options.json && !options.bypassCache) {\r\n console.error(chalk.dim(`Fetching ${uri}...`));\r\n }\r\n\r\n // Fetch using CodexClient\r\n const result = await client.fetch(uri, {\r\n bypassCache: options.bypassCache,\r\n ttl: options.ttl\r\n });\r\n\r\n // Output handling\r\n if (options.json) {\r\n const output = {\r\n uri,\r\n content: result.content.toString('utf-8'),\r\n metadata: {\r\n fromCache: result.fromCache,\r\n fetchedAt: result.metadata?.fetchedAt,\r\n expiresAt: result.metadata?.expiresAt,\r\n contentLength: result.metadata?.contentLength || result.content.length,\r\n contentHash: hashContent(result.content)\r\n }\r\n };\r\n console.log(JSON.stringify(output, null, 2));\r\n } else if (options.output) {\r\n // Write to file\r\n await fs.writeFile(options.output, result.content);\r\n console.log(chalk.green('✓'), `Written to ${options.output}`);\r\n console.log(chalk.dim(` Size: ${result.content.length} bytes`));\r\n if (result.fromCache) {\r\n console.log(chalk.dim(' Source: cache'));\r\n } else {\r\n console.log(chalk.dim(' Source: storage'));\r\n }\r\n } else {\r\n // Print to stdout\r\n if (result.fromCache && !options.bypassCache) {\r\n console.error(chalk.green('✓'), chalk.dim('from cache\\n'));\r\n } else {\r\n console.error(chalk.green('✓'), chalk.dim('fetched\\n'));\r\n }\r\n console.log(result.content.toString('utf-8'));\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n\r\n // Provide helpful error messages\r\n if (error.message.includes('Failed to load configuration')) {\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a configuration.'));\r\n } else if (error.message.includes('GITHUB_TOKEN')) {\r\n console.log(chalk.dim('\\nSet your GitHub token: export GITHUB_TOKEN=\"your_token\"'));\r\n } else if (error.message.includes('not found') || error.message.includes('404')) {\r\n console.log(chalk.dim('\\nThe document may not exist or you may not have access.'));\r\n console.log(chalk.dim('Check the URI and ensure your storage providers are configured correctly.'));\r\n }\r\n\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Singleton getter for CodexClient\r\n *\r\n * Provides lazy initialization of the CodexClient instance.\r\n * This ensures we only create one client instance across all command invocations,\r\n * avoiding repeated configuration loading and manager initialization.\r\n *\r\n * Uses dynamic imports to avoid loading @fractary/codex SDK at module load time,\r\n * which prevents CLI hangs when running simple commands like --help.\r\n *\r\n * @example\r\n * ```typescript\r\n * import { getClient } from './get-client';\r\n *\r\n * export async function fetchCommand(uri: string) {\r\n * const client = await getClient();\r\n * const result = await client.fetch(uri);\r\n * console.log(result.content.toString());\r\n * }\r\n * ```\r\n */\r\n\r\n// Import types only\r\nimport type { CodexClient, CodexClientOptions } from './codex-client';\r\n\r\n/**\r\n * Singleton instance\r\n */\r\nlet clientInstance: CodexClient | null = null;\r\n\r\n/**\r\n * Get the CodexClient singleton instance\r\n *\r\n * On first call, creates and initializes the client.\r\n * Subsequent calls return the same instance.\r\n *\r\n * @param options - Optional configuration (only used on first call)\r\n * @returns Promise resolving to CodexClient instance\r\n *\r\n * @example\r\n * ```typescript\r\n * const client = await getClient();\r\n * const stats = await client.getCacheStats();\r\n * ```\r\n */\r\nexport async function getClient(options?: CodexClientOptions): Promise<CodexClient> {\r\n if (!clientInstance) {\r\n // Dynamic import to avoid loading SDK at module time\r\n const { CodexClient } = await import('./codex-client');\r\n clientInstance = await CodexClient.create(options);\r\n }\r\n return clientInstance;\r\n}\r\n\r\n/**\r\n * Reset the singleton instance\r\n *\r\n * Useful for testing or when configuration changes require a fresh client.\r\n *\r\n * @example\r\n * ```typescript\r\n * // After changing configuration\r\n * resetClient();\r\n * const client = await getClient(); // Will create new instance\r\n * ```\r\n */\r\nexport function resetClient(): void {\r\n clientInstance = null;\r\n}\r\n\r\n/**\r\n * Check if client has been initialized\r\n *\r\n * @returns true if client instance exists\r\n */\r\nexport function isClientInitialized(): boolean {\r\n return clientInstance !== null;\r\n}\r\n","/**\r\n * Config command group (v3.0)\r\n *\r\n * Manages configuration operations with subcommands:\r\n * - init: Initialize configuration\r\n * - migrate: Migrate configuration from v2.0 to v3.0\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { initCommand } from './init.js';\r\nimport { migrateCommand } from './migrate.js';\r\n\r\nexport function configCommand(): Command {\r\n const cmd = new Command('config');\r\n\r\n cmd\r\n .description('Manage configuration');\r\n\r\n // Register subcommands\r\n cmd.addCommand(initCommand());\r\n cmd.addCommand(migrateCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Initialize Codex project command (v3.0 YAML)\r\n *\r\n * Creates .fractary/codex/config.yaml configuration with:\r\n * - Organization detection from git remote\r\n * - Multi-provider storage configuration\r\n * - Cache configuration\r\n * - Type registry setup\r\n * - Optional MCP server registration\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs/promises';\r\nimport { getDefaultYamlConfig, writeYamlConfig } from '../../config/migrate-config';\r\n\r\n/**\r\n * Extract org from git remote URL\r\n */\r\nasync function getOrgFromGitRemote(): Promise<string | null> {\r\n try {\r\n const { execSync } = require('child_process');\r\n const remote = execSync('git remote get-url origin 2>/dev/null', { encoding: 'utf-8' }).trim();\r\n\r\n // Parse GitHub URL: git@github.com:org/repo.git or https://github.com/org/repo.git\r\n const sshMatch = remote.match(/git@github\\.com:([^/]+)\\//);\r\n const httpsMatch = remote.match(/github\\.com\\/([^/]+)\\//);\r\n\r\n return sshMatch?.[1] || httpsMatch?.[1] || null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Check if file exists\r\n */\r\nasync function fileExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function initCommand(): Command {\r\n const cmd = new Command('init');\r\n\r\n cmd\r\n .description('Initialize Codex v3.0 with YAML configuration')\r\n .option('--org <slug>', 'Organization slug (e.g., \"fractary\")')\r\n .option('--mcp', 'Enable MCP server registration')\r\n .option('--force', 'Overwrite existing configuration')\r\n .action(async (options) => {\r\n try {\r\n console.log(chalk.blue('Initializing Codex v3.0 (YAML format)...\\n'));\r\n\r\n // Resolve organization\r\n let org = options.org;\r\n\r\n if (!org) {\r\n // Try git remote first\r\n org = await getOrgFromGitRemote();\r\n }\r\n\r\n if (!org) {\r\n // Try SDK's resolveOrganization (dynamic import)\r\n try {\r\n const { resolveOrganization } = await import('@fractary/codex');\r\n org = resolveOrganization({\r\n repoName: path.basename(process.cwd())\r\n });\r\n } catch {\r\n // SDK method failed, continue\r\n }\r\n }\r\n\r\n if (!org) {\r\n // Default fallback\r\n org = path.basename(process.cwd()).split('-')[0] || 'default';\r\n console.log(chalk.yellow(`⚠ Could not detect organization, using: ${org}`));\r\n console.log(chalk.dim(' Use --org <slug> to specify explicitly\\n'));\r\n } else {\r\n console.log(chalk.dim(`Organization: ${chalk.cyan(org)}\\n`));\r\n }\r\n\r\n // Config path (v4.0 standard)\r\n const configDir = path.join(process.cwd(), '.fractary', 'codex');\r\n const configPath = path.join(configDir, 'config.yaml');\r\n const configExists = await fileExists(configPath);\r\n\r\n if (configExists && !options.force) {\r\n console.log(chalk.yellow('⚠ Configuration already exists at .fractary/codex/config.yaml'));\r\n console.log(chalk.dim('Use --force to overwrite'));\r\n process.exit(1);\r\n }\r\n\r\n // Create directory structure\r\n console.log('Creating directory structure...');\r\n\r\n const dirs = [\r\n '.fractary/codex',\r\n '.fractary/codex/cache'\r\n ];\r\n\r\n for (const dir of dirs) {\r\n await fs.mkdir(path.join(process.cwd(), dir), { recursive: true });\r\n console.log(chalk.green('✓'), chalk.dim(dir + '/'));\r\n }\r\n\r\n // Create configuration\r\n console.log('\\nCreating YAML configuration...');\r\n\r\n const config = getDefaultYamlConfig(org);\r\n\r\n // Enable MCP if requested\r\n if (options.mcp && config.mcp) {\r\n config.mcp.enabled = true;\r\n }\r\n\r\n // Write YAML config\r\n await writeYamlConfig(config, configPath);\r\n console.log(chalk.green('✓'), chalk.dim('.fractary/codex/config.yaml'));\r\n\r\n // Success message\r\n console.log(chalk.green('\\n✓ Codex v4.0 initialized successfully!\\n'));\r\n\r\n console.log(chalk.bold('Configuration:'));\r\n console.log(chalk.dim(` Organization: ${org}`));\r\n console.log(chalk.dim(` Cache: .fractary/codex/cache/`));\r\n console.log(chalk.dim(` Config: .fractary/codex/config.yaml`));\r\n if (options.mcp) {\r\n console.log(chalk.dim(` MCP Server: Enabled (port 3000)`));\r\n }\r\n\r\n console.log(chalk.bold('\\nStorage providers configured:'));\r\n console.log(chalk.dim(' - Local filesystem (./knowledge)'));\r\n console.log(chalk.dim(' - GitHub (requires GITHUB_TOKEN)'));\r\n console.log(chalk.dim(' - HTTP endpoint'));\r\n\r\n console.log(chalk.bold('\\nNext steps:'));\r\n console.log(chalk.dim(' 1. Set your GitHub token: export GITHUB_TOKEN=\"your_token\"'));\r\n console.log(chalk.dim(' 2. Edit .fractary/codex/config.yaml to configure storage providers'));\r\n console.log(chalk.dim(' 3. Fetch a document: fractary codex fetch codex://org/project/path'));\r\n console.log(chalk.dim(' 4. Check cache: fractary codex cache list'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Migrate command (v3.0)\r\n *\r\n * Migrates legacy v2.x JSON configurations to v3.0 YAML format:\r\n * - Detects legacy config at .fractary/plugins/codex/config.json\r\n * - Creates backup of old config\r\n * - Transforms to v3.0 YAML format\r\n * - Writes to .fractary/codex/config.yaml\r\n * - Validates migration result\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs/promises';\r\nimport {\r\n migrateConfig,\r\n writeYamlConfig,\r\n type MigrationResult\r\n} from '../../config/migrate-config';\r\n\r\n/**\r\n * Check if file exists\r\n */\r\nasync function fileExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Read file content\r\n */\r\nasync function readFileContent(filePath: string): Promise<string> {\r\n return fs.readFile(filePath, 'utf-8');\r\n}\r\n\r\nexport function migrateCommand(): Command {\r\n const cmd = new Command('migrate');\r\n\r\n cmd\r\n .description('Migrate legacy JSON configuration to v3.0 YAML format')\r\n .option('--dry-run', 'Show migration plan without executing')\r\n .option('--no-backup', 'Skip creating backup of old config')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n const legacyConfigPath = path.join(process.cwd(), '.fractary', 'plugins', 'codex', 'config.json');\r\n const newConfigPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n\r\n // Check if legacy config exists\r\n if (!await fileExists(legacyConfigPath)) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n status: 'no_config',\r\n message: 'No legacy configuration file found',\r\n path: legacyConfigPath\r\n }));\r\n } else {\r\n console.log(chalk.yellow('⚠ No legacy configuration file found.'));\r\n console.log(chalk.dim(` Expected: ${legacyConfigPath}`));\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a new v3.0 YAML configuration.'));\r\n }\r\n return;\r\n }\r\n\r\n // Check if new YAML config already exists\r\n if (await fileExists(newConfigPath) && !options.dryRun) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n status: 'already_migrated',\r\n message: 'YAML configuration already exists',\r\n path: newConfigPath\r\n }));\r\n } else {\r\n console.log(chalk.yellow('⚠ YAML configuration already exists.'));\r\n console.log(chalk.dim(` Path: ${newConfigPath}`));\r\n console.log(chalk.dim('\\nUse \"fractary codex init --force\" to recreate.'));\r\n }\r\n return;\r\n }\r\n\r\n // Load and validate legacy config\r\n const legacyContent = await readFileContent(legacyConfigPath);\r\n let legacyConfig: any;\r\n\r\n try {\r\n legacyConfig = JSON.parse(legacyContent);\r\n } catch {\r\n console.error(chalk.red('Error:'), 'Invalid JSON in legacy config file.');\r\n process.exit(1);\r\n }\r\n\r\n if (!options.json && !options.dryRun) {\r\n console.log(chalk.blue('Migrating Codex configuration to v3.0 YAML format...\\n'));\r\n }\r\n\r\n // Perform migration using utility\r\n const migrationResult: MigrationResult = await migrateConfig(\r\n legacyConfigPath,\r\n {\r\n createBackup: options.backup !== false,\r\n backupSuffix: new Date().toISOString().replace(/[:.]/g, '-')\r\n }\r\n );\r\n\r\n // Display migration plan\r\n if (!options.json) {\r\n console.log(chalk.bold('Legacy Configuration:'));\r\n console.log(chalk.dim(` Path: ${legacyConfigPath}`));\r\n console.log(chalk.dim(` Organization: ${legacyConfig.organization || legacyConfig.organizationSlug || 'unknown'}`));\r\n console.log('');\r\n\r\n console.log(chalk.bold('Migration Changes:'));\r\n console.log(chalk.green(' + Format: JSON → YAML'));\r\n console.log(chalk.green(' + Location: .fractary/plugins/codex/ → .fractary/'));\r\n console.log(chalk.green(' + File: config.json → codex.yaml'));\r\n console.log(chalk.green(' + Storage: Multi-provider configuration'));\r\n console.log(chalk.green(' + Cache: Modern cache management'));\r\n console.log(chalk.green(' + Types: Custom type registry'));\r\n\r\n if (migrationResult.warnings.length > 0) {\r\n console.log('');\r\n console.log(chalk.yellow('Warnings:'));\r\n for (const warning of migrationResult.warnings) {\r\n console.log(chalk.yellow(' ⚠'), chalk.dim(warning));\r\n }\r\n }\r\n\r\n console.log('');\r\n\r\n if (options.dryRun) {\r\n console.log(chalk.blue('Dry run - no changes made.'));\r\n console.log(chalk.dim('Run without --dry-run to execute migration.'));\r\n return;\r\n }\r\n }\r\n\r\n // JSON output for dry run\r\n if (options.json) {\r\n const output: any = {\r\n status: options.dryRun ? 'migration_ready' : 'migrated',\r\n dryRun: options.dryRun || false,\r\n legacyConfig: {\r\n path: legacyConfigPath,\r\n organization: legacyConfig.organization || legacyConfig.organizationSlug\r\n },\r\n newConfig: {\r\n path: newConfigPath,\r\n organization: migrationResult.yamlConfig.organization\r\n },\r\n warnings: migrationResult.warnings,\r\n backupPath: migrationResult.backupPath\r\n };\r\n\r\n console.log(JSON.stringify(output, null, 2));\r\n\r\n if (options.dryRun) {\r\n return;\r\n }\r\n }\r\n\r\n // Write new YAML config\r\n if (!options.dryRun) {\r\n await writeYamlConfig(migrationResult.yamlConfig, newConfigPath);\r\n\r\n // Create cache directory\r\n const cacheDir = path.join(process.cwd(), '.codex-cache');\r\n await fs.mkdir(cacheDir, { recursive: true });\r\n\r\n if (!options.json) {\r\n console.log(chalk.green('✓'), 'YAML configuration created');\r\n console.log(chalk.green('✓'), 'Cache directory initialized');\r\n if (migrationResult.backupPath) {\r\n console.log(chalk.green('✓'), 'Legacy config backed up');\r\n }\r\n\r\n console.log('');\r\n console.log(chalk.bold('New Configuration:'));\r\n console.log(chalk.dim(` Path: ${newConfigPath}`));\r\n console.log(chalk.dim(` Organization: ${migrationResult.yamlConfig.organization}`));\r\n console.log(chalk.dim(` Cache: ${migrationResult.yamlConfig.cacheDir || '.codex-cache'}`));\r\n console.log(chalk.dim(` Storage Providers: ${migrationResult.yamlConfig.storage?.length || 0}`));\r\n\r\n console.log('');\r\n console.log(chalk.bold('Next Steps:'));\r\n console.log(chalk.dim(' 1. Review the new configuration: .fractary/codex/config.yaml'));\r\n console.log(chalk.dim(' 2. Set your GitHub token: export GITHUB_TOKEN=\"your_token\"'));\r\n console.log(chalk.dim(' 3. Test fetching: fractary codex fetch codex://org/project/path'));\r\n\r\n if (migrationResult.backupPath) {\r\n console.log('');\r\n console.log(chalk.dim(`Backup saved: ${path.basename(migrationResult.backupPath)}`));\r\n }\r\n }\r\n }\r\n\r\n } catch (error: any) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n status: 'error',\r\n message: error.message\r\n }));\r\n } else {\r\n console.error(chalk.red('Error:'), error.message);\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Cache command group (v3.0)\r\n *\r\n * Manages the codex document cache with subcommands:\r\n * - list: View cached entries\r\n * - clear: Remove cache entries\r\n * - stats: Display cache statistics\r\n * - health: Diagnostics and auto-repair\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { cacheListCommand } from './list';\r\nimport { cacheClearCommand } from './clear';\r\nimport { cacheStatsCommand } from './stats';\r\nimport { healthCommand } from './health';\r\n\r\nexport function cacheCommand(): Command {\r\n const cmd = new Command('cache');\r\n\r\n cmd\r\n .description('Manage the codex document cache');\r\n\r\n // Register subcommands\r\n cmd.addCommand(cacheListCommand());\r\n cmd.addCommand(cacheClearCommand());\r\n cmd.addCommand(cacheStatsCommand());\r\n cmd.addCommand(healthCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Cache list command (v3.0)\r\n *\r\n * Lists cache information using SDK's CacheManager\r\n *\r\n * Note: The SDK's CacheManager doesn't expose individual cache entries.\r\n * Use 'cache stats' for detailed cache statistics.\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nexport function cacheListCommand(): Command {\r\n const cmd = new Command('list');\r\n\r\n cmd\r\n .description('List cache information')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Get cache stats from SDK\r\n const stats = await client.getCacheStats();\r\n\r\n if (stats.entryCount === 0) {\r\n if (options.json) {\r\n console.log(JSON.stringify({ entries: 0, message: 'Cache is empty' }));\r\n } else {\r\n console.log(chalk.yellow('Cache is empty.'));\r\n console.log(chalk.dim('Fetch some documents to populate the cache.'));\r\n }\r\n return;\r\n }\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n entryCount: stats.entryCount,\r\n totalSize: stats.totalSize,\r\n freshCount: stats.freshCount,\r\n staleCount: stats.staleCount,\r\n expiredCount: stats.expiredCount\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display cache overview\r\n console.log(chalk.bold('Cache Overview\\n'));\r\n\r\n console.log(chalk.bold('Entries:'));\r\n console.log(` Total: ${chalk.cyan(stats.entryCount.toString())} entries`);\r\n console.log(` Fresh: ${chalk.green(stats.freshCount.toString())} entries`);\r\n console.log(` Stale: ${stats.staleCount > 0 ? chalk.yellow(stats.staleCount.toString()) : chalk.dim('0')} entries`);\r\n console.log(` Expired: ${stats.expiredCount > 0 ? chalk.red(stats.expiredCount.toString()) : chalk.dim('0')} entries`);\r\n console.log('');\r\n\r\n console.log(chalk.bold('Storage:'));\r\n console.log(` Total size: ${chalk.cyan(formatSize(stats.totalSize))}`);\r\n console.log('');\r\n\r\n // Health indicator\r\n const healthPercent = stats.entryCount > 0 ? (stats.freshCount / stats.entryCount) * 100 : 100;\r\n const healthColor = healthPercent > 80 ? chalk.green : healthPercent > 50 ? chalk.yellow : chalk.red;\r\n console.log(`Cache health: ${healthColor(`${healthPercent.toFixed(0)}% fresh`)}`);\r\n console.log('');\r\n\r\n console.log(chalk.dim('Note: Individual cache entries are managed by the SDK.'));\r\n console.log(chalk.dim('Use \"fractary codex cache stats\" for detailed statistics.'));\r\n console.log(chalk.dim('Use \"fractary codex cache clear\" to clear cache entries.'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Cache clear command (v3.0)\r\n *\r\n * Clears cache entries using SDK's CacheManager\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\nexport function cacheClearCommand(): Command {\r\n const cmd = new Command('clear');\r\n\r\n cmd\r\n .description('Clear cache entries')\r\n .option('--all', 'Clear entire cache')\r\n .option('--pattern <glob>', 'Clear entries matching URI pattern (e.g., \"codex://fractary/*\")')\r\n .option('--dry-run', 'Show what would be cleared without actually clearing')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Get stats before clearing (for reporting)\r\n const statsBefore = await client.getCacheStats();\r\n\r\n if (statsBefore.entryCount === 0) {\r\n console.log(chalk.yellow('Cache is already empty. Nothing to clear.'));\r\n return;\r\n }\r\n\r\n // Determine what to clear\r\n let pattern: string | undefined;\r\n\r\n if (options.all) {\r\n pattern = undefined; // Clear all\r\n } else if (options.pattern) {\r\n pattern = options.pattern;\r\n } else {\r\n console.log(chalk.yellow('Please specify what to clear:'));\r\n console.log(chalk.dim(' --all Clear entire cache'));\r\n console.log(chalk.dim(' --pattern Clear entries matching pattern (e.g., \"codex://fractary/*\")'));\r\n console.log('');\r\n console.log(chalk.dim('Examples:'));\r\n console.log(chalk.dim(' fractary codex cache clear --all'));\r\n console.log(chalk.dim(' fractary codex cache clear --pattern \"codex://fractary/cli/*\"'));\r\n return;\r\n }\r\n\r\n if (options.dryRun) {\r\n console.log(chalk.blue('Dry run - would clear:\\n'));\r\n if (pattern) {\r\n console.log(chalk.dim(` Pattern: ${pattern}`));\r\n console.log(chalk.dim(` This would invalidate matching cache entries`));\r\n } else {\r\n console.log(chalk.dim(` All cache entries (${statsBefore.entryCount} entries)`));\r\n }\r\n console.log(chalk.dim(`\\nTotal size: ${formatSize(statsBefore.totalSize)}`));\r\n return;\r\n }\r\n\r\n // Perform invalidation\r\n if (pattern) {\r\n console.log(chalk.blue(`Clearing cache entries matching pattern: ${pattern}\\n`));\r\n await client.invalidateCache(pattern);\r\n } else {\r\n console.log(chalk.blue(`Clearing entire cache (${statsBefore.entryCount} entries)...\\n`));\r\n await client.invalidateCache();\r\n }\r\n\r\n // Get stats after clearing\r\n const statsAfter = await client.getCacheStats();\r\n const entriesCleared = statsBefore.entryCount - statsAfter.entryCount;\r\n const sizeFreed = statsBefore.totalSize - statsAfter.totalSize;\r\n\r\n // Summary\r\n console.log(chalk.green(`✓ Cleared ${entriesCleared} entries (${formatSize(sizeFreed)} freed)`));\r\n\r\n if (statsAfter.entryCount > 0) {\r\n console.log(chalk.dim(` Remaining: ${statsAfter.entryCount} entries (${formatSize(statsAfter.totalSize)})`));\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n","/**\r\n * Cache stats command (v3.0)\r\n *\r\n * Display cache statistics using SDK's CacheManager\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nexport function cacheStatsCommand(): Command {\r\n const cmd = new Command('stats');\r\n\r\n cmd\r\n .description('Display cache statistics')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n\r\n // Get cache stats from SDK\r\n const stats = await client.getCacheStats();\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify(stats, null, 2));\r\n return;\r\n }\r\n\r\n // Display formatted output\r\n console.log(chalk.bold('Cache Statistics\\n'));\r\n\r\n console.log(chalk.bold('Overview'));\r\n console.log(` Total entries: ${chalk.cyan(stats.entryCount.toString())}`);\r\n console.log(` Total size: ${chalk.cyan(formatSize(stats.totalSize))}`);\r\n console.log(` Fresh entries: ${chalk.green(stats.freshCount.toString())}`);\r\n console.log(` Stale entries: ${stats.staleCount > 0 ? chalk.yellow(stats.staleCount.toString()) : chalk.dim('0')}`);\r\n console.log(` Expired entries: ${stats.expiredCount > 0 ? chalk.red(stats.expiredCount.toString()) : chalk.dim('0')}`);\r\n console.log('');\r\n\r\n // Health indicator based on fresh vs total ratio\r\n const healthPercent = stats.entryCount > 0 ? (stats.freshCount / stats.entryCount) * 100 : 100;\r\n const healthColor = healthPercent > 80 ? chalk.green : healthPercent > 50 ? chalk.yellow : chalk.red;\r\n console.log(`Cache health: ${healthColor(`${healthPercent.toFixed(0)}% fresh`)}`);\r\n\r\n if (stats.expiredCount > 0) {\r\n console.log(chalk.dim('\\nRun \"fractary codex cache clear --pattern <pattern>\" to clean up entries.'));\r\n }\r\n\r\n if (stats.entryCount === 0) {\r\n console.log(chalk.dim('\\nNo cached entries. Fetch some documents to populate the cache.'));\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Health command (v3.0)\r\n *\r\n * Comprehensive diagnostics for codex SDK setup:\r\n * - YAML configuration validation\r\n * - CodexClient initialization\r\n * - Cache health via CacheManager\r\n * - Storage provider connectivity\r\n * - Type registry validation\r\n * - Legacy configuration detection\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs/promises';\r\nimport { getClient } from '../../client/get-client';\r\nimport { readYamlConfig } from '../../config/migrate-config';\r\n\r\ninterface HealthCheck {\r\n name: string;\r\n status: 'pass' | 'warn' | 'fail';\r\n message: string;\r\n details?: string;\r\n}\r\n\r\n/**\r\n * Check if file exists\r\n */\r\nasync function fileExists(filePath: string): Promise<boolean> {\r\n try {\r\n await fs.access(filePath);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Check YAML configuration\r\n */\r\nasync function checkConfiguration(): Promise<HealthCheck> {\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n const legacyConfigPath = path.join(process.cwd(), '.fractary', 'plugins', 'codex', 'config.json');\r\n\r\n try {\r\n // Check for YAML config\r\n if (!await fileExists(configPath)) {\r\n // Check for legacy config\r\n if (await fileExists(legacyConfigPath)) {\r\n return {\r\n name: 'Configuration',\r\n status: 'warn',\r\n message: 'Legacy JSON configuration detected',\r\n details: 'Run \"fractary codex migrate\" to upgrade to YAML format'\r\n };\r\n }\r\n\r\n return {\r\n name: 'Configuration',\r\n status: 'fail',\r\n message: 'No configuration found',\r\n details: 'Run \"fractary codex init\" to create configuration'\r\n };\r\n }\r\n\r\n // Validate YAML config\r\n const config = await readYamlConfig(configPath);\r\n\r\n if (!config.organization) {\r\n return {\r\n name: 'Configuration',\r\n status: 'warn',\r\n message: 'No organization configured',\r\n details: 'Organization slug is required'\r\n };\r\n }\r\n\r\n // Check storage providers\r\n const providerCount = config.storage?.length || 0;\r\n if (providerCount === 0) {\r\n return {\r\n name: 'Configuration',\r\n status: 'warn',\r\n message: 'No storage providers configured',\r\n details: 'At least one storage provider is recommended'\r\n };\r\n }\r\n\r\n return {\r\n name: 'Configuration',\r\n status: 'pass',\r\n message: 'Valid YAML configuration',\r\n details: `Organization: ${config.organization}, ${providerCount} storage provider(s)`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Configuration',\r\n status: 'fail',\r\n message: 'Invalid configuration',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check SDK client initialization\r\n */\r\nasync function checkSDKClient(): Promise<HealthCheck> {\r\n try {\r\n const client = await getClient();\r\n const organization = client.getOrganization();\r\n\r\n return {\r\n name: 'SDK Client',\r\n status: 'pass',\r\n message: 'CodexClient initialized successfully',\r\n details: `Organization: ${organization}`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'SDK Client',\r\n status: 'fail',\r\n message: 'Failed to initialize CodexClient',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check cache health\r\n */\r\nasync function checkCache(): Promise<HealthCheck> {\r\n try {\r\n const client = await getClient();\r\n const stats = await client.getCacheStats();\r\n\r\n if (stats.entryCount === 0) {\r\n return {\r\n name: 'Cache',\r\n status: 'warn',\r\n message: 'Cache is empty',\r\n details: 'Fetch some documents to populate cache'\r\n };\r\n }\r\n\r\n const healthPercent = stats.entryCount > 0 ? (stats.freshCount / stats.entryCount) * 100 : 100;\r\n\r\n if (healthPercent < 50) {\r\n return {\r\n name: 'Cache',\r\n status: 'warn',\r\n message: `${stats.entryCount} entries (${healthPercent.toFixed(0)}% fresh)`,\r\n details: `${stats.expiredCount} expired, ${stats.staleCount} stale`\r\n };\r\n }\r\n\r\n return {\r\n name: 'Cache',\r\n status: 'pass',\r\n message: `${stats.entryCount} entries (${healthPercent.toFixed(0)}% fresh)`,\r\n details: `${formatSize(stats.totalSize)} total`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Cache',\r\n status: 'fail',\r\n message: 'Cache check failed',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check storage providers\r\n */\r\nasync function checkStorage(): Promise<HealthCheck> {\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n\r\n try {\r\n const config = await readYamlConfig(configPath);\r\n const providers = config.storage || [];\r\n\r\n if (providers.length === 0) {\r\n return {\r\n name: 'Storage',\r\n status: 'warn',\r\n message: 'No storage providers configured',\r\n details: 'Configure at least one provider in .fractary/codex/config.yaml'\r\n };\r\n }\r\n\r\n const providerTypes = providers.map(p => p.type).join(', ');\r\n const hasGitHub = providers.some(p => p.type === 'github');\r\n\r\n if (hasGitHub && !process.env.GITHUB_TOKEN) {\r\n return {\r\n name: 'Storage',\r\n status: 'warn',\r\n message: `${providers.length} provider(s): ${providerTypes}`,\r\n details: 'GITHUB_TOKEN not set (required for GitHub provider)'\r\n };\r\n }\r\n\r\n return {\r\n name: 'Storage',\r\n status: 'pass',\r\n message: `${providers.length} provider(s): ${providerTypes}`,\r\n details: 'All configured providers available'\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Storage',\r\n status: 'fail',\r\n message: 'Storage check failed',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Check type registry\r\n */\r\nasync function checkTypes(): Promise<HealthCheck> {\r\n try {\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n const allTypes = registry.list();\r\n\r\n const builtinCount = allTypes.filter(t => registry.isBuiltIn(t.name)).length;\r\n const customCount = allTypes.length - builtinCount;\r\n\r\n return {\r\n name: 'Type Registry',\r\n status: 'pass',\r\n message: `${allTypes.length} types registered`,\r\n details: `${builtinCount} built-in, ${customCount} custom`\r\n };\r\n\r\n } catch (error: any) {\r\n return {\r\n name: 'Type Registry',\r\n status: 'fail',\r\n message: 'Type registry check failed',\r\n details: error.message\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Format file size\r\n */\r\nfunction formatSize(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\nexport function healthCommand(): Command {\r\n const cmd = new Command('health');\r\n\r\n cmd\r\n .description('Run diagnostics on codex setup')\r\n .option('--json', 'Output as JSON')\r\n .action(async (options) => {\r\n try {\r\n // Run all health checks\r\n const checks: HealthCheck[] = [];\r\n\r\n checks.push(await checkConfiguration());\r\n checks.push(await checkSDKClient());\r\n checks.push(await checkCache());\r\n checks.push(await checkStorage());\r\n checks.push(await checkTypes());\r\n\r\n // Count results\r\n const passed = checks.filter(c => c.status === 'pass').length;\r\n const warned = checks.filter(c => c.status === 'warn').length;\r\n const failed = checks.filter(c => c.status === 'fail').length;\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n summary: {\r\n total: checks.length,\r\n passed,\r\n warned,\r\n failed,\r\n healthy: failed === 0\r\n },\r\n checks\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display results\r\n console.log(chalk.bold('Codex Health Check\\n'));\r\n\r\n for (const check of checks) {\r\n const icon = check.status === 'pass' ? chalk.green('✓') :\r\n check.status === 'warn' ? chalk.yellow('⚠') :\r\n chalk.red('✗');\r\n\r\n const statusColor = check.status === 'pass' ? chalk.green :\r\n check.status === 'warn' ? chalk.yellow :\r\n chalk.red;\r\n\r\n console.log(`${icon} ${chalk.bold(check.name)}`);\r\n console.log(` ${statusColor(check.message)}`);\r\n if (check.details) {\r\n console.log(` ${chalk.dim(check.details)}`);\r\n }\r\n console.log('');\r\n }\r\n\r\n // Summary\r\n console.log(chalk.dim('─'.repeat(60)));\r\n\r\n const overallStatus = failed > 0 ? chalk.red('UNHEALTHY') :\r\n warned > 0 ? chalk.yellow('DEGRADED') :\r\n chalk.green('HEALTHY');\r\n\r\n console.log(`Status: ${overallStatus}`);\r\n console.log(chalk.dim(`${passed} passed, ${warned} warnings, ${failed} failed`));\r\n\r\n if (failed > 0 || warned > 0) {\r\n console.log('');\r\n console.log(chalk.dim('Run checks individually for more details:'));\r\n console.log(chalk.dim(' fractary codex cache stats'));\r\n console.log(chalk.dim(' fractary codex types list'));\r\n }\r\n\r\n // Exit with error if any checks failed\r\n if (failed > 0) {\r\n process.exit(1);\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Sync command (v3.0)\r\n *\r\n * Synchronizes project with the codex repository using SDK SyncManager:\r\n * - Multi-directional sync (to-codex, from-codex, bidirectional)\r\n * - Manifest tracking for sync state\r\n * - Conflict detection and resolution\r\n * - Pattern-based file filtering\r\n * - Dry-run mode\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\n// Import types only\r\nimport type {\r\n SyncDirection,\r\n SyncOptions,\r\n SyncConfig\r\n} from '@fractary/codex';\r\nimport { readYamlConfig } from '../config/migrate-config';\r\n\r\n/**\r\n * Get environment branch mapping\r\n */\r\nfunction getEnvironmentBranch(config: any, env: string): string {\r\n const envMap = config.sync?.environments || {\r\n dev: 'develop',\r\n test: 'test',\r\n staging: 'staging',\r\n prod: 'main'\r\n };\r\n\r\n return envMap[env] || env;\r\n}\r\n\r\n/**\r\n * Format bytes to human-readable size\r\n */\r\nfunction formatBytes(bytes: number): string {\r\n if (bytes < 1024) return `${bytes} B`;\r\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\r\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\r\n}\r\n\r\n/**\r\n * Format duration in milliseconds\r\n */\r\nfunction formatDuration(ms: number): string {\r\n if (ms < 1000) return `${ms}ms`;\r\n return `${(ms / 1000).toFixed(1)}s`;\r\n}\r\n\r\nexport function syncCommand(): Command {\r\n const cmd = new Command('sync');\r\n\r\n cmd\r\n .description('Sync single project with codex repository')\r\n .argument('[name]', 'Project name (auto-detected if not provided)')\r\n .option('--env <env>', 'Target environment (dev/test/staging/prod)', 'prod')\r\n .option('--dry-run', 'Show what would sync without executing')\r\n .option('--direction <dir>', 'Sync direction (to-codex/from-codex/bidirectional)', 'bidirectional')\r\n .option('--include <pattern>', 'Include files matching pattern (can be used multiple times)', (val, prev: string[]) => prev.concat([val]), [])\r\n .option('--exclude <pattern>', 'Exclude files matching pattern (can be used multiple times)', (val, prev: string[]) => prev.concat([val]), [])\r\n .option('--force', 'Force sync without checking timestamps')\r\n .option('--json', 'Output as JSON')\r\n .action(async (name: string | undefined, options) => {\r\n try {\r\n // Load YAML config\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n let config;\r\n\r\n try {\r\n config = await readYamlConfig(configPath);\r\n } catch (error) {\r\n console.error(chalk.red('Error:'), 'Codex not initialized.');\r\n console.log(chalk.dim('Run \"fractary codex init\" first.'));\r\n process.exit(1);\r\n }\r\n\r\n // Dynamic import to avoid loading SDK at module time\r\n const { createSyncManager, createLocalStorage, detectCurrentProject } = await import('@fractary/codex');\r\n\r\n // Determine project name\r\n let projectName = name;\r\n if (!projectName) {\r\n const detected = detectCurrentProject();\r\n projectName = detected.project || undefined;\r\n }\r\n\r\n if (!projectName) {\r\n console.error(chalk.red('Error:'), 'Could not determine project name.');\r\n console.log(chalk.dim('Provide project name as argument or run from a git repository.'));\r\n process.exit(1);\r\n }\r\n\r\n // Validate direction\r\n const validDirections: SyncDirection[] = ['to-codex', 'from-codex', 'bidirectional'];\r\n if (!validDirections.includes(options.direction as SyncDirection)) {\r\n console.error(chalk.red('Error:'), `Invalid direction: ${options.direction}`);\r\n console.log(chalk.dim('Valid options: to-codex, from-codex, bidirectional'));\r\n process.exit(1);\r\n }\r\n\r\n const direction = options.direction as SyncDirection;\r\n const targetBranch = getEnvironmentBranch(config, options.env);\r\n\r\n // Create LocalStorage instance\r\n const localStorage = createLocalStorage({\r\n baseDir: process.cwd()\r\n });\r\n\r\n // Create SyncManager\r\n const syncManager = createSyncManager({\r\n localStorage,\r\n config: config.sync as Partial<SyncConfig>,\r\n manifestPath: path.join(process.cwd(), '.fractary', '.codex-sync-manifest.json')\r\n });\r\n\r\n // Get include patterns from config or use defaults\r\n // For to-codex: use config.sync.to_codex if available\r\n // For from-codex: config.sync.from_codex is handled by routing scanner\r\n const defaultToCodexPatterns = [\r\n 'docs/**/*.md',\r\n 'specs/**/*.md',\r\n '.fractary/standards/**',\r\n '.fractary/templates/**'\r\n ];\r\n\r\n // Use proper type for sync config\r\n const syncConfig = config.sync as Partial<SyncConfig> | undefined;\r\n\r\n // Resolve to_codex patterns (supports both new and legacy formats)\r\n let configIncludePatterns: string[];\r\n let configExcludePatterns: string[] = [];\r\n\r\n if (syncConfig?.to_codex) {\r\n const toCodex = syncConfig.to_codex;\r\n // Check if new format (object with include/exclude)\r\n if (typeof toCodex === 'object' && !Array.isArray(toCodex)) {\r\n // New format: DirectionalSyncConfig with include/exclude\r\n const directionalConfig = toCodex as { include?: string[]; exclude?: string[] };\r\n configIncludePatterns = directionalConfig.include || defaultToCodexPatterns;\r\n configExcludePatterns = directionalConfig.exclude || [];\r\n } else if (Array.isArray(toCodex)) {\r\n // Legacy format (array of patterns)\r\n configIncludePatterns = toCodex;\r\n configExcludePatterns = syncConfig.exclude || [];\r\n } else {\r\n configIncludePatterns = defaultToCodexPatterns;\r\n configExcludePatterns = [];\r\n }\r\n } else {\r\n // No to_codex config, use defaults\r\n configIncludePatterns = defaultToCodexPatterns;\r\n configExcludePatterns = syncConfig?.exclude || [];\r\n }\r\n\r\n // CLI options override config\r\n const includePatterns = options.include.length > 0 ? options.include : configIncludePatterns;\r\n const excludePatterns = [\r\n ...configExcludePatterns,\r\n ...options.exclude\r\n ];\r\n\r\n // Scan local files using proper glob pattern matching\r\n const sourceDir = process.cwd();\r\n const { glob: globSync } = await import('glob');\r\n\r\n // Match files using glob patterns\r\n const matchedFilePaths = new Set<string>();\r\n\r\n for (const pattern of includePatterns) {\r\n try {\r\n const matches = await globSync(pattern, {\r\n cwd: sourceDir,\r\n dot: true,\r\n nodir: true,\r\n ignore: excludePatterns\r\n });\r\n matches.forEach(match => matchedFilePaths.add(match));\r\n } catch (error: any) {\r\n console.error(chalk.yellow(`Warning: Invalid pattern \"${pattern}\": ${error.message}`));\r\n }\r\n }\r\n\r\n // Convert matched paths to file objects with stat info\r\n const targetFiles = await Promise.all(\r\n Array.from(matchedFilePaths).map(async (filePath) => {\r\n const fullPath = path.join(sourceDir, filePath);\r\n const stats = await import('fs/promises').then(fs => fs.stat(fullPath));\r\n return {\r\n path: filePath,\r\n size: stats.size,\r\n mtime: stats.mtimeMs\r\n };\r\n })\r\n );\r\n\r\n // Create sync plan with options\r\n // Note: include/exclude patterns are used for to-codex direction.\r\n // For from-codex (routing-aware), these patterns are ignored to avoid\r\n // double filtering, since routing rules already determine which files sync.\r\n const syncOptions: SyncOptions = {\r\n direction,\r\n dryRun: options.dryRun,\r\n force: options.force,\r\n include: includePatterns,\r\n exclude: excludePatterns\r\n };\r\n\r\n let plan;\r\n let routingScan;\r\n\r\n // Use routing-aware sync for from-codex direction\r\n if (direction === 'from-codex') {\r\n let codexRepoPath: string;\r\n\r\n try {\r\n const { ensureCodexCloned } = await import('../utils/codex-repository.js');\r\n\r\n if (!options.json) {\r\n console.log(chalk.blue('ℹ Cloning/updating codex repository...'));\r\n }\r\n\r\n // Clone codex to temp directory\r\n codexRepoPath = await ensureCodexCloned(config, {\r\n branch: targetBranch\r\n });\r\n\r\n if (!options.json) {\r\n console.log(chalk.dim(` Codex cloned to: ${codexRepoPath}`));\r\n console.log(chalk.dim(' Scanning for files routing to this project...\\n'));\r\n } else {\r\n console.log(JSON.stringify({\r\n info: 'Routing-aware sync: cloned codex repository and scanning for files targeting this project',\r\n codexPath: codexRepoPath\r\n }, null, 2));\r\n }\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), 'Failed to clone codex repository');\r\n console.error(chalk.dim(` ${error.message}`));\r\n\r\n // Provide error-specific troubleshooting\r\n console.log(chalk.yellow('\\nTroubleshooting:'));\r\n if (error.message.includes('Git command not found')) {\r\n console.log(chalk.dim(' Git is not installed or not in PATH.'));\r\n console.log(chalk.dim(' Install git: https://git-scm.com/downloads'));\r\n } else if (error.message.includes('authentication failed') || error.message.includes('Authentication failed')) {\r\n console.log(chalk.dim(' GitHub authentication is required for private repositories.'));\r\n console.log(chalk.dim(' 1. Check auth status: gh auth status'));\r\n console.log(chalk.dim(' 2. Login if needed: gh auth login'));\r\n console.log(chalk.dim(' 3. Or set GITHUB_TOKEN environment variable'));\r\n } else if (error.message.includes('Permission denied')) {\r\n console.log(chalk.dim(' Permission denied accessing repository files.'));\r\n console.log(chalk.dim(' 1. Check file/directory permissions'));\r\n console.log(chalk.dim(' 2. Ensure you have access to the repository'));\r\n } else if (error.message.includes('not found') || error.message.includes('does not exist')) {\r\n console.log(chalk.dim(` Repository not found: ${config.organization}/${(config as any).codex_repository || 'codex'}`));\r\n console.log(chalk.dim(' 1. Verify the repository exists on GitHub'));\r\n console.log(chalk.dim(' 2. Check organization and repository names in config'));\r\n } else {\r\n // Generic troubleshooting for other errors\r\n console.log(chalk.dim(' 1. Ensure git is installed: git --version'));\r\n console.log(chalk.dim(' 2. Check GitHub auth: gh auth status'));\r\n console.log(chalk.dim(` 3. Verify repo exists: ${config.organization}/${(config as any).codex_repository || 'codex'}`));\r\n }\r\n process.exit(1);\r\n }\r\n\r\n // Use temp clone path for routing scan\r\n const planWithRouting = await syncManager.createRoutingAwarePlan(\r\n config.organization,\r\n projectName,\r\n codexRepoPath,\r\n syncOptions\r\n );\r\n\r\n plan = planWithRouting;\r\n routingScan = planWithRouting.routingScan;\r\n } else {\r\n plan = await syncManager.createPlan(\r\n config.organization,\r\n projectName,\r\n sourceDir,\r\n targetFiles,\r\n syncOptions\r\n );\r\n }\r\n\r\n if (plan.totalFiles === 0) {\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n project: projectName,\r\n organization: config.organization,\r\n files: [],\r\n synced: 0\r\n }, null, 2));\r\n } else {\r\n console.log(chalk.yellow('No files to sync.'));\r\n }\r\n return;\r\n }\r\n\r\n if (options.json) {\r\n const output = {\r\n project: projectName,\r\n organization: config.organization,\r\n environment: options.env,\r\n branch: targetBranch,\r\n direction,\r\n dryRun: options.dryRun || false,\r\n plan: {\r\n totalFiles: plan.totalFiles,\r\n totalBytes: plan.totalBytes,\r\n estimatedTime: plan.estimatedTime,\r\n conflicts: plan.conflicts.length,\r\n skipped: plan.skipped.length\r\n },\r\n files: plan.files.map(f => ({\r\n path: f.path,\r\n operation: f.operation,\r\n size: f.size\r\n }))\r\n };\r\n\r\n if (options.dryRun) {\r\n console.log(JSON.stringify(output, null, 2));\r\n return;\r\n }\r\n\r\n // Execute and add results\r\n const result = await syncManager.executePlan(plan, syncOptions);\r\n console.log(JSON.stringify({\r\n ...output,\r\n result: {\r\n success: result.success,\r\n synced: result.synced,\r\n failed: result.failed,\r\n skipped: result.skipped,\r\n duration: result.duration,\r\n errors: result.errors\r\n }\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display sync plan\r\n console.log(chalk.bold('Sync Plan\\n'));\r\n console.log(` Project: ${chalk.cyan(projectName)}`);\r\n console.log(` Organization: ${chalk.cyan(config.organization)}`);\r\n console.log(` Environment: ${chalk.cyan(options.env)} (${targetBranch})`);\r\n console.log(` Direction: ${chalk.cyan(direction)}`);\r\n console.log(` Files: ${chalk.cyan(plan.totalFiles.toString())}`);\r\n console.log(` Total size: ${chalk.cyan(formatBytes(plan.totalBytes))}`);\r\n if (plan.estimatedTime) {\r\n console.log(` Est. time: ${chalk.dim(formatDuration(plan.estimatedTime))}`);\r\n }\r\n\r\n // Display routing statistics if using routing-aware sync\r\n if (routingScan) {\r\n console.log('');\r\n console.log(chalk.bold('Routing Statistics\\n'));\r\n console.log(` Scanned: ${chalk.cyan(routingScan.stats.totalScanned.toString())} files`);\r\n console.log(` Matched: ${chalk.cyan(routingScan.stats.totalMatched.toString())} files`);\r\n console.log(` Source projects: ${chalk.cyan(routingScan.stats.sourceProjects.length.toString())}`);\r\n if (routingScan.stats.sourceProjects.length > 0) {\r\n console.log(chalk.dim(` ${routingScan.stats.sourceProjects.slice(0, 5).join(', ')}`));\r\n if (routingScan.stats.sourceProjects.length > 5) {\r\n console.log(chalk.dim(` ... and ${routingScan.stats.sourceProjects.length - 5} more`));\r\n }\r\n }\r\n console.log(` Scan time: ${chalk.dim(formatDuration(routingScan.stats.durationMs))}`);\r\n }\r\n\r\n console.log('');\r\n\r\n if (plan.conflicts.length > 0) {\r\n console.log(chalk.yellow(`⚠ ${plan.conflicts.length} conflicts detected:`));\r\n for (const conflict of plan.conflicts.slice(0, 5)) {\r\n console.log(chalk.yellow(` • ${conflict.path}`));\r\n }\r\n if (plan.conflicts.length > 5) {\r\n console.log(chalk.dim(` ... and ${plan.conflicts.length - 5} more`));\r\n }\r\n console.log('');\r\n }\r\n\r\n if (plan.skipped.length > 0) {\r\n console.log(chalk.dim(`${plan.skipped.length} files skipped (no changes)`));\r\n console.log('');\r\n }\r\n\r\n if (options.dryRun) {\r\n console.log(chalk.blue('Dry run - would sync:\\n'));\r\n\r\n const filesToShow = plan.files.slice(0, 10);\r\n for (const file of filesToShow) {\r\n const arrow = direction === 'to-codex' ? '→' : direction === 'from-codex' ? '←' : '↔';\r\n const opColor = file.operation === 'create' ? chalk.green :\r\n file.operation === 'update' ? chalk.yellow :\r\n chalk.dim;\r\n console.log(\r\n chalk.dim(` ${arrow}`),\r\n opColor(file.operation.padEnd(7)),\r\n file.path,\r\n chalk.dim(`(${formatBytes(file.size || 0)})`)\r\n );\r\n }\r\n\r\n if (plan.files.length > 10) {\r\n console.log(chalk.dim(` ... and ${plan.files.length - 10} more files`));\r\n }\r\n\r\n console.log(chalk.dim(`\\nTotal: ${plan.totalFiles} files (${formatBytes(plan.totalBytes)})`));\r\n console.log(chalk.dim('Run without --dry-run to execute sync.'));\r\n return;\r\n }\r\n\r\n // Execute sync\r\n console.log(chalk.blue('Syncing...\\n'));\r\n\r\n const startTime = Date.now();\r\n const result = await syncManager.executePlan(plan, syncOptions);\r\n const duration = Date.now() - startTime;\r\n\r\n // Summary\r\n console.log('');\r\n if (result.success) {\r\n console.log(chalk.green(`✓ Sync completed successfully`));\r\n console.log(chalk.dim(` Synced: ${result.synced} files`));\r\n if (result.skipped > 0) {\r\n console.log(chalk.dim(` Skipped: ${result.skipped} files`));\r\n }\r\n console.log(chalk.dim(` Duration: ${formatDuration(duration)}`));\r\n } else {\r\n console.log(chalk.yellow(`⚠ Sync completed with errors`));\r\n console.log(chalk.green(` Synced: ${result.synced} files`));\r\n console.log(chalk.red(` Failed: ${result.failed} files`));\r\n if (result.skipped > 0) {\r\n console.log(chalk.dim(` Skipped: ${result.skipped} files`));\r\n }\r\n\r\n if (result.errors.length > 0) {\r\n console.log('');\r\n console.log(chalk.red('Errors:'));\r\n for (const error of result.errors.slice(0, 5)) {\r\n console.log(chalk.red(` • ${error.path}: ${error.error}`));\r\n }\r\n if (result.errors.length > 5) {\r\n console.log(chalk.dim(` ... and ${result.errors.length - 5} more errors`));\r\n }\r\n }\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types command group (v3.0)\r\n *\r\n * Manages the artifact type registry:\r\n * - list: View all types (built-in and custom)\r\n * - show: View details for a specific type\r\n * - add: Register a custom type\r\n * - remove: Unregister a custom type\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport { typesListCommand } from './list';\r\nimport { typesShowCommand } from './show';\r\nimport { typesAddCommand } from './add';\r\nimport { typesRemoveCommand } from './remove';\r\n\r\nexport function typesCommand(): Command {\r\n const cmd = new Command('types');\r\n\r\n cmd\r\n .description('Manage artifact type registry');\r\n\r\n // Register subcommands\r\n cmd.addCommand(typesListCommand());\r\n cmd.addCommand(typesShowCommand());\r\n cmd.addCommand(typesAddCommand());\r\n cmd.addCommand(typesRemoveCommand());\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types list command (v3.0)\r\n *\r\n * Lists all artifact types using SDK's TypeRegistry\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format TTL from seconds to human-readable string\r\n */\r\nfunction formatTtl(seconds: number): string {\r\n if (seconds < 60) return `${seconds}s`;\r\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\r\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\r\n return `${Math.floor(seconds / 86400)}d`;\r\n}\r\n\r\nexport function typesListCommand(): Command {\r\n const cmd = new Command('list');\r\n\r\n cmd\r\n .description('List all artifact types')\r\n .option('--json', 'Output as JSON')\r\n .option('--custom-only', 'Show only custom types')\r\n .option('--builtin-only', 'Show only built-in types')\r\n .action(async (options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Get all types from registry\r\n const allTypes = registry.list();\r\n\r\n // Filter based on options\r\n let types = allTypes;\r\n if (options.customOnly) {\r\n types = allTypes.filter(t => !registry.isBuiltIn(t.name));\r\n } else if (options.builtinOnly) {\r\n types = allTypes.filter(t => registry.isBuiltIn(t.name));\r\n }\r\n\r\n if (options.json) {\r\n const builtinCount = types.filter(t => registry.isBuiltIn(t.name)).length;\r\n const customCount = types.length - builtinCount;\r\n\r\n console.log(JSON.stringify({\r\n count: types.length,\r\n builtinCount,\r\n customCount,\r\n types: types.map(t => ({\r\n name: t.name,\r\n description: t.description,\r\n patterns: t.patterns,\r\n defaultTtl: t.defaultTtl,\r\n ttl: formatTtl(t.defaultTtl),\r\n builtin: registry.isBuiltIn(t.name),\r\n archiveAfterDays: t.archiveAfterDays,\r\n archiveStorage: t.archiveStorage\r\n }))\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n if (types.length === 0) {\r\n console.log(chalk.yellow('No types found.'));\r\n return;\r\n }\r\n\r\n console.log(chalk.bold('Artifact Types\\n'));\r\n\r\n // Group by built-in vs custom\r\n const builtinTypes = types.filter(t => registry.isBuiltIn(t.name));\r\n const customTypes = types.filter(t => !registry.isBuiltIn(t.name));\r\n\r\n if (builtinTypes.length > 0 && !options.customOnly) {\r\n console.log(chalk.bold('Built-in Types'));\r\n console.log(chalk.dim('─'.repeat(70)));\r\n\r\n for (const type of builtinTypes) {\r\n const patternStr = type.patterns[0] || '';\r\n console.log(` ${chalk.cyan(type.name.padEnd(12))} ${patternStr.padEnd(30)} ${chalk.dim(`TTL: ${formatTtl(type.defaultTtl)}`)}`);\r\n console.log(` ${chalk.dim(' '.repeat(12) + type.description)}`);\r\n }\r\n console.log('');\r\n }\r\n\r\n if (customTypes.length > 0 && !options.builtinOnly) {\r\n console.log(chalk.bold('Custom Types'));\r\n console.log(chalk.dim('─'.repeat(70)));\r\n\r\n for (const type of customTypes) {\r\n const patternStr = type.patterns[0] || '';\r\n console.log(` ${chalk.green(type.name.padEnd(12))} ${patternStr.padEnd(30)} ${chalk.dim(`TTL: ${formatTtl(type.defaultTtl)}`)}`);\r\n console.log(` ${chalk.dim(' '.repeat(12) + type.description)}`);\r\n }\r\n console.log('');\r\n }\r\n\r\n // Summary\r\n console.log(chalk.dim(`Total: ${types.length} types (${builtinTypes.length} built-in, ${customTypes.length} custom)`));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types show command (v3.0)\r\n *\r\n * Shows details for a specific artifact type using SDK's TypeRegistry\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Format TTL from seconds to human-readable string\r\n */\r\nfunction formatTtl(seconds: number): string {\r\n if (seconds < 60) return `${seconds}s`;\r\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\r\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\r\n return `${Math.floor(seconds / 86400)}d`;\r\n}\r\n\r\nexport function typesShowCommand(): Command {\r\n const cmd = new Command('show');\r\n\r\n cmd\r\n .description('Show details for a specific type')\r\n .argument('<name>', 'Type name')\r\n .option('--json', 'Output as JSON')\r\n .action(async (name: string, options) => {\r\n try {\r\n // Get CodexClient instance\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Get type from registry\r\n const type = registry.get(name);\r\n\r\n if (!type) {\r\n console.error(chalk.red('Error:'), `Type \"${name}\" not found.`);\r\n console.log(chalk.dim('Run \"fractary codex types list\" to see available types.'));\r\n process.exit(1);\r\n }\r\n\r\n const isBuiltin = registry.isBuiltIn(name);\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n name: type.name,\r\n builtin: isBuiltin,\r\n description: type.description,\r\n patterns: type.patterns,\r\n defaultTtl: type.defaultTtl,\r\n ttl: formatTtl(type.defaultTtl),\r\n archiveAfterDays: type.archiveAfterDays,\r\n archiveStorage: type.archiveStorage,\r\n syncPatterns: type.syncPatterns,\r\n excludePatterns: type.excludePatterns\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n // Display formatted output\r\n const nameColor = isBuiltin ? chalk.cyan : chalk.green;\r\n console.log(chalk.bold(`Type: ${nameColor(name)}\\n`));\r\n\r\n console.log(` ${chalk.dim('Source:')} ${isBuiltin ? 'Built-in' : 'Custom'}`);\r\n console.log(` ${chalk.dim('Description:')} ${type.description}`);\r\n console.log(` ${chalk.dim('TTL:')} ${formatTtl(type.defaultTtl)} (${type.defaultTtl} seconds)`);\r\n console.log('');\r\n\r\n console.log(chalk.bold('Patterns'));\r\n for (const pattern of type.patterns) {\r\n console.log(` ${chalk.dim('•')} ${pattern}`);\r\n }\r\n\r\n if (type.archiveAfterDays !== null) {\r\n console.log('');\r\n console.log(chalk.bold('Archive Settings'));\r\n console.log(` ${chalk.dim('After:')} ${type.archiveAfterDays} days`);\r\n console.log(` ${chalk.dim('Storage:')} ${type.archiveStorage || 'not set'}`);\r\n }\r\n\r\n if (type.syncPatterns && type.syncPatterns.length > 0) {\r\n console.log('');\r\n console.log(chalk.bold('Sync Patterns'));\r\n for (const pattern of type.syncPatterns) {\r\n console.log(` ${chalk.dim('•')} ${pattern}`);\r\n }\r\n }\r\n\r\n if (type.excludePatterns && type.excludePatterns.length > 0) {\r\n console.log('');\r\n console.log(chalk.bold('Exclude Patterns'));\r\n for (const pattern of type.excludePatterns) {\r\n console.log(` ${chalk.dim('•')} ${pattern}`);\r\n }\r\n }\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types add command (v3.0)\r\n *\r\n * Registers a custom artifact type in YAML configuration\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport { readYamlConfig, writeYamlConfig } from '../../config/migrate-config';\r\nimport { getClient } from '../../client/get-client';\r\n\r\n/**\r\n * Validate type name\r\n */\r\nfunction isValidTypeName(name: string): boolean {\r\n return /^[a-z][a-z0-9-]*$/.test(name);\r\n}\r\n\r\n/**\r\n * Parse TTL string to seconds\r\n */\r\nfunction parseTtl(ttl: string): number {\r\n const match = ttl.match(/^(\\d+)([smhd])$/);\r\n if (!match) {\r\n throw new Error('Invalid TTL format');\r\n }\r\n\r\n const value = parseInt(match[1], 10);\r\n const unit = match[2];\r\n\r\n switch (unit) {\r\n case 's': return value;\r\n case 'm': return value * 60;\r\n case 'h': return value * 3600;\r\n case 'd': return value * 86400;\r\n default: throw new Error('Unknown TTL unit');\r\n }\r\n}\r\n\r\n/**\r\n * Format TTL from seconds to human-readable string\r\n */\r\nfunction formatTtl(seconds: number): string {\r\n if (seconds < 60) return `${seconds}s`;\r\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;\r\n if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;\r\n return `${Math.floor(seconds / 86400)}d`;\r\n}\r\n\r\nexport function typesAddCommand(): Command {\r\n const cmd = new Command('add');\r\n\r\n cmd\r\n .description('Add a custom artifact type')\r\n .argument('<name>', 'Type name (lowercase, alphanumeric with hyphens)')\r\n .requiredOption('--pattern <glob>', 'File pattern (glob syntax)')\r\n .option('--ttl <duration>', 'Cache TTL (e.g., \"24h\", \"7d\")', '24h')\r\n .option('--description <text>', 'Type description')\r\n .option('--json', 'Output as JSON')\r\n .action(async (name: string, options) => {\r\n try {\r\n // Validate type name\r\n if (!isValidTypeName(name)) {\r\n console.error(chalk.red('Error:'), 'Invalid type name.');\r\n console.log(chalk.dim('Type name must be lowercase, start with a letter, and contain only letters, numbers, and hyphens.'));\r\n process.exit(1);\r\n }\r\n\r\n // Get registry to check for conflicts\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Check for built-in type conflict\r\n if (registry.isBuiltIn(name)) {\r\n console.error(chalk.red('Error:'), `Cannot override built-in type \"${name}\".`);\r\n const builtinNames = registry.list().filter(t => registry.isBuiltIn(t.name)).map(t => t.name);\r\n console.log(chalk.dim('Built-in types: ' + builtinNames.join(', ')));\r\n process.exit(1);\r\n }\r\n\r\n // Check if type already exists\r\n if (registry.has(name)) {\r\n console.error(chalk.red('Error:'), `Custom type \"${name}\" already exists.`);\r\n console.log(chalk.dim('Use \"fractary codex types remove\" first to remove it.'));\r\n process.exit(1);\r\n }\r\n\r\n // Parse and validate TTL\r\n let ttlSeconds: number;\r\n try {\r\n ttlSeconds = parseTtl(options.ttl);\r\n } catch {\r\n console.error(chalk.red('Error:'), 'Invalid TTL format.');\r\n console.log(chalk.dim('Expected format: <number><unit> where unit is s (seconds), m (minutes), h (hours), or d (days)'));\r\n console.log(chalk.dim('Examples: 30m, 24h, 7d'));\r\n process.exit(1);\r\n }\r\n\r\n // Load YAML configuration\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n const config = await readYamlConfig(configPath);\r\n\r\n // Initialize types.custom if needed\r\n if (!config.types) {\r\n config.types = { custom: {} };\r\n }\r\n if (!config.types.custom) {\r\n config.types.custom = {};\r\n }\r\n\r\n // Add the new type to config\r\n config.types.custom[name] = {\r\n description: options.description || `Custom type: ${name}`,\r\n patterns: [options.pattern],\r\n defaultTtl: ttlSeconds\r\n };\r\n\r\n // Save config\r\n await writeYamlConfig(config, configPath);\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n success: true,\r\n type: {\r\n name,\r\n description: config.types.custom[name].description,\r\n patterns: config.types.custom[name].patterns,\r\n defaultTtl: ttlSeconds,\r\n ttl: formatTtl(ttlSeconds),\r\n builtin: false\r\n },\r\n message: 'Custom type added successfully. Changes will take effect on next CLI invocation.'\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n console.log(chalk.green('✓'), `Added custom type \"${chalk.cyan(name)}\"`);\r\n console.log('');\r\n console.log(` ${chalk.dim('Pattern:')} ${options.pattern}`);\r\n console.log(` ${chalk.dim('TTL:')} ${formatTtl(ttlSeconds)} (${ttlSeconds} seconds)`);\r\n if (options.description) {\r\n console.log(` ${chalk.dim('Description:')} ${options.description}`);\r\n }\r\n console.log('');\r\n console.log(chalk.dim('Note: Custom type will be available on next CLI invocation.'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n if (error.message.includes('Failed to load configuration')) {\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a configuration.'));\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n","/**\r\n * Types remove command (v3.0)\r\n *\r\n * Unregisters a custom artifact type from YAML configuration\r\n */\r\n\r\nimport { Command } from 'commander';\r\nimport chalk from 'chalk';\r\nimport * as path from 'path';\r\nimport { readYamlConfig, writeYamlConfig } from '../../config/migrate-config';\r\nimport { getClient } from '../../client/get-client';\r\n\r\nexport function typesRemoveCommand(): Command {\r\n const cmd = new Command('remove');\r\n\r\n cmd\r\n .description('Remove a custom artifact type')\r\n .argument('<name>', 'Type name to remove')\r\n .option('--json', 'Output as JSON')\r\n .option('--force', 'Skip confirmation')\r\n .action(async (name: string, options) => {\r\n try {\r\n // Get registry to check type status\r\n const client = await getClient();\r\n const registry = client.getTypeRegistry();\r\n\r\n // Check for built-in type\r\n if (registry.isBuiltIn(name)) {\r\n console.error(chalk.red('Error:'), `Cannot remove built-in type \"${name}\".`);\r\n console.log(chalk.dim('Built-in types are permanent and cannot be removed.'));\r\n process.exit(1);\r\n }\r\n\r\n // Check if custom type exists\r\n if (!registry.has(name)) {\r\n console.error(chalk.red('Error:'), `Custom type \"${name}\" not found.`);\r\n console.log(chalk.dim('Run \"fractary codex types list --custom-only\" to see custom types.'));\r\n process.exit(1);\r\n }\r\n\r\n // Get type info before removal\r\n const typeInfo = registry.get(name)!;\r\n\r\n // Load YAML configuration\r\n const configPath = path.join(process.cwd(), '.fractary', 'codex', 'config.yaml');\r\n const config = await readYamlConfig(configPath);\r\n\r\n // Check if custom type exists in config\r\n if (!config.types?.custom?.[name]) {\r\n console.error(chalk.red('Error:'), `Custom type \"${name}\" not found in configuration.`);\r\n process.exit(1);\r\n }\r\n\r\n // Remove the type from config\r\n delete config.types.custom[name];\r\n\r\n // Clean up empty objects\r\n if (Object.keys(config.types.custom).length === 0) {\r\n delete config.types.custom;\r\n }\r\n if (config.types && Object.keys(config.types).length === 0) {\r\n delete config.types;\r\n }\r\n\r\n // Save config\r\n await writeYamlConfig(config, configPath);\r\n\r\n if (options.json) {\r\n console.log(JSON.stringify({\r\n success: true,\r\n removed: {\r\n name: typeInfo.name,\r\n description: typeInfo.description,\r\n patterns: typeInfo.patterns,\r\n defaultTtl: typeInfo.defaultTtl\r\n },\r\n message: 'Custom type removed successfully. Changes will take effect on next CLI invocation.'\r\n }, null, 2));\r\n return;\r\n }\r\n\r\n console.log(chalk.green('✓'), `Removed custom type \"${chalk.cyan(name)}\"`);\r\n console.log('');\r\n console.log(chalk.dim('Removed configuration:'));\r\n console.log(` ${chalk.dim('Pattern:')} ${typeInfo.patterns.join(', ')}`);\r\n console.log(` ${chalk.dim('Description:')} ${typeInfo.description}`);\r\n console.log('');\r\n console.log(chalk.dim('Note: Custom type will be removed on next CLI invocation.'));\r\n\r\n } catch (error: any) {\r\n console.error(chalk.red('Error:'), error.message);\r\n if (error.message.includes('Failed to load configuration')) {\r\n console.log(chalk.dim('\\nRun \"fractary codex init\" to create a configuration.'));\r\n }\r\n process.exit(1);\r\n }\r\n });\r\n\r\n return cmd;\r\n}\r\n"]}
|