@triedotdev/mcp 1.0.1 → 1.0.3

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/QUICK_START.md CHANGED
@@ -26,7 +26,7 @@ No API key required! Trie uses your AI tool's built-in Claude to do the analysis
26
26
  Use the `claude` CLI to add the MCP server:
27
27
 
28
28
  ```bash
29
- claude mcp add trie-agent -- node /usr/local/lib/node_modules/@triedotdev/mcp/dist/index.js
29
+ claude mcp add Trie -- npx @triedotdev/mcp
30
30
  ```
31
31
 
32
32
  Or add to `~/.claude/settings.json`:
@@ -34,7 +34,7 @@ Or add to `~/.claude/settings.json`:
34
34
  ```json
35
35
  {
36
36
  "mcpServers": {
37
- "trie-agent": {
37
+ "Trie": {
38
38
  "command": "node",
39
39
  "args": ["/usr/local/lib/node_modules/@triedotdev/mcp/dist/index.js"]
40
40
  }
@@ -50,7 +50,7 @@ Or add to `~/.claude/settings.json`:
50
50
  ```json
51
51
  {
52
52
  "mcpServers": {
53
- "trie-agent": {
53
+ "Trie": {
54
54
  "command": "node",
55
55
  "args": ["/usr/local/lib/node_modules/@triedotdev/mcp/dist/index.js"]
56
56
  }
@@ -70,7 +70,7 @@ Add to your VS Code settings (`.vscode/settings.json` or user settings):
70
70
  ```json
71
71
  {
72
72
  "mcp.servers": {
73
- "trie-agent": {
73
+ "Trie": {
74
74
  "command": "node",
75
75
  "args": ["/usr/local/lib/node_modules/@triedotdev/mcp/dist/index.js"]
76
76
  }
@@ -187,7 +187,7 @@ Create `.trie/config.json` in your project root to customize behavior:
187
187
  ```bash
188
188
  npm list -g @triedotdev/mcp
189
189
  # Or
190
- which trie-agent
190
+ npx @triedotdev/mcp --help
191
191
  ```
192
192
 
193
193
  Update your MCP config with the correct path.
package/README.md CHANGED
@@ -26,7 +26,7 @@ No API key required! Trie uses your AI tool's built-in Claude to do the analysis
26
26
  Use the `claude` CLI to add the MCP server:
27
27
 
28
28
  ```bash
29
- claude mcp add trie-agent -- npx @triedotdev/mcp
29
+ claude mcp add Trie -- npx @triedotdev/mcp
30
30
  ```
31
31
 
32
32
  Or add to `~/.claude/settings.json`:
@@ -34,7 +34,7 @@ Or add to `~/.claude/settings.json`:
34
34
  ```json
35
35
  {
36
36
  "mcpServers": {
37
- "trie-agent": {
37
+ "Trie": {
38
38
  "command": "npx",
39
39
  "args": ["@triedotdev/mcp"]
40
40
  }
@@ -50,7 +50,7 @@ Or add to `~/.claude/settings.json`:
50
50
  ```json
51
51
  {
52
52
  "mcpServers": {
53
- "trie-agent": {
53
+ "Trie": {
54
54
  "command": "npx",
55
55
  "args": ["@triedotdev/mcp"]
56
56
  }
@@ -65,7 +65,7 @@ Add to your VS Code settings (`.vscode/settings.json` or user settings):
65
65
  ```json
66
66
  {
67
67
  "mcp.servers": {
68
- "trie-agent": {
68
+ "Trie": {
69
69
  "command": "npx",
70
70
  "args": ["@triedotdev/mcp"]
71
71
  }
package/dist/cli/main.js CHANGED
@@ -87,12 +87,12 @@ STEP 1: Configure for your AI tool
87
87
  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
88
88
 
89
89
  For CLAUDE CODE:
90
- claude mcp add trie-agent -- node /path/to/@triedotdev/mcp/dist/index.js
90
+ claude mcp add Trie -- npx @triedotdev/mcp
91
91
 
92
92
  Or add to ~/.claude/settings.json:
93
93
  {
94
94
  "mcpServers": {
95
- "trie-agent": {
95
+ "Trie": {
96
96
  "command": "node",
97
97
  "args": ["/path/to/@triedotdev/mcp/dist/index.js"]
98
98
  }
@@ -102,7 +102,7 @@ For CLAUDE CODE:
102
102
  For CURSOR (~/.cursor/mcp.json):
103
103
  {
104
104
  "mcpServers": {
105
- "trie-agent": {
105
+ "Trie": {
106
106
  "command": "node",
107
107
  "args": ["/path/to/@triedotdev/mcp/dist/index.js"]
108
108
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/main.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';\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 the main help message\n */\nfunction showHelp(): void {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ ║\n║ 🔺 Trie Agent - Intelligent Code Review for AI-Generated Code ║\n║ ║\n╚══════════════════════════════════════════════════════════════════╝\n\nVersion: ${VERSION}\n\nUSAGE:\n trie-agent <command> [options]\n\nCOMMANDS:\n help Show this help message\n setup Configure API key and environment\n scan Scan codebase once and exit\n watch Watch for changes and scan continuously\n yolo 🔥 YOLO mode: auto-fix issues as they occur\n agents List all available agents\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 # YOLO mode (auto-fix issues)\n trie-agent yolo\n\n # Scan specific directory\n trie-agent scan --dir ./src\n\nMCP TOOLS (use via Cursor/Claude Desktop):\n trie_scan Intelligent scan with agent selection\n trie_fix Apply high-confidence fixes\n trie_explain Explain code, issues, or changes\n trie_watch Watch mode with optional YOLO\n \n Individual Agents:\n trie_security Security vulnerabilities\n trie_privacy Privacy & GDPR 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 Agents:\n trie_create_agent Create agent from PDF/TXT/MD document\n trie_list_agents List all registered agents\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-agent -- node /path/to/@triedotdev/mcp/dist/index.js\n\n Or add to ~/.claude/settings.json:\n {\n \"mcpServers\": {\n \"trie-agent\": {\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-agent\": {\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 design-engineer WCAG 2.1 accessibility, UX best practices\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\nCUSTOM AGENTS:\n─────────────────────────────────────`);\n\n // Check for custom agents\n const agentsDir = join(process.cwd(), '.trie', 'agents');\n if (existsSync(agentsDir)) {\n try {\n const { readdirSync } = require('fs');\n const files = readdirSync(agentsDir).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(agentsDir, file), 'utf-8'));\n console.log(` ${config.name.padEnd(18)} ${config.description || 'Custom agent'}`);\n }\n } else {\n console.log(` (No custom agents found)`);\n }\n } catch {\n console.log(` (No custom agents found)`);\n }\n } else {\n console.log(` (No custom agents found)`);\n }\n\n console.log(`\nCREATE CUSTOM AGENTS:\n─────────────────────────────────────\nYou can create agents from PDF, TXT, or MD documents:\n\n Via MCP: Use trie_create_agent tool\n CLI: trie-create --file book.pdf --name my-agent\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 console.log(`trie-agent v${VERSION}`);\n}\n\n/**\n * Run scan command\n */\nasync function runScan(args: string[]): Promise<void> {\n // Forward to yolo-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 * Run YOLO mode\n */\nasync function runYolo(args: string[]): Promise<void> {\n const { spawn } = await import('child_process');\n const daemonPath = resolve(__dirname, 'yolo-daemon.js');\n \n const daemonArgs = ['--yolo', ...args];\n \n const child = spawn('node', [daemonPath, ...daemonArgs], {\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 case 'init':\n showSetup();\n break;\n\n case 'agents':\n case 'list':\n case 'list-agents':\n listAgents();\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 'yolo':\n runYolo(restArgs);\n break;\n\n default:\n // Check if it looks like a flag (pass to yolo daemon)\n if (command.startsWith('-')) {\n // Treat as yolo-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"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/cli/main.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';\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 the main help message\n */\nfunction showHelp(): void {\n console.log(`\n╔══════════════════════════════════════════════════════════════════╗\n║ ║\n║ 🔺 Trie Agent - Intelligent Code Review for AI-Generated Code ║\n║ ║\n╚══════════════════════════════════════════════════════════════════╝\n\nVersion: ${VERSION}\n\nUSAGE:\n trie-agent <command> [options]\n\nCOMMANDS:\n help Show this help message\n setup Configure API key and environment\n scan Scan codebase once and exit\n watch Watch for changes and scan continuously\n yolo 🔥 YOLO mode: auto-fix issues as they occur\n agents List all available agents\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 # YOLO mode (auto-fix issues)\n trie-agent yolo\n\n # Scan specific directory\n trie-agent scan --dir ./src\n\nMCP TOOLS (use via Cursor/Claude Desktop):\n trie_scan Intelligent scan with agent selection\n trie_fix Apply high-confidence fixes\n trie_explain Explain code, issues, or changes\n trie_watch Watch mode with optional YOLO\n \n Individual Agents:\n trie_security Security vulnerabilities\n trie_privacy Privacy & GDPR 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 Agents:\n trie_create_agent Create agent from PDF/TXT/MD document\n trie_list_agents List all registered agents\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 design-engineer WCAG 2.1 accessibility, UX best practices\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\nCUSTOM AGENTS:\n─────────────────────────────────────`);\n\n // Check for custom agents\n const agentsDir = join(process.cwd(), '.trie', 'agents');\n if (existsSync(agentsDir)) {\n try {\n const { readdirSync } = require('fs');\n const files = readdirSync(agentsDir).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(agentsDir, file), 'utf-8'));\n console.log(` ${config.name.padEnd(18)} ${config.description || 'Custom agent'}`);\n }\n } else {\n console.log(` (No custom agents found)`);\n }\n } catch {\n console.log(` (No custom agents found)`);\n }\n } else {\n console.log(` (No custom agents found)`);\n }\n\n console.log(`\nCREATE CUSTOM AGENTS:\n─────────────────────────────────────\nYou can create agents from PDF, TXT, or MD documents:\n\n Via MCP: Use trie_create_agent tool\n CLI: trie-create --file book.pdf --name my-agent\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 console.log(`trie-agent v${VERSION}`);\n}\n\n/**\n * Run scan command\n */\nasync function runScan(args: string[]): Promise<void> {\n // Forward to yolo-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 * Run YOLO mode\n */\nasync function runYolo(args: string[]): Promise<void> {\n const { spawn } = await import('child_process');\n const daemonPath = resolve(__dirname, 'yolo-daemon.js');\n \n const daemonArgs = ['--yolo', ...args];\n \n const child = spawn('node', [daemonPath, ...daemonArgs], {\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 case 'init':\n showSetup();\n break;\n\n case 'agents':\n case 'list':\n case 'list-agents':\n listAgents();\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 'yolo':\n runYolo(restArgs);\n break;\n\n default:\n // Check if it looks like a flag (pass to yolo daemon)\n if (command.startsWith('-')) {\n // Treat as yolo-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"],"mappings":"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","names":[]}
package/dist/index.js CHANGED
@@ -3873,10 +3873,8 @@ async function main() {
3873
3873
  await server.connect(transport);
3874
3874
  console.error("Trie Agent MCP Server running...");
3875
3875
  }
3876
- if (import.meta.url === `file://${process.argv[1]}`) {
3877
- main().catch((error) => {
3878
- console.error("Fatal error:", error);
3879
- process.exit(1);
3880
- });
3881
- }
3876
+ main().catch((error) => {
3877
+ console.error("Fatal error:", error);
3878
+ process.exit(1);
3879
+ });
3882
3880
  //# sourceMappingURL=index.js.map