feat: full plugin integration + cross-agent rules
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env node
|
||||
// ponytail — shared configuration resolver
|
||||
//
|
||||
// Resolution order for default mode:
|
||||
// 1. PONYTAIL_DEFAULT_MODE environment variable
|
||||
// 2. Config file defaultMode field:
|
||||
// - $XDG_CONFIG_HOME/ponytail/config.json (any platform, if set)
|
||||
// - ~/.config/ponytail/config.json (macOS / Linux fallback)
|
||||
// - %APPDATA%\ponytail\config.json (Windows fallback)
|
||||
// 3. 'full'
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const os = require('os');
|
||||
|
||||
const VALID_MODES = ['off', 'lite', 'full', 'ultra', 'review'];
|
||||
|
||||
function getConfigDir() {
|
||||
if (process.env.XDG_CONFIG_HOME) {
|
||||
return path.join(process.env.XDG_CONFIG_HOME, 'ponytail');
|
||||
}
|
||||
if (process.platform === 'win32') {
|
||||
return path.join(
|
||||
process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'),
|
||||
'ponytail'
|
||||
);
|
||||
}
|
||||
return path.join(os.homedir(), '.config', 'ponytail');
|
||||
}
|
||||
|
||||
function getConfigPath() {
|
||||
return path.join(getConfigDir(), 'config.json');
|
||||
}
|
||||
|
||||
function getDefaultMode() {
|
||||
// 1. Environment variable (highest priority)
|
||||
const envMode = process.env.PONYTAIL_DEFAULT_MODE;
|
||||
if (envMode && VALID_MODES.includes(envMode.toLowerCase())) {
|
||||
return envMode.toLowerCase();
|
||||
}
|
||||
|
||||
// 2. Config file
|
||||
try {
|
||||
const configPath = getConfigPath();
|
||||
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
||||
if (config.defaultMode && VALID_MODES.includes(config.defaultMode.toLowerCase())) {
|
||||
return config.defaultMode.toLowerCase();
|
||||
}
|
||||
} catch (e) {
|
||||
// Config file doesn't exist or is invalid — fall through
|
||||
}
|
||||
|
||||
// 3. Default
|
||||
return 'full';
|
||||
}
|
||||
|
||||
module.exports = { getDefaultMode, getConfigDir, getConfigPath, VALID_MODES };
|
||||
Reference in New Issue
Block a user