Files
openclaw/src/agents/pi-project-settings.ts
Peter Steinberger 694ca50e97 Revert "refactor: move runtime state to SQLite"
This reverts commit f91de52f0d.
2026-05-13 13:33:38 +01:00

66 lines
2.3 KiB
TypeScript

import { SettingsManager } from "@earendil-works/pi-coding-agent";
import type { OpenClawConfig } from "../config/types.openclaw.js";
import type { PluginMetadataSnapshot } from "../plugins/plugin-metadata-snapshot.js";
import {
buildEmbeddedPiSettingsSnapshot,
loadEnabledBundlePiSettingsSnapshot,
resolveEmbeddedPiProjectSettingsPolicy,
} from "./pi-project-settings-snapshot.js";
import { applyPiCompactionSettingsFromConfig } from "./pi-settings.js";
function createEmbeddedPiSettingsManager(params: {
cwd: string;
agentDir: string;
cfg?: OpenClawConfig;
pluginMetadataSnapshot?: PluginMetadataSnapshot;
}): SettingsManager {
const fileSettingsManager = SettingsManager.create(params.cwd, params.agentDir);
const policy = resolveEmbeddedPiProjectSettingsPolicy(params.cfg);
const pluginSettings = loadEnabledBundlePiSettingsSnapshot({
cwd: params.cwd,
cfg: params.cfg,
pluginMetadataSnapshot: params.pluginMetadataSnapshot,
});
const hasPluginSettings = Object.keys(pluginSettings).length > 0;
if (policy === "trusted" && !hasPluginSettings) {
return fileSettingsManager;
}
const settings = buildEmbeddedPiSettingsSnapshot({
globalSettings: fileSettingsManager.getGlobalSettings(),
pluginSettings,
projectSettings: fileSettingsManager.getProjectSettings(),
policy,
});
return SettingsManager.inMemory(settings);
}
function createRuntimeEmbeddedPiSettingsManager(settingsManager: SettingsManager): SettingsManager {
return SettingsManager.inMemory(
buildEmbeddedPiSettingsSnapshot({
globalSettings: settingsManager.getGlobalSettings(),
pluginSettings: {},
projectSettings: settingsManager.getProjectSettings(),
policy: "trusted",
}),
);
}
export function createPreparedEmbeddedPiSettingsManager(params: {
cwd: string;
agentDir: string;
cfg?: OpenClawConfig;
pluginMetadataSnapshot?: PluginMetadataSnapshot;
/** Resolved context window budget so reserve-token floor can be capped for small models. */
contextTokenBudget?: number;
}): SettingsManager {
const settingsManager = createRuntimeEmbeddedPiSettingsManager(
createEmbeddedPiSettingsManager(params),
);
applyPiCompactionSettingsFromConfig({
settingsManager,
cfg: params.cfg,
contextTokenBudget: params.contextTokenBudget,
});
return settingsManager;
}