Phase 10: load persisted state and settings on session_start — SPEC §5.1, §6.3, §16.4.
Restore skill-reinject:state from branch on startup/resume, read merged settings, and detect pi-auto-compact; reset to initial state when no entry exists. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+6
-1
@@ -24,8 +24,10 @@ import {
|
||||
import { readSettings } from "./settings.js";
|
||||
import { findRegisteredSkillByName, resolveRegisteredSkills } from "./skills-registry.js";
|
||||
import {
|
||||
applyExtensionState,
|
||||
createInitialState,
|
||||
createRuntimeFlags,
|
||||
loadStateFromBranch,
|
||||
saveState,
|
||||
trackSkill,
|
||||
type TrackSkillInput,
|
||||
@@ -95,8 +97,11 @@ export default function skillReinject(pi: ExtensionAPI): void {
|
||||
persistState();
|
||||
}
|
||||
|
||||
pi.on("session_start", async () => {
|
||||
pi.on("session_start", async (_event, ctx) => {
|
||||
detectAndCachePiAutoCompact(pi, runtime);
|
||||
readSettings(ctx);
|
||||
const loaded = loadStateFromBranch(ctx.sessionManager.getBranch());
|
||||
applyExtensionState(state, loaded ?? createInitialState());
|
||||
});
|
||||
|
||||
pi.on("session_before_compact", async () => {
|
||||
|
||||
@@ -82,6 +82,14 @@ export function createInitialState(): ExtensionState {
|
||||
};
|
||||
}
|
||||
|
||||
/** Copy persisted fields into live session state (SPEC §6.3). */
|
||||
export function applyExtensionState(target: ExtensionState, loaded: ExtensionState): void {
|
||||
target.sessionOverride = loaded.sessionOverride;
|
||||
target.skills = loaded.skills;
|
||||
target.lastCompactionSource = loaded.lastCompactionSource;
|
||||
target.pendingReinject = loaded.pendingReinject;
|
||||
}
|
||||
|
||||
export function createRuntimeFlags(): RuntimeFlags {
|
||||
return {
|
||||
autoCompactDetected: false,
|
||||
|
||||
Reference in New Issue
Block a user