mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-10 02:24:35 +08:00
- Implemented share token creation and revocation for CLI sessions. - Added a new page for viewing shared CLI sessions with SSE support. - Introduced hooks for fetching and managing CLI session shares. - Enhanced the IssueTerminalTab component to handle share tokens and display active shares. - Updated API routes to support fetching and revoking share tokens. - Added unit tests for the CLI session share manager and rate limiter. - Updated localization files to include new strings for sharing functionality.
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { existsSync, mkdirSync, appendFileSync } from 'fs';
|
|
import path from 'path';
|
|
|
|
export type CliSessionAuditEventType =
|
|
| 'session_created'
|
|
| 'session_closed'
|
|
| 'session_send'
|
|
| 'session_execute'
|
|
| 'session_resize'
|
|
| 'session_share_created'
|
|
| 'session_share_revoked'
|
|
| 'session_idle_reaped';
|
|
|
|
export interface CliSessionAuditEvent {
|
|
type: CliSessionAuditEventType;
|
|
timestamp: string;
|
|
projectRoot: string;
|
|
sessionKey?: string;
|
|
tool?: string;
|
|
resumeKey?: string;
|
|
workingDir?: string;
|
|
ip?: string;
|
|
userAgent?: string;
|
|
details?: Record<string, unknown>;
|
|
}
|
|
|
|
function auditFilePath(projectRoot: string): string {
|
|
return path.join(projectRoot, '.workflow', 'audit', 'cli-sessions.jsonl');
|
|
}
|
|
|
|
export function appendCliSessionAudit(event: CliSessionAuditEvent): void {
|
|
try {
|
|
const filePath = auditFilePath(event.projectRoot);
|
|
const dir = path.dirname(filePath);
|
|
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
appendFileSync(filePath, JSON.stringify(event) + '\n', { encoding: 'utf8' });
|
|
} catch {
|
|
// Best-effort: never fail API requests due to audit write errors.
|
|
}
|
|
}
|