Something went wrong. Try again.
fork of prime agent with changes i want but are not upstreamable probqbly (and some fixes)
Something went wrong. Try again.
1.9 kB · 67 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768/** * Session runtime * * Use AgentSessionRuntime when you need to replace the active AgentSession, * for example for new-session, resume, fork, or import flows. * * The important pattern is: after the runtime replaces the active session, * rebind any session-local subscriptions and extension bindings to `runtime.session`. */
import { type CreateAgentSessionRuntimeFactory, createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, getAgentDir, SessionManager,} from "@earendil-works/pi-coding-agent";
const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => { const services = await createAgentSessionServices({ cwd }); return { ...(await createAgentSessionFromServices({ services, sessionManager, sessionStartEvent, })), services, diagnostics: services.diagnostics, };};const runtime = await createAgentSessionRuntime(createRuntime, { cwd: process.cwd(), agentDir: getAgentDir(), sessionManager: SessionManager.create(process.cwd()),});
let unsubscribe: (() => void) | undefined;
async function bindSession() { unsubscribe?.(); const session = runtime.session; await session.bindExtensions({}); unsubscribe = session.subscribe((event) => { if (event.type === "session_action_update") { console.log("Queued:", event.actions.steering.length + event.actions.followUps.length); } }); return session;}
let session = await bindSession();const originalSessionFile = session.sessionFile;console.log("Initial session:", originalSessionFile);
await runtime.newSession();session = await bindSession();console.log("After newSession():", session.sessionFile);
if (originalSessionFile) { await runtime.switchSession(originalSessionFile); session = await bindSession(); console.log("After switchSession():", session.sessionFile);}
unsubscribe?.();await runtime.dispose();