fix(pi): resume archived sessions safely (#1308)

* fix(pi): resume archived sessions safely

* fix(pi): harden native resume startup

* fix(pi): harden resume termination evidence

* fix(runner): persist resume process evidence

* fix(runner): track resume process generations

* fix(runner): verify full session tree shutdown

* fix(pi): block pre-mapping resume dedup
This commit is contained in:
KorenKrita
2026-08-02 21:15:52 +08:00
committed by GitHub
parent fb6f697555
commit abf9cb02a5
26 changed files with 1546 additions and 137 deletions
+13
View File
@@ -52,6 +52,18 @@ export const MetadataSchema = z.object({
cursorMigrationState: z.enum(['in_progress', 'ambiguous']).optional(),
kimiSessionId: z.string().optional(),
piSessionId: z.string().optional(),
piResumeAttempt: z.object({
state: z.enum(['resuming', 'terminating', 'quarantined']),
machineId: z.string(),
startedAt: z.number(),
childSessionId: z.string().optional(),
archiveSnapshot: z.object({
lifecycleState: z.string().optional(),
lifecycleStateSince: z.number().optional(),
archivedBy: z.string().optional(),
archiveReason: z.string().optional(),
}).optional(),
}).optional(),
tools: z.array(z.string()).optional(),
slashCommands: z.array(z.string()).optional(),
homeDir: z.string().optional(),
@@ -304,6 +316,7 @@ export const RunnerStateSchema = z.object({
pid: z.number().optional(),
httpPort: z.number().optional(),
startedAt: z.number().optional(),
capabilities: z.object({ piExistingSessionResume: z.literal(true).optional() }).optional(),
shutdownRequestedAt: z.number().optional(),
shutdownSource: z.union([z.enum(['mobile-app', 'cli', 'os-signal', 'unknown']), z.string()]).optional(),
lastSpawnError: z.object({