15 lines
844 B
TypeScript
15 lines
844 B
TypeScript
import { rm } from 'node:fs/promises'
|
|
import { join, relative, resolve, sep } from 'node:path'
|
|
|
|
/** Encoded identity is one path component even for imported/untrusted session identifiers. */
|
|
export function subagentSessionDirectory(userData: string, sessionId: string): string {
|
|
return join(userData, 'subagent-sessions', 'session-' + Buffer.from(sessionId).toString('base64url'))
|
|
}
|
|
export async function removeSubagentTranscripts(userData: string, sessionId: string): Promise<void> {
|
|
const base = resolve(userData, 'subagent-sessions')
|
|
const target = resolve(subagentSessionDirectory(userData, sessionId))
|
|
const child = relative(base, target)
|
|
if (!child.startsWith('session-') || child.includes(sep) || child === 'session-') throw new Error('无效的子智能体记录目录')
|
|
await rm(target, { recursive: true, force: true })
|
|
}
|