Skip to main content
Glama
poltergeist.config.jsonβ€’8.64 kB
{ "version": "1.0", "projectType": "mixed", "targets": [ { "name": "Peekaboo", "type": "executable", "enabled": true, "buildCommand": "./scripts/build-swift-debug.sh", "outputPath": "./peekaboo", "settlingDelay": 1000, "debounceInterval": 5000, "icon": "./assets/icon_512x512@2x.png", "watchPaths": [ "Core/PeekabooCore/**/*.swift", "AXorcist/**/*.swift", "Commander/**/*.swift", "Tachikoma/**/*.swift", "TauTUI/**/*.swift", "Apps/CLI/**/*.swift" ], "postBuild": [ { "name": "Swift tests", "command": "./scripts/status-swifttests.sh", "runOn": "success", "timeoutSeconds": 1800, "maxLines": 5 } ] }, { "name": "Commander", "type": "test", "enabled": true, "testCommand": "swift test --package-path Commander", "watchPaths": [ "Commander/**/*.swift", "Commander/Package.swift" ], "settlingDelay": 1000, "debounceInterval": 5000 }, { "name": "AXorcist", "type": "test", "enabled": true, "testCommand": "swift test --package-path AXorcist", "watchPaths": [ "AXorcist/**/*.swift", "AXorcist/Package.swift" ], "settlingDelay": 1000, "debounceInterval": 5000 }, { "name": "Tachikoma", "type": "test", "enabled": true, "testCommand": "swift test --package-path Tachikoma", "watchPaths": [ "Tachikoma/**/*.swift", "Tachikoma/Package.swift" ], "settlingDelay": 1000, "debounceInterval": 5000 }, { "name": "TauTUI", "type": "test", "enabled": true, "testCommand": "swift test --package-path TauTUI", "watchPaths": [ "TauTUI/**/*.swift", "TauTUI/Package.swift" ], "settlingDelay": 1000, "debounceInterval": 5000 }, { "name": "Peekaboo.app", "type": "app-bundle", "platform": "macos", "enabled": true, "buildCommand": "./scripts/build-mac-debug.sh", "bundleId": "boo.peekaboo.mac.debug", "autoRelaunch": true, "settlingDelay": 4000, "debounceInterval": 5000, "icon": "./assets/icon_512x512@2x.png", "watchPaths": [ "Apps/Mac/Peekaboo/**/*.swift", "Apps/Mac/Peekaboo/**/*.storyboard", "Apps/Mac/Peekaboo/**/*.xib", "Core/PeekabooCore/**/*.swift", "AXorcist/**/*.swift", "Commander/**/*.swift", "Tachikoma/**/*.swift", "TauTUI/**/*.swift" ] }, { "name": "Playground.app", "type": "app-bundle", "platform": "macos", "enabled": true, "buildCommand": "SCHEME=Playground APP_NAME=Playground ./scripts/build-mac-debug.sh", "bundleId": "boo.peekaboo.playground.debug", "autoRelaunch": true, "settlingDelay": 4000, "debounceInterval": 5000, "icon": "./assets/icon_512x512@2x.png", "watchPaths": [ "Apps/Playground/**/*.swift", "Apps/Playground/**/*.storyboard", "Apps/Playground/**/*.xib", "Apps/Playground/**/*.xcassets", "Apps/Playground/**/*.entitlements", "Apps/Playground/**/*.plist", "Apps/Playground/Playground.xcodeproj/project.pbxproj", "Apps/Playground/Package.swift", "Core/PeekabooCore/**/*.swift", "AXorcist/**/*.swift", "Commander/**/*.swift", "Tachikoma/**/*.swift", "TauTUI/**/*.swift" ] }, { "name": "Inspector.app", "type": "executable", "enabled": true, "buildCommand": "cd Apps/PeekabooInspector && swift build", "autoRelaunch": false, "settlingDelay": 4000, "debounceInterval": 5000, "icon": "./assets/icon_512x512@2x.png", "watchPaths": [ "Apps/PeekabooInspector/**/*.swift", "Apps/PeekabooInspector/**/*.storyboard", "Apps/PeekabooInspector/**/*.xib", "Apps/PeekabooInspector/**/*.xcassets", "Apps/PeekabooInspector/**/*.entitlements", "Apps/PeekabooInspector/**/*.plist", "Apps/PeekabooInspector/Inspector.xcodeproj/project.pbxproj", "Apps/PeekabooInspector/Package.swift", "Core/PeekabooCore/**/*.swift", "AXorcist/**/*.swift", "Commander/**/*.swift", "Tachikoma/**/*.swift", "TauTUI/**/*.swift" ], "outputPath": "Apps/PeekabooInspector/.build/debug/PeekabooInspector" } ], "watchman": { "useDefaultExclusions": true, "excludeDirs": [ "coverage", "*.log", "tmp_screenshots", "test_output", "Server/dist", "Server/node_modules" ], "projectType": "mixed", "maxFileEvents": 15000, "recrawlThreshold": 3, "settlingDelay": 1000, "rules": [ { "pattern": "**/test_results/**", "action": "ignore", "reason": "Test output directory", "enabled": true }, { "pattern": "**/*.xcuserstate", "action": "ignore", "reason": "Xcode user state files", "enabled": true }, { "pattern": "**/Version.swift", "action": "ignore", "reason": "Auto-generated version file that changes on every build", "enabled": true } ] }, "performance": { "profile": "balanced", "autoOptimize": true, "metrics": { "enabled": true, "reportInterval": 300 } }, "buildScheduling": { "parallelization": 1, "prioritization": { "enabled": true, "focusDetectionWindow": 300000, "priorityDecayTime": 1800000, "buildTimeoutMultiplier": 2 } }, "notifications": { "enabled": true }, "logging": { "file": ".poltergeist.log", "level": "debug" }, "statusScripts": [ { "label": "SwiftLint", "command": "./scripts/status-swiftlint.sh", "cooldownSeconds": 60, "timeoutSeconds": 300, "maxLines": 5, "formatter": "auto", "targets": [ "Peekaboo" ] }, { "label": "Tests (Commander)", "command": "swift test --package-path Commander", "targets": [ "Commander" ], "cooldownSeconds": 600, "timeoutSeconds": 900, "maxLines": 6, "formatter": "auto" }, { "label": "Tests (AXorcist)", "command": "swift test --package-path AXorcist", "targets": [ "AXorcist" ], "cooldownSeconds": 600, "timeoutSeconds": 900, "maxLines": 6, "formatter": "auto" }, { "label": "Tests (Tachikoma)", "command": "swift test --package-path Tachikoma", "targets": [ "Tachikoma" ], "cooldownSeconds": 900, "timeoutSeconds": 1200, "maxLines": 6, "formatter": "auto" }, { "label": "Tests (TauTUI)", "command": "swift test --package-path TauTUI", "targets": [ "TauTUI" ], "cooldownSeconds": 900, "timeoutSeconds": 1200, "maxLines": 6, "formatter": "auto" } ], "summaryScripts": [ { "label": "Changelog", "placement": "summary", "command": "node -e \"const fs=require('fs');const md=fs.readFileSync('CHANGELOG.md','utf8').split(/\\\\r?\\\\n/);const start=md.findIndex((l)=>l.startsWith('## '));const end=md.findIndex((l,i)=>i>start&&l.startsWith('## '));const chunk=md.slice(start,end>0?end:md.length);const out=chunk.map((l)=>{if(/^#+\\\\s*/.test(l))return l.replace(/^#+\\\\s*/,'').toUpperCase();if(/^\\\\s*-\\\\s+/.test(l))return 'β€’ '+l.replace(/^\\\\s*-\\\\s+/,'');return l.trim();}).filter(Boolean);console.log(out.slice(0,50).join('\\\\n'));\"", "refreshSeconds": 600, "timeoutSeconds": 5, "maxLines": 50, "formatter": "none" }, { "label": "Dependencies", "placement": "summary", "command": "node -e \"const {execSync}=require('node:child_process');function emit(data){if(!Array.isArray(data)||data.length===0){process.exit(0);}for(const row of data){console.log(row.name + '@' + row.path + ' ' + row.current + ' -> ' + row.latest);}process.exit(1);}try{const out=execSync('pnpm outdated --recursive --long --format=json',{encoding:'utf8'}).trim();if(!out){process.exit(0);}emit(JSON.parse(out));}catch(err){const out=err.stdout?.toString().trim();if(!out){console.error(err.message||String(err));process.exit(1);}emit(JSON.parse(out));}\"", "refreshSeconds": 1800, "timeoutSeconds": 120, "maxLines": 10 } ] }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/steipete/Peekaboo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server