@triedotdev/mcp 1.0.50 → 1.0.51
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/README.md +545 -406
- package/dist/agent-smith-BECRZH73.js +12 -0
- package/dist/{agent-smith-runner-3AWGEOZC.js → agent-smith-runner-LZRXM2Q2.js} +7 -7
- package/dist/agent-smith-runner-LZRXM2Q2.js.map +1 -0
- package/dist/{chunk-3SQK2RKF.js → chunk-A43476GB.js} +9 -9
- package/dist/chunk-A43476GB.js.map +1 -0
- package/dist/{chunk-IMFD4SJC.js → chunk-ASGSTVVF.js} +1 -1
- package/dist/chunk-ASGSTVVF.js.map +1 -0
- package/dist/chunk-C3AS5OXW.js +1177 -0
- package/dist/chunk-C3AS5OXW.js.map +1 -0
- package/dist/chunk-IEFAQFDQ.js +2061 -0
- package/dist/chunk-IEFAQFDQ.js.map +1 -0
- package/dist/{chunk-GLC62PGD.js → chunk-KB5ZN6K2.js} +2 -2
- package/dist/{chunk-37U65YW7.js → chunk-TOE75CFZ.js} +1855 -206
- package/dist/chunk-TOE75CFZ.js.map +1 -0
- package/dist/{chunk-GERAB55E.js → chunk-YKUCIKTU.js} +94 -1259
- package/dist/chunk-YKUCIKTU.js.map +1 -0
- package/dist/cli/create-agent.js +2 -2
- package/dist/cli/main.js +406 -68
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/yolo-daemon.js +5 -5
- package/dist/comprehension-46F7ZNKL.js +821 -0
- package/dist/comprehension-46F7ZNKL.js.map +1 -0
- package/dist/index.js +448 -123
- package/dist/index.js.map +1 -1
- package/dist/workers/agent-worker.js +10 -11
- package/dist/workers/agent-worker.js.map +1 -1
- package/package.json +3 -1
- package/dist/agent-smith-RVXIMAL6.js +0 -11
- package/dist/agent-smith-runner-3AWGEOZC.js.map +0 -1
- package/dist/chunk-37U65YW7.js.map +0 -1
- package/dist/chunk-3SQK2RKF.js.map +0 -1
- package/dist/chunk-6T7S77U7.js +0 -852
- package/dist/chunk-6T7S77U7.js.map +0 -1
- package/dist/chunk-GERAB55E.js.map +0 -1
- package/dist/chunk-IMFD4SJC.js.map +0 -1
- package/dist/chunk-PZDQIFKO.js +0 -1598
- package/dist/chunk-PZDQIFKO.js.map +0 -1
- /package/dist/{agent-smith-RVXIMAL6.js.map → agent-smith-BECRZH73.js.map} +0 -0
- /package/dist/{chunk-GLC62PGD.js.map → chunk-KB5ZN6K2.js.map} +0 -0
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/main.ts","../../src/cli/skills.ts","../../src/cli/init.ts","../../src/cli/memory.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Trie Agent CLI\n * \n * Main command-line interface for Trie Agent.\n * Provides help, setup, and routes to specific tools.\n * \n * Usage:\n * trie-agent [command] [options]\n */\n\nimport { resolve, join, dirname } from 'path';\nimport { existsSync, readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { loadProjectInfo, initProjectInfo, projectInfoExists } from '../utils/project-info.js';\nimport { handleSkillsCommand } from './skills.js';\nimport { handleInitCommand } from './init.js';\nimport { handleMemoryCommand } from './memory.js';\nimport { handleCheckpointCommand } from './checkpoint.js';\n\n// ES module __dirname equivalent\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst VERSION = '1.0.0';\n\n/**\n * Show TRIE ASCII art banner\n */\nfunction showBanner(): void {\n console.log(`\n ████████╗██████╗ ██╗███████╗\n ╚══██╔══╝██╔══██╗██║██╔════╝\n ██║ ██████╔╝██║█████╗ \n ██║ ██╔══██╗██║██╔══╝ \n ██║ ██║ ██║██║███████╗\n ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝\n \n Your central registry for agents and skills\n\n by Louis Kishfy\n\n Download the Trie workspace: https://www.trie.dev\n Follow me on X: https://x.com/louiskishfy\n`);\n}\n\n/**\n * Show the main help message\n */\nfunction showHelp(): void {\n showBanner();\n console.log(`Version: ${VERSION}\n\nUSAGE:\n trie-agent <command> [options]\n\nCOMMANDS:\n help Show this help message\n init Initialize bootstrap files (.trie/RULES.md, etc.)\n setup Configure API key and environment\n scan Scan codebase once and exit\n checkpoint Save context without running a scan\n watch Watch for changes and scan continuously\n agents List all available agents\n skills Manage external skills from skills.sh\n project View/manage project info (.trie/PROJECT.md)\n memory Search and manage issue memory\n agent-smith Run Agent Smith (35 vibe code hunters)\n super-reviewer Run interactive PR review\n version Show version information\n\nEXAMPLES:\n # First time setup\n trie-agent setup\n\n # Scan your project once\n trie-agent scan\n\n # Watch mode (scan on file changes)\n trie-agent watch\n\n # Scan specific directory\n trie-agent scan --dir ./src\n\n # Scan with custom user count for cost estimation\n trie-agent scan --users 10000\n\n # Initialize project info file\n trie-agent project init\n\n # View project info\n trie-agent project\n\n # Install a skill from GitHub\n trie-agent skills add vercel-labs/agent-skills react-best-practices\n\n # List installed skills\n trie-agent skills list\n\n # Initialize bootstrap files\n trie-agent init\n\n # Search issue memory\n trie-agent memory search \"SQL injection\"\n\n # Run Agent Smith (vibe code hunter)\n trie-agent agent-smith\n\n # Run interactive PR review\n trie-agent super-reviewer\n\nMCP TOOLS (use via Cursor/Claude Desktop):\n trie_scan Intelligent scan with agent selection\n trie_fix Generate high-confidence fix prompts\n trie_explain Explain code, issues, or changes\n trie_watch Watch mode for autonomous reporting\n \n Individual Agents:\n trie_security Security vulnerabilities\n trie_privacy Privacy & GDPR compliance\n trie_soc2 SOC 2 Type II compliance\n trie_legal Legal compliance\n trie_accessibility WCAG 2.1 accessibility\n trie_architecture Code organization & SOLID\n trie_bugs Bug finding & null safety\n trie_ux UX testing (happy path, edge cases)\n trie_types TypeScript type safety\n trie_devops DevOps & deployment\n trie_clean Clean up AI-generated code\n \n Special Agents:\n trie_agent_smith 35 vibe code hunters, cross-file detection\n trie_super_reviewer Interactive PR review with cross-examination\n\n Custom Skills:\n trie_create_skill Create skill from PDF/TXT/MD document\n trie_list_skills List all registered skills\n\n`);\n}\n\n/**\n * Show setup instructions\n */\nfunction showSetup(): void {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 🔧 Trie Agent Setup ║\n╚══════════════════════════════════════════════════════════════════╝\n\nNo API key required! Trie uses your AI tool's built-in Claude.\n\nSTEP 1: Configure for your AI tool\n─────────────────────────────────────\n\nFor CLAUDE CODE:\n claude mcp add Trie -- npx @triedotdev/mcp\n\n Or add to ~/.claude/settings.json:\n {\n \"mcpServers\": {\n \"Trie\": {\n \"command\": \"node\",\n \"args\": [\"/path/to/@triedotdev/mcp/dist/index.js\"]\n }\n }\n }\n\nFor CURSOR (~/.cursor/mcp.json):\n{\n \"mcpServers\": {\n \"Trie\": {\n \"command\": \"node\",\n \"args\": [\"/path/to/@triedotdev/mcp/dist/index.js\"]\n }\n }\n}\n\nSTEP 2: Restart your AI tool\n─────────────────────────────────────\nRestart Claude Code or Cursor to load the MCP configuration.\n\nSTEP 3: Start scanning!\n─────────────────────────────────────\nAsk your AI assistant: \"Scan this with Trie\" or \"Use trie_scan\"\n\nNeed help? https://github.com/Trie-OS/Trie-Agent/issues\n`);\n}\n\n/**\n * List available agents\n */\nfunction listAgents(): void {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 Available Agents ║\n╚══════════════════════════════════════════════════════════════════╝\n\nBUILT-IN AGENTS:\n─────────────────────────────────────\n security Security vulnerabilities, injection risks, auth issues\n privacy GDPR, HIPAA, PII handling, data encryption\n legal GDPR, CCPA, consent patterns, data retention\n accessibility WCAG 2.1 accessibility, keyboard nav, screen readers\n software-architect Code organization, SOLID principles, scalability\n bug-finding Null safety, edge cases, async issues\n user-testing Simulate users: happy path, security tester, confused user\n typecheck Type errors, missing annotations, null checks\n devops Config issues, logging, env vars, deployment\n trie_clean Clean up AI-generated code patterns\n moneybags Estimates dollar cost of bugs (IBM/NIST cost models)\n production-ready Production gate: health checks, scaling, security headers\n\n Custom Skills:\n ─────────────────────────────────────`);\n\n // Check for custom skills\n const skillsDir = join(getWorkingDirectory(undefined, true), '.trie', 'agents');\n if (existsSync(skillsDir)) {\n try {\n const { readdirSync } = require('fs');\n const files = readdirSync(skillsDir).filter((f: string) => f.endsWith('.json'));\n \n if (files.length > 0) {\n for (const file of files) {\n const config = JSON.parse(readFileSync(join(skillsDir, file), 'utf-8'));\n console.log(` ${config.name.padEnd(18)} ${config.description || 'Custom skill'}`);\n }\n } else {\n console.log(` (No custom skills found)`);\n }\n } catch {\n console.log(` (No custom skills found)`);\n }\n } else {\n console.log(` (No custom skills found)`);\n }\n\n console.log(`\nCREATE CUSTOM SKILLS:\n─────────────────────────────────────\nYou can create skills from PDF, TXT, or MD documents:\n\n Via MCP: Use trie_create_skill tool\n CLI: trie-create --file book.pdf --name my-skill\n\nThe agent will learn patterns from your document and apply them\nto code reviews. Great for style guides, compliance docs, etc.\n`);\n}\n\n/**\n * Show version\n */\nfunction showVersion(): void {\n showBanner();\n console.error(`v${VERSION}`);\n}\n\n/**\n * Handle project command\n */\nasync function handleProject(args: string[]): Promise<void> {\n const subcommand = args[0]?.toLowerCase();\n const workDir = getWorkingDirectory(undefined, true);\n\n if (subcommand === 'init') {\n const result = await initProjectInfo(workDir);\n if (result.created) {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 PROJECT.md Created ║\n╚══════════════════════════════════════════════════════════════════╝\n\nPath: ${result.path}\n\nA template has been created with sections for:\n • Project Overview\n • Technology Stack\n • Architecture\n • Coding Conventions\n • Environment\n • Team\n • Compliance\n • AI Instructions\n\nNext steps:\n 1. Edit the file to add your project details\n 2. The info will be available via trie://project resource\n 3. AI assistants will use this context automatically\n`);\n } else {\n console.log(`PROJECT.md already exists at: ${result.path}`);\n console.log('Use \"trie-agent project\" to view it.');\n }\n return;\n }\n\n if (subcommand === 'edit') {\n const editor = process.env.EDITOR || process.env.VISUAL || 'nano';\n const projectPath = join(workDir, '.trie', 'PROJECT.md');\n \n if (!projectInfoExists(workDir)) {\n console.log('No PROJECT.md found. Creating one first...');\n await initProjectInfo(workDir);\n }\n \n const { spawn } = await import('child_process');\n const child = spawn(editor, [projectPath], { stdio: 'inherit' });\n child.on('close', (code) => {\n process.exit(code || 0);\n });\n return;\n }\n\n // Default: show project info\n if (!projectInfoExists(workDir)) {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 Project Information ║\n╚══════════════════════════════════════════════════════════════════╝\n\nNo PROJECT.md found in this project.\n\nCOMMANDS:\n trie-agent project init Create PROJECT.md from template\n trie-agent project edit Open PROJECT.md in $EDITOR\n trie-agent project View PROJECT.md contents\n\nWHAT IS PROJECT.MD?\nPROJECT.md stores important project context for AI assistants:\n • Project description and purpose\n • Technology stack and frameworks\n • Architecture decisions\n • Coding conventions\n • Environment info (URLs, endpoints)\n • Team ownership\n • Compliance requirements\n • Special instructions for AI\n\nThis info is available via trie://project MCP resource.\n`);\n return;\n }\n\n const content = await loadProjectInfo(workDir);\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 Project Information ║\n╚══════════════════════════════════════════════════════════════════╝\n\nPath: ${join(workDir, '.trie', 'PROJECT.md')}\n\n${'-'.repeat(68)}\n`);\n console.log(content);\n}\n\n/**\n * Run scan command\n */\nasync function runScan(args: string[]): Promise<void> {\n // Forward to watch daemon with --once flag\n const { spawn } = await import('child_process');\n \n // Determine daemon path - works for both source (tsx) and built (node) execution\n let daemonPath: string;\n if (__filename.endsWith('.ts')) {\n // Running from source with tsx\n daemonPath = resolve(__dirname, 'yolo-daemon.ts');\n } else {\n // Running from built dist\n daemonPath = resolve(__dirname, 'yolo-daemon.js');\n }\n \n const daemonArgs = ['--once', ...args];\n \n // Use tsx for .ts files, node for .js files\n const executor = daemonPath.endsWith('.ts') ? 'npx' : 'node';\n const execArgs = daemonPath.endsWith('.ts') \n ? ['tsx', daemonPath, ...daemonArgs]\n : [daemonPath, ...daemonArgs];\n \n const child = spawn(executor, execArgs, {\n stdio: 'inherit',\n env: process.env\n });\n\n child.on('close', (code) => {\n process.exit(code || 0);\n });\n}\n\n/**\n * Run watch command\n */\nasync function runWatch(args: string[]): Promise<void> {\n const { spawn } = await import('child_process');\n \n // Determine daemon path - works for both source (tsx) and built (node) execution\n let daemonPath: string;\n if (__filename.endsWith('.ts')) {\n daemonPath = resolve(__dirname, 'yolo-daemon.ts');\n } else {\n daemonPath = resolve(__dirname, 'yolo-daemon.js');\n }\n \n // Use tsx for .ts files, node for .js files\n const executor = daemonPath.endsWith('.ts') ? 'npx' : 'node';\n const execArgs = daemonPath.endsWith('.ts') \n ? ['tsx', daemonPath, ...args]\n : [daemonPath, ...args];\n \n const child = spawn(executor, execArgs, {\n stdio: 'inherit',\n env: process.env\n });\n\n child.on('close', (code) => {\n process.exit(code || 0);\n });\n}\n\n/**\n * Main entry point\n */\nfunction main(): void {\n const args = process.argv.slice(2);\n const command = args[0]?.toLowerCase();\n const restArgs = args.slice(1);\n\n // No command or help flag\n if (!command || command === 'help' || command === '--help' || command === '-h') {\n showHelp();\n process.exit(0);\n }\n\n switch (command) {\n case 'setup':\n case 'config':\n case 'configure':\n showSetup();\n break;\n\n case 'init':\n case 'bootstrap':\n handleInitCommand(restArgs);\n break;\n\n case 'memory':\n case 'mem':\n handleMemoryCommand(restArgs);\n break;\n\n case 'checkpoint':\n case 'cp':\n case 'save':\n handleCheckpointCommand(restArgs);\n break;\n\n case 'agents':\n case 'list':\n case 'list-agents':\n listAgents();\n break;\n\n case 'project':\n case 'info':\n case 'project-info':\n handleProject(restArgs);\n break;\n\n case 'skills':\n case 'skill':\n handleSkillsCommand(restArgs);\n break;\n\n case 'version':\n case '--version':\n case '-v':\n showVersion();\n break;\n\n case 'scan':\n runScan(restArgs);\n break;\n\n case 'watch':\n runWatch(restArgs);\n break;\n\n case 'agent-smith':\n case 'smith':\n case 'trie_agent_smith':\n // Run agent-smith specifically\n runScan(['--agents', 'agent-smith', ...restArgs]);\n break;\n\n case 'super-reviewer':\n case 'reviewer':\n case 'trie_super_reviewer':\n // Run super-reviewer specifically\n runScan(['--agents', 'super-reviewer', ...restArgs]);\n break;\n\n default:\n // Check if it looks like a flag (pass to watch daemon)\n if (command.startsWith('-')) {\n // Treat as watch-daemon args\n const { spawn } = require('child_process');\n const daemonPath = resolve(__dirname, 'yolo-daemon.js');\n \n const child = spawn('node', [daemonPath, ...args], {\n stdio: 'inherit',\n env: process.env\n });\n\n child.on('close', (code: number) => {\n process.exit(code || 0);\n });\n } else {\n console.error(`Unknown command: ${command}`);\n console.error(`Run 'trie-agent help' for usage information.`);\n process.exit(1);\n }\n }\n}\n\nmain();\n","/**\n * Skills CLI Command Handler\n * \n * Manages external skills from skills.sh and other GitHub repositories.\n * Skills are reusable capabilities that agents apply during code review.\n */\n\nimport { installSkill, listInstalledSkills, removeSkill } from '../skills/installer.js';\nimport { loadContextState, recordSkillInstalled } from '../utils/context-state.js';\nimport { SKILL_CATEGORIES, getSkillCategories, getSkillsByCategory } from '../bootstrap/stack-detector.js';\n\nexport async function handleSkillsCommand(args: string[]): Promise<void> {\n const [cmd, ...rest] = args;\n\n switch (cmd) {\n case 'add':\n case 'install': {\n if (!rest[0]) {\n console.log('Usage: trie-agent skills add <owner/repo> [skill-name]');\n console.log('');\n console.log('Examples:');\n console.log(' trie-agent skills add vercel-labs/agent-skills react-best-practices');\n console.log(' trie-agent skills add anthropics/skills claude-code-review');\n console.log(' trie-agent skills add myorg/internal-standards');\n return;\n }\n \n console.log(`Installing skill from ${rest[0]}...`);\n const result = await installSkill(rest[0], rest[1]);\n \n if (result.success) {\n await recordSkillInstalled({ name: result.name, source: rest[0] });\n console.log(`Installed: ${result.name}`);\n console.log(`Path: ${result.path}`);\n console.log('');\n console.log('This skill is now a capability the skill-review agent can apply.');\n console.log('Run \"trie-agent scan\" to apply skills to your codebase.');\n } else {\n console.error(`Failed to install: ${result.error}`);\n process.exit(1);\n }\n break;\n }\n \n case 'list':\n case 'ls': {\n const categoryArg = rest[0]?.toLowerCase();\n \n // If a category is specified, show skills in that category\n if (categoryArg) {\n if (categoryArg === 'categories' || categoryArg === 'all') {\n // Show all available categories\n const categories = getSkillCategories();\n console.log('');\n console.log('Available Skill Categories:');\n console.log('');\n for (const cat of categories) {\n console.log(` ${cat.name.padEnd(15)} ${cat.count} skills`);\n }\n console.log('');\n console.log('View skills in a category:');\n console.log(' trie skills list <category>');\n console.log('');\n console.log('Browse all skills: https://skills.sh');\n return;\n }\n \n const categorySkills = getSkillsByCategory(categoryArg);\n if (categorySkills.length === 0) {\n const categories = getSkillCategories();\n console.log(`Unknown category: ${categoryArg}`);\n console.log('');\n console.log('Available categories:');\n for (const cat of categories) {\n console.log(` ${cat.name}`);\n }\n return;\n }\n \n console.log('');\n console.log(`${categoryArg.charAt(0).toUpperCase() + categoryArg.slice(1)} Skills (${categorySkills.length}):`);\n console.log('');\n for (const skill of categorySkills) {\n console.log(` trie skills add ${skill}`);\n }\n console.log('');\n console.log('Install any skill with: trie skills add <source> <name>');\n console.log('Browse all skills: https://skills.sh');\n return;\n }\n \n // No category - show installed skills\n const skills = await listInstalledSkills();\n const state = await loadContextState();\n \n if (skills.length === 0) {\n console.log('');\n console.log('No skills installed.');\n console.log('');\n console.log('Install a skill:');\n console.log(' trie skills add vercel-labs/agent-skills react-best-practices');\n console.log('');\n console.log('Explore skill categories:');\n const categories = getSkillCategories();\n for (const cat of categories.slice(0, 5)) {\n console.log(` trie skills list ${cat.name.padEnd(15)} # ${cat.count} skills`);\n }\n console.log(' trie skills list categories # see all');\n console.log('');\n console.log('Browse all skills: https://skills.sh');\n return;\n }\n \n console.log('');\n console.log(`Installed Skills (${skills.length}):`);\n console.log('');\n \n for (const skill of skills) {\n const record = state.skills?.[skill.name];\n const usage = record ? `applied ${record.timesApplied}x` : 'not yet applied';\n console.log(` ${skill.name} (${usage})`);\n console.log(` ${skill.description}`);\n console.log(` Source: ${skill.installedFrom}`);\n console.log('');\n }\n \n console.log('These skills are applied by the skill-review agent during scans.');\n console.log('');\n console.log('Explore more: trie skills list categories');\n break;\n }\n \n case 'remove':\n case 'rm':\n case 'uninstall': {\n if (!rest[0]) {\n console.log('Usage: trie-agent skills remove <skill-name>');\n return;\n }\n \n const removed = await removeSkill(rest[0]);\n if (removed) {\n console.log(`Removed: ${rest[0]}`);\n } else {\n console.error(`Skill not found: ${rest[0]}`);\n process.exit(1);\n }\n break;\n }\n \n case 'info': {\n if (!rest[0]) {\n console.log('Usage: trie-agent skills info <skill-name>');\n return;\n }\n \n const skills = await listInstalledSkills();\n const skill = skills.find(s => s.name === rest[0]);\n \n if (!skill) {\n console.error(`Skill not found: ${rest[0]}`);\n process.exit(1);\n return;\n }\n \n const state = await loadContextState();\n const record = state.skills?.[skill.name];\n \n console.log('');\n console.log(`Skill: ${skill.name}`);\n console.log(`Description: ${skill.description}`);\n console.log(`Path: ${skill.path}`);\n console.log(`Source: ${skill.installedFrom}`);\n console.log(`Installed: ${new Date(skill.installedAt).toLocaleString()}`);\n \n if (record) {\n console.log(`Times Applied: ${record.timesApplied}`);\n console.log(`Applied By: ${record.appliedBy.join(', ') || 'none'}`);\n if (record.lastApplied) {\n console.log(`Last Applied: ${new Date(record.lastApplied).toLocaleString()}`);\n }\n } else {\n console.log('Times Applied: 0');\n }\n break;\n }\n \n default: {\n const categories = getSkillCategories();\n console.log(`\nSkills - Reusable capabilities from skills.sh\n\nSkills are NOT agents - they are knowledge/instructions that the\nskill-review agent applies during code review.\n\nCommands:\n trie skills add <source> [name] Install a skill\n trie skills list List installed skills\n trie skills list <category> Browse skills by category\n trie skills list categories Show all categories\n trie skills info <name> Show skill details\n trie skills remove <name> Uninstall a skill\n\nExamples:\n trie skills add vercel-labs/agent-skills react-best-practices\n trie skills add anthropics/skills frontend-design\n trie skills add expo/skills upgrading-expo\n\nCategories (${categories.length} total, ${Object.values(SKILL_CATEGORIES).flat().length}+ skills):\n ${categories.map(c => `${c.name} (${c.count})`).join(', ')}\n\nHow it works:\n 1. You install skills (capabilities)\n 2. The skill-review agent applies them during 'trie scan'\n 3. Usage is tracked in your project context\n\nBrowse all skills: https://skills.sh\n `);\n }\n }\n}\n","/**\n * CLI Init Command\n * \n * Initialize bootstrap files for a new project.\n */\n\nimport { initializeBootstrapFiles, needsBootstrap, completeBootstrap } from '../bootstrap/index.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { getSkillCategories } from '../bootstrap/stack-detector.js';\n\nexport async function handleInitCommand(args: string[]): Promise<void> {\n const subcommand = args[0]?.toLowerCase();\n const workDir = getWorkingDirectory(undefined, true);\n\n if (subcommand === 'complete') {\n const result = await completeBootstrap(workDir);\n if (result) {\n console.log('Bootstrap completed. BOOTSTRAP.md has been deleted.');\n } else {\n console.log('No BOOTSTRAP.md file found.');\n }\n return;\n }\n\n if (subcommand === 'status') {\n const needs = needsBootstrap(workDir);\n if (needs) {\n console.log('Bootstrap pending: .trie/BOOTSTRAP.md exists');\n console.log('Run \"trie init complete\" after finishing setup.');\n } else {\n console.log('Bootstrap complete: No pending setup.');\n }\n return;\n }\n\n const force = args.includes('--force') || args.includes('-f');\n const skipBootstrap = args.includes('--skip-bootstrap');\n\n console.log(`\n╔════════════════════════════════════════════════╗\n║ ║\n║ ████████╗██████╗ ██╗███████╗ ║\n║ ╚══██╔══╝██╔══██╗██║██╔════╝ ║\n║ ██║ ██████╔╝██║█████╗ ║\n║ ██║ ██╔══██╗██║██╔══╝ ║\n║ ██║ ██║ ██║██║███████╗ ║\n║ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝ ║\n║ ║\n║ Your central registry for agents and skills ║\n║ ║\n╚════════════════════════════════════════════════╝\n\n by Louis Kishfy\n\n Download the Trie workspace: https://www.trie.dev\n Follow me on X: https://x.com/louiskishfy\n\n`);\n\n const result = await initializeBootstrapFiles({\n workDir,\n force,\n skipBootstrap,\n });\n\n if (result.created.length > 0) {\n console.log('Created files:');\n for (const file of result.created) {\n console.log(` + .trie/${file}`);\n }\n }\n\n if (result.skipped.length > 0 && !force) {\n console.log('\\nSkipped (already exist):');\n for (const file of result.skipped) {\n console.log(` - .trie/${file}`);\n }\n }\n\n console.log('\\nDetected Stack:');\n if (result.stack.framework) console.log(` Framework: ${result.stack.framework}`);\n if (result.stack.language) console.log(` Language: ${result.stack.language}`);\n if (result.stack.database) console.log(` Database: ${result.stack.database}`);\n if (result.stack.auth) console.log(` Auth: ${result.stack.auth}`);\n if (result.stack.packageManager) console.log(` Package Manager: ${result.stack.packageManager}`);\n\n if (result.stack.suggestedSkills.length > 0) {\n // Limit to top 5 most relevant skills to avoid overwhelming output\n const topSkills = result.stack.suggestedSkills.slice(0, 5);\n console.log('\\nSuggested Skills (based on your stack):');\n for (const skill of topSkills) {\n console.log(` trie skills add ${skill}`);\n }\n if (result.stack.suggestedSkills.length > 5) {\n console.log(` ... and ${result.stack.suggestedSkills.length - 5} more (run \"trie init\" again to see all)`);\n }\n }\n\n // Show category exploration options\n const categories = getSkillCategories();\n const topCategories = categories.slice(0, 5);\n console.log('\\nExplore skill categories:');\n for (const cat of topCategories) {\n console.log(` trie skills list ${cat.name.padEnd(15)} # ${cat.count} skills`);\n }\n console.log(` trie skills list categories # see all ${categories.length} categories`);\n \n console.log('\\nBrowse all skills: https://skills.sh');\n\n console.log(`\nNext Steps:\n 1. Edit .trie/PROJECT.md with your project description\n 2. Define coding standards in .trie/RULES.md\n 3. Run \"trie scan\" to analyze your codebase\n 4. Run \"trie init complete\" when setup is done\n`);\n}\n","/**\n * CLI Memory Command\n * \n * Search and manage issue memory.\n */\n\nimport {\n searchIssues,\n getMemoryStats,\n getRecentIssues,\n getDailyLogs,\n markIssueResolved,\n} from '../memory/issue-store.js';\nimport {\n findCrossProjectPatterns,\n listTrackedProjects,\n getGlobalMemoryStats,\n updateGlobalMemoryMd,\n searchGlobalPatterns,\n} from '../memory/global-memory.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\n\nexport async function handleMemoryCommand(args: string[]): Promise<void> {\n const subcommand = args[0]?.toLowerCase();\n const restArgs = args.slice(1);\n\n switch (subcommand) {\n case 'search':\n await handleSearch(restArgs);\n break;\n case 'stats':\n await handleStats();\n break;\n case 'recent':\n await handleRecent(restArgs);\n break;\n case 'logs':\n await handleLogs();\n break;\n case 'resolve':\n await handleResolve(restArgs);\n break;\n case 'global':\n await handleGlobal(restArgs);\n break;\n default:\n showHelp();\n }\n}\n\nasync function handleSearch(args: string[]): Promise<void> {\n const query = args.join(' ');\n \n if (!query) {\n console.log('Usage: trie memory search <query>');\n console.log('Example: trie memory search \"SQL injection\"');\n return;\n }\n\n const workDir = getWorkingDirectory(undefined, true);\n const results = await searchIssues(query, { workDir, limit: 10 });\n\n if (results.length === 0) {\n console.log(`No issues found matching \"${query}\"`);\n return;\n }\n\n console.log(`Found ${results.length} issue(s) matching \"${query}\":\\n`);\n\n for (const result of results) {\n const i = result.issue;\n const status = i.resolved ? '[RESOLVED]' : '';\n console.log(`[${i.severity.toUpperCase()}] ${status} ${i.issue.slice(0, 80)}`);\n console.log(` File: ${i.file}${i.line ? `:${i.line}` : ''}`);\n console.log(` Agent: ${i.agent} | Score: ${(result.score * 100).toFixed(0)}%`);\n console.log(` Date: ${new Date(i.timestamp).toLocaleDateString()}`);\n console.log('');\n }\n}\n\nasync function handleStats(): Promise<void> {\n const workDir = getWorkingDirectory(undefined, true);\n const stats = await getMemoryStats(workDir);\n const globalStats = await getGlobalMemoryStats();\n\n console.log('Local Issue Memory Stats:');\n console.log(` Total Issues: ${stats.totalIssues}`);\n console.log(` Resolved: ${stats.resolvedCount}`);\n \n if (stats.oldestIssue) {\n console.log(` Date Range: ${stats.oldestIssue.split('T')[0]} to ${stats.newestIssue?.split('T')[0]}`);\n }\n\n console.log('\\n By Severity:');\n for (const [severity, count] of Object.entries(stats.issuesBySeverity)) {\n console.log(` ${severity}: ${count}`);\n }\n\n console.log('\\n By Agent:');\n const sortedAgents = Object.entries(stats.issuesByAgent).sort((a, b) => b[1] - a[1]);\n for (const [agent, count] of sortedAgents.slice(0, 10)) {\n console.log(` ${agent}: ${count}`);\n }\n\n console.log('\\nGlobal Cross-Project Stats:');\n console.log(` Tracked Projects: ${globalStats.trackedProjects}`);\n console.log(` Total Patterns: ${globalStats.totalPatterns}`);\n console.log(` Cross-Project Patterns: ${globalStats.crossProjectPatterns}`);\n console.log(` Fixed Patterns: ${globalStats.fixedPatterns}`);\n}\n\nasync function handleRecent(args: string[]): Promise<void> {\n const limit = parseInt(args[0] || '10', 10);\n const workDir = getWorkingDirectory(undefined, true);\n const issues = await getRecentIssues({ workDir, limit });\n\n if (issues.length === 0) {\n console.log('No recent issues found.');\n return;\n }\n\n console.log(`Recent Issues (last 7 days):\\n`);\n\n for (const i of issues) {\n const status = i.resolved ? '[RESOLVED]' : '';\n console.log(`[${i.severity.toUpperCase()}] ${status} ${i.issue.slice(0, 70)}`);\n console.log(` ${i.file}${i.line ? `:${i.line}` : ''} | ${i.agent}`);\n console.log('');\n }\n}\n\nasync function handleLogs(): Promise<void> {\n const workDir = getWorkingDirectory(undefined, true);\n const logs = await getDailyLogs(workDir);\n\n if (logs.length === 0) {\n console.log('No daily logs found.');\n return;\n }\n\n console.log('Daily Logs (.trie/memory/):\\n');\n for (const log of logs.slice(0, 14)) {\n console.log(` ${log}`);\n }\n\n if (logs.length > 14) {\n console.log(` ... and ${logs.length - 14} more`);\n }\n}\n\nasync function handleResolve(args: string[]): Promise<void> {\n const issueId = args[0];\n \n if (!issueId) {\n console.log('Usage: trie memory resolve <issue-id>');\n return;\n }\n\n const workDir = getWorkingDirectory(undefined, true);\n const result = await markIssueResolved(issueId, workDir);\n\n if (result) {\n console.log(`Issue ${issueId} marked as resolved.`);\n } else {\n console.log(`Issue ${issueId} not found.`);\n }\n}\n\nasync function handleGlobal(args: string[]): Promise<void> {\n const action = args[0]?.toLowerCase();\n\n if (action === 'patterns') {\n const patterns = await findCrossProjectPatterns(2);\n \n if (patterns.length === 0) {\n console.log('No cross-project patterns found yet.');\n console.log('Patterns appear when the same issue is detected in multiple projects.');\n return;\n }\n\n console.log(`Cross-Project Patterns (${patterns.length}):\\n`);\n \n for (const p of patterns.slice(0, 10)) {\n console.log(`[${p.severity.toUpperCase()}] ${p.pattern.slice(0, 60)}`);\n console.log(` Occurrences: ${p.occurrences} across ${p.projects.length} projects`);\n console.log(` Agent: ${p.agent}`);\n if (p.fixApplied) {\n console.log(` Fixed in: ${p.fixApplied.project}`);\n }\n console.log('');\n }\n return;\n }\n\n if (action === 'projects') {\n const projects = await listTrackedProjects();\n \n if (projects.length === 0) {\n console.log('No projects tracked yet.');\n return;\n }\n\n console.log(`Tracked Projects (${projects.length}):\\n`);\n console.log('| Project | Last Scan | Health | Issues |');\n console.log('|---------|-----------|--------|--------|');\n \n for (const p of projects) {\n console.log(`| ${p.name.slice(0, 20)} | ${p.lastScan.split('T')[0]} | ${p.healthScore}% | ${p.totalIssues} |`);\n }\n return;\n }\n\n if (action === 'search') {\n const query = args.slice(1).join(' ');\n if (!query) {\n console.log('Usage: trie memory global search <query>');\n return;\n }\n\n const patterns = await searchGlobalPatterns(query, { limit: 10 });\n \n if (patterns.length === 0) {\n console.log(`No global patterns found matching \"${query}\"`);\n return;\n }\n\n console.log(`Global patterns matching \"${query}\":\\n`);\n for (const p of patterns) {\n console.log(`[${p.severity.toUpperCase()}] ${p.pattern.slice(0, 60)}`);\n console.log(` Projects: ${p.projects.slice(0, 3).join(', ')}`);\n console.log('');\n }\n return;\n }\n\n if (action === 'update') {\n await updateGlobalMemoryMd();\n console.log('Updated ~/.trie/memory/GLOBAL_MEMORY.md');\n return;\n }\n\n console.log(`\nGlobal Memory Commands:\n trie memory global patterns Show cross-project patterns\n trie memory global projects Show tracked projects\n trie memory global search <q> Search global patterns\n trie memory global update Update GLOBAL_MEMORY.md\n`);\n}\n\nfunction showHelp(): void {\n console.log(`\nMemory - Search and manage issue memory\n\nCommands:\n trie memory search <query> Search issues by keyword\n trie memory stats Show memory statistics\n trie memory recent [limit] Show recent issues\n trie memory logs List daily log files\n trie memory resolve <id> Mark issue as resolved\n trie memory global <action> Cross-project memory\n\nExamples:\n trie memory search \"SQL injection\"\n trie memory recent 20\n trie memory global patterns\n`);\n}\n"],"mappings":"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","names":["result","__filename","__dirname","showHelp"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/main.ts","../../src/cli/skills.ts","../../src/hooks/install.ts","../../src/hooks/templates.ts","../../src/cli/init.ts","../../src/cli/memory.ts","../../src/cli/check.ts","../../src/cli/tell.ts","../../src/cli/reconcile.ts","../../src/cli/ok.ts","../../src/cli/bad.ts","../../src/cli/quiet.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Trie Agent CLI\n * \n * Main command-line interface for Trie Agent.\n * Provides help, setup, and routes to specific tools.\n * \n * Usage:\n * trie-agent [command] [options]\n */\n\nimport { resolve, join, dirname } from 'path';\nimport { existsSync, readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { loadProjectInfo, initProjectInfo, projectInfoExists } from '../utils/project-info.js';\nimport { handleSkillsCommand } from './skills.js';\nimport { handleInitCommand } from './init.js';\nimport { handleMemoryCommand } from './memory.js';\nimport { handleCheckpointCommand } from './checkpoint.js';\nimport { handleCheckCommand } from './check.js';\nimport { handleTellCommand } from './tell.js';\nimport { handleReconcileCommand } from './reconcile.js';\nimport { handleOkCommand } from './ok.js';\nimport { handleBadCommand } from './bad.js';\nimport { handleQuietCommand } from './quiet.js';\n\n// ES module __dirname equivalent\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst VERSION = '1.0.0';\n\n/**\n * Show TRIE ASCII art banner\n */\nfunction showBanner(): void {\n console.log(`\n ████████╗██████╗ ██╗███████╗\n ╚══██╔══╝██╔══██╗██║██╔════╝\n ██║ ██████╔╝██║█████╗ \n ██║ ██╔══██╗██║██╔══╝ \n ██║ ██║ ██║██║███████╗\n ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝\n \n Your central registry for agents and skills\n\n by Louis Kishfy\n\n Download the Trie workspace: https://www.trie.dev\n Follow me on X: https://x.com/louiskishfy\n`);\n}\n\n/**\n * Show the main help message\n */\nfunction showHelp(): void {\n showBanner();\n console.log(`Version: ${VERSION}\n\nUSAGE:\n trie-agent <command> [options]\n\nCOMMANDS:\n help Show this help message\n init Initialize bootstrap files (.trie/RULES.md, etc.)\n setup Configure API key and environment\n scan Scan codebase once and exit\n checkpoint Save context without running a scan\n watch Watch for changes and scan continuously\n agents List all available agents\n skills Manage external skills from skills.sh\n project View/manage project info (.trie/PROJECT.md)\n memory Search and manage issue memory\n agent-smith Run Agent Smith (35 vibe code hunters)\n super-reviewer Run interactive PR review\n version Show version information\n\nEXAMPLES:\n # First time setup\n trie-agent setup\n\n # Scan your project once\n trie-agent scan\n\n # Watch mode (scan on file changes)\n trie-agent watch\n\n # Scan specific directory\n trie-agent scan --dir ./src\n\n # Scan with custom user count for cost estimation\n trie-agent scan --users 10000\n\n # Initialize project info file\n trie-agent project init\n\n # View project info\n trie-agent project\n\n # Install a skill from GitHub\n trie-agent skills add vercel-labs/agent-skills react-best-practices\n\n # List installed skills\n trie-agent skills list\n\n # Initialize bootstrap files\n trie-agent init\n\n # Search issue memory\n trie-agent memory search \"SQL injection\"\n\n # Run Agent Smith (vibe code hunter)\n trie-agent agent-smith\n\n # Run interactive PR review\n trie-agent super-reviewer\n\nMCP TOOLS (use via Cursor/Claude Desktop):\n trie_scan Intelligent scan with agent selection\n trie_fix Generate high-confidence fix prompts\n trie_explain Explain code, issues, or changes\n trie_watch Watch mode for autonomous reporting\n \n Individual Agents:\n trie_security Security vulnerabilities\n trie_privacy Privacy & GDPR compliance\n trie_soc2 SOC 2 Type II compliance\n trie_legal Legal compliance\n trie_accessibility WCAG 2.1 accessibility\n trie_architecture Code organization & SOLID\n trie_bugs Bug finding & null safety\n trie_ux UX testing (happy path, edge cases)\n trie_types TypeScript type safety\n trie_devops DevOps & deployment\n trie_clean Clean up AI-generated code\n \n Special Agents:\n trie_agent_smith 35 vibe code hunters, cross-file detection\n trie_super_reviewer Interactive PR review with cross-examination\n\n Custom Skills:\n trie_create_skill Create skill from PDF/TXT/MD document\n trie_list_skills List all registered skills\n\n`);\n}\n\n/**\n * Show setup instructions\n */\nfunction showSetup(): void {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 🔧 Trie Agent Setup ║\n╚══════════════════════════════════════════════════════════════════╝\n\nNo API key required! Trie uses your AI tool's built-in Claude.\n\nSTEP 1: Configure for your AI tool\n─────────────────────────────────────\n\nFor CLAUDE CODE:\n claude mcp add Trie -- npx @triedotdev/mcp\n\n Or add to ~/.claude/settings.json:\n {\n \"mcpServers\": {\n \"Trie\": {\n \"command\": \"node\",\n \"args\": [\"/path/to/@triedotdev/mcp/dist/index.js\"]\n }\n }\n }\n\nFor CURSOR (~/.cursor/mcp.json):\n{\n \"mcpServers\": {\n \"Trie\": {\n \"command\": \"node\",\n \"args\": [\"/path/to/@triedotdev/mcp/dist/index.js\"]\n }\n }\n}\n\nSTEP 2: Restart your AI tool\n─────────────────────────────────────\nRestart Claude Code or Cursor to load the MCP configuration.\n\nSTEP 3: Start scanning!\n─────────────────────────────────────\nAsk your AI assistant: \"Scan this with Trie\" or \"Use trie_scan\"\n\nNeed help? https://github.com/Trie-OS/Trie-Agent/issues\n`);\n}\n\n/**\n * List available agents\n */\nfunction listAgents(): void {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 Available Agents ║\n╚══════════════════════════════════════════════════════════════════╝\n\nBUILT-IN AGENTS:\n─────────────────────────────────────\n security Security vulnerabilities, injection risks, auth issues\n privacy GDPR, HIPAA, PII handling, data encryption\n legal GDPR, CCPA, consent patterns, data retention\n accessibility WCAG 2.1 accessibility, keyboard nav, screen readers\n software-architect Code organization, SOLID principles, scalability\n bug-finding Null safety, edge cases, async issues\n user-testing Simulate users: happy path, security tester, confused user\n typecheck Type errors, missing annotations, null checks\n devops Config issues, logging, env vars, deployment\n trie_clean Clean up AI-generated code patterns\n moneybags Estimates dollar cost of bugs (IBM/NIST cost models)\n production-ready Production gate: health checks, scaling, security headers\n\n Custom Skills:\n ─────────────────────────────────────`);\n\n // Check for custom skills\n const skillsDir = join(getWorkingDirectory(undefined, true), '.trie', 'agents');\n if (existsSync(skillsDir)) {\n try {\n const { readdirSync } = require('fs');\n const files = readdirSync(skillsDir).filter((f: string) => f.endsWith('.json'));\n \n if (files.length > 0) {\n for (const file of files) {\n const config = JSON.parse(readFileSync(join(skillsDir, file), 'utf-8'));\n console.log(` ${config.name.padEnd(18)} ${config.description || 'Custom skill'}`);\n }\n } else {\n console.log(` (No custom skills found)`);\n }\n } catch {\n console.log(` (No custom skills found)`);\n }\n } else {\n console.log(` (No custom skills found)`);\n }\n\n console.log(`\nCREATE CUSTOM SKILLS:\n─────────────────────────────────────\nYou can create skills from PDF, TXT, or MD documents:\n\n Via MCP: Use trie_create_skill tool\n CLI: trie-create --file book.pdf --name my-skill\n\nThe agent will learn patterns from your document and apply them\nto code reviews. Great for style guides, compliance docs, etc.\n`);\n}\n\n/**\n * Show version\n */\nfunction showVersion(): void {\n showBanner();\n console.error(`v${VERSION}`);\n}\n\n/**\n * Handle project command\n */\nasync function handleProject(args: string[]): Promise<void> {\n const subcommand = args[0]?.toLowerCase();\n const workDir = getWorkingDirectory(undefined, true);\n\n if (subcommand === 'init') {\n const result = await initProjectInfo(workDir);\n if (result.created) {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 PROJECT.md Created ║\n╚══════════════════════════════════════════════════════════════════╝\n\nPath: ${result.path}\n\nA template has been created with sections for:\n • Project Overview\n • Technology Stack\n • Architecture\n • Coding Conventions\n • Environment\n • Team\n • Compliance\n • AI Instructions\n\nNext steps:\n 1. Edit the file to add your project details\n 2. The info will be available via trie://project resource\n 3. AI assistants will use this context automatically\n`);\n } else {\n console.log(`PROJECT.md already exists at: ${result.path}`);\n console.log('Use \"trie-agent project\" to view it.');\n }\n return;\n }\n\n if (subcommand === 'edit') {\n const editor = process.env.EDITOR || process.env.VISUAL || 'nano';\n const projectPath = join(workDir, '.trie', 'PROJECT.md');\n \n if (!projectInfoExists(workDir)) {\n console.log('No PROJECT.md found. Creating one first...');\n await initProjectInfo(workDir);\n }\n \n const { spawn } = await import('child_process');\n const child = spawn(editor, [projectPath], { stdio: 'inherit' });\n child.on('close', (code) => {\n process.exit(code || 0);\n });\n return;\n }\n\n // Default: show project info\n if (!projectInfoExists(workDir)) {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 Project Information ║\n╚══════════════════════════════════════════════════════════════════╝\n\nNo PROJECT.md found in this project.\n\nCOMMANDS:\n trie-agent project init Create PROJECT.md from template\n trie-agent project edit Open PROJECT.md in $EDITOR\n trie-agent project View PROJECT.md contents\n\nWHAT IS PROJECT.MD?\nPROJECT.md stores important project context for AI assistants:\n • Project description and purpose\n • Technology stack and frameworks\n • Architecture decisions\n • Coding conventions\n • Environment info (URLs, endpoints)\n • Team ownership\n • Compliance requirements\n • Special instructions for AI\n\nThis info is available via trie://project MCP resource.\n`);\n return;\n }\n\n const content = await loadProjectInfo(workDir);\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ 📋 Project Information ║\n╚══════════════════════════════════════════════════════════════════╝\n\nPath: ${join(workDir, '.trie', 'PROJECT.md')}\n\n${'-'.repeat(68)}\n`);\n console.log(content);\n}\n\n/**\n * Run scan command\n */\nasync function runScan(args: string[]): Promise<void> {\n // Forward to watch daemon with --once flag\n const { spawn } = await import('child_process');\n \n // Determine daemon path - works for both source (tsx) and built (node) execution\n let daemonPath: string;\n if (__filename.endsWith('.ts')) {\n // Running from source with tsx\n daemonPath = resolve(__dirname, 'yolo-daemon.ts');\n } else {\n // Running from built dist\n daemonPath = resolve(__dirname, 'yolo-daemon.js');\n }\n \n const daemonArgs = ['--once', ...args];\n \n // Use tsx for .ts files, node for .js files\n const executor = daemonPath.endsWith('.ts') ? 'npx' : 'node';\n const execArgs = daemonPath.endsWith('.ts') \n ? ['tsx', daemonPath, ...daemonArgs]\n : [daemonPath, ...daemonArgs];\n \n const child = spawn(executor, execArgs, {\n stdio: 'inherit',\n env: process.env\n });\n\n child.on('close', (code) => {\n process.exit(code || 0);\n });\n}\n\n/**\n * Run watch command\n */\nasync function runWatch(args: string[]): Promise<void> {\n const { spawn } = await import('child_process');\n \n // Determine daemon path - works for both source (tsx) and built (node) execution\n let daemonPath: string;\n if (__filename.endsWith('.ts')) {\n daemonPath = resolve(__dirname, 'yolo-daemon.ts');\n } else {\n daemonPath = resolve(__dirname, 'yolo-daemon.js');\n }\n \n // Use tsx for .ts files, node for .js files\n const executor = daemonPath.endsWith('.ts') ? 'npx' : 'node';\n const execArgs = daemonPath.endsWith('.ts') \n ? ['tsx', daemonPath, ...args]\n : [daemonPath, ...args];\n \n const child = spawn(executor, execArgs, {\n stdio: 'inherit',\n env: process.env\n });\n\n child.on('close', (code) => {\n process.exit(code || 0);\n });\n}\n\n/**\n * Main entry point\n */\nfunction main(): void {\n const args = process.argv.slice(2);\n const command = args[0]?.toLowerCase();\n const restArgs = args.slice(1);\n\n // No command or help flag\n if (!command || command === 'help' || command === '--help' || command === '-h') {\n showHelp();\n process.exit(0);\n }\n\n switch (command) {\n case 'setup':\n case 'config':\n case 'configure':\n showSetup();\n break;\n\n case 'init':\n case 'bootstrap':\n handleInitCommand(restArgs);\n break;\n\n case 'memory':\n case 'mem':\n handleMemoryCommand(restArgs);\n break;\n\n case 'checkpoint':\n case 'cp':\n case 'save':\n handleCheckpointCommand(restArgs);\n break;\n\n case 'agents':\n case 'list':\n case 'list-agents':\n listAgents();\n break;\n\n case 'project':\n case 'info':\n case 'project-info':\n handleProject(restArgs);\n break;\n\n case 'skills':\n case 'skill':\n handleSkillsCommand(restArgs);\n break;\n\n case 'version':\n case '--version':\n case '-v':\n showVersion();\n break;\n\n case 'scan':\n runScan(restArgs);\n break;\n\n case 'watch':\n runWatch(restArgs);\n break;\n\n case 'check':\n handleCheckCommand(restArgs);\n break;\n\n case 'tell':\n handleTellCommand(restArgs);\n break;\n\n case 'reconcile':\n handleReconcileCommand(restArgs);\n break;\n\n case 'ok':\n case 'thumbs-up':\n handleOkCommand(restArgs);\n break;\n\n case 'bad':\n case 'thumbs-down':\n handleBadCommand(restArgs);\n break;\n\n case 'quiet':\n case 'snooze':\n handleQuietCommand();\n break;\n\n case 'agent-smith':\n case 'smith':\n case 'trie_agent_smith':\n // Run agent-smith specifically\n runScan(['--agents', 'agent-smith', ...restArgs]);\n break;\n\n case 'super-reviewer':\n case 'reviewer':\n case 'trie_super_reviewer':\n // Run super-reviewer specifically\n runScan(['--agents', 'super-reviewer', ...restArgs]);\n break;\n\n default:\n // Check if it looks like a flag (pass to watch daemon)\n if (command.startsWith('-')) {\n // Treat as watch-daemon args\n const { spawn } = require('child_process');\n const daemonPath = resolve(__dirname, 'yolo-daemon.js');\n \n const child = spawn('node', [daemonPath, ...args], {\n stdio: 'inherit',\n env: process.env\n });\n\n child.on('close', (code: number) => {\n process.exit(code || 0);\n });\n } else {\n console.error(`Unknown command: ${command}`);\n console.error(`Run 'trie-agent help' for usage information.`);\n process.exit(1);\n }\n }\n}\n\nmain();\n","/**\n * Skills CLI Command Handler\n * \n * Manages external skills from skills.sh and other GitHub repositories.\n * Skills are reusable capabilities that agents apply during code review.\n */\n\nimport { installSkill, listInstalledSkills, removeSkill } from '../skills/installer.js';\nimport { loadContextState, recordSkillInstalled } from '../utils/context-state.js';\nimport { SKILL_CATEGORIES, getSkillCategories, getSkillsByCategory } from '../bootstrap/stack-detector.js';\n\nexport async function handleSkillsCommand(args: string[]): Promise<void> {\n const [cmd, ...rest] = args;\n\n switch (cmd) {\n case 'add':\n case 'install': {\n if (!rest[0]) {\n console.log('Usage: trie-agent skills add <owner/repo> [skill-name]');\n console.log('');\n console.log('Examples:');\n console.log(' trie-agent skills add vercel-labs/agent-skills react-best-practices');\n console.log(' trie-agent skills add anthropics/skills claude-code-review');\n console.log(' trie-agent skills add myorg/internal-standards');\n return;\n }\n \n console.log(`Installing skill from ${rest[0]}...`);\n const result = await installSkill(rest[0], rest[1]);\n \n if (result.success) {\n await recordSkillInstalled({ name: result.name, source: rest[0] });\n console.log(`Installed: ${result.name}`);\n console.log(`Path: ${result.path}`);\n console.log('');\n console.log('This skill is now a capability the skill-review agent can apply.');\n console.log('Run \"trie-agent scan\" to apply skills to your codebase.');\n } else {\n console.error(`Failed to install: ${result.error}`);\n process.exit(1);\n }\n break;\n }\n \n case 'list':\n case 'ls': {\n const categoryArg = rest[0]?.toLowerCase();\n \n // If a category is specified, show skills in that category\n if (categoryArg) {\n if (categoryArg === 'categories' || categoryArg === 'all') {\n // Show all available categories\n const categories = getSkillCategories();\n console.log('');\n console.log('Available Skill Categories:');\n console.log('');\n for (const cat of categories) {\n console.log(` ${cat.name.padEnd(15)} ${cat.count} skills`);\n }\n console.log('');\n console.log('View skills in a category:');\n console.log(' trie skills list <category>');\n console.log('');\n console.log('Browse all skills: https://skills.sh');\n return;\n }\n \n const categorySkills = getSkillsByCategory(categoryArg);\n if (categorySkills.length === 0) {\n const categories = getSkillCategories();\n console.log(`Unknown category: ${categoryArg}`);\n console.log('');\n console.log('Available categories:');\n for (const cat of categories) {\n console.log(` ${cat.name}`);\n }\n return;\n }\n \n console.log('');\n console.log(`${categoryArg.charAt(0).toUpperCase() + categoryArg.slice(1)} Skills (${categorySkills.length}):`);\n console.log('');\n for (const skill of categorySkills) {\n console.log(` trie skills add ${skill}`);\n }\n console.log('');\n console.log('Install any skill with: trie skills add <source> <name>');\n console.log('Browse all skills: https://skills.sh');\n return;\n }\n \n // No category - show installed skills\n const skills = await listInstalledSkills();\n const state = await loadContextState();\n \n if (skills.length === 0) {\n console.log('');\n console.log('No skills installed.');\n console.log('');\n console.log('Install a skill:');\n console.log(' trie skills add vercel-labs/agent-skills react-best-practices');\n console.log('');\n console.log('Explore skill categories:');\n const categories = getSkillCategories();\n for (const cat of categories.slice(0, 5)) {\n console.log(` trie skills list ${cat.name.padEnd(15)} # ${cat.count} skills`);\n }\n console.log(' trie skills list categories # see all');\n console.log('');\n console.log('Browse all skills: https://skills.sh');\n return;\n }\n \n console.log('');\n console.log(`Installed Skills (${skills.length}):`);\n console.log('');\n \n for (const skill of skills) {\n const record = state.skills?.[skill.name];\n const usage = record ? `applied ${record.timesApplied}x` : 'not yet applied';\n console.log(` ${skill.name} (${usage})`);\n console.log(` ${skill.description}`);\n console.log(` Source: ${skill.installedFrom}`);\n console.log('');\n }\n \n console.log('These skills are applied by the skill-review agent during scans.');\n console.log('');\n console.log('Explore more: trie skills list categories');\n break;\n }\n \n case 'remove':\n case 'rm':\n case 'uninstall': {\n if (!rest[0]) {\n console.log('Usage: trie-agent skills remove <skill-name>');\n return;\n }\n \n const removed = await removeSkill(rest[0]);\n if (removed) {\n console.log(`Removed: ${rest[0]}`);\n } else {\n console.error(`Skill not found: ${rest[0]}`);\n process.exit(1);\n }\n break;\n }\n \n case 'info': {\n if (!rest[0]) {\n console.log('Usage: trie-agent skills info <skill-name>');\n return;\n }\n \n const skills = await listInstalledSkills();\n const skill = skills.find(s => s.name === rest[0]);\n \n if (!skill) {\n console.error(`Skill not found: ${rest[0]}`);\n process.exit(1);\n return;\n }\n \n const state = await loadContextState();\n const record = state.skills?.[skill.name];\n \n console.log('');\n console.log(`Skill: ${skill.name}`);\n console.log(`Description: ${skill.description}`);\n console.log(`Path: ${skill.path}`);\n console.log(`Source: ${skill.installedFrom}`);\n console.log(`Installed: ${new Date(skill.installedAt).toLocaleString()}`);\n \n if (record) {\n console.log(`Times Applied: ${record.timesApplied}`);\n console.log(`Applied By: ${record.appliedBy.join(', ') || 'none'}`);\n if (record.lastApplied) {\n console.log(`Last Applied: ${new Date(record.lastApplied).toLocaleString()}`);\n }\n } else {\n console.log('Times Applied: 0');\n }\n break;\n }\n \n default: {\n const categories = getSkillCategories();\n console.log(`\nSkills - Reusable capabilities from skills.sh\n\nSkills are NOT agents - they are knowledge/instructions that the\nskill-review agent applies during code review.\n\nCommands:\n trie skills add <source> [name] Install a skill\n trie skills list List installed skills\n trie skills list <category> Browse skills by category\n trie skills list categories Show all categories\n trie skills info <name> Show skill details\n trie skills remove <name> Uninstall a skill\n\nExamples:\n trie skills add vercel-labs/agent-skills react-best-practices\n trie skills add anthropics/skills frontend-design\n trie skills add expo/skills upgrading-expo\n\nCategories (${categories.length} total, ${Object.values(SKILL_CATEGORIES).flat().length}+ skills):\n ${categories.map(c => `${c.name} (${c.count})`).join(', ')}\n\nHow it works:\n 1. You install skills (capabilities)\n 2. The skill-review agent applies them during 'trie scan'\n 3. Usage is tracked in your project context\n\nBrowse all skills: https://skills.sh\n `);\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { postCommitTemplate, preCommitTemplate, prePushTemplate } from './templates.js';\n\ntype HookName = 'pre-commit' | 'post-commit' | 'pre-push';\n\nconst HOOK_BUILDERS: Record<HookName, () => string> = {\n 'pre-commit': preCommitTemplate,\n 'post-commit': postCommitTemplate,\n 'pre-push': prePushTemplate\n};\n\nfunction hookPath(repoPath: string, name: HookName): string {\n return path.join(repoPath, '.git', 'hooks', name);\n}\n\nfunction ensureHookDir(repoPath: string): void {\n const dir = path.join(repoPath, '.git', 'hooks');\n fs.mkdirSync(dir, { recursive: true });\n}\n\nfunction appendHookFile(targetPath: string, content: string): void {\n if (fs.existsSync(targetPath)) {\n const existing = fs.readFileSync(targetPath, 'utf8');\n if (existing.includes('# Trie pre-commit hook') || existing.includes('# Trie post-commit hook')) {\n return;\n }\n fs.appendFileSync(targetPath, `\\n# --- Added by Trie ---\\n${content}`);\n } else {\n fs.writeFileSync(targetPath, content, { mode: 0o755 });\n }\n fs.chmodSync(targetPath, 0o755);\n}\n\nexport function installGitHooks(projectPath: string): string[] {\n const gitDir = path.join(projectPath, '.git');\n if (!fs.existsSync(gitDir)) {\n return [];\n }\n\n ensureHookDir(projectPath);\n\n const installed: string[] = [];\n (Object.keys(HOOK_BUILDERS) as HookName[]).forEach((name) => {\n const content = HOOK_BUILDERS[name]();\n const target = hookPath(projectPath, name);\n appendHookFile(target, content);\n installed.push(name);\n });\n\n return installed;\n}\n","const PATH_FIX = 'export PATH=\"/usr/local/bin:/opt/homebrew/bin:$PATH\"\\n';\n\nfunction hookHeader(): string {\n return '#!/bin/sh\\n' + PATH_FIX + '\\n';\n}\n\nfunction trieCommand(name: string): string {\n return `\nTRIE_BIN=\"$(command -v trie || command -v trie-agent || true)\"\nif [ -n \"$TRIE_BIN\" ]; then\n \"$TRIE_BIN\" ${name} || true\nelse\n echo \"Trie not available; skipping ${name} hook.\"\nfi\n`;\n}\n\nexport function preCommitTemplate(): string {\n return (\n hookHeader() +\n '# Trie pre-commit hook\\n' +\n trieCommand('pre-commit')\n ).trim() + '\\n';\n}\n\nexport function postCommitTemplate(): string {\n return (\n hookHeader() +\n '# Trie post-commit hook\\n' +\n trieCommand('post-commit')\n ).trim() + '\\n';\n}\n\nexport function prePushTemplate(): string {\n return (\n hookHeader() +\n '# Trie pre-push hook\\n' +\n trieCommand('check --quick')\n ).trim() + '\\n';\n}\n","/**\n * CLI Init Command\n * \n * Initialize bootstrap files for a new project.\n */\n\nimport { initializeBootstrapFiles, needsBootstrap, completeBootstrap } from '../bootstrap/index.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { getSkillCategories } from '../bootstrap/stack-detector.js';\nimport { installGitHooks } from '../hooks/install.js';\nimport { formatFriendlyError, MissingAPIKeyError } from '../utils/errors.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nfunction ensureGitignore(workDir: string): void {\n const target = path.join(workDir, '.gitignore');\n const entries = ['.trie/context.db', '.trie/context.json', '.trie/*.db', 'trie-reports/'];\n let content = '';\n if (fs.existsSync(target)) {\n content = fs.readFileSync(target, 'utf8');\n }\n const missing = entries.filter((e) => !content.includes(e));\n if (missing.length > 0) {\n const updated = content.trimEnd() + '\\n' + missing.join('\\n') + '\\n';\n fs.writeFileSync(target, updated);\n }\n}\n\nexport async function handleInitCommand(args: string[]): Promise<void> {\n try {\n const subcommand = args[0]?.toLowerCase();\n const workDir = getWorkingDirectory(undefined, true);\n\n if (subcommand === 'complete') {\n const result = await completeBootstrap(workDir);\n if (result) {\n console.log('Bootstrap completed. BOOTSTRAP.md has been deleted.');\n } else {\n console.log('No BOOTSTRAP.md file found.');\n }\n return;\n }\n\n if (subcommand === 'status') {\n const needs = needsBootstrap(workDir);\n if (needs) {\n console.log('Bootstrap pending: .trie/BOOTSTRAP.md exists');\n console.log('Run \"trie init complete\" after finishing setup.');\n } else {\n console.log('Bootstrap complete: No pending setup.');\n }\n return;\n }\n\n const force = args.includes('--force') || args.includes('-f');\n const skipBootstrap = args.includes('--skip-bootstrap');\n\n console.log(`\n╔════════════════════════════════════════════════╗\n║ ║\n║ ████████╗██████╗ ██╗███████╗ ║\n║ ╚══██╔══╝██╔══██╗██║██╔════╝ ║\n║ ██║ ██████╔╝██║█████╗ ║\n║ ██║ ██╔══██╗██║██╔══╝ ║\n║ ██║ ██║ ██║██║███████╗ ║\n║ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝ ║\n║ ║\n║ Your central registry for agents and skills ║\n║ ║\n╚════════════════════════════════════════════════╝\n\n by Louis Kishfy\n\n Download the Trie workspace: https://www.trie.dev\n Follow me on X: https://x.com/louiskishfy\n\n`);\n\n const result = await initializeBootstrapFiles({\n workDir,\n force,\n skipBootstrap,\n });\n\n if (result.created.length > 0) {\n console.log('Created files:');\n for (const file of result.created) {\n console.log(` + .trie/${file}`);\n }\n }\n\n if (result.skipped.length > 0 && !force) {\n console.log('\\nSkipped (already exist):');\n for (const file of result.skipped) {\n console.log(` - .trie/${file}`);\n }\n }\n\n console.log('\\nDetected Stack:');\n if (result.stack.framework) console.log(` Framework: ${result.stack.framework}`);\n if (result.stack.language) console.log(` Language: ${result.stack.language}`);\n if (result.stack.database) console.log(` Database: ${result.stack.database}`);\n if (result.stack.auth) console.log(` Auth: ${result.stack.auth}`);\n if (result.stack.packageManager) console.log(` Package Manager: ${result.stack.packageManager}`);\n\n if (result.stack.suggestedSkills.length > 0) {\n // Limit to top 5 most relevant skills to avoid overwhelming output\n const topSkills = result.stack.suggestedSkills.slice(0, 5);\n console.log('\\nSuggested Skills (based on your stack):');\n for (const skill of topSkills) {\n console.log(` trie skills add ${skill}`);\n }\n if (result.stack.suggestedSkills.length > 5) {\n console.log(` ... and ${result.stack.suggestedSkills.length - 5} more (run \"trie init\" again to see all)`);\n }\n }\n\n // Show category exploration options\n const categories = getSkillCategories();\n const topCategories = categories.slice(0, 5);\n console.log('\\nExplore skill categories:');\n for (const cat of topCategories) {\n console.log(` trie skills list ${cat.name.padEnd(15)} # ${cat.count} skills`);\n }\n console.log(` trie skills list categories # see all ${categories.length} categories`);\n \n console.log('\\nBrowse all skills: https://skills.sh');\n\n console.log(`\nNext Steps:\n 1. Edit .trie/PROJECT.md with your project description\n 2. Define coding standards in .trie/RULES.md\n 3. Run \"trie scan\" to analyze your codebase\n 4. Run \"trie init complete\" when setup is done\n`);\n\n const hooks = installGitHooks(workDir);\n if (hooks.length > 0) {\n console.log('\\nGit hooks installed:');\n for (const hook of hooks) {\n console.log(` .git/hooks/${hook}`);\n }\n } else {\n console.log('\\nGit hooks not installed (no .git directory found).');\n }\n\n ensureGitignore(workDir);\n if (!process.env.ANTHROPIC_API_KEY) {\n const msg = new MissingAPIKeyError().userMessage;\n console.log(`\\nWarning: ${msg}`);\n }\n } catch (error) {\n const friendly = formatFriendlyError(error);\n console.error(friendly.userMessage);\n }\n}\n","/**\n * CLI Memory Command\n * \n * Search and manage issue memory.\n */\n\nimport {\n searchIssues,\n getMemoryStats,\n getRecentIssues,\n getDailyLogs,\n markIssueResolved,\n} from '../memory/issue-store.js';\nimport {\n findCrossProjectPatterns,\n listTrackedProjects,\n getGlobalMemoryStats,\n updateGlobalMemoryMd,\n searchGlobalPatterns,\n} from '../memory/global-memory.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\n\nexport async function handleMemoryCommand(args: string[]): Promise<void> {\n const subcommand = args[0]?.toLowerCase();\n const restArgs = args.slice(1);\n\n switch (subcommand) {\n case 'search':\n await handleSearch(restArgs);\n break;\n case 'stats':\n await handleStats();\n break;\n case 'recent':\n await handleRecent(restArgs);\n break;\n case 'logs':\n await handleLogs();\n break;\n case 'resolve':\n await handleResolve(restArgs);\n break;\n case 'global':\n await handleGlobal(restArgs);\n break;\n default:\n showHelp();\n }\n}\n\nasync function handleSearch(args: string[]): Promise<void> {\n const query = args.join(' ');\n \n if (!query) {\n console.log('Usage: trie memory search <query>');\n console.log('Example: trie memory search \"SQL injection\"');\n return;\n }\n\n const workDir = getWorkingDirectory(undefined, true);\n const results = await searchIssues(query, { workDir, limit: 10 });\n\n if (results.length === 0) {\n console.log(`No issues found matching \"${query}\"`);\n return;\n }\n\n console.log(`Found ${results.length} issue(s) matching \"${query}\":\\n`);\n\n for (const result of results) {\n const i = result.issue;\n const status = i.resolved ? '[RESOLVED]' : '';\n console.log(`[${i.severity.toUpperCase()}] ${status} ${i.issue.slice(0, 80)}`);\n console.log(` File: ${i.file}${i.line ? `:${i.line}` : ''}`);\n console.log(` Agent: ${i.agent} | Score: ${(result.score * 100).toFixed(0)}%`);\n console.log(` Date: ${new Date(i.timestamp).toLocaleDateString()}`);\n console.log('');\n }\n}\n\nasync function handleStats(): Promise<void> {\n const workDir = getWorkingDirectory(undefined, true);\n const stats = await getMemoryStats(workDir);\n const globalStats = await getGlobalMemoryStats();\n\n console.log('Local Issue Memory Stats:');\n console.log(` Total Issues: ${stats.totalIssues}`);\n console.log(` Resolved: ${stats.resolvedCount}`);\n \n if (stats.oldestIssue) {\n console.log(` Date Range: ${stats.oldestIssue.split('T')[0]} to ${stats.newestIssue?.split('T')[0]}`);\n }\n\n console.log('\\n By Severity:');\n for (const [severity, count] of Object.entries(stats.issuesBySeverity)) {\n console.log(` ${severity}: ${count}`);\n }\n\n console.log('\\n By Agent:');\n const sortedAgents = Object.entries(stats.issuesByAgent).sort((a, b) => b[1] - a[1]);\n for (const [agent, count] of sortedAgents.slice(0, 10)) {\n console.log(` ${agent}: ${count}`);\n }\n\n console.log('\\nGlobal Cross-Project Stats:');\n console.log(` Tracked Projects: ${globalStats.trackedProjects}`);\n console.log(` Total Patterns: ${globalStats.totalPatterns}`);\n console.log(` Cross-Project Patterns: ${globalStats.crossProjectPatterns}`);\n console.log(` Fixed Patterns: ${globalStats.fixedPatterns}`);\n}\n\nasync function handleRecent(args: string[]): Promise<void> {\n const limit = parseInt(args[0] || '10', 10);\n const workDir = getWorkingDirectory(undefined, true);\n const issues = await getRecentIssues({ workDir, limit });\n\n if (issues.length === 0) {\n console.log('No recent issues found.');\n return;\n }\n\n console.log(`Recent Issues (last 7 days):\\n`);\n\n for (const i of issues) {\n const status = i.resolved ? '[RESOLVED]' : '';\n console.log(`[${i.severity.toUpperCase()}] ${status} ${i.issue.slice(0, 70)}`);\n console.log(` ${i.file}${i.line ? `:${i.line}` : ''} | ${i.agent}`);\n console.log('');\n }\n}\n\nasync function handleLogs(): Promise<void> {\n const workDir = getWorkingDirectory(undefined, true);\n const logs = await getDailyLogs(workDir);\n\n if (logs.length === 0) {\n console.log('No daily logs found.');\n return;\n }\n\n console.log('Daily Logs (.trie/memory/):\\n');\n for (const log of logs.slice(0, 14)) {\n console.log(` ${log}`);\n }\n\n if (logs.length > 14) {\n console.log(` ... and ${logs.length - 14} more`);\n }\n}\n\nasync function handleResolve(args: string[]): Promise<void> {\n const issueId = args[0];\n \n if (!issueId) {\n console.log('Usage: trie memory resolve <issue-id>');\n return;\n }\n\n const workDir = getWorkingDirectory(undefined, true);\n const result = await markIssueResolved(issueId, workDir);\n\n if (result) {\n console.log(`Issue ${issueId} marked as resolved.`);\n } else {\n console.log(`Issue ${issueId} not found.`);\n }\n}\n\nasync function handleGlobal(args: string[]): Promise<void> {\n const action = args[0]?.toLowerCase();\n\n if (action === 'patterns') {\n const patterns = await findCrossProjectPatterns(2);\n \n if (patterns.length === 0) {\n console.log('No cross-project patterns found yet.');\n console.log('Patterns appear when the same issue is detected in multiple projects.');\n return;\n }\n\n console.log(`Cross-Project Patterns (${patterns.length}):\\n`);\n \n for (const p of patterns.slice(0, 10)) {\n console.log(`[${p.severity.toUpperCase()}] ${p.pattern.slice(0, 60)}`);\n console.log(` Occurrences: ${p.occurrences} across ${p.projects.length} projects`);\n console.log(` Agent: ${p.agent}`);\n if (p.fixApplied) {\n console.log(` Fixed in: ${p.fixApplied.project}`);\n }\n console.log('');\n }\n return;\n }\n\n if (action === 'projects') {\n const projects = await listTrackedProjects();\n \n if (projects.length === 0) {\n console.log('No projects tracked yet.');\n return;\n }\n\n console.log(`Tracked Projects (${projects.length}):\\n`);\n console.log('| Project | Last Scan | Health | Issues |');\n console.log('|---------|-----------|--------|--------|');\n \n for (const p of projects) {\n console.log(`| ${p.name.slice(0, 20)} | ${p.lastScan.split('T')[0]} | ${p.healthScore}% | ${p.totalIssues} |`);\n }\n return;\n }\n\n if (action === 'search') {\n const query = args.slice(1).join(' ');\n if (!query) {\n console.log('Usage: trie memory global search <query>');\n return;\n }\n\n const patterns = await searchGlobalPatterns(query, { limit: 10 });\n \n if (patterns.length === 0) {\n console.log(`No global patterns found matching \"${query}\"`);\n return;\n }\n\n console.log(`Global patterns matching \"${query}\":\\n`);\n for (const p of patterns) {\n console.log(`[${p.severity.toUpperCase()}] ${p.pattern.slice(0, 60)}`);\n console.log(` Projects: ${p.projects.slice(0, 3).join(', ')}`);\n console.log('');\n }\n return;\n }\n\n if (action === 'update') {\n await updateGlobalMemoryMd();\n console.log('Updated ~/.trie/memory/GLOBAL_MEMORY.md');\n return;\n }\n\n console.log(`\nGlobal Memory Commands:\n trie memory global patterns Show cross-project patterns\n trie memory global projects Show tracked projects\n trie memory global search <q> Search global patterns\n trie memory global update Update GLOBAL_MEMORY.md\n`);\n}\n\nfunction showHelp(): void {\n console.log(`\nMemory - Search and manage issue memory\n\nCommands:\n trie memory search <query> Search issues by keyword\n trie memory stats Show memory statistics\n trie memory recent [limit] Show recent issues\n trie memory logs List daily log files\n trie memory resolve <id> Mark issue as resolved\n trie memory global <action> Cross-project memory\n\nExamples:\n trie memory search \"SQL injection\"\n trie memory recent 20\n trie memory global patterns\n`);\n}\n","import { perceiveCurrentChanges } from '../agent/perceive.js';\nimport { reasonAboutChangesHumanReadable } from '../agent/reason.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { formatFriendlyError } from '../utils/errors.js';\n\ninterface CheckOptions {\n mode: 'quick' | 'full' | 'offline';\n files?: string[];\n}\n\nfunction parseArgs(args: string[]): CheckOptions {\n let mode: CheckOptions['mode'] = 'full';\n const filesFlag = args.find((a) => a.startsWith('--files='));\n const parsedFiles = filesFlag ? filesFlag.replace('--files=', '').split(',').map((f) => f.trim()).filter(Boolean) : [];\n\n if (args.includes('--quick') || args.includes('-q')) mode = 'quick';\n if (args.includes('--offline')) mode = 'offline';\n if (args.includes('--full')) mode = 'full';\n\n const result: CheckOptions = { mode };\n if (parsedFiles.length > 0) result.files = parsedFiles;\n return result;\n}\n\nfunction printResult(result: any) {\n console.log(`\\nRisk: ${result.original.riskLevel.toUpperCase()} (${result.original.shouldBlock ? 'block' : 'allow'})`);\n console.log(`Explanation: ${result.original.explanation}`);\n console.log(`Recommendation: ${result.original.recommendation}`);\n\n if (result.original.files?.length) {\n console.log('\\nHigh-risk files:');\n for (const file of result.original.files.filter((f: any) => ['high', 'critical'].includes(f.level))) {\n console.log(` - ${file.file}: ${file.reasons.join('; ')}`);\n }\n }\n\n console.log('\\nPlain-English summary:');\n console.log(` Summary: ${result.summary}`);\n console.log(` What I found: ${result.whatIFound}`);\n console.log(` How bad: ${result.howBad}`);\n console.log(` What to do: ${result.whatToDo}`);\n}\n\nexport async function handleCheckCommand(args: string[]): Promise<void> {\n try {\n const options = parseArgs(args);\n const projectPath = getWorkingDirectory(undefined, true);\n\n let files = options.files;\n if (!files || files.length === 0) {\n const perception = await perceiveCurrentChanges(projectPath);\n files = perception.diffSummary.files.map((f) => f.filePath);\n if (files.length === 0) {\n console.log('No changes detected. Provide files with --files=path1,path2 or make a change first.');\n return;\n }\n }\n\n const runAgents = options.mode === 'full';\n const reasoning = await reasonAboutChangesHumanReadable(projectPath, files, {\n runAgents,\n scanContext: {\n config: { timeoutMs: options.mode === 'quick' ? 15000 : 60000 }\n }\n });\n\n printResult(reasoning);\n } catch (error) {\n const friendly = formatFriendlyError(error);\n console.error(friendly.userMessage);\n }\n}\n","import path from 'node:path';\n\nimport { ContextGraph } from '../context/graph.js';\nimport type { FileNodeData } from '../context/nodes.js';\nimport { exportToJson } from '../context/sync.js';\nimport { IncidentIndex } from '../context/incident-index.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { formatFriendlyError } from '../utils/errors.js';\nimport type { RiskLevel } from '../types/index.js';\n\nfunction escalateRisk(level: RiskLevel): RiskLevel {\n if (level === 'low') return 'medium';\n if (level === 'medium') return 'high';\n if (level === 'high') return 'critical';\n return 'critical';\n}\n\nfunction extractFilePathsFromDescription(description: string): string[] {\n const matches = description.match(/[\\\\w./_-]+\\\\.(ts|tsx|js|jsx|mjs|cjs)/gi);\n if (!matches) return [];\n const unique = new Set<string>();\n matches.forEach((m) => unique.add(m.replace(/^\\.\\/+/, '')));\n return Array.from(unique);\n}\n\nexport async function handleTellCommand(args: string[]): Promise<void> {\n try {\n const projectPath = getWorkingDirectory(undefined, true);\n const description = args.join(' ').trim();\n if (!description) {\n console.log('Usage: trie tell \"<incident description>\"');\n return;\n }\n\n const graph = new ContextGraph(projectPath);\n const now = new Date().toISOString();\n const change = (await graph.getRecentChanges(1))[0];\n\n const incident = await graph.addNode('incident', {\n description,\n severity: 'major',\n affectedUsers: null,\n duration: null,\n timestamp: now,\n resolved: false,\n resolution: null,\n fixChangeId: change?.id ?? null,\n reportedVia: 'manual'\n });\n\n const linkedFiles = new Set<string>();\n\n if (change) {\n await graph.addEdge(change.id, incident.id, 'leadTo');\n await graph.addEdge(incident.id, change.id, 'causedBy');\n\n for (const filePath of change.data.files) {\n linkedFiles.add(filePath);\n const fileNode = await graph.getNode('file', path.resolve(projectPath, filePath));\n if (fileNode) {\n const data = fileNode.data as FileNodeData;\n await graph.updateNode('file', fileNode.id, {\n incidentCount: (data.incidentCount ?? 0) + 1,\n riskLevel: escalateRisk(data.riskLevel)\n });\n }\n }\n }\n\n // Also extract file paths from the incident description\n const mentionedFiles = extractFilePathsFromDescription(description);\n mentionedFiles.forEach((f) => linkedFiles.add(f));\n\n // Update trie-backed incident index for O(m) lookups\n const incidentIndex = new IncidentIndex(graph, projectPath);\n incidentIndex.addIncidentToTrie(incident, Array.from(linkedFiles));\n\n await exportToJson(graph);\n\n console.log('Incident recorded.');\n if (change) {\n console.log(`Linked to change: ${change.id}`);\n } else {\n console.log('No recent change found; incident recorded without linkage.');\n }\n } catch (error) {\n const friendly = formatFriendlyError(error);\n console.error(friendly.userMessage);\n }\n}\n","import { ContextGraph } from '../context/graph.js';\nimport { importFromJson } from '../context/sync.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport path from 'node:path';\nimport { formatFriendlyError } from '../utils/errors.js';\n\nasync function removeOrphanEdges(graph: ContextGraph): Promise<number> {\n const nodes = await graph.listNodes();\n const nodeIds = new Set(nodes.map((n) => n.id));\n const edges = await graph.listEdges();\n let removed = 0;\n\n for (const edge of edges) {\n if (!nodeIds.has(edge.from_id) || !nodeIds.has(edge.to_id)) {\n await graph.deleteEdge(edge.id);\n removed++;\n }\n }\n\n return removed;\n}\n\nexport async function handleReconcileCommand(args: string[]): Promise<void> {\n try {\n const projectPath = getWorkingDirectory(undefined, true);\n const source = args.find((a) => a.startsWith('--from='))?.replace('--from=', '') ??\n path.join(projectPath, '.trie', 'context.json');\n\n const graph = new ContextGraph(projectPath);\n await importFromJson(graph, '', source);\n\n const removed = await removeOrphanEdges(graph);\n console.log(`Reconciled context from ${source}. Removed ${removed} orphaned edges.`);\n } catch (error) {\n const friendly = formatFriendlyError(error);\n console.error(friendly.userMessage);\n }\n}\n","import { TrieFeedbackTool } from '../tools/feedback.js';\n\nexport async function handleOkCommand(args: string[]): Promise<void> {\n const helpful = true;\n const noteText = args.join(' ').trim();\n const tool = new TrieFeedbackTool();\n const input = noteText ? { helpful, note: noteText } : { helpful };\n const result = await tool.execute(input);\n if (result?.content?.[0]?.text) {\n console.log(result.content[0].text);\n }\n}\n","import { TrieFeedbackTool } from '../tools/feedback.js';\n\nexport async function handleBadCommand(args: string[]): Promise<void> {\n const helpful = false;\n const noteText = args.join(' ').trim();\n const tool = new TrieFeedbackTool();\n const input = noteText ? { helpful, note: noteText } : { helpful };\n const result = await tool.execute(input);\n if (result?.content?.[0]?.text) {\n console.log(result.content[0].text);\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { getWorkingDirectory } from '../utils/workspace.js';\n\nexport async function handleQuietCommand(): Promise<void> {\n const projectPath = getWorkingDirectory(undefined, true);\n const quietPath = path.join(projectPath, '.trie', 'quiet.json');\n\n const until = new Date(Date.now() + 60 * 60 * 1000).toISOString(); // 1 hour\n const payload = { until };\n\n try {\n const dir = path.dirname(quietPath);\n fs.mkdirSync(dir, { recursive: true });\n fs.writeFileSync(quietPath, JSON.stringify(payload, null, 2));\n console.log('🔕 Nudges snoozed for 1 hour.');\n } catch (error) {\n console.error('Failed to set quiet mode:', error);\n }\n}\n"],"mappings":"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","names":["fs","path","result","path","path","path","path","fs","path","path","fs","__filename","__dirname","showHelp"]}
|
package/dist/cli/yolo-daemon.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
TrieScanTool
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-YKUCIKTU.js";
|
|
5
|
+
import "../chunk-C3AS5OXW.js";
|
|
6
|
+
import "../chunk-TOE75CFZ.js";
|
|
7
7
|
import "../chunk-3CS6Z2SL.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-A43476GB.js";
|
|
9
9
|
import {
|
|
10
10
|
getWorkingDirectory
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-ASGSTVVF.js";
|
|
12
12
|
import "../chunk-MR755QGT.js";
|
|
13
13
|
import "../chunk-6NLHFIYA.js";
|
|
14
14
|
import "../chunk-DGUM43GV.js";
|