@triedotdev/mcp 1.0.166 → 1.0.167

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.
Files changed (79) hide show
  1. package/README.md +337 -801
  2. package/dist/chunk-2HF65EHQ.js +311 -0
  3. package/dist/chunk-2HF65EHQ.js.map +1 -0
  4. package/dist/{chunk-JNUOW2JS.js → chunk-4MXH2ZPT.js} +12 -12
  5. package/dist/chunk-4MXH2ZPT.js.map +1 -0
  6. package/dist/{chunk-LR5M4RTN.js → chunk-575YT2SD.js} +1 -1
  7. package/dist/chunk-575YT2SD.js.map +1 -0
  8. package/dist/{chunk-ZKKKLRZZ.js → chunk-5BRRRTN6.js} +4 -4
  9. package/dist/{chunk-TQOO6A4G.js → chunk-7WITSO22.js} +3 -3
  10. package/dist/{chunk-ACU2RJUJ.js → chunk-F6WFNUAY.js} +2 -2
  11. package/dist/{chunk-VR4VWXXU.js → chunk-G2TGF6TR.js} +9 -2
  12. package/dist/chunk-G2TGF6TR.js.map +1 -0
  13. package/dist/{chunk-ZBXW244P.js → chunk-HVCDY3AK.js} +3 -3
  14. package/dist/chunk-HVCDY3AK.js.map +1 -0
  15. package/dist/{chunk-HOGKPDZA.js → chunk-LQIMKE3P.js} +678 -151
  16. package/dist/chunk-LQIMKE3P.js.map +1 -0
  17. package/dist/{chunk-2Z3TQNNK.js → chunk-MRHKX5M5.js} +3 -3
  18. package/dist/{chunk-OLNZJ3XV.js → chunk-Q63FFI6D.js} +2 -2
  19. package/dist/{chunk-S36IO3EE.js → chunk-XE6KQRKZ.js} +9 -8
  20. package/dist/chunk-XE6KQRKZ.js.map +1 -0
  21. package/dist/{chunk-GDWA3CH3.js → chunk-XPZZFPBZ.js} +30 -6
  22. package/dist/chunk-XPZZFPBZ.js.map +1 -0
  23. package/dist/{chunk-JEZ7XJQN.js → chunk-XTFWT2XM.js} +2 -2
  24. package/dist/{chunk-UXRW2YSP.js → chunk-YDHUCDHM.js} +18 -112
  25. package/dist/chunk-YDHUCDHM.js.map +1 -0
  26. package/dist/{chunk-LG5CBK6A.js → chunk-YZ6Y2H3P.js} +21 -196
  27. package/dist/chunk-YZ6Y2H3P.js.map +1 -0
  28. package/dist/{chunk-MVVPJ73K.js → chunk-ZJF5FTBX.js} +126 -358
  29. package/dist/chunk-ZJF5FTBX.js.map +1 -0
  30. package/dist/cli/create-agent.js +1 -1
  31. package/dist/cli/create-agent.js.map +1 -1
  32. package/dist/cli/main.js +194 -849
  33. package/dist/cli/main.js.map +1 -1
  34. package/dist/cli/yolo-daemon.js +15 -14
  35. package/dist/cli/yolo-daemon.js.map +1 -1
  36. package/dist/{fast-analyzer-NJQO3TFD.js → fast-analyzer-XXYMOXRK.js} +3 -3
  37. package/dist/git-EO5SRFMN.js +28 -0
  38. package/dist/{github-ingester-TFBDUDIY.js → github-ingester-ZOKK6GRS.js} +3 -3
  39. package/dist/{goal-manager-DVX24UPZ.js → goal-manager-YOB7VWK7.js} +5 -4
  40. package/dist/{goal-validator-6Y5CDEMJ.js → goal-validator-ULKIBDPX.js} +5 -4
  41. package/dist/{hypothesis-UKPGOYY2.js → hypothesis-7BFFT5JY.js} +5 -4
  42. package/dist/index.js +19 -18
  43. package/dist/index.js.map +1 -1
  44. package/dist/{issue-store-UZAPI5DU.js → issue-store-ZIRP23EP.js} +4 -3
  45. package/dist/{ledger-CNFCJKHX.js → ledger-TWZTGDFA.js} +3 -2
  46. package/dist/{linear-ingester-PLES2BRS.js → linear-ingester-XXPAZZRW.js} +3 -3
  47. package/dist/{output-manager-JNMEAXFO.js → output-manager-RVJ37XKA.js} +2 -2
  48. package/dist/server/mcp-server.js +19 -18
  49. package/dist/{tiered-storage-OP74NPJY.js → tiered-storage-Z3YCR465.js} +2 -2
  50. package/dist/{trie-agent-6SWUHCVO.js → trie-agent-3YDPEGHJ.js} +9 -8
  51. package/dist/trie-agent-3YDPEGHJ.js.map +1 -0
  52. package/package.json +3 -2
  53. package/dist/chunk-GDWA3CH3.js.map +0 -1
  54. package/dist/chunk-HOGKPDZA.js.map +0 -1
  55. package/dist/chunk-JNUOW2JS.js.map +0 -1
  56. package/dist/chunk-LG5CBK6A.js.map +0 -1
  57. package/dist/chunk-LR5M4RTN.js.map +0 -1
  58. package/dist/chunk-MVVPJ73K.js.map +0 -1
  59. package/dist/chunk-S36IO3EE.js.map +0 -1
  60. package/dist/chunk-UXRW2YSP.js.map +0 -1
  61. package/dist/chunk-VR4VWXXU.js.map +0 -1
  62. package/dist/chunk-ZBXW244P.js.map +0 -1
  63. /package/dist/{chunk-ZKKKLRZZ.js.map → chunk-5BRRRTN6.js.map} +0 -0
  64. /package/dist/{chunk-TQOO6A4G.js.map → chunk-7WITSO22.js.map} +0 -0
  65. /package/dist/{chunk-ACU2RJUJ.js.map → chunk-F6WFNUAY.js.map} +0 -0
  66. /package/dist/{chunk-2Z3TQNNK.js.map → chunk-MRHKX5M5.js.map} +0 -0
  67. /package/dist/{chunk-OLNZJ3XV.js.map → chunk-Q63FFI6D.js.map} +0 -0
  68. /package/dist/{chunk-JEZ7XJQN.js.map → chunk-XTFWT2XM.js.map} +0 -0
  69. /package/dist/{fast-analyzer-NJQO3TFD.js.map → fast-analyzer-XXYMOXRK.js.map} +0 -0
  70. /package/dist/{github-ingester-TFBDUDIY.js.map → git-EO5SRFMN.js.map} +0 -0
  71. /package/dist/{goal-manager-DVX24UPZ.js.map → github-ingester-ZOKK6GRS.js.map} +0 -0
  72. /package/dist/{goal-validator-6Y5CDEMJ.js.map → goal-manager-YOB7VWK7.js.map} +0 -0
  73. /package/dist/{hypothesis-UKPGOYY2.js.map → goal-validator-ULKIBDPX.js.map} +0 -0
  74. /package/dist/{issue-store-UZAPI5DU.js.map → hypothesis-7BFFT5JY.js.map} +0 -0
  75. /package/dist/{ledger-CNFCJKHX.js.map → issue-store-ZIRP23EP.js.map} +0 -0
  76. /package/dist/{linear-ingester-PLES2BRS.js.map → ledger-TWZTGDFA.js.map} +0 -0
  77. /package/dist/{output-manager-JNMEAXFO.js.map → linear-ingester-XXPAZZRW.js.map} +0 -0
  78. /package/dist/{tiered-storage-OP74NPJY.js.map → output-manager-RVJ37XKA.js.map} +0 -0
  79. /package/dist/{trie-agent-6SWUHCVO.js.map → tiered-storage-Z3YCR465.js.map} +0 -0
@@ -3,36 +3,36 @@ import {
3
3
  InteractiveDashboard,
4
4
  StreamingManager,
5
5
  TrieWatchTool
6
- } from "../chunk-HOGKPDZA.js";
6
+ } from "../chunk-LQIMKE3P.js";
7
+ import "../chunk-Q5EKA5YA.js";
7
8
  import "../chunk-JVMBCWKS.js";
8
- import "../chunk-JNUOW2JS.js";
9
+ import "../chunk-4MXH2ZPT.js";
10
+ import "../chunk-XTFWT2XM.js";
9
11
  import "../chunk-WCN7S3EI.js";
10
- import "../chunk-Q5EKA5YA.js";
11
- import "../chunk-VR4VWXXU.js";
12
- import "../chunk-2Z3TQNNK.js";
13
- import "../chunk-JEZ7XJQN.js";
12
+ import "../chunk-G2TGF6TR.js";
13
+ import "../chunk-MRHKX5M5.js";
14
14
  import "../chunk-T63OHG4Q.js";
15
15
  import {
16
16
  isTrieInitialized
17
- } from "../chunk-LG5CBK6A.js";
18
- import "../chunk-ZKKKLRZZ.js";
17
+ } from "../chunk-YZ6Y2H3P.js";
18
+ import "../chunk-5BRRRTN6.js";
19
19
  import "../chunk-OBQ74FOU.js";
20
- import "../chunk-GDWA3CH3.js";
20
+ import "../chunk-XPZZFPBZ.js";
21
21
  import "../chunk-TN5WEKWI.js";
22
22
  import "../chunk-ZV2K6M7T.js";
23
- import "../chunk-TQOO6A4G.js";
23
+ import "../chunk-7WITSO22.js";
24
24
  import "../chunk-SY6KQG44.js";
25
25
  import "../chunk-OMR4YCBS.js";
26
26
  import "../chunk-VUL52BQL.js";
27
27
  import "../chunk-6NLHFIYA.js";
28
- import "../chunk-LR5M4RTN.js";
28
+ import "../chunk-575YT2SD.js";
29
29
  import "../chunk-FQ45QP5A.js";
30
- import "../chunk-S36IO3EE.js";
30
+ import "../chunk-XE6KQRKZ.js";
31
+ import "../chunk-ZJF5FTBX.js";
31
32
  import "../chunk-GTKYBOXL.js";
32
33
  import "../chunk-EFWVF6TI.js";
33
- import "../chunk-ME2OERF5.js";
34
- import "../chunk-MVVPJ73K.js";
35
34
  import "../chunk-43X6JBEM.js";
35
+ import "../chunk-ME2OERF5.js";
36
36
  import {
37
37
  getWorkingDirectory
38
38
  } from "../chunk-VVITXIHN.js";
@@ -40,6 +40,7 @@ import {
40
40
  isInteractiveMode,
41
41
  setInteractiveMode
42
42
  } from "../chunk-KDHN2ZQE.js";
43
+ import "../chunk-2HF65EHQ.js";
43
44
  import "../chunk-DGUM43GV.js";
44
45
 
45
46
  // src/cli/yolo-daemon.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/yolo-daemon.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Trie Watch - File Watcher\n * \n * Watches a directory for changes and checks for goal violations.\n * \n * Usage:\n * trie watch [options] # Watch for changes\n * \n * See `trie watch --help` for all options.\n */\n\nimport { watch, existsSync, statSync } from 'fs';\nimport { readdir } from 'fs/promises';\nimport { join, extname, basename, resolve } from 'path';\nimport { StreamingManager } from '../utils/streaming.js';\nimport { InteractiveDashboard } from './interactive-dashboard.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { isInteractiveMode, setInteractiveMode } from '../utils/progress.js';\nimport { isTrieInitialized } from '../utils/trie-init.js';\nimport { TrieWatchTool } from '../tools/watch.js';\n\n// File extensions to watch\nconst WATCH_EXTENSIONS = new Set([\n '.ts', '.tsx', '.js', '.jsx', '.mjs',\n '.vue', '.svelte', '.astro',\n '.py', '.go', '.rs'\n]);\n\n// Directories to skip\nconst SKIP_DIRS = new Set([\n 'node_modules', '.git', 'dist', 'build', '.next', '.nuxt',\n 'coverage', '.turbo', '.cache', '__pycache__', '.venv'\n]);\n\ninterface DaemonConfig {\n directory: string;\n debounceMs: number;\n jsonOutput: boolean;\n format?: 'text' | 'json';\n output?: string;\n parallel?: boolean;\n cache?: boolean;\n maxConcurrency?: number;\n streaming?: boolean;\n interactive?: boolean;\n workers?: boolean;\n timeoutMs?: number;\n files?: string[];\n /** User count for cost estimation (default: 250) */\n userCount?: number;\n /** Run once and exit (for pre-commit hooks) */\n once?: boolean;\n /** Only scan staged files (for pre-commit hooks) */\n stagedOnly?: boolean;\n /** Exit code to use on failure: 'never', 'critical', 'serious' */\n failOn?: 'never' | 'critical' | 'serious';\n}\n\ninterface DaemonStats {\n filesScanned: number;\n issuesFound: number;\n errors: number;\n startTime: number;\n}\n\nclass WatchDaemon {\n private config: DaemonConfig;\n private stats: DaemonStats;\n private watchers: Map<string, ReturnType<typeof watch>> = new Map();\n private pendingFiles: Set<string> = new Set();\n private debounceTimer: NodeJS.Timeout | null = null;\n private isProcessing = false;\n private streamingManager: StreamingManager | undefined = undefined;\n private dashboard: InteractiveDashboard | undefined = undefined;\n private trieWatchTool: TrieWatchTool;\n\n constructor(config: DaemonConfig) {\n this.config = config;\n this.stats = {\n filesScanned: 0,\n issuesFound: 0,\n errors: 0,\n startTime: Date.now()\n };\n this.trieWatchTool = new TrieWatchTool();\n }\n\n /**\n * Start the daemon\n */\n async start(): Promise<void> {\n // Enable global interactive mode only when:\n // 1. Both stdout AND stdin are TTY\n // 2. stdin supports setRawMode (required by Ink)\n // (git hooks/CI often have non-TTY stdin, and some terminals don't support raw mode)\n const hasInteractiveTTY =\n process.stdout.isTTY === true && \n process.stdin.isTTY === true &&\n typeof process.stdin.setRawMode === 'function';\n if (this.config.interactive !== false && hasInteractiveTTY && !this.config.once) {\n setInteractiveMode(true);\n }\n if (!isTrieInitialized(this.config.directory)) {\n if (!isInteractiveMode()) {\n console.error('Trie is not initialized for this project.');\n console.error('Run `trie init` first.');\n }\n process.exit(1);\n }\n\n // If in once mode (pre-commit hook), just exit - the hook itself queries the ledger\n if (this.config.once) {\n console.log('Pre-commit mode detected - hook should query ledger directly');\n process.exit(0);\n }\n\n this.log('info', 'Starting Trie Watch', {\n directory: this.config.directory,\n debounceMs: this.config.debounceMs\n });\n if (!isInteractiveMode()) {\n console.error('\\nTrie is watching for goal violations.\\n');\n }\n\n // Validate directory\n if (!existsSync(this.config.directory)) {\n this.log('error', 'Directory not found', { directory: this.config.directory });\n process.exit(1);\n }\n\n // Start interactive dashboard if enabled\n if (isInteractiveMode()) {\n this.streamingManager = new StreamingManager();\n this.dashboard = new InteractiveDashboard();\n this.streamingManager.subscribe(update => this.dashboard?.handleStreamUpdate(update));\n await this.dashboard.start();\n this.streamingManager.reportWatchStatus({\n watching: true,\n directories: 0,\n debounceMs: this.config.debounceMs\n });\n }\n\n // Initialize the TrieWatchTool for goal checking\n await this.trieWatchTool.execute({\n action: 'start',\n directory: this.config.directory,\n debounceMs: this.config.debounceMs\n });\n\n // Start watching\n await this.watchDirectory(this.config.directory);\n this.streamingManager?.reportWatchStatus({\n watching: true,\n directories: this.watchers.size,\n debounceMs: this.config.debounceMs\n });\n this.log('info', 'Watching for changes...', { \n directories: this.watchers.size \n });\n\n // Handle graceful shutdown\n process.on('SIGINT', () => this.shutdown('SIGINT'));\n process.on('SIGTERM', () => this.shutdown('SIGTERM'));\n }\n\n /**\n * Watch a directory recursively\n */\n private async watchDirectory(dir: string): Promise<void> {\n if (!existsSync(dir)) return;\n\n try {\n const stat = statSync(dir);\n if (!stat.isDirectory()) return;\n\n const dirName = basename(dir);\n if (SKIP_DIRS.has(dirName) || dirName.startsWith('.')) return;\n\n // Watch this directory\n const watcher = watch(dir, { persistent: true }, (_eventType, filename) => {\n if (!filename) return;\n\n const fullPath = join(dir, filename);\n const ext = extname(filename).toLowerCase();\n\n if (!WATCH_EXTENSIONS.has(ext)) return;\n if (!existsSync(fullPath)) return;\n\n this.pendingFiles.add(fullPath);\n this.streamingManager?.reportWatchChange(fullPath);\n this.scheduleProcessing();\n });\n\n this.watchers.set(dir, watcher);\n\n // Recursively watch subdirectories\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory()) {\n await this.watchDirectory(join(dir, entry.name));\n }\n }\n } catch (error) {\n // Skip inaccessible directories\n }\n }\n\n /**\n * Schedule processing of pending files (debounced)\n */\n private scheduleProcessing(): void {\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n this.debounceTimer = setTimeout(() => {\n this.processPendingFiles();\n }, this.config.debounceMs);\n }\n\n /**\n * Process all pending files\n */\n private async processPendingFiles(): Promise<void> {\n if (this.isProcessing || this.pendingFiles.size === 0) return;\n\n this.isProcessing = true;\n const files = Array.from(this.pendingFiles);\n this.pendingFiles.clear();\n\n this.log('info', 'Processing changed files', { \n count: files.length,\n files: files.map(f => basename(f))\n });\n\n try {\n // Trigger goal violation checking via TrieWatchTool\n // The tool handles AI-powered goal checking, priority scoring, caching, etc.\n const result = await this.trieWatchTool.execute({\n action: 'status'\n });\n\n // Extract issues from the result\n const statusMatch = result.content?.[0]?.text?.match(/Issues Found: (\\d+)/);\n if (statusMatch && statusMatch[1]) {\n const issuesFound = parseInt(statusMatch[1], 10);\n this.stats.issuesFound += issuesFound;\n \n if (issuesFound > 0) {\n this.log('info', 'Goal violations detected', { \n count: issuesFound,\n files: files.length \n });\n }\n }\n } catch (error) {\n this.log('error', 'Failed to check for goal violations', { \n error: error instanceof Error ? error.message : String(error)\n });\n this.stats.errors++;\n }\n \n this.isProcessing = false;\n }\n\n\n /**\n * Log a message\n */\n private log(level: 'info' | 'warn' | 'error', message: string, data?: Record<string, unknown>): void {\n const timestamp = new Date().toISOString();\n const uptime = Math.round((Date.now() - this.stats.startTime) / 1000);\n\n // Suppress human-readable logs when interactive dashboard is active\n if (!this.config.jsonOutput && isInteractiveMode()) {\n return;\n }\n\n if (this.config.jsonOutput) {\n console.log(JSON.stringify({\n timestamp,\n level,\n message,\n uptime,\n ...data,\n stats: this.stats\n }));\n } else {\n const levelEmoji = { info: '[i]', warn: '[!]', error: '[X]' }[level];\n const dataStr = data ? ` ${JSON.stringify(data)}` : '';\n console.log(`[${timestamp}] ${levelEmoji} ${message}${dataStr}`);\n }\n }\n\n /**\n * Graceful shutdown\n */\n private async shutdown(signal: string): Promise<void> {\n this.log('info', 'Shutting down', { signal, stats: this.stats });\n\n // Stop the TrieWatchTool\n try {\n await this.trieWatchTool.execute({ action: 'stop' });\n } catch (error) {\n // Ignore errors during shutdown\n }\n\n // Close all watchers\n for (const watcher of this.watchers.values()) {\n watcher.close();\n }\n\n // Clear timers\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n if (this.streamingManager) {\n this.streamingManager.reportWatchStatus({\n watching: false,\n directories: 0\n });\n }\n if (this.dashboard) {\n this.dashboard.stop();\n }\n\n process.exit(0);\n }\n}\n\n/**\n * Parse command line arguments\n */\nfunction parseArgs(): DaemonConfig {\n const args = process.argv.slice(2);\n const config: DaemonConfig = {\n // Silent mode for initial workspace detection (TUI will handle display)\n directory: getWorkingDirectory(undefined, true),\n debounceMs: 1000,\n jsonOutput: false,\n // Default to interactive mode for TTY terminals\n interactive: process.stdout.isTTY === true\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const nextArg = args[i + 1];\n\n switch (arg) {\n case '--dir':\n case '-d':\n config.directory = resolve(nextArg || '.');\n i++;\n break;\n case '--debounce':\n case '-D':\n config.debounceMs = parseInt(nextArg || '1000', 10);\n i++;\n break;\n case '--json':\n config.jsonOutput = true;\n break;\n case '--format':\n if (nextArg) {\n config.format = nextArg === 'json' ? 'json' : 'text';\n i++;\n }\n break;\n case '--output':\n if (nextArg) {\n config.output = nextArg;\n i++;\n }\n break;\n case '--parallel':\n config.parallel = true;\n break;\n case '--no-parallel':\n config.parallel = false;\n break;\n case '--cache':\n config.cache = true;\n break;\n case '--no-cache':\n config.cache = false;\n break;\n case '--force-rescan':\n case '--force':\n config.cache = false; // Force rescan by disabling cache\n break;\n case '--max-concurrency':\n config.maxConcurrency = parseInt(nextArg || '4', 10);\n i++;\n break;\n case '--streaming':\n config.streaming = true;\n break;\n case '--no-streaming':\n config.streaming = false;\n break;\n case '--interactive':\n config.interactive = true;\n break;\n case '--no-interactive':\n config.interactive = false;\n break;\n case '--once':\n // One-shot mode (e.g. pre-commit hook): never use interactive dashboard\n config.interactive = false;\n config.once = true;\n break;\n case '--staged-only':\n // Only check staged files (for pre-commit hooks)\n config.stagedOnly = true;\n break;\n case '--fail-on':\n if (nextArg && ['never', 'critical', 'serious'].includes(nextArg)) {\n config.failOn = nextArg as 'never' | 'critical' | 'serious';\n i++;\n }\n break;\n case '--workers':\n config.workers = true;\n break;\n case '--no-workers':\n config.workers = false;\n break;\n case '--timeout':\n config.timeoutMs = parseInt(nextArg || '120000', 10);\n i++;\n break;\n case '--files':\n if (nextArg) {\n config.files = nextArg.split(',').map(f => f.trim()).filter(Boolean);\n i++;\n }\n break;\n case '--users':\n case '-u':\n config.userCount = parseInt(nextArg || '250', 10);\n i++;\n break;\n case '--help':\n case '-h':\n console.log(`\nTrie Watch - File Watcher\n\nUSAGE:\n trie watch [options] Watch for changes\n\nOPTIONS:\n --dir, -d <path> Directory to watch (default: current directory)\n --debounce, -D <ms> Debounce time in ms (default: 1000)\n --users, -u <count> User count for cost estimation (default: 250)\n\nOUTPUT:\n --json Output as JSON (for log aggregation)\n\nDISPLAY:\n --interactive Enable interactive dashboard (default for TTY)\n --no-interactive Disable interactive dashboard (for CI/scripts)\n\nEXAMPLES:\n trie watch # Watch current directory\n trie watch --no-interactive # CI mode: watch without dashboard\n`);\n process.exit(0);\n }\n }\n\n return config;\n}\n\n// Run the daemon\nconst config = parseArgs();\nconst daemon = new WatchDaemon(config);\ndaemon.start().catch(error => {\n if (!process.stdout.isTTY || process.argv.includes('--non-interactive')) {\n console.error('Failed to start daemon:', error);\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["config"]}
1
+ {"version":3,"sources":["../../src/cli/yolo-daemon.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Trie Watch - File Watcher\n * \n * Watches a directory for changes and checks for goal violations.\n * \n * Usage:\n * trie watch [options] # Watch for changes\n * \n * See `trie watch --help` for all options.\n */\n\nimport { watch, existsSync, statSync } from 'fs';\nimport { readdir } from 'fs/promises';\nimport { join, extname, basename, resolve } from 'path';\nimport { StreamingManager } from '../utils/streaming.js';\nimport { InteractiveDashboard } from './interactive-dashboard.js';\nimport { getWorkingDirectory } from '../utils/workspace.js';\nimport { isInteractiveMode, setInteractiveMode } from '../utils/progress.js';\nimport { isTrieInitialized } from '../utils/trie-init.js';\nimport { TrieWatchTool } from '../tools/watch.js';\n\n// File extensions to watch\nconst WATCH_EXTENSIONS = new Set([\n '.ts', '.tsx', '.js', '.jsx', '.mjs',\n '.vue', '.svelte', '.astro',\n '.py', '.go', '.rs'\n]);\n\n// Directories to skip\nconst SKIP_DIRS = new Set([\n 'node_modules', '.git', 'dist', 'build', '.next', '.nuxt',\n 'coverage', '.turbo', '.cache', '__pycache__', '.venv'\n]);\n\ninterface DaemonConfig {\n directory: string;\n debounceMs: number;\n jsonOutput: boolean;\n format?: 'text' | 'json';\n output?: string;\n parallel?: boolean;\n cache?: boolean;\n maxConcurrency?: number;\n streaming?: boolean;\n interactive?: boolean;\n workers?: boolean;\n timeoutMs?: number;\n files?: string[];\n /** User count for cost estimation (default: 250) */\n userCount?: number;\n /** Run once and exit (for pre-commit hooks) */\n once?: boolean;\n /** Only scan staged files (for pre-commit hooks) */\n stagedOnly?: boolean;\n /** Exit code to use on failure: 'never', 'critical', 'serious' */\n failOn?: 'never' | 'critical' | 'serious';\n}\n\ninterface DaemonStats {\n filesScanned: number;\n issuesFound: number;\n errors: number;\n startTime: number;\n}\n\nclass WatchDaemon {\n private config: DaemonConfig;\n private stats: DaemonStats;\n private watchers: Map<string, ReturnType<typeof watch>> = new Map();\n private pendingFiles: Set<string> = new Set();\n private debounceTimer: NodeJS.Timeout | null = null;\n private isProcessing = false;\n private streamingManager: StreamingManager | undefined = undefined;\n private dashboard: InteractiveDashboard | undefined = undefined;\n private trieWatchTool: TrieWatchTool;\n\n constructor(config: DaemonConfig) {\n this.config = config;\n this.stats = {\n filesScanned: 0,\n issuesFound: 0,\n errors: 0,\n startTime: Date.now()\n };\n this.trieWatchTool = new TrieWatchTool();\n }\n\n /**\n * Start the daemon\n */\n async start(): Promise<void> {\n // Enable global interactive mode only when:\n // 1. Both stdout AND stdin are TTY\n // 2. stdin supports setRawMode (required by Ink)\n // (git hooks/CI often have non-TTY stdin, and some terminals don't support raw mode)\n const hasInteractiveTTY =\n process.stdout.isTTY === true && \n process.stdin.isTTY === true &&\n typeof process.stdin.setRawMode === 'function';\n if (this.config.interactive !== false && hasInteractiveTTY && !this.config.once) {\n setInteractiveMode(true);\n }\n if (!isTrieInitialized(this.config.directory)) {\n if (!isInteractiveMode()) {\n console.error('Trie is not initialized for this project.');\n console.error('Run `trie init` first.');\n }\n process.exit(1);\n }\n\n // If in once mode (pre-commit hook), just exit - the hook itself queries the ledger\n if (this.config.once) {\n console.log('Pre-commit mode detected - hook should query ledger directly');\n process.exit(0);\n }\n\n this.log('info', 'Starting Trie Watch', {\n directory: this.config.directory,\n debounceMs: this.config.debounceMs\n });\n if (!isInteractiveMode()) {\n console.error('\\nTrie is watching for goal violations.\\n');\n }\n\n // Validate directory\n if (!existsSync(this.config.directory)) {\n this.log('error', 'Directory not found', { directory: this.config.directory });\n process.exit(1);\n }\n\n // Start interactive dashboard if enabled\n if (isInteractiveMode()) {\n this.streamingManager = new StreamingManager();\n this.dashboard = new InteractiveDashboard();\n this.streamingManager.subscribe(update => this.dashboard?.handleStreamUpdate(update));\n await this.dashboard.start();\n this.streamingManager.reportWatchStatus({\n watching: true,\n directories: 0,\n debounceMs: this.config.debounceMs\n });\n }\n\n // Initialize the TrieWatchTool for goal checking\n await this.trieWatchTool.execute({\n action: 'start',\n directory: this.config.directory,\n debounceMs: this.config.debounceMs\n });\n\n // Start watching\n await this.watchDirectory(this.config.directory);\n this.streamingManager?.reportWatchStatus({\n watching: true,\n directories: this.watchers.size,\n debounceMs: this.config.debounceMs\n });\n this.log('info', 'Watching for changes...', { \n directories: this.watchers.size \n });\n\n // Handle graceful shutdown\n process.on('SIGINT', () => this.shutdown('SIGINT'));\n process.on('SIGTERM', () => this.shutdown('SIGTERM'));\n }\n\n /**\n * Watch a directory recursively\n */\n private async watchDirectory(dir: string): Promise<void> {\n if (!existsSync(dir)) return;\n\n try {\n const stat = statSync(dir);\n if (!stat.isDirectory()) return;\n\n const dirName = basename(dir);\n if (SKIP_DIRS.has(dirName) || dirName.startsWith('.')) return;\n\n // Watch this directory\n const watcher = watch(dir, { persistent: true }, (_eventType, filename) => {\n if (!filename) return;\n\n const fullPath = join(dir, filename);\n const ext = extname(filename).toLowerCase();\n\n if (!WATCH_EXTENSIONS.has(ext)) return;\n if (!existsSync(fullPath)) return;\n\n this.pendingFiles.add(fullPath);\n this.streamingManager?.reportWatchChange(fullPath);\n this.scheduleProcessing();\n });\n\n this.watchers.set(dir, watcher);\n\n // Recursively watch subdirectories\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory()) {\n await this.watchDirectory(join(dir, entry.name));\n }\n }\n } catch (error) {\n // Skip inaccessible directories\n }\n }\n\n /**\n * Schedule processing of pending files (debounced)\n */\n private scheduleProcessing(): void {\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n this.debounceTimer = setTimeout(() => {\n this.processPendingFiles();\n }, this.config.debounceMs);\n }\n\n /**\n * Process all pending files\n */\n private async processPendingFiles(): Promise<void> {\n if (this.isProcessing || this.pendingFiles.size === 0) return;\n\n this.isProcessing = true;\n const files = Array.from(this.pendingFiles);\n this.pendingFiles.clear();\n\n this.log('info', 'Processing changed files', { \n count: files.length,\n files: files.map(f => basename(f))\n });\n\n try {\n // Trigger goal violation checking via TrieWatchTool\n // The tool handles AI-powered goal checking, priority scoring, caching, etc.\n const result = await this.trieWatchTool.execute({\n action: 'status'\n });\n\n // Extract issues from the result\n const statusMatch = result.content?.[0]?.text?.match(/Issues Found: (\\d+)/);\n if (statusMatch && statusMatch[1]) {\n const issuesFound = parseInt(statusMatch[1], 10);\n this.stats.issuesFound += issuesFound;\n \n if (issuesFound > 0) {\n this.log('info', 'Goal violations detected', { \n count: issuesFound,\n files: files.length \n });\n }\n }\n } catch (error) {\n this.log('error', 'Failed to check for goal violations', { \n error: error instanceof Error ? error.message : String(error)\n });\n this.stats.errors++;\n }\n \n this.isProcessing = false;\n }\n\n\n /**\n * Log a message\n */\n private log(level: 'info' | 'warn' | 'error', message: string, data?: Record<string, unknown>): void {\n const timestamp = new Date().toISOString();\n const uptime = Math.round((Date.now() - this.stats.startTime) / 1000);\n\n // Suppress human-readable logs when interactive dashboard is active\n if (!this.config.jsonOutput && isInteractiveMode()) {\n return;\n }\n\n if (this.config.jsonOutput) {\n console.log(JSON.stringify({\n timestamp,\n level,\n message,\n uptime,\n ...data,\n stats: this.stats\n }));\n } else {\n const levelEmoji = { info: '[i]', warn: '[!]', error: '[X]' }[level];\n const dataStr = data ? ` ${JSON.stringify(data)}` : '';\n console.log(`[${timestamp}] ${levelEmoji} ${message}${dataStr}`);\n }\n }\n\n /**\n * Graceful shutdown\n */\n private async shutdown(signal: string): Promise<void> {\n this.log('info', 'Shutting down', { signal, stats: this.stats });\n\n // Stop the TrieWatchTool\n try {\n await this.trieWatchTool.execute({ action: 'stop' });\n } catch (error) {\n // Ignore errors during shutdown\n }\n\n // Close all watchers\n for (const watcher of this.watchers.values()) {\n watcher.close();\n }\n\n // Clear timers\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n if (this.streamingManager) {\n this.streamingManager.reportWatchStatus({\n watching: false,\n directories: 0\n });\n }\n if (this.dashboard) {\n this.dashboard.stop();\n }\n\n process.exit(0);\n }\n}\n\n/**\n * Parse command line arguments\n */\nfunction parseArgs(): DaemonConfig {\n const args = process.argv.slice(2);\n const config: DaemonConfig = {\n // Silent mode for initial workspace detection (TUI will handle display)\n directory: getWorkingDirectory(undefined, true),\n debounceMs: 1000,\n jsonOutput: false,\n // Default to interactive mode for TTY terminals\n interactive: process.stdout.isTTY === true\n };\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const nextArg = args[i + 1];\n\n switch (arg) {\n case '--dir':\n case '-d':\n config.directory = resolve(nextArg || '.');\n i++;\n break;\n case '--debounce':\n case '-D':\n config.debounceMs = parseInt(nextArg || '1000', 10);\n i++;\n break;\n case '--json':\n config.jsonOutput = true;\n break;\n case '--format':\n if (nextArg) {\n config.format = nextArg === 'json' ? 'json' : 'text';\n i++;\n }\n break;\n case '--output':\n if (nextArg) {\n config.output = nextArg;\n i++;\n }\n break;\n case '--parallel':\n config.parallel = true;\n break;\n case '--no-parallel':\n config.parallel = false;\n break;\n case '--cache':\n config.cache = true;\n break;\n case '--no-cache':\n config.cache = false;\n break;\n case '--force-rescan':\n case '--force':\n config.cache = false; // Force rescan by disabling cache\n break;\n case '--max-concurrency':\n config.maxConcurrency = parseInt(nextArg || '4', 10);\n i++;\n break;\n case '--streaming':\n config.streaming = true;\n break;\n case '--no-streaming':\n config.streaming = false;\n break;\n case '--interactive':\n config.interactive = true;\n break;\n case '--no-interactive':\n config.interactive = false;\n break;\n case '--once':\n // One-shot mode (e.g. pre-commit hook): never use interactive dashboard\n config.interactive = false;\n config.once = true;\n break;\n case '--staged-only':\n // Only check staged files (for pre-commit hooks)\n config.stagedOnly = true;\n break;\n case '--fail-on':\n if (nextArg && ['never', 'critical', 'serious'].includes(nextArg)) {\n config.failOn = nextArg as 'never' | 'critical' | 'serious';\n i++;\n }\n break;\n case '--workers':\n config.workers = true;\n break;\n case '--no-workers':\n config.workers = false;\n break;\n case '--timeout':\n config.timeoutMs = parseInt(nextArg || '120000', 10);\n i++;\n break;\n case '--files':\n if (nextArg) {\n config.files = nextArg.split(',').map(f => f.trim()).filter(Boolean);\n i++;\n }\n break;\n case '--users':\n case '-u':\n config.userCount = parseInt(nextArg || '250', 10);\n i++;\n break;\n case '--help':\n case '-h':\n console.log(`\nTrie Watch - File Watcher\n\nUSAGE:\n trie watch [options] Watch for changes\n\nOPTIONS:\n --dir, -d <path> Directory to watch (default: current directory)\n --debounce, -D <ms> Debounce time in ms (default: 1000)\n --users, -u <count> User count for cost estimation (default: 250)\n\nOUTPUT:\n --json Output as JSON (for log aggregation)\n\nDISPLAY:\n --interactive Enable interactive dashboard (default for TTY)\n --no-interactive Disable interactive dashboard (for CI/scripts)\n\nEXAMPLES:\n trie watch # Watch current directory\n trie watch --no-interactive # CI mode: watch without dashboard\n`);\n process.exit(0);\n }\n }\n\n return config;\n}\n\n// Run the daemon\nconst config = parseArgs();\nconst daemon = new WatchDaemon(config);\ndaemon.start().catch(error => {\n if (!process.stdout.isTTY || process.argv.includes('--non-interactive')) {\n console.error('Failed to start daemon:', error);\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["config"]}
@@ -37,7 +37,7 @@ async function analyzeFilesRapidly(goals, projectPath, options = {}) {
37
37
  onProgress
38
38
  );
39
39
  } else {
40
- const { checkFilesForGoalViolations } = await import("./goal-validator-6Y5CDEMJ.js");
40
+ const { checkFilesForGoalViolations } = await import("./goal-validator-ULKIBDPX.js");
41
41
  newViolations = await checkFilesForGoalViolations(
42
42
  goals,
43
43
  projectPath,
@@ -171,7 +171,7 @@ async function analyzeWithSmartBatching(codebaseIndex, filesToScan, goals, proje
171
171
  const end = Math.min(start + adaptiveBatchSize, filesToScan.length);
172
172
  const batchFiles = filesToScan.slice(start, end);
173
173
  onProgress?.(`Fast analysis (${i + 1}/${totalBatches}): ${batchFiles.length} files...`);
174
- const { checkFilesForGoalViolations } = await import("./goal-validator-6Y5CDEMJ.js");
174
+ const { checkFilesForGoalViolations } = await import("./goal-validator-ULKIBDPX.js");
175
175
  const batchResults = await checkFilesForGoalViolations(
176
176
  goals,
177
177
  projectPath,
@@ -213,4 +213,4 @@ export {
213
213
  analyzeFilesRapidly,
214
214
  getAnalysisStats
215
215
  };
216
- //# sourceMappingURL=fast-analyzer-NJQO3TFD.js.map
216
+ //# sourceMappingURL=fast-analyzer-XXYMOXRK.js.map
@@ -0,0 +1,28 @@
1
+ import {
2
+ getChangedFilesSinceTimestamp,
3
+ getDiff,
4
+ getGitChangedFiles,
5
+ getLastCommit,
6
+ getRecentCommits,
7
+ getStagedChanges,
8
+ getUncommittedChanges,
9
+ getUnpushedCommits,
10
+ getWorkingTreeDiff,
11
+ isGitRepo,
12
+ resolveRepoPath
13
+ } from "./chunk-2HF65EHQ.js";
14
+ import "./chunk-DGUM43GV.js";
15
+ export {
16
+ getChangedFilesSinceTimestamp,
17
+ getDiff,
18
+ getGitChangedFiles,
19
+ getLastCommit,
20
+ getRecentCommits,
21
+ getStagedChanges,
22
+ getUncommittedChanges,
23
+ getUnpushedCommits,
24
+ getWorkingTreeDiff,
25
+ isGitRepo,
26
+ resolveRepoPath
27
+ };
28
+ //# sourceMappingURL=git-EO5SRFMN.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  GitHubIngester
3
- } from "./chunk-ACU2RJUJ.js";
4
- import "./chunk-GDWA3CH3.js";
3
+ } from "./chunk-F6WFNUAY.js";
4
+ import "./chunk-XPZZFPBZ.js";
5
5
  import "./chunk-VVITXIHN.js";
6
6
  import "./chunk-KDHN2ZQE.js";
7
7
  import "./chunk-DGUM43GV.js";
8
8
  export {
9
9
  GitHubIngester
10
10
  };
11
- //# sourceMappingURL=github-ingester-TFBDUDIY.js.map
11
+ //# sourceMappingURL=github-ingester-ZOKK6GRS.js.map
@@ -4,15 +4,16 @@ import {
4
4
  calculateAdaptiveScanFrequency,
5
5
  clearGoalManagers,
6
6
  getGoalManager
7
- } from "./chunk-2Z3TQNNK.js";
7
+ } from "./chunk-MRHKX5M5.js";
8
8
  import "./chunk-T63OHG4Q.js";
9
- import "./chunk-S36IO3EE.js";
9
+ import "./chunk-XE6KQRKZ.js";
10
+ import "./chunk-ZJF5FTBX.js";
10
11
  import "./chunk-GTKYBOXL.js";
11
12
  import "./chunk-EFWVF6TI.js";
12
- import "./chunk-MVVPJ73K.js";
13
13
  import "./chunk-43X6JBEM.js";
14
14
  import "./chunk-VVITXIHN.js";
15
15
  import "./chunk-KDHN2ZQE.js";
16
+ import "./chunk-2HF65EHQ.js";
16
17
  import "./chunk-DGUM43GV.js";
17
18
  export {
18
19
  GoalManager,
@@ -21,4 +22,4 @@ export {
21
22
  clearGoalManagers,
22
23
  getGoalManager
23
24
  };
24
- //# sourceMappingURL=goal-manager-DVX24UPZ.js.map
25
+ //# sourceMappingURL=goal-manager-YOB7VWK7.js.map
@@ -4,14 +4,15 @@ import {
4
4
  measureInitialGoalValue,
5
5
  recordGoalViolationCaught,
6
6
  recordGoalViolationFixed
7
- } from "./chunk-ZKKKLRZZ.js";
8
- import "./chunk-S36IO3EE.js";
7
+ } from "./chunk-5BRRRTN6.js";
8
+ import "./chunk-XE6KQRKZ.js";
9
+ import "./chunk-ZJF5FTBX.js";
9
10
  import "./chunk-GTKYBOXL.js";
10
11
  import "./chunk-EFWVF6TI.js";
11
- import "./chunk-MVVPJ73K.js";
12
12
  import "./chunk-43X6JBEM.js";
13
13
  import "./chunk-VVITXIHN.js";
14
14
  import "./chunk-KDHN2ZQE.js";
15
+ import "./chunk-2HF65EHQ.js";
15
16
  import "./chunk-DGUM43GV.js";
16
17
  export {
17
18
  checkFilesForGoalViolations,
@@ -20,4 +21,4 @@ export {
20
21
  recordGoalViolationCaught,
21
22
  recordGoalViolationFixed
22
23
  };
23
- //# sourceMappingURL=goal-validator-6Y5CDEMJ.js.map
24
+ //# sourceMappingURL=goal-validator-ULKIBDPX.js.map
@@ -3,15 +3,16 @@ import {
3
3
  clearHypothesisEngines,
4
4
  gatherEvidenceForHypothesis,
5
5
  getHypothesisEngine
6
- } from "./chunk-JEZ7XJQN.js";
6
+ } from "./chunk-XTFWT2XM.js";
7
7
  import "./chunk-T63OHG4Q.js";
8
- import "./chunk-S36IO3EE.js";
8
+ import "./chunk-XE6KQRKZ.js";
9
+ import "./chunk-ZJF5FTBX.js";
9
10
  import "./chunk-GTKYBOXL.js";
10
11
  import "./chunk-EFWVF6TI.js";
11
- import "./chunk-MVVPJ73K.js";
12
12
  import "./chunk-43X6JBEM.js";
13
13
  import "./chunk-VVITXIHN.js";
14
14
  import "./chunk-KDHN2ZQE.js";
15
+ import "./chunk-2HF65EHQ.js";
15
16
  import "./chunk-DGUM43GV.js";
16
17
  export {
17
18
  HypothesisEngine,
@@ -19,4 +20,4 @@ export {
19
20
  gatherEvidenceForHypothesis,
20
21
  getHypothesisEngine
21
22
  };
22
- //# sourceMappingURL=hypothesis-UKPGOYY2.js.map
23
+ //# sourceMappingURL=hypothesis-7BFFT5JY.js.map
package/dist/index.js CHANGED
@@ -1,40 +1,41 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "./chunk-UXRW2YSP.js";
5
- import "./chunk-ACU2RJUJ.js";
6
- import "./chunk-ZBXW244P.js";
7
- import "./chunk-OLNZJ3XV.js";
8
- import "./chunk-HOGKPDZA.js";
4
+ } from "./chunk-YDHUCDHM.js";
5
+ import "./chunk-F6WFNUAY.js";
6
+ import "./chunk-HVCDY3AK.js";
7
+ import "./chunk-Q63FFI6D.js";
8
+ import "./chunk-LQIMKE3P.js";
9
+ import "./chunk-Q5EKA5YA.js";
9
10
  import "./chunk-JVMBCWKS.js";
10
- import "./chunk-JNUOW2JS.js";
11
+ import "./chunk-4MXH2ZPT.js";
12
+ import "./chunk-XTFWT2XM.js";
11
13
  import "./chunk-WCN7S3EI.js";
12
- import "./chunk-Q5EKA5YA.js";
13
- import "./chunk-VR4VWXXU.js";
14
- import "./chunk-2Z3TQNNK.js";
15
- import "./chunk-JEZ7XJQN.js";
14
+ import "./chunk-G2TGF6TR.js";
15
+ import "./chunk-MRHKX5M5.js";
16
16
  import "./chunk-T63OHG4Q.js";
17
- import "./chunk-LG5CBK6A.js";
18
- import "./chunk-ZKKKLRZZ.js";
17
+ import "./chunk-YZ6Y2H3P.js";
18
+ import "./chunk-5BRRRTN6.js";
19
19
  import "./chunk-OBQ74FOU.js";
20
- import "./chunk-GDWA3CH3.js";
20
+ import "./chunk-XPZZFPBZ.js";
21
21
  import "./chunk-TN5WEKWI.js";
22
22
  import "./chunk-ZV2K6M7T.js";
23
- import "./chunk-TQOO6A4G.js";
23
+ import "./chunk-7WITSO22.js";
24
24
  import "./chunk-SY6KQG44.js";
25
25
  import "./chunk-OMR4YCBS.js";
26
26
  import "./chunk-VUL52BQL.js";
27
27
  import "./chunk-6NLHFIYA.js";
28
- import "./chunk-LR5M4RTN.js";
28
+ import "./chunk-575YT2SD.js";
29
29
  import "./chunk-FQ45QP5A.js";
30
- import "./chunk-S36IO3EE.js";
30
+ import "./chunk-XE6KQRKZ.js";
31
+ import "./chunk-ZJF5FTBX.js";
31
32
  import "./chunk-GTKYBOXL.js";
32
33
  import "./chunk-EFWVF6TI.js";
33
- import "./chunk-ME2OERF5.js";
34
- import "./chunk-MVVPJ73K.js";
35
34
  import "./chunk-43X6JBEM.js";
35
+ import "./chunk-ME2OERF5.js";
36
36
  import "./chunk-VVITXIHN.js";
37
37
  import "./chunk-KDHN2ZQE.js";
38
+ import "./chunk-2HF65EHQ.js";
38
39
  import "./chunk-DGUM43GV.js";
39
40
 
40
41
  // src/index.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { startServer } from './server/mcp-server.js';\n\n// Start the MCP server\nstartServer().catch((error) => {\n console.error('Fatal error:', error);\n process.exit(1);\n});"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,YAAY,EAAE,MAAM,CAAC,UAAU;AAC7B,UAAQ,MAAM,gBAAgB,KAAK;AACnC,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { startServer } from './server/mcp-server.js';\n\n// Start the MCP server\nstartServer().catch((error) => {\n console.error('Fatal error:', error);\n process.exit(1);\n});"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,YAAY,EAAE,MAAM,CAAC,UAAU;AAC7B,UAAQ,MAAM,gBAAgB,KAAK;AACnC,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
@@ -11,12 +11,13 @@ import {
11
11
  resolveGoalViolation,
12
12
  searchIssues,
13
13
  storeIssues
14
- } from "./chunk-S36IO3EE.js";
14
+ } from "./chunk-XE6KQRKZ.js";
15
+ import "./chunk-ZJF5FTBX.js";
15
16
  import "./chunk-EFWVF6TI.js";
16
- import "./chunk-MVVPJ73K.js";
17
17
  import "./chunk-43X6JBEM.js";
18
18
  import "./chunk-VVITXIHN.js";
19
19
  import "./chunk-KDHN2ZQE.js";
20
+ import "./chunk-2HF65EHQ.js";
20
21
  import "./chunk-DGUM43GV.js";
21
22
  export {
22
23
  autoResolveIssues,
@@ -32,4 +33,4 @@ export {
32
33
  searchIssues,
33
34
  storeIssues
34
35
  };
35
- //# sourceMappingURL=issue-store-UZAPI5DU.js.map
36
+ //# sourceMappingURL=issue-store-ZIRP23EP.js.map
@@ -23,10 +23,11 @@ import {
23
23
  verifyBlockSignatures,
24
24
  verifyLedger,
25
25
  verifyLedgerEntry
26
- } from "./chunk-MVVPJ73K.js";
26
+ } from "./chunk-ZJF5FTBX.js";
27
27
  import "./chunk-43X6JBEM.js";
28
28
  import "./chunk-VVITXIHN.js";
29
29
  import "./chunk-KDHN2ZQE.js";
30
+ import "./chunk-2HF65EHQ.js";
30
31
  import "./chunk-DGUM43GV.js";
31
32
  export {
32
33
  ConcurrentModificationError,
@@ -54,4 +55,4 @@ export {
54
55
  verifyLedger,
55
56
  verifyLedgerEntry
56
57
  };
57
- //# sourceMappingURL=ledger-CNFCJKHX.js.map
58
+ //# sourceMappingURL=ledger-TWZTGDFA.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  LinearIngester
3
- } from "./chunk-OLNZJ3XV.js";
4
- import "./chunk-GDWA3CH3.js";
3
+ } from "./chunk-Q63FFI6D.js";
4
+ import "./chunk-XPZZFPBZ.js";
5
5
  import "./chunk-VVITXIHN.js";
6
6
  import "./chunk-KDHN2ZQE.js";
7
7
  import "./chunk-DGUM43GV.js";
8
8
  export {
9
9
  LinearIngester
10
10
  };
11
- //# sourceMappingURL=linear-ingester-PLES2BRS.js.map
11
+ //# sourceMappingURL=linear-ingester-XXPAZZRW.js.map
@@ -2,7 +2,7 @@ import {
2
2
  getOutputManager,
3
3
  output,
4
4
  resetOutputManager
5
- } from "./chunk-VR4VWXXU.js";
5
+ } from "./chunk-G2TGF6TR.js";
6
6
  import "./chunk-KDHN2ZQE.js";
7
7
  import "./chunk-DGUM43GV.js";
8
8
  export {
@@ -10,4 +10,4 @@ export {
10
10
  output,
11
11
  resetOutputManager
12
12
  };
13
- //# sourceMappingURL=output-manager-JNMEAXFO.js.map
13
+ //# sourceMappingURL=output-manager-RVJ37XKA.js.map
@@ -1,40 +1,41 @@
1
1
  import {
2
2
  MCPServer,
3
3
  startServer
4
- } from "../chunk-UXRW2YSP.js";
5
- import "../chunk-ACU2RJUJ.js";
6
- import "../chunk-ZBXW244P.js";
7
- import "../chunk-OLNZJ3XV.js";
8
- import "../chunk-HOGKPDZA.js";
4
+ } from "../chunk-YDHUCDHM.js";
5
+ import "../chunk-F6WFNUAY.js";
6
+ import "../chunk-HVCDY3AK.js";
7
+ import "../chunk-Q63FFI6D.js";
8
+ import "../chunk-LQIMKE3P.js";
9
+ import "../chunk-Q5EKA5YA.js";
9
10
  import "../chunk-JVMBCWKS.js";
10
- import "../chunk-JNUOW2JS.js";
11
+ import "../chunk-4MXH2ZPT.js";
12
+ import "../chunk-XTFWT2XM.js";
11
13
  import "../chunk-WCN7S3EI.js";
12
- import "../chunk-Q5EKA5YA.js";
13
- import "../chunk-VR4VWXXU.js";
14
- import "../chunk-2Z3TQNNK.js";
15
- import "../chunk-JEZ7XJQN.js";
14
+ import "../chunk-G2TGF6TR.js";
15
+ import "../chunk-MRHKX5M5.js";
16
16
  import "../chunk-T63OHG4Q.js";
17
- import "../chunk-LG5CBK6A.js";
18
- import "../chunk-ZKKKLRZZ.js";
17
+ import "../chunk-YZ6Y2H3P.js";
18
+ import "../chunk-5BRRRTN6.js";
19
19
  import "../chunk-OBQ74FOU.js";
20
- import "../chunk-GDWA3CH3.js";
20
+ import "../chunk-XPZZFPBZ.js";
21
21
  import "../chunk-TN5WEKWI.js";
22
22
  import "../chunk-ZV2K6M7T.js";
23
- import "../chunk-TQOO6A4G.js";
23
+ import "../chunk-7WITSO22.js";
24
24
  import "../chunk-SY6KQG44.js";
25
25
  import "../chunk-OMR4YCBS.js";
26
26
  import "../chunk-VUL52BQL.js";
27
27
  import "../chunk-6NLHFIYA.js";
28
- import "../chunk-LR5M4RTN.js";
28
+ import "../chunk-575YT2SD.js";
29
29
  import "../chunk-FQ45QP5A.js";
30
- import "../chunk-S36IO3EE.js";
30
+ import "../chunk-XE6KQRKZ.js";
31
+ import "../chunk-ZJF5FTBX.js";
31
32
  import "../chunk-GTKYBOXL.js";
32
33
  import "../chunk-EFWVF6TI.js";
33
- import "../chunk-ME2OERF5.js";
34
- import "../chunk-MVVPJ73K.js";
35
34
  import "../chunk-43X6JBEM.js";
35
+ import "../chunk-ME2OERF5.js";
36
36
  import "../chunk-VVITXIHN.js";
37
37
  import "../chunk-KDHN2ZQE.js";
38
+ import "../chunk-2HF65EHQ.js";
38
39
  import "../chunk-DGUM43GV.js";
39
40
  export {
40
41
  MCPServer,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  TieredStorage,
3
3
  getStorage
4
- } from "./chunk-LR5M4RTN.js";
4
+ } from "./chunk-575YT2SD.js";
5
5
  import "./chunk-VVITXIHN.js";
6
6
  import "./chunk-KDHN2ZQE.js";
7
7
  import "./chunk-DGUM43GV.js";
@@ -9,4 +9,4 @@ export {
9
9
  TieredStorage,
10
10
  getStorage
11
11
  };
12
- //# sourceMappingURL=tiered-storage-OP74NPJY.js.map
12
+ //# sourceMappingURL=tiered-storage-Z3YCR465.js.map
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  TrieAgent,
3
3
  getTrieAgent
4
- } from "./chunk-JNUOW2JS.js";
5
- import "./chunk-2Z3TQNNK.js";
6
- import "./chunk-JEZ7XJQN.js";
4
+ } from "./chunk-4MXH2ZPT.js";
5
+ import "./chunk-XTFWT2XM.js";
6
+ import "./chunk-MRHKX5M5.js";
7
7
  import "./chunk-T63OHG4Q.js";
8
- import "./chunk-TQOO6A4G.js";
8
+ import "./chunk-7WITSO22.js";
9
9
  import "./chunk-SY6KQG44.js";
10
10
  import "./chunk-OMR4YCBS.js";
11
11
  import "./chunk-VUL52BQL.js";
12
12
  import "./chunk-6NLHFIYA.js";
13
- import "./chunk-LR5M4RTN.js";
13
+ import "./chunk-575YT2SD.js";
14
14
  import "./chunk-FQ45QP5A.js";
15
- import "./chunk-S36IO3EE.js";
15
+ import "./chunk-XE6KQRKZ.js";
16
+ import "./chunk-ZJF5FTBX.js";
16
17
  import "./chunk-GTKYBOXL.js";
17
18
  import "./chunk-EFWVF6TI.js";
18
- import "./chunk-MVVPJ73K.js";
19
19
  import "./chunk-43X6JBEM.js";
20
20
  import "./chunk-VVITXIHN.js";
21
21
  import "./chunk-KDHN2ZQE.js";
22
+ import "./chunk-2HF65EHQ.js";
22
23
  import "./chunk-DGUM43GV.js";
23
24
  export {
24
25
  TrieAgent,
25
26
  getTrieAgent
26
27
  };
27
- //# sourceMappingURL=trie-agent-6SWUHCVO.js.map
28
+ //# sourceMappingURL=trie-agent-3YDPEGHJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@triedotdev/mcp",
3
- "version": "1.0.166",
4
- "description": "Trainable AI agent with a cryptographic governance ledger and portable context for AI-generated codebases.",
3
+ "version": "1.0.167",
4
+ "description": "Governance ledger for agent-human teams. Decision memory that travels from Cursor to CLI to CI/CD.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {
@@ -59,6 +59,7 @@
59
59
  "@modelcontextprotocol/ext-apps": "^1.0.1",
60
60
  "@modelcontextprotocol/sdk": "^1.0.0",
61
61
  "@noble/ed25519": "^3.0.0",
62
+ "@triedotdev/mcp": "^1.0.166",
62
63
  "@vercel/blob": "^2.0.0",
63
64
  "better-sqlite3": "^12.6.2",
64
65
  "commander": "^11.1.0",