consortium
Version:
Remote control and session sharing CLI for AI coding agents
109 lines (105 loc) • 3.29 kB
JavaScript
;
var fs = require('node:fs');
var path = require('node:path');
var os = require('node:os');
var persistence = require('./types-BYXHizYk.cjs');
var index = require('./index-BXjnng_s.cjs');
require('axios');
require('chalk');
require('fs');
require('node:events');
require('socket.io-client');
require('zod');
require('node:crypto');
require('tweetnacl');
require('node:module');
require('child_process');
require('util');
require('fs/promises');
require('os');
require('crypto');
require('path');
require('url');
require('node:child_process');
require('node:fs/promises');
require('node:util');
require('http');
require('net');
require('expo-server-sdk');
require('node:net');
require('node:readline');
require('ink');
require('react');
require('node:url');
require('node:http');
require('node:https');
require('node:stream/promises');
require('tar');
require('ps-list');
require('cross-spawn');
require('tmp');
require('qrcode-terminal');
require('open');
require('fastify');
require('fastify-type-provider-zod');
require('ws');
require('playwright-core');
require('imapflow');
require('mailparser');
require('yaml');
require('@modelcontextprotocol/sdk/client/index.js');
require('@modelcontextprotocol/sdk/client/streamableHttp.js');
require('readline');
require('@modelcontextprotocol/sdk/server/mcp.js');
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
require('libsodium-wrappers');
require('pixelmatch');
require('pngjs');
function getPiAgentDir() {
const envDir = process.env[index.PI_CODING_AGENT_DIR_ENV];
if (envDir && envDir.trim().length > 0) return envDir;
return path.join(os.homedir(), ".pi", "agent");
}
function getSettingsPath() {
return path.join(getPiAgentDir(), "settings.json");
}
function readPiSettings() {
const path = getSettingsPath();
if (!fs.existsSync(path)) return {};
try {
return JSON.parse(fs.readFileSync(path, "utf-8"));
} catch (err) {
persistence.logger.debug(`[Pi] Failed to parse settings at ${path}:`, err);
return {};
}
}
function getInitialPiProviderAndModel() {
const settings = readPiSettings();
return {
provider: settings.defaultProvider ?? index.getDefaultPiProvider(),
model: settings.defaultModel ?? index.DEFAULT_PI_MODEL,
thinking: settings.defaultThinking
};
}
function savePiDefaults(patch) {
const dir = getPiAgentDir();
const path = getSettingsPath();
try {
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
const current = readPiSettings();
const next = {
...current,
...patch.provider !== void 0 && { defaultProvider: patch.provider },
...patch.model !== void 0 && { defaultModel: patch.model }
};
if (patch.thinking) next.defaultThinking = patch.thinking;
fs.writeFileSync(path, JSON.stringify(next, null, 2), "utf-8");
persistence.logger.debug(`[Pi] Saved defaults to ${path}: ${patch.provider ?? "(unchanged)"}/${patch.model ?? "(unchanged)"}${patch.thinking ? `/${patch.thinking}` : ""}`);
} catch (err) {
persistence.logger.debug(`[Pi] Failed to save defaults to ${path}:`, err);
}
}
exports.getInitialPiProviderAndModel = getInitialPiProviderAndModel;
exports.getPiAgentDir = getPiAgentDir;
exports.readPiSettings = readPiSettings;
exports.savePiDefaults = savePiDefaults;