@triedotdev/mcp 1.0.46 → 1.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/main.js CHANGED
@@ -1,10 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ SKILL_CATEGORIES,
3
4
  completeBootstrap,
5
+ getSkillCategories,
6
+ getSkillsByCategory,
4
7
  handleCheckpointCommand,
5
8
  initializeBootstrapFiles,
6
9
  needsBootstrap
7
- } from "../chunk-BAME4KVK.js";
10
+ } from "../chunk-6T7S77U7.js";
8
11
  import {
9
12
  findCrossProjectPatterns,
10
13
  getDailyLogs,
@@ -69,6 +72,45 @@ async function handleSkillsCommand(args) {
69
72
  }
70
73
  case "list":
71
74
  case "ls": {
75
+ const categoryArg = rest[0]?.toLowerCase();
76
+ if (categoryArg) {
77
+ if (categoryArg === "categories" || categoryArg === "all") {
78
+ const categories = getSkillCategories();
79
+ console.log("");
80
+ console.log("Available Skill Categories:");
81
+ console.log("");
82
+ for (const cat of categories) {
83
+ console.log(` ${cat.name.padEnd(15)} ${cat.count} skills`);
84
+ }
85
+ console.log("");
86
+ console.log("View skills in a category:");
87
+ console.log(" trie skills list <category>");
88
+ console.log("");
89
+ console.log("Browse all skills: https://skills.sh");
90
+ return;
91
+ }
92
+ const categorySkills = getSkillsByCategory(categoryArg);
93
+ if (categorySkills.length === 0) {
94
+ const categories = getSkillCategories();
95
+ console.log(`Unknown category: ${categoryArg}`);
96
+ console.log("");
97
+ console.log("Available categories:");
98
+ for (const cat of categories) {
99
+ console.log(` ${cat.name}`);
100
+ }
101
+ return;
102
+ }
103
+ console.log("");
104
+ console.log(`${categoryArg.charAt(0).toUpperCase() + categoryArg.slice(1)} Skills (${categorySkills.length}):`);
105
+ console.log("");
106
+ for (const skill of categorySkills) {
107
+ console.log(` trie skills add ${skill}`);
108
+ }
109
+ console.log("");
110
+ console.log("Install any skill with: trie skills add <source> <name>");
111
+ console.log("Browse all skills: https://skills.sh");
112
+ return;
113
+ }
72
114
  const skills = await listInstalledSkills();
73
115
  const state = await loadContextState();
74
116
  if (skills.length === 0) {
@@ -76,9 +118,16 @@ async function handleSkillsCommand(args) {
76
118
  console.log("No skills installed.");
77
119
  console.log("");
78
120
  console.log("Install a skill:");
79
- console.log(" trie-agent skills add vercel-labs/agent-skills react-best-practices");
121
+ console.log(" trie skills add vercel-labs/agent-skills react-best-practices");
80
122
  console.log("");
81
- console.log("Browse available skills: https://skills.sh");
123
+ console.log("Explore skill categories:");
124
+ const categories = getSkillCategories();
125
+ for (const cat of categories.slice(0, 5)) {
126
+ console.log(` trie skills list ${cat.name.padEnd(15)} # ${cat.count} skills`);
127
+ }
128
+ console.log(" trie skills list categories # see all");
129
+ console.log("");
130
+ console.log("Browse all skills: https://skills.sh");
82
131
  return;
83
132
  }
84
133
  console.log("");
@@ -93,6 +142,8 @@ async function handleSkillsCommand(args) {
93
142
  console.log("");
94
143
  }
95
144
  console.log("These skills are applied by the skill-review agent during scans.");
145
+ console.log("");
146
+ console.log("Explore more: trie skills list categories");
96
147
  break;
97
148
  }
98
149
  case "remove":
@@ -143,6 +194,7 @@ async function handleSkillsCommand(args) {
143
194
  break;
144
195
  }
145
196
  default: {
197
+ const categories = getSkillCategories();
146
198
  console.log(`
147
199
  Skills - Reusable capabilities from skills.sh
148
200
 
@@ -150,22 +202,27 @@ Skills are NOT agents - they are knowledge/instructions that the
150
202
  skill-review agent applies during code review.
151
203
 
152
204
  Commands:
153
- trie-agent skills add <source> [name] Install a skill
154
- trie-agent skills list List installed skills
155
- trie-agent skills info <name> Show skill details
156
- trie-agent skills remove <name> Uninstall a skill
205
+ trie skills add <source> [name] Install a skill
206
+ trie skills list List installed skills
207
+ trie skills list <category> Browse skills by category
208
+ trie skills list categories Show all categories
209
+ trie skills info <name> Show skill details
210
+ trie skills remove <name> Uninstall a skill
157
211
 
158
212
  Examples:
159
- trie-agent skills add vercel-labs/agent-skills react-best-practices
160
- trie-agent skills add anthropics/skills frontend-design
161
- trie-agent skills add myorg/internal-standards code-style
213
+ trie skills add vercel-labs/agent-skills react-best-practices
214
+ trie skills add anthropics/skills frontend-design
215
+ trie skills add expo/skills upgrading-expo
216
+
217
+ Categories (${categories.length} total, ${Object.values(SKILL_CATEGORIES).flat().length}+ skills):
218
+ ${categories.map((c) => `${c.name} (${c.count})`).join(", ")}
162
219
 
163
220
  How it works:
164
221
  1. You install skills (capabilities)
165
- 2. The skill-review agent applies them during 'trie-agent scan'
222
+ 2. The skill-review agent applies them during 'trie scan'
166
223
  3. Usage is tracked in your project context
167
224
 
168
- Browse available skills: https://skills.sh
225
+ Browse all skills: https://skills.sh
169
226
  `);
170
227
  }
171
228
  }
@@ -197,7 +254,24 @@ async function handleInitCommand(args) {
197
254
  const force = args.includes("--force") || args.includes("-f");
198
255
  const skipBootstrap = args.includes("--skip-bootstrap");
199
256
  console.log(`
200
- Initializing Trie workspace...
257
+ \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
258
+ \u2551 \u2551
259
+ \u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2551
260
+ \u2551 \u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2551
261
+ \u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2557 \u2551
262
+ \u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2551
263
+ \u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2551
264
+ \u2551 \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D \u2551
265
+ \u2551 \u2551
266
+ \u2551 Your central registry for agents and skills \u2551
267
+ \u2551 \u2551
268
+ \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
269
+
270
+ by Louis Kishfy
271
+
272
+ Download the Trie workspace: https://www.trie.dev
273
+ Follow me on X: https://x.com/louiskishfy
274
+
201
275
  `);
202
276
  const result = await initializeBootstrapFiles({
203
277
  workDir,
@@ -223,11 +297,23 @@ Initializing Trie workspace...
223
297
  if (result.stack.auth) console.log(` Auth: ${result.stack.auth}`);
224
298
  if (result.stack.packageManager) console.log(` Package Manager: ${result.stack.packageManager}`);
225
299
  if (result.stack.suggestedSkills.length > 0) {
226
- console.log("\nSuggested Skills:");
227
- for (const skill of result.stack.suggestedSkills) {
300
+ const topSkills = result.stack.suggestedSkills.slice(0, 5);
301
+ console.log("\nSuggested Skills (based on your stack):");
302
+ for (const skill of topSkills) {
228
303
  console.log(` trie skills add ${skill}`);
229
304
  }
305
+ if (result.stack.suggestedSkills.length > 5) {
306
+ console.log(` ... and ${result.stack.suggestedSkills.length - 5} more (run "trie init" again to see all)`);
307
+ }
308
+ }
309
+ const categories = getSkillCategories();
310
+ const topCategories = categories.slice(0, 5);
311
+ console.log("\nExplore skill categories:");
312
+ for (const cat of topCategories) {
313
+ console.log(` trie skills list ${cat.name.padEnd(15)} # ${cat.count} skills`);
230
314
  }
315
+ console.log(` trie skills list categories # see all ${categories.length} categories`);
316
+ console.log("\nBrowse all skills: https://skills.sh");
231
317
  console.log(`
232
318
  Next Steps:
233
319
  1. Edit .trie/PROJECT.md with your project description
@@ -462,7 +548,12 @@ function showBanner() {
462
548
  \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
463
549
  \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
464
550
 
465
- Customizable Parallel Agents
551
+ Your central registry for agents and skills
552
+
553
+ by Louis Kishfy
554
+
555
+ Download the Trie workspace: https://www.trie.dev
556
+ Follow me on X: https://x.com/louiskishfy
466
557
  `);
467
558
  }
468
559
  function showHelp2() {
@@ -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 Customizable Parallel Agents\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 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\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 Custom Skills:\n trie_create_skill Create skill from PDF/TXT/MD document\n trie_list_skills List all registered skills\n\nNOTE: No API key required! Trie uses your AI tool's built-in Claude.\n\nFor more info: https://github.com/Trie-OS/Trie-Agent\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 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';\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 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-agent skills add vercel-labs/agent-skills react-best-practices');\n console.log('');\n console.log('Browse available 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 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 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-agent skills add <source> [name] Install a skill\n trie-agent skills list List installed skills\n trie-agent skills info <name> Show skill details\n trie-agent skills remove <name> Uninstall a skill\n\nExamples:\n trie-agent skills add vercel-labs/agent-skills react-best-practices\n trie-agent skills add anthropics/skills frontend-design\n trie-agent skills add myorg/internal-standards code-style\n\nHow it works:\n 1. You install skills (capabilities)\n 2. The skill-review agent applies them during 'trie-agent scan'\n 3. Usage is tracked in your project context\n\nBrowse available 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';\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(`\nInitializing Trie workspace...\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 console.log('\\nSuggested Skills:');\n for (const skill of result.stack.suggestedSkills) {\n console.log(` trie skills add ${skill}`);\n }\n }\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/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 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\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 Custom Skills:\n trie_create_skill Create skill from PDF/TXT/MD document\n trie_list_skills List all registered skills\n\nNOTE: No API key required! Trie uses your AI tool's built-in Claude.\n\nFor more info: https://github.com/Trie-OS/Trie-Agent\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 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,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TrieScanTool
4
- } from "../chunk-5AS3BWAZ.js";
5
- import "../chunk-R5HWHP5N.js";
4
+ } from "../chunk-JDICQHNT.js";
5
+ import "../chunk-VZYCZXEQ.js";
6
6
  import "../chunk-PZDQIFKO.js";
7
7
  import "../chunk-3CS6Z2SL.js";
8
- import "../chunk-OB45V2QC.js";
8
+ import "../chunk-KQOMSIVR.js";
9
9
  import {
10
10
  getWorkingDirectory
11
11
  } from "../chunk-IMFD4SJC.js";
package/dist/index.js CHANGED
@@ -14,16 +14,16 @@ import {
14
14
  loadTeamInfo,
15
15
  needsBootstrap,
16
16
  saveCheckpoint
17
- } from "./chunk-BAME4KVK.js";
17
+ } from "./chunk-6T7S77U7.js";
18
18
  import {
19
19
  TrieScanTool,
20
20
  loadConfig
21
- } from "./chunk-5AS3BWAZ.js";
21
+ } from "./chunk-JDICQHNT.js";
22
22
  import {
23
23
  CRITICAL_REVIEW_CHECKLIST,
24
24
  SuperReviewerAgent,
25
25
  getAgentRegistry
26
- } from "./chunk-R5HWHP5N.js";
26
+ } from "./chunk-VZYCZXEQ.js";
27
27
  import {
28
28
  appendToSection,
29
29
  findCrossProjectPatterns,
@@ -47,7 +47,7 @@ import {
47
47
  updateProjectSection
48
48
  } from "./chunk-PZDQIFKO.js";
49
49
  import "./chunk-3CS6Z2SL.js";
50
- import "./chunk-OB45V2QC.js";
50
+ import "./chunk-KQOMSIVR.js";
51
51
  import {
52
52
  getWorkingDirectory
53
53
  } from "./chunk-IMFD4SJC.js";
@@ -6504,7 +6504,7 @@ var RequestHandlers = class {
6504
6504
  };
6505
6505
  }
6506
6506
  async handleAgentSmith(smithArgs) {
6507
- const { AgentSmithAgent } = await import("./agent-smith-W7F55E6P.js");
6507
+ const { AgentSmithAgent } = await import("./agent-smith-5QOZXLMV.js");
6508
6508
  if (smithArgs.clear_memory) {
6509
6509
  const smith = new AgentSmithAgent();
6510
6510
  const result = await smith.clearMemory();
@@ -6532,7 +6532,7 @@ var RequestHandlers = class {
6532
6532
  }]
6533
6533
  };
6534
6534
  }
6535
- const agentSmithRunner = await import("./agent-smith-runner-SH76O724.js");
6535
+ const agentSmithRunner = await import("./agent-smith-runner-ZTDCJJQG.js");
6536
6536
  return await agentSmithRunner.runAgentSmith(smithArgs);
6537
6537
  }
6538
6538
  };
@@ -6591,7 +6591,12 @@ var MCPServer = class {
6591
6591
  \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D
6592
6592
  \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
6593
6593
  \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D
6594
- Customizable Parallel Agents
6594
+ Your central registry for agents and skills
6595
+
6596
+ by Louis Kishfy
6597
+
6598
+ Download the Trie workspace: https://www.trie.dev
6599
+ Follow me on X: https://x.com/louiskishfy
6595
6600
 
6596
6601
  ${agentCount} agents ready | ${aiTool}
6597
6602