@kb-labs/mind-entry 2.14.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/manifest.v3.ts","../src/runtime/mind-runtime.ts","../src/features/rag/service.ts","../src/shared/use-config.ts","../src/infra/analytics/events.ts","../src/cli/schemas.ts","../src/cli/utils.ts","../src/cli/commands/init.ts","../src/cli/commands/rag-index.ts","../src/cli/commands/rag-query.ts","../src/cli/commands/verify.ts"],"names":["path","usePlatform","manifest","fsp","defineCommand","useConfig","result"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * KB Labs Mind Plugin - Manifest V3\n *\n * AI-powered code search and RAG system for semantic codebase understanding.\n *\n * Key features:\n * - Hybrid search (BM25 + vector embeddings)\n * - Agent-powered query orchestration\n * - Real-time incremental indexing\n * - Anti-hallucination verification\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n} from '@kb-labs/sdk';\n\n/**\n * Build permissions using presets:\n * - kbPlatform: KB_* env vars and .kb/ directory\n * - Custom: Source file access for indexing, network for OpenAI/Qdrant\n *\n * Note: Uses platform services for LLM, embeddings, and vector storage.\n */\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withEnv([\n 'NODE_ENV',\n 'OPENAI_API_KEY',\n 'QDRANT_URL',\n 'QDRANT_API_KEY',\n 'EMBEDDING_PROVIDER',\n 'VECTOR_STORE_TYPE',\n ])\n .withFs({\n mode: 'readWrite',\n allow: [\n '.kb/mind/**', // Mind index data\n '.kb/cache/**', // Cache directory\n ],\n })\n .withFs({\n mode: 'read',\n allow: [\n 'package.json',\n '**/package.json',\n 'config/**',\n '**/*.ts',\n '**/*.tsx',\n '**/*.js',\n '**/*.jsx',\n '**/*.md',\n ],\n })\n .withNetwork({\n fetch: [\n 'https://api.openai.com/*', // OpenAI embeddings/LLM\n 'http://localhost:6333/*', // Qdrant vector store (local)\n 'http://127.0.0.1:6333/*',\n 'https://*.qdrant.io/*', // Qdrant cloud\n ],\n })\n .withPlatform({\n llm: true, // LLM for query orchestration\n embeddings: true, // Embedding generation\n vectorStore: { collections: ['mind:'] }, // Vector DB with mind: namespace\n cache: true, // State caching\n analytics: true, // Analytics tracking\n storage: true, // Artifact storage\n })\n .withQuotas({\n timeoutMs: 1200000, // 20 minutes for indexing\n memoryMb: 4096, // 4GB for large codebases\n cpuMs: 600000, // 10 minutes CPU time\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/mind',\n version: '0.1.0',\n\n display: {\n name: 'Mind',\n description: 'AI-powered code search and RAG system for semantic codebase understanding.',\n tags: ['search', 'rag', 'ai', 'semantic', 'mind-index'],\n },\n\n // Configuration section in kb.config.json\n configSection: 'mind',\n\n // Platform requirements\n platform: {\n requires: ['llm', 'embeddings', 'vectorStore', 'cache', 'storage'],\n optional: ['analytics', 'logger'],\n },\n\n // ✅ PERMISSIONS DEFINED ONCE FOR ENTIRE PLUGIN (Manifest-First)\n // All commands, routes, and actions inherit these permissions\n permissions: pluginPermissions,\n\n // CLI commands (V3 structure with cli wrapper)\n cli: {\n commands: [\n {\n id: 'mind:init',\n group: 'mind',\n describe: 'Initialize mind workspace',\n handler: './cli/commands/init.js#default',\n handlerPath: './cli/commands/init.js',\n },\n {\n id: 'mind:verify',\n group: 'mind',\n describe: 'Verify workspace consistency',\n handler: './cli/commands/verify.js#default',\n handlerPath: './cli/commands/verify.js',\n },\n {\n id: 'mind:rag-index',\n group: 'mind',\n describe: 'Build Mind indexes',\n handler: './cli/commands/rag-index.js#default',\n handlerPath: './cli/commands/rag-index.js',\n },\n {\n id: 'mind:rag-query',\n group: 'mind',\n describe: 'Run semantic RAG query',\n handler: './cli/commands/rag-query.js#default',\n handlerPath: './cli/commands/rag-query.js',\n },\n // Sync commands (5 separate commands instead of subcommands)\n {\n id: 'mind:sync-add',\n group: 'mind',\n describe: 'Add document to sync',\n handler: './cli/commands/sync-add.js#default',\n handlerPath: './cli/commands/sync-add.js',\n },\n {\n id: 'mind:sync-update',\n group: 'mind',\n describe: 'Update synced document',\n handler: './cli/commands/sync-update.js#default',\n handlerPath: './cli/commands/sync-update.js',\n },\n {\n id: 'mind:sync-delete',\n group: 'mind',\n describe: 'Delete synced document',\n handler: './cli/commands/sync-delete.js#default',\n handlerPath: './cli/commands/sync-delete.js',\n },\n {\n id: 'mind:sync-list',\n group: 'mind',\n describe: 'List synced documents',\n handler: './cli/commands/sync-list.js#default',\n handlerPath: './cli/commands/sync-list.js',\n },\n {\n id: 'mind:sync-status',\n group: 'mind',\n describe: 'Show sync status',\n handler: './cli/commands/sync-status.js#default',\n handlerPath: './cli/commands/sync-status.js',\n },\n ],\n },\n\n // Scheduled jobs (inherit permissions from manifest)\n actions: [\n {\n id: 'auto-index',\n handler: './handlers/auto-index.js#run',\n schedule: '0 * * * *', // Every hour\n description: 'Automatically index Mind RAG database',\n enabled: false, // Disabled by default\n },\n ],\n\n // Artifacts\n artifacts: [\n {\n id: 'mind.index.json',\n pathTemplate: '.kb/mind/index/index.json',\n description: 'Mind RAG index metadata.',\n },\n {\n id: 'mind.cache.json',\n pathTemplate: '.kb/cache/mind-*.json',\n description: 'Mind query cache files.',\n },\n ],\n};\n\n// Export as default for V3 compatibility\nexport default manifest;\n","import { readFile } from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { usePlatform, type PlatformServices } from '@kb-labs/sdk';\nimport { MindEngine } from '@kb-labs/mind-engine';\nimport type {\n MindConfigInput,\n MindEngineConfig,\n MindScopeConfig,\n MindSourceConfig,\n} from '@kb-labs/mind-contracts';\nimport type {\n MindIndexStats,\n MindIntent,\n MindQueryResult,\n} from '@kb-labs/mind-types';\n\nexport const MIND_PRODUCT_ID = 'mind';\n\nexport interface MindRuntimeService {\n index(scopeId: string): Promise<MindIndexStats>;\n query(options: {\n productId?: string;\n scopeId: string;\n text: string;\n intent?: MindIntent;\n limit?: number;\n profileId?: string;\n metadata?: Record<string, unknown>;\n }): Promise<MindQueryResult>;\n}\n\nexport interface MindRuntime {\n service: MindRuntimeService;\n config: MindConfigInput;\n}\n\nexport interface MindRuntimeOptions {\n cwd: string;\n config?: MindConfigInput | Record<string, unknown>;\n runtime?: {\n fetch?: typeof fetch;\n fs?: unknown;\n env?: (key: string) => string | undefined;\n log?: (\n level: 'debug' | 'info' | 'warn' | 'error',\n msg: string,\n meta?: Record<string, unknown>,\n ) => void;\n analytics?: {\n track(event: string, properties?: Record<string, unknown>): void;\n metric(name: string, value: number, tags?: Record<string, string>): void;\n };\n };\n platform?: PlatformServices;\n onProgress?: (event: { stage: string; details?: string; metadata?: Record<string, unknown>; timestamp: number }) => void;\n}\n\nexport async function createMindRuntime(options: MindRuntimeOptions): Promise<MindRuntime> {\n const config = await resolveConfig(options.cwd, options.config);\n const platform = options.platform ?? usePlatform();\n\n const service: MindRuntimeService = {\n index: async (scopeId: string) => {\n const scope = resolveScope(config, scopeId);\n const engine = createEngine(config, scope, options.cwd, options.runtime, platform, options.onProgress);\n await engine.init();\n const stats = await engine.index(resolveSources(config, scope), {\n scope,\n workspaceRoot: options.cwd,\n } as any);\n return stats as unknown as MindIndexStats;\n },\n query: async (queryOptions) => {\n if (queryOptions.productId && queryOptions.productId !== MIND_PRODUCT_ID) {\n throw new Error(`Unsupported productId \"${queryOptions.productId}\". Expected \"${MIND_PRODUCT_ID}\".`);\n }\n const scope = resolveScope(config, queryOptions.scopeId);\n const sources = resolveSources(config, scope);\n const engine = createEngine(config, scope, options.cwd, options.runtime, platform, options.onProgress);\n await engine.init();\n\n const result = await engine.query(\n {\n text: queryOptions.text,\n intent: queryOptions.intent ?? 'summary',\n limit: queryOptions.limit,\n profileId: queryOptions.profileId,\n metadata: queryOptions.metadata,\n } as any,\n {\n scope,\n sources,\n workspaceRoot: options.cwd,\n limit: queryOptions.limit,\n profile: queryOptions.profileId ? { id: queryOptions.profileId } : undefined,\n } as any,\n );\n\n return result as unknown as MindQueryResult;\n },\n };\n\n return {\n service,\n config,\n };\n}\n\nfunction createEngine(\n config: MindConfigInput,\n scope: MindScopeConfig,\n cwd: string,\n runtime: MindRuntimeOptions['runtime'],\n platform: PlatformServices | null | undefined,\n onProgress: MindRuntimeOptions['onProgress'],\n): any {\n const engineConfig = resolveEngineConfig(config, scope);\n return new MindEngine(\n {\n id: engineConfig.id,\n type: engineConfig.type,\n options: {\n ...(engineConfig.options ?? {}),\n _runtime: runtime,\n platform: platform ?? undefined,\n onProgress,\n },\n } as any,\n {\n workspaceRoot: cwd,\n } as any,\n );\n}\n\nfunction resolveSources(config: MindConfigInput, scope: MindScopeConfig): MindSourceConfig[] {\n if (!scope.sourceIds?.length) {\n return config.sources;\n }\n const selected = config.sources.filter((source: MindSourceConfig) => scope.sourceIds!.includes(source.id));\n if (!selected.length) {\n throw new Error(`Scope \"${scope.id}\" does not reference existing sources.`);\n }\n return selected;\n}\n\nfunction resolveScope(config: MindConfigInput, scopeId: string): MindScopeConfig {\n const scope = config.scopes.find((item: MindScopeConfig) => item.id === scopeId);\n if (!scope) {\n throw new Error(`Scope \"${scopeId}\" is not defined in mind.scopes.`);\n }\n return scope;\n}\n\nfunction resolveEngineConfig(config: MindConfigInput, scope: MindScopeConfig): MindEngineConfig {\n const engineId = scope.defaultEngine ?? config.defaults?.fallbackEngineId ?? config.engines[0]?.id;\n if (!engineId) {\n throw new Error('No engines configured in mind config.');\n }\n const engine = config.engines.find((item: MindEngineConfig) => item.id === engineId);\n if (!engine) {\n throw new Error(`Engine \"${engineId}\" referenced by scope \"${scope.id}\" does not exist.`);\n }\n return engine;\n}\n\nasync function resolveConfig(cwd: string, provided?: MindRuntimeOptions['config']): Promise<MindConfigInput> {\n if (provided) {\n return normalizeConfig(provided);\n }\n const configPath = await findConfigPath(cwd);\n const raw = JSON.parse(await readFile(configPath, 'utf8')) as Record<string, unknown>;\n return normalizeConfig(raw);\n}\n\nasync function findConfigPath(cwd: string): Promise<string> {\n const candidates = [\n path.resolve(cwd, '.kb/kb.config.json'),\n path.resolve(cwd, 'kb.config.json'),\n ];\n\n for (const candidate of candidates) {\n try {\n await readFile(candidate, 'utf8');\n return candidate;\n } catch {\n // continue\n }\n }\n\n throw new Error('No kb.config.json found. Expected .kb/kb.config.json or kb.config.json.');\n}\n\nfunction normalizeConfig(raw: MindRuntimeOptions['config']): MindConfigInput {\n const data = raw as Record<string, unknown>;\n\n // Canonical format: profiles[].products.mind\n if (Array.isArray(data.profiles) && data.profiles.length > 0) {\n const profile = (data.profiles as Array<Record<string, unknown>>).find((p) => p.id === 'default')\n ?? (data.profiles as Array<Record<string, unknown>>)[0];\n const products = profile?.products as Record<string, unknown> | undefined;\n const mindConfig = products?.[MIND_PRODUCT_ID] as MindConfigInput | undefined;\n if (!mindConfig) {\n throw new Error('Config does not contain profiles[].products.mind section.');\n }\n return validateConfig(mindConfig);\n }\n\n // Optional root-level format: { mind: {...} }\n if (data.mind && typeof data.mind === 'object') {\n return validateConfig(data.mind as MindConfigInput);\n }\n\n return validateConfig(data as unknown as MindConfigInput);\n}\n\nfunction validateConfig(config: MindConfigInput): MindConfigInput {\n if (!Array.isArray(config.sources) || !Array.isArray(config.scopes) || !Array.isArray(config.engines)) {\n throw new Error('Invalid mind config: required arrays sources/scopes/engines are missing.');\n }\n return config;\n}\n","import {\n usePlatform,\n useLLM,\n type PlatformServices,\n} from '@kb-labs/sdk';\nimport type {\n MindIntent,\n MindQueryResult,\n MindIndexStats,\n} from '@kb-labs/mind-types';\nimport { createHash } from 'node:crypto';\nimport * as path from 'node:path';\nimport {\n MIND_PRODUCT_ID,\n createMindRuntime,\n} from '../../runtime/mind-runtime';\nimport { loadManifest } from '@kb-labs/mind-engine';\nimport type {\n AgentQueryOrchestrator} from '@kb-labs/mind-orchestrator';\nimport {\n createAgentQueryOrchestrator\n} from '@kb-labs/mind-orchestrator';\n\ntype AgentQueryMode = 'instant' | 'auto' | 'thinking';\ntype AgentResponse = Record<string, unknown>;\ntype AgentErrorResponse = {\n error: { code: string; message: string; recoverable: boolean };\n meta: Record<string, unknown>;\n};\n\n/**\n * Global orchestrator instance for cache persistence across queries\n */\nlet globalOrchestrator: InstanceType<typeof AgentQueryOrchestrator> | null = null;\n\nexport interface RagIndexOptions {\n cwd: string;\n scopeId?: string;\n include?: string;\n exclude?: string;\n skipDeduplication?: boolean;\n platform?: PlatformServices;\n /**\n * Mind configuration (from ctx.config)\n * If provided, will be used instead of reading from file\n */\n config?: any;\n}\n\n/**\n * Information about which adapters were used during indexing\n */\nexport interface AdapterInfo {\n vectorStore: string;\n embeddings: string;\n storage: string;\n llm: string;\n cache: string;\n}\n\nexport interface RagIndexStats extends MindIndexStats {\n deletedFiles?: number;\n deletedChunks?: number;\n invalidChunks?: number;\n}\n\nexport interface RagIndexResult {\n scopeIds: string[];\n adapters: AdapterInfo;\n stats: RagIndexStats;\n}\n\nexport interface RagIndexOptionsWithRuntime extends RagIndexOptions {\n runtime?: Parameters<typeof createMindRuntime>[0]['runtime'];\n}\n\n/**\n * Get adapter name from platform service or fallback\n */\nfunction getAdapterName(service: any, fallback: string): string {\n if (!service) {return fallback;}\n // Try to get constructor name or class name\n const name = service.constructor?.name || service.name || service.id;\n if (name && name !== 'Object' && name !== 'Function') {\n return name;\n }\n return fallback;\n}\n\nexport async function runRagIndex(\n options: RagIndexOptions | RagIndexOptionsWithRuntime,\n): Promise<RagIndexResult> {\n // Use SDK's usePlatform() to get global platform singleton\n const platform = options.platform ?? usePlatform();\n\n // Collect adapter info - shows actual adapters being used\n const adapters: AdapterInfo = {\n vectorStore: getAdapterName(platform?.vectorStore, 'LocalVectorStore (fallback)'),\n embeddings: getAdapterName(platform?.embeddings, 'DeterministicEmbeddings (fallback)'),\n storage: getAdapterName(platform?.storage, 'MemoryStorage (fallback)'),\n llm: getAdapterName(platform?.llm, 'LocalStubLLM (fallback)'),\n cache: getAdapterName(platform?.cache, 'MemoryCache (fallback)'),\n };\n\n // If include/exclude provided, override paths in all sources (ESLint-style)\n let effectiveConfig = options.config;\n if (options.include || options.exclude) {\n // If config already provided (from useConfig), clone and modify it\n // If not provided, will be loaded by createMindRuntime\n let mindConfig = effectiveConfig;\n\n // Override paths/exclude in ALL sources (ESLint-style override)\n if (mindConfig?.sources && Array.isArray(mindConfig.sources)) {\n mindConfig = { ...mindConfig };\n mindConfig.sources = mindConfig.sources.map((source: any) => {\n const overriddenSource = { ...source };\n\n // --include overrides paths\n if (options.include) {\n overriddenSource.paths = [options.include];\n }\n\n // --exclude overrides exclude\n if (options.exclude) {\n overriddenSource.exclude = options.exclude.split(',').map(s => s.trim());\n }\n\n return overriddenSource;\n });\n effectiveConfig = mindConfig;\n }\n }\n\n const runtime = await createMindRuntime({\n cwd: options.cwd,\n config: effectiveConfig,\n runtime: 'runtime' in options ? options.runtime : undefined,\n platform: options.platform,\n });\n const allScopeIds = runtime.config.scopes?.map((scope: any) => scope.id) ?? [];\n if (!allScopeIds.length) {\n throw new Error('No mind scopes found. Update kb.config.json first.');\n }\n\n const scopeIds = options.scopeId\n ? allScopeIds.filter((scopeId: string) => scopeId === options.scopeId)\n : allScopeIds;\n\n if (!scopeIds.length) {\n throw new Error(\n `Scope \"${options.scopeId}\" is not defined in mind.scopes.`,\n );\n }\n\n // Set skip deduplication env var if requested\n const originalSkipDedup = process.env.KB_SKIP_DEDUPLICATION;\n if (options.skipDeduplication) {\n process.env.KB_SKIP_DEDUPLICATION = 'true';\n }\n\n // Aggregate stats across all scopes\n const aggregatedStats = {\n filesDiscovered: 0,\n filesProcessed: 0,\n filesSkipped: 0,\n chunksStored: 0,\n chunksUpdated: 0,\n chunksSkipped: 0,\n errorCount: 0,\n durationMs: 0,\n deletedFiles: 0,\n deletedChunks: 0,\n invalidChunks: 0,\n } satisfies RagIndexStats;\n\n try {\n for (const scopeId of scopeIds) {\n const scopeStats = await runtime.service.index(scopeId) as RagIndexStats;\n if (scopeStats) {\n aggregatedStats.filesDiscovered += scopeStats.filesDiscovered;\n aggregatedStats.filesProcessed += scopeStats.filesProcessed;\n aggregatedStats.filesSkipped += scopeStats.filesSkipped;\n aggregatedStats.chunksStored += scopeStats.chunksStored;\n aggregatedStats.chunksUpdated += scopeStats.chunksUpdated;\n aggregatedStats.chunksSkipped += scopeStats.chunksSkipped;\n aggregatedStats.errorCount += scopeStats.errorCount;\n aggregatedStats.durationMs += scopeStats.durationMs;\n aggregatedStats.deletedFiles = (aggregatedStats.deletedFiles ?? 0) + (scopeStats.deletedFiles ?? 0);\n aggregatedStats.deletedChunks = (aggregatedStats.deletedChunks ?? 0) + (scopeStats.deletedChunks ?? 0);\n aggregatedStats.invalidChunks = (aggregatedStats.invalidChunks ?? 0) + (scopeStats.invalidChunks ?? 0);\n }\n }\n } finally {\n // Restore original env var value\n if (originalSkipDedup === undefined) {\n delete process.env.KB_SKIP_DEDUPLICATION;\n } else {\n process.env.KB_SKIP_DEDUPLICATION = originalSkipDedup;\n }\n }\n\n // Invalidate query cache after re-indexing\n // This ensures fresh results after index update\n if (globalOrchestrator) {\n await globalOrchestrator.invalidateCache(scopeIds);\n }\n\n return { scopeIds, adapters, stats: aggregatedStats };\n}\n\nexport interface RagQueryOptions {\n cwd: string;\n scopeId?: string;\n text: string;\n intent?: MindIntent;\n limit?: number;\n profileId?: string;\n runtime?: Parameters<typeof createMindRuntime>[0]['runtime'];\n onProgress?: (stage: string, details?: string) => void;\n platform?: PlatformServices;\n /**\n * Mind configuration (from ctx.config)\n * If provided, will be used instead of reading from file\n */\n config?: any;\n}\n\nexport interface RagQueryResult {\n scopeId: string;\n result: MindQueryResult;\n}\n\nexport async function runRagQuery(\n options: RagQueryOptions,\n): Promise<RagQueryResult> {\n // Convert onProgress from (stage, details) to ProgressEvent format\n const onProgressEvent = options.onProgress\n ? (event: { stage: string; details?: string; metadata?: Record<string, unknown>; timestamp: number }) => {\n try {\n // Map engine stage names to human-readable messages\n const stageMap: Record<string, string> = {\n 'using_reasoning_engine': 'Using reasoning engine',\n 'reasoning_completed': 'Reasoning completed',\n 'analyzing_query_complexity': 'Analyzing query complexity',\n 'query_is_simple': 'Query is simple',\n 'planning_query': 'Planning query',\n 'query_plan_generated': 'Query plan generated',\n 'executing_subqueries': 'Executing subqueries',\n 'subqueries_completed': 'Subqueries completed',\n 'synthesizing_context': 'Synthesizing context',\n 'context_synthesis_completed': 'Context synthesis completed',\n 'generating_embedding': 'Generating embeddings',\n 'performing_hybrid_search': 'Performing hybrid search',\n 'searching_vector_store': 'Searching vector store',\n 'search_completed': 'Search completed',\n 'applying_popularity_boost': 'Applying popularity boost',\n 'applying_query_pattern_boost': 'Applying query pattern boost',\n 're_ranking_results': 'Re-ranking results',\n 're_ranking_completed': 'Re-ranking completed',\n 'compression_applied': 'Compression applied',\n 'saving_query_history': 'Saving query history',\n };\n \n const humanReadableStage = stageMap[event.stage] || event.stage;\n\n // Extract interesting details from metadata\n let enhancedDetails = event.details;\n if (event.metadata) {\n // Show subqueries if available\n if (event.metadata.subqueries && Array.isArray(event.metadata.subqueries)) {\n const subqueryList = event.metadata.subqueries.slice(0, 3).join(', ');\n const count = event.metadata.subqueries.length;\n enhancedDetails = `${count} subqueries: ${subqueryList}${count > 3 ? '...' : ''}`;\n }\n // Show result count if available\n else if (typeof event.metadata.resultCount === 'number') {\n enhancedDetails = `${event.metadata.resultCount} results`;\n }\n // Show chunk count if available\n else if (typeof event.metadata.chunkCount === 'number') {\n enhancedDetails = `${event.metadata.chunkCount} chunks`;\n }\n }\n\n if (options.onProgress) {\n options.onProgress(humanReadableStage, enhancedDetails);\n }\n } catch (error) {\n // Don't break query if progress callback fails\n // Error is silently ignored\n }\n }\n : undefined;\n\n // Wrap runtime to suppress INFO logs but allow WARN/ERROR\n const originalRuntime = options.runtime;\n \n const wrappedRuntime = originalRuntime ? {\n ...originalRuntime,\n log: (level: 'debug' | 'info' | 'warn' | 'error', message: string, meta?: any) => {\n // Suppress INFO and DEBUG logs - progress comes from explicit API now\n if (level === 'info' || level === 'debug') {\n return; // Don't output INFO/DEBUG logs\n }\n \n // Call original logger for warnings and errors only\n if (originalRuntime.log && (level === 'warn' || level === 'error')) {\n originalRuntime.log(level, message, meta);\n }\n },\n } : undefined;\n\n const runtime = await createMindRuntime({\n cwd: options.cwd,\n config: options.config,\n runtime: wrappedRuntime,\n onProgress: onProgressEvent,\n platform: options.platform,\n });\n \n options.onProgress?.('Initializing Mind runtime');\n\n const defaultScopeId = runtime.config.scopes?.[0]?.id;\n const scopeId = options.scopeId ?? defaultScopeId;\n if (!scopeId) {\n throw new Error(\n 'No mind scopes configured. Provide at least one scope in kb.config.json.',\n );\n }\n\n options.onProgress?.('Preparing query', `scope: ${scopeId}`);\n\n options.onProgress?.('Searching Mind index');\n\n const result = await runtime.service.query({\n productId: MIND_PRODUCT_ID,\n intent: options.intent ?? 'summary',\n scopeId,\n text: options.text,\n limit: options.limit,\n profileId: options.profileId,\n });\n\n options.onProgress?.('Processing results', `${result.chunks.length} chunks found`);\n\n return {\n scopeId,\n result,\n };\n}\n\n// === Agent-optimized RAG Query ===\n\nexport interface AgentRagQueryOptions {\n cwd: string;\n scopeId?: string;\n text: string;\n mode?: AgentQueryMode;\n indexRevision?: string;\n engineConfigHash?: string;\n sourcesDigest?: string;\n debug?: boolean;\n runtime?: Parameters<typeof createMindRuntime>[0]['runtime'];\n broker?: any; // StateBroker-like interface (duck typing to avoid circular deps)\n platform?: PlatformServices;\n /**\n * Mind configuration (from ctx.config)\n * If provided, will be used instead of reading from file\n */\n config?: any;\n}\n\nexport type AgentRagQueryResult = AgentResponse | AgentErrorResponse;\n\ninterface CacheContext {\n indexRevision?: string;\n engineConfigHash?: string;\n sourcesDigest?: string;\n}\n\ninterface ManifestCacheContext {\n found: boolean;\n indexRevision?: string;\n engineConfigHash?: string;\n sourcesDigest?: string;\n}\n\n/**\n * Run agent-optimized RAG query with orchestration.\n *\n * This function uses the orchestrator pipeline:\n * 1. Detect query complexity\n * 2. Decompose into sub-queries (auto/thinking modes)\n * 3. Gather chunks from mind-engine\n * 4. Check completeness (with retry in thinking mode)\n * 5. Synthesize agent-friendly response\n * 6. Compress if needed\n *\n * @returns AgentResponse | AgentErrorResponse - clean JSON for agents\n */\nexport async function runAgentRagQuery(\n options: AgentRagQueryOptions,\n): Promise<AgentRagQueryResult> {\n const platformBroker = options.platform?.cache\n ? {\n get: <T>(key: string) => options.platform!.cache!.get<T>(key),\n set: <T>(key: string, value: T, ttl?: number) => options.platform!.cache!.set(key, value, ttl),\n delete: (key: string) => options.platform!.cache!.delete(key),\n }\n : undefined;\n\n const ragLlm = useLLM({\n execution: {\n cache: {\n mode: 'prefer',\n scope: 'segments',\n },\n stream: {\n mode: 'prefer',\n fallbackToComplete: true,\n },\n },\n });\n\n // Always recreate orchestrator to use fresh LLM from useLLM()\n // This ensures analytics wrappers are always applied\n globalOrchestrator = createAgentQueryOrchestrator({\n llm: ragLlm, // Fresh LLM with analytics wrapper + cache/stream policy\n broker: options.broker ?? platformBroker, // Pass broker for persistent caching\n analyticsAdapter: options.platform?.analytics ?? null,\n config: {\n mode: options.mode ?? 'auto',\n autoDetectComplexity: true,\n },\n });\n\n const orchestrator = globalOrchestrator;\n\n // Create runtime\n const runtime = await createMindRuntime({\n cwd: options.cwd,\n config: options.config,\n runtime: options.runtime,\n platform: options.platform,\n });\n\n // Get scope ID\n const defaultScopeId = runtime.config.scopes?.[0]?.id;\n const scopeId = options.scopeId ?? defaultScopeId;\n\n if (!scopeId) {\n return {\n error: {\n code: 'KNOWLEDGE_SCOPE_NOT_FOUND',\n message: 'No mind scopes configured. Provide at least one scope in kb.config.json.',\n recoverable: false,\n },\n meta: {\n schemaVersion: 'agent-response-v1',\n requestId: `rq-${Date.now()}`,\n mode: options.mode ?? 'auto',\n timingMs: 0,\n cached: false,\n },\n };\n }\n\n const cacheContext = await resolveCacheContext({\n cwd: options.cwd,\n scopeId,\n config: runtime.config,\n providedIndexRevision: options.indexRevision,\n providedEngineConfigHash: options.engineConfigHash,\n providedSourcesDigest: options.sourcesDigest,\n });\n\n // Create query function for orchestrator with adaptive weights support\n const queryFn = async (queryOptions: {\n text: string;\n intent?: MindIntent;\n limit?: number;\n vectorWeight?: number;\n keywordWeight?: number;\n }) => {\n const result = await runtime.service.query({\n productId: MIND_PRODUCT_ID,\n intent: queryOptions.intent ?? 'search',\n scopeId,\n text: queryOptions.text,\n limit: queryOptions.limit,\n // Pass adaptive weights via metadata for mind-engine to use\n metadata: {\n agentMode: true,\n consumer: 'agent',\n mode: options.mode ?? 'auto',\n ...(queryOptions.vectorWeight !== undefined && queryOptions.keywordWeight !== undefined\n ? {\n vectorWeight: queryOptions.vectorWeight,\n keywordWeight: queryOptions.keywordWeight,\n }\n : {}),\n },\n });\n\n return {\n chunks: result.chunks,\n metadata: result.metadata ?? {},\n };\n };\n\n // Execute orchestrated query\n return orchestrator.query(\n {\n cwd: options.cwd,\n scopeId,\n text: options.text,\n mode: options.mode,\n indexRevision: cacheContext.indexRevision,\n engineConfigHash: cacheContext.engineConfigHash,\n sourcesDigest: cacheContext.sourcesDigest,\n debug: options.debug,\n },\n queryFn,\n );\n}\n\nasync function resolveCacheContext(options: {\n cwd: string;\n scopeId: string;\n config: any;\n providedIndexRevision?: string;\n providedEngineConfigHash?: string;\n providedSourcesDigest?: string;\n}): Promise<CacheContext> {\n const manifestContext = await readCacheContextFromManifest(options.cwd, options.config, options.scopeId);\n\n const indexRevision = options.providedIndexRevision\n ?? manifestContext.indexRevision;\n const engineConfigHash = options.providedEngineConfigHash\n ?? manifestContext.engineConfigHash\n ?? computeEngineConfigHash(options.config, options.scopeId);\n const sourcesDigest = options.providedSourcesDigest\n ?? manifestContext.sourcesDigest;\n\n return {\n indexRevision,\n engineConfigHash,\n sourcesDigest,\n };\n}\n\nfunction computeEngineConfigHash(config: any, scopeId: string): string | undefined {\n const scope = Array.isArray(config?.scopes)\n ? config.scopes.find((item: any) => item?.id === scopeId)\n : undefined;\n const engineId = scope?.defaultEngine\n ?? config?.defaults?.fallbackEngineId\n ?? config?.engines?.[0]?.id;\n const engine = Array.isArray(config?.engines)\n ? config.engines.find((item: any) => item?.id === engineId)\n : undefined;\n\n if (!engine) {\n return undefined;\n }\n\n const sanitized = {\n id: engine.id,\n type: engine.type,\n options: sanitizeEngineOptionsForHash(engine.options ?? {}),\n };\n\n return createHash('sha256').update(stableStringify(sanitized)).digest('hex');\n}\n\nasync function readCacheContextFromManifest(\n cwd: string,\n config: any,\n scopeId: string,\n): Promise<ManifestCacheContext> {\n const scope = Array.isArray(config?.scopes)\n ? config.scopes.find((item: any) => item?.id === scopeId)\n : undefined;\n const engineId = scope?.defaultEngine\n ?? config?.defaults?.fallbackEngineId\n ?? config?.engines?.[0]?.id;\n const engine = Array.isArray(config?.engines)\n ? config.engines.find((item: any) => item?.id === engineId)\n : undefined;\n const configuredIndexDir = typeof engine?.options?.indexDir === 'string'\n ? engine.options.indexDir\n : '.kb/mind/rag';\n\n const candidatePaths = [\n path.resolve(cwd, configuredIndexDir, scopeId, 'manifest.json'),\n path.resolve(cwd, configuredIndexDir, 'manifest.json'),\n path.resolve(cwd, '.kb/mind/indexes', scopeId, 'manifest.json'),\n path.resolve(cwd, '.kb/mind/rag', scopeId, 'manifest.json'),\n ];\n\n for (const manifestPath of candidatePaths) {\n try {\n const manifest = await loadManifest(manifestPath);\n const indexRevision = (manifest as { indexRevision?: unknown }).indexRevision;\n const engineConfigHash = (manifest as { engineConfigHash?: unknown }).engineConfigHash;\n const sourcesDigest = (manifest as { sourcesDigest?: unknown }).sourcesDigest;\n\n if (typeof indexRevision !== 'string' || indexRevision.length === 0) {\n throw new Error('missing indexRevision');\n }\n\n if (typeof engineConfigHash !== 'string' || engineConfigHash.length === 0) {\n throw new Error('missing engineConfigHash');\n }\n if (typeof sourcesDigest !== 'string' || sourcesDigest.length === 0) {\n throw new Error('missing sourcesDigest');\n }\n\n return {\n found: true,\n indexRevision,\n engineConfigHash,\n sourcesDigest,\n };\n } catch (error) {\n const code = (error as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') {\n continue;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid index manifest at ${manifestPath}: ${message}`);\n }\n }\n\n return { found: false };\n}\n\nfunction sanitizeEngineOptionsForHash(options: Record<string, unknown>): Record<string, unknown> {\n const {\n _runtime: _runtimeIgnored,\n onProgress: _onProgressIgnored,\n platform: _platformIgnored,\n ...rest\n } = options as Record<string, unknown>;\n return rest;\n}\n\nfunction stableStringify(value: unknown): string {\n return JSON.stringify(sortObjectDeep(value));\n}\n\nfunction sortObjectDeep(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortObjectDeep);\n }\n if (value && typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, val]) => [key, sortObjectDeep(val)] as const);\n return Object.fromEntries(entries);\n }\n return value;\n}\n","import type { MindConfig, MindSyncConfig } from '@kb-labs/mind-contracts';\nimport { defaultMindSyncConfig } from '@kb-labs/mind-contracts';\n\n/**\n * Extract Mind configuration from context\n * Provides type-safe access to mind config with validation\n */\nexport function useConfig(ctx: { config?: any }): MindConfig {\n if (!ctx.config) {\n throw new Error('Mind configuration not found in context. Ensure ctx.config is loaded.');\n }\n\n const config = ctx.config as MindConfig;\n\n // Validate required fields\n if (!config.sources || !Array.isArray(config.sources)) {\n throw new Error('Invalid mind config: missing or invalid sources');\n }\n\n if (!config.scopes || !Array.isArray(config.scopes)) {\n throw new Error('Invalid mind config: missing or invalid scopes');\n }\n\n if (!config.engines || !Array.isArray(config.engines)) {\n throw new Error('Invalid mind config: missing or invalid engines');\n }\n\n return config;\n}\n\n/**\n * Try to extract Mind configuration from context\n * Returns null if config is not available or invalid\n */\nexport function tryUseConfig(ctx: { config?: any }): MindConfig | null {\n try {\n return useConfig(ctx);\n } catch {\n return null;\n }\n}\n\n/**\n * Get sync configuration from mind config\n * Returns defaults if sync config is not provided\n */\nexport function useSyncConfig(ctx: { config?: any }): MindSyncConfig {\n const config = useConfig(ctx);\n\n if (!config.sync) {\n // Return defaults from contracts\n return { ...defaultMindSyncConfig };\n }\n\n return config.sync;\n}\n","/**\n * Analytics event types for Mind CLI\n * Centralized constants to prevent typos and enable type safety\n */\n\n/**\n * Event type prefixes by command\n */\nexport const ANALYTICS_PREFIX = {\n QUERY: 'mind.query',\n FEED: 'mind.feed',\n UPDATE: 'mind.update',\n INIT: 'mind.init',\n PACK: 'mind.pack',\n VERIFY: 'mind.verify',\n} as const;\n\n/**\n * Event lifecycle suffixes\n */\nexport const ANALYTICS_SUFFIX = {\n STARTED: 'started',\n FINISHED: 'finished',\n} as const;\n\n/**\n * Mind analytics event types\n */\nexport const ANALYTICS_EVENTS = {\n // Query events\n QUERY_STARTED: `${ANALYTICS_PREFIX.QUERY}.${ANALYTICS_SUFFIX.STARTED}`,\n QUERY_FINISHED: `${ANALYTICS_PREFIX.QUERY}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Feed events\n FEED_STARTED: `${ANALYTICS_PREFIX.FEED}.${ANALYTICS_SUFFIX.STARTED}`,\n FEED_FINISHED: `${ANALYTICS_PREFIX.FEED}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Update events\n UPDATE_STARTED: `${ANALYTICS_PREFIX.UPDATE}.${ANALYTICS_SUFFIX.STARTED}`,\n UPDATE_FINISHED: `${ANALYTICS_PREFIX.UPDATE}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Init events\n INIT_STARTED: `${ANALYTICS_PREFIX.INIT}.${ANALYTICS_SUFFIX.STARTED}`,\n INIT_FINISHED: `${ANALYTICS_PREFIX.INIT}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Pack events\n PACK_STARTED: `${ANALYTICS_PREFIX.PACK}.${ANALYTICS_SUFFIX.STARTED}`,\n PACK_FINISHED: `${ANALYTICS_PREFIX.PACK}.${ANALYTICS_SUFFIX.FINISHED}`,\n\n // Verify events\n VERIFY_STARTED: `${ANALYTICS_PREFIX.VERIFY}.${ANALYTICS_SUFFIX.STARTED}`,\n VERIFY_FINISHED: `${ANALYTICS_PREFIX.VERIFY}.${ANALYTICS_SUFFIX.FINISHED}`,\n} as const;\n\n/**\n * Type helper for analytics event types\n */\nexport type AnalyticsEventType = typeof ANALYTICS_EVENTS[keyof typeof ANALYTICS_EVENTS];\n\n/**\n * Actor configuration for Mind analytics\n */\nexport const ANALYTICS_ACTOR = {\n type: 'agent' as const,\n id: 'mind-cli',\n} as const;\n\n","/**\n * @module @kb-labs/mind-cli/cli/schemas\n * Input/Output schemas for CLI commands\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// Init Command\n// ============================================================================\n\nexport const InitInputSchema = z.object({\n cwd: z.string().optional(),\n force: z.boolean().optional().default(false),\n json: z.boolean().optional().default(false),\n verbose: z.boolean().optional().default(false),\n quiet: z.boolean().optional().default(false),\n});\n\nexport type InitInput = z.infer<typeof InitInputSchema>;\n\nexport const InitOutputSchema = z.object({\n ok: z.boolean(),\n mindDir: z.string(),\n cwd: z.string(),\n});\n\nexport type InitOutput = z.infer<typeof InitOutputSchema>;\n\n// ============================================================================\n// Update Command\n// ============================================================================\n\nexport const UpdateInputSchema = z.object({\n cwd: z.string().optional(),\n since: z.string().optional(),\n timeBudget: z.number().optional(),\n json: z.boolean().optional().default(false),\n verbose: z.boolean().optional().default(false),\n quiet: z.boolean().optional().default(false),\n});\n\nexport type UpdateInput = z.infer<typeof UpdateInputSchema>;\n\nexport const UpdateOutputSchema = z.object({\n ok: z.boolean(),\n updated: z.number(),\n duration: z.number(),\n});\n\nexport type UpdateOutput = z.infer<typeof UpdateOutputSchema>;\n\n// ============================================================================\n// Pack Command\n// ============================================================================\n\nexport const PackInputSchema = z.object({\n cwd: z.string().optional(),\n intent: z.string(),\n product: z.string().optional(),\n preset: z.string().optional(),\n budget: z.number().optional(),\n withBundle: z.boolean().optional().default(false),\n out: z.string().optional(),\n seed: z.number().optional(),\n json: z.boolean().optional().default(false),\n verbose: z.boolean().optional().default(false),\n quiet: z.boolean().optional().default(false),\n});\n\nexport type PackInput = z.infer<typeof PackInputSchema>;\n\nexport const PackOutputSchema = z.object({\n ok: z.boolean(),\n packPath: z.string(),\n size: z.number(),\n});\n\nexport type PackOutput = z.infer<typeof PackOutputSchema>;\n\n// ============================================================================\n// Feed Command\n// ============================================================================\n\nexport const FeedInputSchema = z.object({\n cwd: z.string().optional(),\n intent: z.string().optional(),\n product: z.string().optional(),\n preset: z.string().optional(),\n budget: z.number().optional(),\n withBundle: z.boolean().optional().default(false),\n since: z.string().optional(),\n timeBudget: z.number().optional(),\n noUpdate: z.boolean().optional().default(false),\n out: z.string().optional(),\n seed: z.number().optional(),\n json: z.boolean().optional().default(false),\n verbose: z.boolean().optional().default(false),\n quiet: z.boolean().optional().default(false),\n});\n\nexport type FeedInput = z.infer<typeof FeedInputSchema>;\n\nexport const FeedOutputSchema = z.object({\n ok: z.boolean(),\n packPath: z.string(),\n updated: z.number(),\n duration: z.number(),\n});\n\nexport type FeedOutput = z.infer<typeof FeedOutputSchema>;\n\n// ============================================================================\n// Query Command\n// ============================================================================\n\nexport const QueryInputSchema = z.object({\n cwd: z.string().optional(),\n query: z.enum(['impact', 'scope', 'exports', 'externals', 'chain', 'meta', 'docs']),\n file: z.string().optional(),\n path: z.string().optional(),\n scope: z.string().optional(),\n product: z.string().optional(),\n tag: z.string().optional(),\n type: z.string().optional(),\n filter: z.string().optional(),\n limit: z.number().optional().default(500),\n depth: z.number().optional().default(5),\n cacheMode: z.enum(['ci', 'local']).optional().default('local'),\n cacheTtl: z.number().optional().default(60),\n noCache: z.boolean().optional().default(false),\n paths: z.enum(['id', 'absolute']).optional().default('id'),\n aiMode: z.boolean().optional().default(false),\n toon: z.boolean().optional().default(false),\n toonSidecar: z.boolean().optional().default(false),\n json: z.boolean().optional().default(false),\n compact: z.boolean().optional().default(false),\n quiet: z.boolean().optional().default(false),\n});\n\nexport type QueryInput = z.infer<typeof QueryInputSchema>;\n\nexport const QueryOutputSchema = z.object({\n ok: z.boolean(),\n query: z.string(),\n result: z.any(),\n toonPath: z.string().optional(),\n});\n\nexport type QueryOutput = z.infer<typeof QueryOutputSchema>;\n\n// ============================================================================\n// Verify Command\n// ============================================================================\n\nexport const VerifyInputSchema = z.object({\n cwd: z.string().optional(),\n json: z.boolean().optional().default(false),\n quiet: z.boolean().optional().default(false),\n});\n\nexport type VerifyInput = z.infer<typeof VerifyInputSchema>;\n\nexport const VerifyOutputSchema = z.object({\n ok: z.boolean(),\n consistent: z.boolean(),\n errors: z.array(z.object({\n file: z.string(),\n message: z.string(),\n })),\n});\n\nexport type VerifyOutput = z.infer<typeof VerifyOutputSchema>;\n\n\n\n","// Simple CLI utilities for mind-cli\nexport const colors = {\n red: (text: string) => `\u001b[31m${text}\u001b[0m`,\n green: (text: string) => `\u001b[32m${text}\u001b[0m`,\n yellow: (text: string) => `\u001b[33m${text}\u001b[0m`,\n blue: (text: string) => `\u001b[34m${text}\u001b[0m`,\n cyan: (text: string) => `\u001b[36m${text}\u001b[0m`,\n gray: (text: string) => `\u001b[90m${text}\u001b[0m`,\n bold: (text: string) => `\u001b[1m${text}\u001b[0m`,\n dim: (text: string) => `\u001b[2m${text}\u001b[0m`,\n};\n\nexport const safeColors = colors;\n\nexport const safeSymbols = {\n check: '✓',\n cross: '✗',\n arrow: '→',\n bullet: '•',\n info: 'ℹ',\n warning: '⚠',\n error: '✗',\n};\n\nexport class TimingTracker {\n private startTime: number;\n \n constructor() {\n this.startTime = Date.now();\n }\n \n getElapsed(): number {\n return Date.now() - this.startTime;\n }\n \n getElapsedMs(): number {\n return this.getElapsed();\n }\n}\n\nexport function formatTiming(ms: number): string {\n if (ms < 1000) {\n return `${ms}ms`;\n }\n return `${(ms / 1000).toFixed(1)}s`;\n}\n\nexport function box(textOrTitle: string, maybeLines: string[] | string = []): string {\n const lines = Array.isArray(maybeLines)\n ? maybeLines\n : typeof maybeLines === 'string'\n ? maybeLines.split('\\n')\n : [];\n const rows = [textOrTitle, ...lines, ''];\n return rows\n .map(line => (line && line.length > 0 ? `│ ${line}` : '│'))\n .join('\\n');\n}\n\nexport function keyValue(entries: Record<string, string | number>): string[];\nexport function keyValue(key: string, value: string | number): string;\nexport function keyValue(arg1: any, arg2?: any): string | string[] {\n const format = (key: string, value: string | number) => {\n const label = process.env.NO_COLOR ? key : colors.cyan(key);\n return `${label}: ${value}`;\n };\n\n if (typeof arg1 === 'string' && arg2 !== undefined) {\n return format(arg1, arg2);\n }\n\n if (arg1 && typeof arg1 === 'object') {\n return Object.entries(arg1).map(([key, value]) => format(key, value as string | number));\n }\n\n return '';\n}\n\nexport function createSpinner(text: string) {\n const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];\n let frame = 0;\n \n const interval = setInterval(() => {\n process.stdout.write(`\\r${frames[frame]} ${text}`);\n frame = (frame + 1) % frames.length;\n }, 100);\n \n return {\n stop: (finalText?: string) => {\n clearInterval(interval);\n process.stdout.write(`\\r${finalText || text}\\n`);\n }\n };\n}\n\n","/**\n * Mind init command (V3)\n *\n * V3 Migration:\n * - Default export with defineCommand\n * - handler: { execute(ctx, input) }\n * - NO permissions (inherited from manifest)\n * - ctx.ui, ctx.logger, ctx.state (flat structure)\n */\n\nimport { defineCommand, type PluginContextV3 } from '@kb-labs/sdk';\nimport { initMindStructure } from '@kb-labs/mind-indexer';\nimport { join } from 'node:path';\nimport { promises as fsp } from 'node:fs';\n\ninterface InitInput {\n argv: string[];\n flags: {\n cwd?: string;\n force?: boolean;\n json?: boolean;\n verbose?: boolean;\n quiet?: boolean;\n };\n}\n\ninterface InitResult {\n exitCode: number;\n mindDir?: string;\n artifacts?: Array<{\n name: string;\n path: string;\n size: number;\n modified: Date;\n description: string;\n }>;\n}\n\n// V3: Default export - REQUIRED\nexport default defineCommand({\n id: 'mind:init',\n description: 'Initialize mind workspace',\n\n // ❌ NO permissions here - they are in manifest.v3.ts!\n // Permissions are manifest-wide in V3\n\n handler: {\n async execute(ctx: PluginContextV3, input: InitInput): Promise<InitResult> {\n const startTime = Date.now();\n const { flags } = input;\n\n const cwd = flags.cwd || ctx.cwd;\n\n // V3 API: Use trace for logging (logger not yet in runtime)\n ctx.trace?.addEvent?.('mind.init.start', {\n cwd,\n command: 'mind:init',\n force: flags.force,\n });\n\n ctx.trace?.addEvent?.('mind.init.initializing', { cwd, force: flags.force });\n\n // Initialize Mind structure\n const mindDir = await initMindStructure({\n cwd,\n force: flags.force,\n log: (entry: any) => {\n if (!flags.quiet && !flags.json) {\n // V3 API: ctx.ui (not ctx.output.ui)\n ctx.ui.info(`Init: ${entry.msg || entry}`);\n }\n ctx.trace?.addEvent?.('mind.init.step', { msg: entry.msg || entry });\n },\n });\n\n ctx.trace?.addEvent?.('mind.init.complete', {\n mindDir,\n cwd,\n });\n\n // Discover created artifacts\n const artifacts: InitResult['artifacts'] = [];\n\n const artifactPatterns = [\n { name: 'Index', pattern: 'index.json', description: 'Main Mind index' },\n { name: 'API Index', pattern: 'api-index.json', description: 'API index' },\n { name: 'Dependencies', pattern: 'deps.json', description: 'Dependencies graph' },\n { name: 'Recent Diff', pattern: 'recent-diff.json', description: 'Recent changes diff' },\n ];\n\n for (const { name, pattern, description } of artifactPatterns) {\n const artifactPath = join(mindDir, pattern);\n try {\n const stats = await fsp.stat(artifactPath);\n artifacts.push({\n name,\n path: artifactPath,\n size: stats.size,\n modified: stats.mtime,\n description,\n });\n } catch {\n // Artifact doesn't exist, skip\n }\n }\n\n ctx.trace?.addEvent?.('mind.init.artifacts', {\n mindDir,\n artifactsCount: artifacts.length,\n });\n\n const timing = Date.now() - startTime;\n\n // Output result\n if (flags.json) {\n // V3 API: Write JSON to stdout directly\n ctx.ui.info(JSON.stringify({\n ok: true,\n summary: {\n Workspace: mindDir,\n Status: 'Initialized',\n },\n artifacts,\n timingMs: timing,\n data: {\n mindDir,\n cwd,\n },\n }));\n } else if (!flags.quiet) {\n // V3 API: Enhanced UI with MessageOptions\n const artifactItems: string[] = [];\n for (const artifact of artifacts) {\n artifactItems.push(`✓ ${artifact.name}: ${artifact.description}`);\n }\n\n const sections: Array<{ header?: string; items: string[] }> = [\n {\n header: 'Summary',\n items: [\n `Workspace: ${mindDir}`,\n `Status: Initialized`,\n ],\n },\n ];\n\n if (artifacts.length > 0) {\n sections.push({\n header: 'Created Artifacts',\n items: artifactItems,\n });\n }\n\n // V3 API: ctx.ui.success with MessageOptions (enhanced UI)\n ctx.ui.success('Mind workspace initialized', {\n title: 'Mind Init',\n sections,\n timing,\n });\n }\n\n // V3: Return structured result with exitCode\n return {\n exitCode: 0,\n mindDir,\n artifacts,\n };\n },\n },\n});\n","/**\n * Mind rag-index command - build Mind indexes (V3)\n */\n\nimport { defineCommand, useConfig, usePlatform, useLoader, type PluginContextV3 } from '@kb-labs/sdk';\nimport { runRagIndex } from '../../features/rag';\n\ninterface RagIndexInput {\n argv: string[];\n flags: {\n cwd?: string;\n scope?: string;\n include?: string;\n exclude?: string;\n skipDeduplication?: boolean;\n json?: boolean;\n quiet?: boolean;\n };\n}\n\ninterface RagIndexResult {\n exitCode: number;\n ok: boolean;\n scopes?: string[];\n adapters?: {\n vectorStore: string;\n embeddings: string;\n storage: string;\n llm: string;\n cache: string;\n };\n}\n\nexport default defineCommand({\n id: 'mind:rag-index',\n description: 'Build Mind indexes',\n\n handler: {\n async execute(ctx: PluginContextV3, input: RagIndexInput): Promise<RagIndexResult> {\n const startTime = Date.now();\n const { flags } = input;\n\n // Get Mind config using useConfig() helper\n const mindConfig = await useConfig();\n\n const cwd = flags.cwd || ctx.cwd;\n const scopeId = flags.scope;\n const include = flags.include;\n const exclude = flags.exclude;\n const skipDeduplication = flags.skipDeduplication;\n\n // Get platform for analytics (not passed to Mind - child process uses usePlatform())\n const platform = usePlatform();\n\n // Use loader for visual feedback (unless quiet/json mode)\n const loader = !flags.quiet && !flags.json ? useLoader('Building Mind RAG index...') : null;\n loader?.start();\n\n try {\n // Pass mindConfig from useConfig() - avoids reloading config in child process\n // IMPORTANT: Pass platform so Mind engine uses wrapped adapters with analytics tracking\n const result = await runRagIndex({\n cwd,\n scopeId,\n include,\n exclude,\n skipDeduplication,\n config: mindConfig,\n platform,\n });\n\n const timing = Date.now() - startTime;\n loader?.succeed(`Index built in ${(timing / 1000).toFixed(1)}s`);\n\n // Track analytics if available (runs in parent process)\n platform?.analytics?.track?.('mind.rag-index', {\n scopeIds: result.scopeIds,\n stats: result.stats,\n }).catch(() => {});\n\n if (flags.json) {\n ctx.ui.json({\n ok: true,\n scopes: result.scopeIds,\n stats: result.stats,\n adapters: result.adapters,\n timingMs: timing,\n });\n } else if (!flags.quiet) {\n const { stats } = result;\n const percentage = stats.filesDiscovered > 0\n ? ((stats.filesProcessed / stats.filesDiscovered) * 100).toFixed(1)\n : '0.0';\n const chunksPerFile = stats.filesProcessed > 0\n ? (stats.chunksStored / stats.filesProcessed).toFixed(2)\n : '0.00';\n\n ctx.ui.success(\n `Indexed ${stats.filesProcessed} files, ${stats.filesSkipped} skipped, ${stats.chunksStored} chunks, deleted ${stats.deletedFiles ?? 0} files/${stats.deletedChunks ?? 0} chunks`,\n {\n title: 'Mind RAG Index',\n sections: [\n {\n header: 'Files',\n items: [\n `Discovered: ${stats.filesDiscovered}`,\n `Processed: ${stats.filesProcessed} (${percentage}%)`,\n `Skipped: ${stats.filesSkipped}`,\n ],\n },\n {\n header: 'Chunks',\n items: [\n `Stored: ${stats.chunksStored}`,\n `Updated: ${stats.chunksUpdated}`,\n `Skipped: ${stats.chunksSkipped}`,\n `Rate: ${chunksPerFile}/file`,\n ],\n },\n {\n header: 'Cleanup',\n items: [\n `Deleted files: ${stats.deletedFiles ?? 0}`,\n `Deleted chunks: ${stats.deletedChunks ?? 0}`,\n `Invalid chunks: ${stats.invalidChunks ?? 0}`,\n ],\n },\n {\n header: 'Health',\n items: [\n `Errors: ${stats.errorCount}`,\n ],\n },\n ],\n timing,\n }\n );\n }\n\n return {\n exitCode: 0,\n ok: true,\n scopes: result.scopeIds,\n adapters: result.adapters,\n };\n } catch (error) {\n const timing = Date.now() - startTime;\n const message = error instanceof Error ? error.message : String(error);\n loader?.fail(`Index build failed: ${message}`);\n\n if (flags.json) {\n ctx.ui.info(JSON.stringify({\n ok: false,\n error: message,\n timingMs: timing,\n }));\n } else if (!flags.quiet) {\n ctx.ui.error(`Index build failed: ${message}`);\n }\n\n // Track analytics\n platform?.analytics?.track?.('mind.rag-index', {\n error: true,\n errorMessage: message,\n timingMs: timing,\n }).catch(() => {});\n\n return { exitCode: 1, ok: false };\n }\n },\n },\n});\n","/**\n * Mind rag-query command - semantic RAG search (V3)\n */\n\nimport { defineCommand, usePlatform, type PluginContextV3 } from '@kb-labs/sdk';\nimport { runRagQuery, runAgentRagQuery } from '../../features/rag';\nimport { isAgentError } from '@kb-labs/mind-orchestrator';\n\nconst VALID_INTENTS = ['summary', 'search', 'similar', 'nav'] as const;\nconst VALID_MODES = ['instant', 'auto', 'thinking'] as const;\nconst VALID_FORMATS = ['text', 'json', 'json-pretty'] as const;\n\nfunction isValidIntent(intent: string): intent is (typeof VALID_INTENTS)[number] {\n return VALID_INTENTS.includes(intent as any);\n}\n\nfunction isValidMode(mode: string): mode is (typeof VALID_MODES)[number] {\n return VALID_MODES.includes(mode as any);\n}\n\nfunction isValidFormat(format: string): format is (typeof VALID_FORMATS)[number] {\n return VALID_FORMATS.includes(format as any);\n}\n\nfunction truncateText(text: string, limit: number): string {\n if (text.length <= limit) {\n return text;\n }\n return `${text.slice(0, limit - 3)}...`;\n}\n\ninterface RagQueryInput {\n argv: string[];\n flags: {\n cwd?: string;\n scope?: string;\n text?: string;\n intent?: string;\n limit?: number;\n profile?: string;\n mode?: string;\n format?: string;\n json?: boolean;\n quiet?: boolean;\n agent?: boolean;\n debug?: boolean;\n };\n}\n\ninterface RagQueryResult {\n exitCode: number;\n ok: boolean;\n result?: any;\n}\n\nexport default defineCommand({\n id: 'mind:rag-query',\n description: 'Run semantic RAG query on Mind index',\n\n handler: {\n async execute(ctx: PluginContextV3, input: RagQueryInput): Promise<RagQueryResult> {\n const startTime = Date.now();\n const { flags } = input;\n\n const cwd = flags.cwd || ctx.cwd;\n const scopeId = flags.scope;\n const intent = flags.intent && isValidIntent(flags.intent) ? flags.intent : undefined;\n const text = flags.text?.trim() || '';\n const limit = flags.limit ? Math.max(1, flags.limit) : undefined;\n const profileId = flags.profile;\n\n // Get platform for analytics (not passed to Mind - child process uses usePlatform())\n const platform = usePlatform();\n\n // Handle mode flag\n const mode = flags.mode && isValidMode(flags.mode) ? flags.mode : 'auto';\n\n // Handle format flag (with backward compatibility for --json)\n let format = flags.format && isValidFormat(flags.format) ? flags.format : 'text';\n if (flags.json && format === 'text') {\n format = 'json'; // Backward compatibility\n }\n\n if (!text) {\n if (flags.agent) {\n // Agent mode: output JSON error\n console.log(JSON.stringify({\n error: {\n code: 'INVALID_QUERY',\n message: 'Provide --text \"<query>\" to run rag:query.',\n recoverable: false,\n },\n meta: {\n schemaVersion: 'agent-response-v1',\n requestId: `rq-${Date.now()}`,\n mode: mode,\n timingMs: 0,\n cached: false,\n },\n }));\n\n ctx.trace?.addEvent?.('mind.rag-query.invalid', { reason: 'missing-text' });\n return { exitCode: 1, ok: false };\n }\n\n ctx.ui.error('Provide --text \"<query>\" to run rag:query.');\n ctx.ui.info('Use: kb mind rag-query --text \"your query\"');\n ctx.ui.info('Add --scope to search in specific scope');\n ctx.ui.info('Add --intent to specify intent (summary, search, similar, nav)');\n\n ctx.trace?.addEvent?.('mind.rag-query.invalid', { reason: 'missing-text' });\n return { exitCode: 1, ok: false };\n }\n\n // === AGENT MODE ===\n if (flags.agent) {\n try {\n const result = await runAgentRagQuery({\n cwd,\n scopeId,\n text,\n mode,\n debug: flags.debug,\n broker: undefined, // Gracefully falls back to in-memory\n platform, // Pass platform for analytics adapter\n });\n\n // Track analytics if available\n platform?.analytics?.track?.('mind.rag-query', {\n mode,\n agent: true,\n scopeId,\n intent,\n }).catch(() => {});\n\n // Output clean JSON to stdout\n console.log(JSON.stringify(result));\n\n // Return appropriate exit code\n if (isAgentError(result)) {\n return { exitCode: 1, ok: false, result };\n }\n return { exitCode: 0, ok: true, result };\n } catch (error) {\n // Output error as AgentErrorResponse\n const message = error instanceof Error ? error.message : String(error);\n console.log(JSON.stringify({\n error: {\n code: 'ENGINE_ERROR',\n message,\n recoverable: true,\n },\n meta: {\n schemaVersion: 'agent-response-v1',\n requestId: `rq-${Date.now()}`,\n mode: mode,\n timingMs: Date.now() - startTime,\n cached: false,\n },\n }));\n\n ctx.trace?.addEvent?.('mind.rag-query.agent.error', { error: message });\n return { exitCode: 1, ok: false };\n }\n }\n\n // === STANDARD MODE ===\n if (!flags.quiet && format === 'text') {\n ctx.ui.info('Initializing Mind RAG query...');\n }\n\n // Helper to format elapsed time\n const formatElapsedTime = (ms: number): string => {\n const seconds = Math.floor(ms / 1000);\n if (seconds < 60) {\n return `${seconds}s`;\n }\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}m ${remainingSeconds}s`;\n };\n\n // Track current stage\n let currentStage = 'Initializing';\n let lastProgressTime = Date.now();\n\n try {\n const result = await runRagQuery({\n cwd,\n scopeId,\n text,\n intent,\n limit,\n profileId,\n platform, // Pass platform for analytics adapter\n runtime: undefined, // Runtime context not available in CLI\n onProgress: (stage: string, details?: string) => {\n if (flags.quiet || format === 'json' || format === 'json-pretty') {return;}\n\n // Update current stage\n currentStage = details ? `${stage}: ${details}` : stage;\n\n // Throttle progress updates to once per second\n const now = Date.now();\n if (now - lastProgressTime >= 1000) {\n const elapsed = now - startTime;\n const elapsedStr = formatElapsedTime(elapsed);\n ctx.ui.info(`${currentStage} [${elapsedStr}]`);\n lastProgressTime = now;\n }\n },\n });\n\n const timing = Date.now() - startTime;\n\n ctx.trace?.addEvent?.('mind.rag-query.complete', {\n mode,\n scopeId,\n chunks: result.result.chunks.length,\n timingMs: timing,\n });\n\n // Output result\n if (format === 'json' || format === 'json-pretty') {\n // Check if we have the new JSON response format in metadata\n if (result.result.metadata?.jsonResponse) {\n const jsonResponse = result.result.metadata.jsonResponse;\n if (format === 'json-pretty') {\n ctx.ui.info(JSON.stringify(jsonResponse, null, 2));\n } else {\n ctx.ui.info(JSON.stringify(jsonResponse));\n }\n } else {\n // Fallback to old format for backward compatibility\n ctx.ui.info(JSON.stringify({\n ok: true,\n scopeId: result.scopeId,\n intent: result.result.query.intent,\n chunks: result.result.chunks,\n contextText: result.result.contextText,\n }));\n }\n } else if (!flags.quiet) {\n const topChunk = result.result.chunks[0];\n\n const sections: Array<{ header?: string; items: string[] }> = [\n {\n header: 'Summary',\n items: [\n `Scope: ${result.scopeId}`,\n `Intent: ${result.result.query.intent}`,\n `Chunks returned: ${result.result.chunks.length}`,\n ],\n },\n ];\n\n if (topChunk) {\n sections.push({\n header: 'Top chunk',\n items: [\n `${topChunk.path} #${topChunk.span.startLine}-${topChunk.span.endLine}`,\n truncateText(topChunk.text, 400),\n ],\n });\n } else {\n sections.push({\n items: ['No matching chunks found.'],\n });\n }\n\n // Show synthesized context if available (from reasoning chain)\n if (result.result.contextText && result.result.contextText.length > 0) {\n const contextPreview = result.result.contextText.length > 2000\n ? result.result.contextText.substring(0, 2000) + '...'\n : result.result.contextText;\n sections.push({\n header: `Synthesized context (${result.result.contextText.length} chars)`,\n items: [contextPreview],\n });\n }\n\n ctx.ui.success('Query completed', {\n title: 'Mind RAG Query',\n sections,\n timing,\n });\n }\n\n // Track analytics if available\n platform?.analytics?.track?.('mind.rag-query', {\n mode,\n agent: false,\n scopeId,\n intent,\n }).catch(() => {});\n\n return { exitCode: 0, ok: true, result };\n } catch (error) {\n const timing = Date.now() - startTime;\n const message = error instanceof Error ? error.message : String(error);\n\n ctx.trace?.addEvent?.('mind.rag-query.error', { error: message, timingMs: timing });\n\n if (format === 'json' || format === 'json-pretty') {\n ctx.ui.info(JSON.stringify({\n ok: false,\n error: message,\n timingMs: timing,\n }));\n } else if (!flags.quiet) {\n ctx.ui.error(`Query failed: ${message}`);\n }\n\n // Track analytics\n platform?.analytics?.track?.('mind.rag-query', {\n mode,\n agent: false,\n scopeId,\n intent,\n error: true,\n }).catch(() => {});\n\n return { exitCode: 1, ok: false };\n }\n },\n },\n});\n","/**\n * Mind verify command - checks platform services readiness (V3)\n */\n\nimport { defineCommand, usePlatform, type PluginContextV3 } from '@kb-labs/sdk';\n\ninterface VerifyInput {\n argv: string[];\n flags: {\n json?: boolean;\n quiet?: boolean;\n };\n}\n\ninterface ServiceStatus {\n service: string;\n required: boolean;\n available: boolean;\n configured: boolean;\n message?: string;\n}\n\ninterface VerifyResult {\n exitCode: number;\n ok: boolean;\n services: ServiceStatus[];\n issues: string[];\n meta: {\n timingMs: number;\n };\n}\n\nexport default defineCommand({\n id: 'mind:verify',\n description: 'Check Mind platform services readiness',\n\n handler: {\n async execute(ctx: PluginContextV3, input: VerifyInput): Promise<VerifyResult> {\n const startTime = Date.now();\n const { flags } = input;\n\n ctx.trace?.addEvent?.('mind.verify.start', { command: 'mind:verify' });\n\n // Use global platform singleton\n const platform = usePlatform();\n const services: ServiceStatus[] = [];\n\n if (!platform) {\n const result: VerifyResult = {\n exitCode: 1,\n ok: false,\n services,\n issues: ['platform context is missing'],\n meta: { timingMs: Date.now() - startTime },\n };\n\n if (flags.json) {\n ctx.ui.info(JSON.stringify(result));\n } else {\n ctx.ui.error('Platform services are not available in this context');\n }\n\n ctx.trace?.addEvent?.('mind.verify.failed', { reason: 'no-platform' });\n return result;\n }\n\n const check = (\n name: string,\n required: boolean,\n available: boolean,\n configured: boolean,\n message?: string,\n ) => {\n services.push({ service: name, required, available, configured, message });\n };\n\n const has = (key: keyof typeof platform) => Boolean((platform as any)[key]);\n const isConfigured = (svc: string) => platform.isConfigured?.(svc) ?? has(svc as any);\n\n // Check required services\n check('vectorStore', true, has('vectorStore'), isConfigured('vectorStore'));\n check('embeddings', true, has('embeddings'), isConfigured('embeddings'));\n check('llm', false, has('llm'), isConfigured('llm'));\n check('cache', false, has('cache'), true);\n check('storage', false, has('storage'), true);\n check('analytics', false, has('analytics'), true);\n\n const requiredOk = services.filter(s => s.required).every(s => s.available && s.configured);\n const issues = services\n .filter(s => s.required && (!s.available || !s.configured))\n .map(s => `${s.service} is missing or not configured`);\n\n const timing = Date.now() - startTime;\n\n ctx.trace?.addEvent?.('mind.verify.complete', { ok: requiredOk, issues: issues.length });\n\n const result: VerifyResult = {\n exitCode: requiredOk ? 0 : 1,\n ok: requiredOk,\n services,\n issues,\n meta: { timingMs: timing },\n };\n\n if (flags.json) {\n ctx.ui.info(JSON.stringify(result));\n } else if (!flags.quiet) {\n const sections = [\n {\n header: 'Services',\n items: services.map(s => {\n const status = s.available && s.configured ? '✓' : '⚠';\n return `${status} ${s.service}: ${s.available ? 'available' : 'missing'}${s.configured ? '' : ' (not configured)'}`;\n }),\n },\n ];\n\n if (issues.length) {\n sections.push({\n header: 'Issues',\n items: issues.map(i => `⚠ ${i}`),\n });\n }\n\n // Use success with sections for both cases (no ctx.ui.warning in V3)\n if (requiredOk) {\n ctx.ui.success('Mind platform services verified', {\n title: 'Mind Verify - Platform',\n sections,\n timing,\n });\n } else {\n // Use error but show details via separate success call with sections\n ctx.ui.error('Mind platform services have issues');\n ctx.ui.success('Verification Details', {\n title: 'Mind Verify - Platform',\n sections,\n timing,\n });\n }\n }\n\n return result;\n },\n },\n});\n"]}
@@ -0,0 +1,52 @@
1
+ import * as _kb_labs_perm_presets from '@kb-labs/perm-presets';
2
+
3
+ /**
4
+ * KB Labs Mind Plugin - Manifest V3
5
+ *
6
+ * AI-powered code search and RAG system for semantic codebase understanding.
7
+ *
8
+ * Key features:
9
+ * - Hybrid search (BM25 + vector embeddings)
10
+ * - Agent-powered query orchestration
11
+ * - Real-time incremental indexing
12
+ * - Anti-hallucination verification
13
+ */
14
+ declare const manifest: {
15
+ schema: string;
16
+ id: string;
17
+ version: string;
18
+ display: {
19
+ name: string;
20
+ description: string;
21
+ tags: string[];
22
+ };
23
+ configSection: string;
24
+ platform: {
25
+ requires: string[];
26
+ optional: string[];
27
+ };
28
+ permissions: _kb_labs_perm_presets.RuntimePermissionSpec;
29
+ cli: {
30
+ commands: {
31
+ id: string;
32
+ group: string;
33
+ describe: string;
34
+ handler: string;
35
+ handlerPath: string;
36
+ }[];
37
+ };
38
+ actions: {
39
+ id: string;
40
+ handler: string;
41
+ schedule: string;
42
+ description: string;
43
+ enabled: boolean;
44
+ }[];
45
+ artifacts: {
46
+ id: string;
47
+ pathTemplate: string;
48
+ description: string;
49
+ }[];
50
+ };
51
+
52
+ export { manifest as default, manifest };
@@ -0,0 +1,180 @@
1
+ import { combinePermissions, kbPlatformPreset } from '@kb-labs/sdk';
2
+
3
+ // src/manifest.v3.ts
4
+ var pluginPermissions = combinePermissions().with(kbPlatformPreset).withEnv([
5
+ "NODE_ENV",
6
+ "OPENAI_API_KEY",
7
+ "QDRANT_URL",
8
+ "QDRANT_API_KEY",
9
+ "EMBEDDING_PROVIDER",
10
+ "VECTOR_STORE_TYPE"
11
+ ]).withFs({
12
+ mode: "readWrite",
13
+ allow: [
14
+ ".kb/mind/**",
15
+ // Mind index data
16
+ ".kb/cache/**"
17
+ // Cache directory
18
+ ]
19
+ }).withFs({
20
+ mode: "read",
21
+ allow: [
22
+ "package.json",
23
+ "**/package.json",
24
+ "config/**",
25
+ "**/*.ts",
26
+ "**/*.tsx",
27
+ "**/*.js",
28
+ "**/*.jsx",
29
+ "**/*.md"
30
+ ]
31
+ }).withNetwork({
32
+ fetch: [
33
+ "https://api.openai.com/*",
34
+ // OpenAI embeddings/LLM
35
+ "http://localhost:6333/*",
36
+ // Qdrant vector store (local)
37
+ "http://127.0.0.1:6333/*",
38
+ "https://*.qdrant.io/*"
39
+ // Qdrant cloud
40
+ ]
41
+ }).withPlatform({
42
+ llm: true,
43
+ // LLM for query orchestration
44
+ embeddings: true,
45
+ // Embedding generation
46
+ vectorStore: { collections: ["mind:"] },
47
+ // Vector DB with mind: namespace
48
+ cache: true,
49
+ // State caching
50
+ analytics: true,
51
+ // Analytics tracking
52
+ storage: true
53
+ // Artifact storage
54
+ }).withQuotas({
55
+ timeoutMs: 12e5,
56
+ // 20 minutes for indexing
57
+ memoryMb: 4096,
58
+ // 4GB for large codebases
59
+ cpuMs: 6e5
60
+ // 10 minutes CPU time
61
+ }).build();
62
+ var manifest = {
63
+ schema: "kb.plugin/3",
64
+ id: "@kb-labs/mind",
65
+ version: "0.1.0",
66
+ display: {
67
+ name: "Mind",
68
+ description: "AI-powered code search and RAG system for semantic codebase understanding.",
69
+ tags: ["search", "rag", "ai", "semantic", "mind-index"]
70
+ },
71
+ // Configuration section in kb.config.json
72
+ configSection: "mind",
73
+ // Platform requirements
74
+ platform: {
75
+ requires: ["llm", "embeddings", "vectorStore", "cache", "storage"],
76
+ optional: ["analytics", "logger"]
77
+ },
78
+ // ✅ PERMISSIONS DEFINED ONCE FOR ENTIRE PLUGIN (Manifest-First)
79
+ // All commands, routes, and actions inherit these permissions
80
+ permissions: pluginPermissions,
81
+ // CLI commands (V3 structure with cli wrapper)
82
+ cli: {
83
+ commands: [
84
+ {
85
+ id: "mind:init",
86
+ group: "mind",
87
+ describe: "Initialize mind workspace",
88
+ handler: "./cli/commands/init.js#default",
89
+ handlerPath: "./cli/commands/init.js"
90
+ },
91
+ {
92
+ id: "mind:verify",
93
+ group: "mind",
94
+ describe: "Verify workspace consistency",
95
+ handler: "./cli/commands/verify.js#default",
96
+ handlerPath: "./cli/commands/verify.js"
97
+ },
98
+ {
99
+ id: "mind:rag-index",
100
+ group: "mind",
101
+ describe: "Build Mind indexes",
102
+ handler: "./cli/commands/rag-index.js#default",
103
+ handlerPath: "./cli/commands/rag-index.js"
104
+ },
105
+ {
106
+ id: "mind:rag-query",
107
+ group: "mind",
108
+ describe: "Run semantic RAG query",
109
+ handler: "./cli/commands/rag-query.js#default",
110
+ handlerPath: "./cli/commands/rag-query.js"
111
+ },
112
+ // Sync commands (5 separate commands instead of subcommands)
113
+ {
114
+ id: "mind:sync-add",
115
+ group: "mind",
116
+ describe: "Add document to sync",
117
+ handler: "./cli/commands/sync-add.js#default",
118
+ handlerPath: "./cli/commands/sync-add.js"
119
+ },
120
+ {
121
+ id: "mind:sync-update",
122
+ group: "mind",
123
+ describe: "Update synced document",
124
+ handler: "./cli/commands/sync-update.js#default",
125
+ handlerPath: "./cli/commands/sync-update.js"
126
+ },
127
+ {
128
+ id: "mind:sync-delete",
129
+ group: "mind",
130
+ describe: "Delete synced document",
131
+ handler: "./cli/commands/sync-delete.js#default",
132
+ handlerPath: "./cli/commands/sync-delete.js"
133
+ },
134
+ {
135
+ id: "mind:sync-list",
136
+ group: "mind",
137
+ describe: "List synced documents",
138
+ handler: "./cli/commands/sync-list.js#default",
139
+ handlerPath: "./cli/commands/sync-list.js"
140
+ },
141
+ {
142
+ id: "mind:sync-status",
143
+ group: "mind",
144
+ describe: "Show sync status",
145
+ handler: "./cli/commands/sync-status.js#default",
146
+ handlerPath: "./cli/commands/sync-status.js"
147
+ }
148
+ ]
149
+ },
150
+ // Scheduled jobs (inherit permissions from manifest)
151
+ actions: [
152
+ {
153
+ id: "auto-index",
154
+ handler: "./handlers/auto-index.js#run",
155
+ schedule: "0 * * * *",
156
+ // Every hour
157
+ description: "Automatically index Mind RAG database",
158
+ enabled: false
159
+ // Disabled by default
160
+ }
161
+ ],
162
+ // Artifacts
163
+ artifacts: [
164
+ {
165
+ id: "mind.index.json",
166
+ pathTemplate: ".kb/mind/index/index.json",
167
+ description: "Mind RAG index metadata."
168
+ },
169
+ {
170
+ id: "mind.cache.json",
171
+ pathTemplate: ".kb/cache/mind-*.json",
172
+ description: "Mind query cache files."
173
+ }
174
+ ]
175
+ };
176
+ var manifest_v3_default = manifest;
177
+
178
+ export { manifest_v3_default as default, manifest };
179
+ //# sourceMappingURL=manifest.v3.js.map
180
+ //# sourceMappingURL=manifest.v3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/manifest.v3.ts"],"names":[],"mappings":"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","file":"manifest.v3.js","sourcesContent":["/**\n * KB Labs Mind Plugin - Manifest V3\n *\n * AI-powered code search and RAG system for semantic codebase understanding.\n *\n * Key features:\n * - Hybrid search (BM25 + vector embeddings)\n * - Agent-powered query orchestration\n * - Real-time incremental indexing\n * - Anti-hallucination verification\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n} from '@kb-labs/sdk';\n\n/**\n * Build permissions using presets:\n * - kbPlatform: KB_* env vars and .kb/ directory\n * - Custom: Source file access for indexing, network for OpenAI/Qdrant\n *\n * Note: Uses platform services for LLM, embeddings, and vector storage.\n */\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withEnv([\n 'NODE_ENV',\n 'OPENAI_API_KEY',\n 'QDRANT_URL',\n 'QDRANT_API_KEY',\n 'EMBEDDING_PROVIDER',\n 'VECTOR_STORE_TYPE',\n ])\n .withFs({\n mode: 'readWrite',\n allow: [\n '.kb/mind/**', // Mind index data\n '.kb/cache/**', // Cache directory\n ],\n })\n .withFs({\n mode: 'read',\n allow: [\n 'package.json',\n '**/package.json',\n 'config/**',\n '**/*.ts',\n '**/*.tsx',\n '**/*.js',\n '**/*.jsx',\n '**/*.md',\n ],\n })\n .withNetwork({\n fetch: [\n 'https://api.openai.com/*', // OpenAI embeddings/LLM\n 'http://localhost:6333/*', // Qdrant vector store (local)\n 'http://127.0.0.1:6333/*',\n 'https://*.qdrant.io/*', // Qdrant cloud\n ],\n })\n .withPlatform({\n llm: true, // LLM for query orchestration\n embeddings: true, // Embedding generation\n vectorStore: { collections: ['mind:'] }, // Vector DB with mind: namespace\n cache: true, // State caching\n analytics: true, // Analytics tracking\n storage: true, // Artifact storage\n })\n .withQuotas({\n timeoutMs: 1200000, // 20 minutes for indexing\n memoryMb: 4096, // 4GB for large codebases\n cpuMs: 600000, // 10 minutes CPU time\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/mind',\n version: '0.1.0',\n\n display: {\n name: 'Mind',\n description: 'AI-powered code search and RAG system for semantic codebase understanding.',\n tags: ['search', 'rag', 'ai', 'semantic', 'mind-index'],\n },\n\n // Configuration section in kb.config.json\n configSection: 'mind',\n\n // Platform requirements\n platform: {\n requires: ['llm', 'embeddings', 'vectorStore', 'cache', 'storage'],\n optional: ['analytics', 'logger'],\n },\n\n // ✅ PERMISSIONS DEFINED ONCE FOR ENTIRE PLUGIN (Manifest-First)\n // All commands, routes, and actions inherit these permissions\n permissions: pluginPermissions,\n\n // CLI commands (V3 structure with cli wrapper)\n cli: {\n commands: [\n {\n id: 'mind:init',\n group: 'mind',\n describe: 'Initialize mind workspace',\n handler: './cli/commands/init.js#default',\n handlerPath: './cli/commands/init.js',\n },\n {\n id: 'mind:verify',\n group: 'mind',\n describe: 'Verify workspace consistency',\n handler: './cli/commands/verify.js#default',\n handlerPath: './cli/commands/verify.js',\n },\n {\n id: 'mind:rag-index',\n group: 'mind',\n describe: 'Build Mind indexes',\n handler: './cli/commands/rag-index.js#default',\n handlerPath: './cli/commands/rag-index.js',\n },\n {\n id: 'mind:rag-query',\n group: 'mind',\n describe: 'Run semantic RAG query',\n handler: './cli/commands/rag-query.js#default',\n handlerPath: './cli/commands/rag-query.js',\n },\n // Sync commands (5 separate commands instead of subcommands)\n {\n id: 'mind:sync-add',\n group: 'mind',\n describe: 'Add document to sync',\n handler: './cli/commands/sync-add.js#default',\n handlerPath: './cli/commands/sync-add.js',\n },\n {\n id: 'mind:sync-update',\n group: 'mind',\n describe: 'Update synced document',\n handler: './cli/commands/sync-update.js#default',\n handlerPath: './cli/commands/sync-update.js',\n },\n {\n id: 'mind:sync-delete',\n group: 'mind',\n describe: 'Delete synced document',\n handler: './cli/commands/sync-delete.js#default',\n handlerPath: './cli/commands/sync-delete.js',\n },\n {\n id: 'mind:sync-list',\n group: 'mind',\n describe: 'List synced documents',\n handler: './cli/commands/sync-list.js#default',\n handlerPath: './cli/commands/sync-list.js',\n },\n {\n id: 'mind:sync-status',\n group: 'mind',\n describe: 'Show sync status',\n handler: './cli/commands/sync-status.js#default',\n handlerPath: './cli/commands/sync-status.js',\n },\n ],\n },\n\n // Scheduled jobs (inherit permissions from manifest)\n actions: [\n {\n id: 'auto-index',\n handler: './handlers/auto-index.js#run',\n schedule: '0 * * * *', // Every hour\n description: 'Automatically index Mind RAG database',\n enabled: false, // Disabled by default\n },\n ],\n\n // Artifacts\n artifacts: [\n {\n id: 'mind.index.json',\n pathTemplate: '.kb/mind/index/index.json',\n description: 'Mind RAG index metadata.',\n },\n {\n id: 'mind.cache.json',\n pathTemplate: '.kb/cache/mind-*.json',\n description: 'Mind query cache files.',\n },\n ],\n};\n\n// Export as default for V3 compatibility\nexport default manifest;\n"]}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@kb-labs/mind-entry",
3
+ "version": "2.14.0",
4
+ "type": "module",
5
+ "description": "CLI commands for KB Labs Mind",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./dist/*": "./dist/*"
15
+ },
16
+ "kb": {
17
+ "manifest": "./dist/manifest.v3.js"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md",
22
+ "LICENSE"
23
+ ],
24
+ "sideEffects": false,
25
+ "dependencies": {
26
+ "react": "^18.3.1",
27
+ "zod": "^3.23.8",
28
+ "@kb-labs/plugin-contracts": "2.14.0",
29
+ "@kb-labs/mind-contracts": "2.14.0",
30
+ "@kb-labs/sdk": "1.6.6",
31
+ "@kb-labs/mind-engine": "2.14.0",
32
+ "@kb-labs/mind-indexer": "2.14.0",
33
+ "@kb-labs/mind-core": "2.14.0",
34
+ "@kb-labs/mind-types": "2.14.0",
35
+ "@kb-labs/mind-orchestrator": "2.14.0"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^24.3.3",
39
+ "@types/react": "^18.3.8",
40
+ "rimraf": "^6.0.1",
41
+ "tsup": "^8.5.0",
42
+ "typescript": "^5.6.3",
43
+ "vitest": "^3.2.4",
44
+ "@kb-labs/devkit": "2.14.0"
45
+ },
46
+ "engines": {
47
+ "node": ">=20.0.0",
48
+ "pnpm": ">=9.0.0"
49
+ },
50
+ "scripts": {
51
+ "pretype-check": "pnpm --filter @kb-labs/shared-cli-ui build",
52
+ "clean": "rimraf dist",
53
+ "build": "tsup --config tsup.config.ts",
54
+ "dev": "tsup --config tsup.config.ts --watch",
55
+ "lint": "eslint src --ext .ts,.tsx,.js,.jsx",
56
+ "lint:fix": "eslint . --fix",
57
+ "type-check": "tsc --noEmit",
58
+ "test": "vitest run --passWithNoTests",
59
+ "test:watch": "vitest"
60
+ }
61
+ }