Phase 14: B-002 pre-fix RPC repro — filter snapshots and readSettings fix
RPC E2E with debug shows registered present at session_compact but planned=[] because kept still contains the skill block; registered=[] still drops skills absent from kept. Sync file readSettings avoids RPC hook deadlock on SettingsManager/isProjectTrusted. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+8
-9
@@ -1,5 +1,5 @@
|
||||
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
||||
import { SettingsManager, getAgentDir } from "@earendil-works/pi-coding-agent";
|
||||
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
||||
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
||||
import { dirname, join } from "path";
|
||||
import type { AutoCompactIntegration } from "./state";
|
||||
@@ -104,15 +104,14 @@ function extractSkillReinject(settings: object): PartialSkillReinjectSettings {
|
||||
);
|
||||
}
|
||||
|
||||
/** Merged global + project settings via Pi SettingsManager (SPEC §7.3). */
|
||||
/** Merged global + project settings (SPEC §7.3). Sync file read; avoids SettingsManager / isProjectTrusted() blocking in RPC hooks. */
|
||||
export function readSettings(ctx: ExtensionContext): SkillReinjectSettings {
|
||||
const manager = SettingsManager.create(ctx.cwd, getAgentDir(), {
|
||||
projectTrusted: ctx.isProjectTrusted(),
|
||||
});
|
||||
return mergeSkillReinjectSettings(
|
||||
extractSkillReinject(manager.getGlobalSettings()),
|
||||
extractSkillReinject(manager.getProjectSettings()),
|
||||
);
|
||||
const global = extractSkillReinject(readSettingsFile(join(getAgentDir(), "settings.json")));
|
||||
const projectPath = join(ctx.cwd, ".pi/settings.json");
|
||||
const project = existsSync(projectPath)
|
||||
? extractSkillReinject(readSettingsFile(projectPath))
|
||||
: {};
|
||||
return mergeSkillReinjectSettings(global, project);
|
||||
}
|
||||
|
||||
function readSettingsFile(settingsPath: string): Record<string, unknown> {
|
||||
|
||||
Reference in New Issue
Block a user