mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-30 04:30:48 +00:00
feat(export): enhance JSONL and Markdown formatters with comprehensive metadata
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
parent
ccecc472dc
commit
186103fe4e
2 changed files with 127 additions and 9 deletions
|
|
@ -12,6 +12,7 @@ import type { ExportSessionData } from '../types.js';
|
|||
*/
|
||||
export function toJsonl(sessionData: ExportSessionData): string {
|
||||
const lines: string[] = [];
|
||||
const sourceMetadata = sessionData.metadata;
|
||||
|
||||
// Add session metadata as the first line
|
||||
const metadata: Record<string, unknown> = {
|
||||
|
|
@ -20,9 +21,54 @@ export function toJsonl(sessionData: ExportSessionData): string {
|
|||
startTime: sessionData.startTime,
|
||||
};
|
||||
|
||||
// Add requestId if available
|
||||
if (sessionData.metadata?.requestId) {
|
||||
metadata['requestId'] = sessionData.metadata.requestId;
|
||||
// Add all metadata fields if available
|
||||
if (sourceMetadata?.exportTime) {
|
||||
metadata['exportTime'] = sourceMetadata.exportTime;
|
||||
}
|
||||
if (sourceMetadata?.cwd) {
|
||||
metadata['cwd'] = sourceMetadata.cwd;
|
||||
}
|
||||
if (sourceMetadata?.gitRepo) {
|
||||
metadata['gitRepo'] = sourceMetadata.gitRepo;
|
||||
}
|
||||
if (sourceMetadata?.gitBranch) {
|
||||
metadata['gitBranch'] = sourceMetadata.gitBranch;
|
||||
}
|
||||
if (sourceMetadata?.model) {
|
||||
metadata['model'] = sourceMetadata.model;
|
||||
}
|
||||
if (sourceMetadata?.channel) {
|
||||
metadata['channel'] = sourceMetadata.channel;
|
||||
}
|
||||
if (sourceMetadata?.promptCount !== undefined) {
|
||||
metadata['promptCount'] = sourceMetadata.promptCount;
|
||||
}
|
||||
if (sourceMetadata?.contextUsagePercent !== undefined) {
|
||||
metadata['contextUsagePercent'] = sourceMetadata.contextUsagePercent;
|
||||
}
|
||||
if (sourceMetadata?.contextWindowSize !== undefined) {
|
||||
metadata['contextWindowSize'] = sourceMetadata.contextWindowSize;
|
||||
}
|
||||
if (sourceMetadata?.totalTokens !== undefined) {
|
||||
metadata['totalTokens'] = sourceMetadata.totalTokens;
|
||||
}
|
||||
if (sourceMetadata?.filesRead !== undefined) {
|
||||
metadata['filesRead'] = sourceMetadata.filesRead;
|
||||
}
|
||||
if (sourceMetadata?.filesWritten !== undefined) {
|
||||
metadata['filesWritten'] = sourceMetadata.filesWritten;
|
||||
}
|
||||
if (sourceMetadata?.linesAdded !== undefined) {
|
||||
metadata['linesAdded'] = sourceMetadata.linesAdded;
|
||||
}
|
||||
if (sourceMetadata?.linesRemoved !== undefined) {
|
||||
metadata['linesRemoved'] = sourceMetadata.linesRemoved;
|
||||
}
|
||||
if (sourceMetadata?.uniqueFiles && sourceMetadata.uniqueFiles.length > 0) {
|
||||
metadata['uniqueFiles'] = sourceMetadata.uniqueFiles;
|
||||
}
|
||||
if (sourceMetadata?.requestId) {
|
||||
metadata['requestId'] = sourceMetadata.requestId;
|
||||
}
|
||||
|
||||
lines.push(JSON.stringify(metadata));
|
||||
|
|
|
|||
|
|
@ -11,20 +11,92 @@ import type { ExportSessionData, ExportMessage } from '../types.js';
|
|||
*/
|
||||
export function toMarkdown(sessionData: ExportSessionData): string {
|
||||
const lines: string[] = [];
|
||||
const metadata = sessionData.metadata;
|
||||
|
||||
// Add header with metadata
|
||||
lines.push('# Chat Session Export\n');
|
||||
lines.push(`- **Session ID**: \`${sanitizeText(sessionData.sessionId)}\``);
|
||||
lines.push(`- **Start Time**: ${sanitizeText(sessionData.startTime)}`);
|
||||
|
||||
// Add requestId if available
|
||||
if (sessionData.metadata?.requestId) {
|
||||
lines.push(
|
||||
`- **Request ID**: \`${sanitizeText(sessionData.metadata.requestId)}\``,
|
||||
);
|
||||
// Add exportTime if available
|
||||
if (metadata?.exportTime) {
|
||||
lines.push(`- **Exported**: ${sanitizeText(metadata.exportTime)}`);
|
||||
}
|
||||
|
||||
// Add requestId if available
|
||||
if (metadata?.requestId) {
|
||||
lines.push(`- **Request ID**: \`${sanitizeText(metadata.requestId)}\``);
|
||||
}
|
||||
|
||||
lines.push('');
|
||||
|
||||
// Add context info
|
||||
if (metadata?.cwd) {
|
||||
lines.push(`- **Working Directory**: \`${sanitizeText(metadata.cwd)}\``);
|
||||
}
|
||||
if (metadata?.gitRepo) {
|
||||
lines.push(`- **Git Repository**: ${sanitizeText(metadata.gitRepo)}`);
|
||||
}
|
||||
if (metadata?.gitBranch) {
|
||||
lines.push(`- **Git Branch**: \`${sanitizeText(metadata.gitBranch)}\``);
|
||||
}
|
||||
|
||||
lines.push('');
|
||||
|
||||
// Add model info
|
||||
if (metadata?.model) {
|
||||
lines.push(`- **Model**: ${sanitizeText(metadata.model)}`);
|
||||
}
|
||||
if (metadata?.channel) {
|
||||
lines.push(`- **Channel**: ${sanitizeText(metadata.channel)}`);
|
||||
}
|
||||
if (metadata?.promptCount !== undefined) {
|
||||
lines.push(`- **Prompt Count**: ${metadata.promptCount}`);
|
||||
}
|
||||
|
||||
lines.push('');
|
||||
|
||||
// Add token stats
|
||||
if (metadata?.totalTokens !== undefined) {
|
||||
lines.push(`- **Total Tokens**: ${metadata.totalTokens}`);
|
||||
}
|
||||
if (metadata?.contextWindowSize !== undefined) {
|
||||
lines.push(`- **Context Window Size**: ${metadata.contextWindowSize}`);
|
||||
}
|
||||
if (metadata?.contextUsagePercent !== undefined) {
|
||||
lines.push(`- **Context Usage**: ${metadata.contextUsagePercent}%`);
|
||||
}
|
||||
|
||||
lines.push('');
|
||||
|
||||
// Add file operation stats
|
||||
if (metadata?.filesRead !== undefined) {
|
||||
lines.push(`- **Files Read**: ${metadata.filesRead}`);
|
||||
}
|
||||
if (metadata?.filesWritten !== undefined) {
|
||||
lines.push(`- **Files Written**: ${metadata.filesWritten}`);
|
||||
}
|
||||
if (metadata?.linesAdded !== undefined) {
|
||||
lines.push(`- **Lines Added**: ${metadata.linesAdded}`);
|
||||
}
|
||||
if (metadata?.linesRemoved !== undefined) {
|
||||
lines.push(`- **Lines Removed**: ${metadata.linesRemoved}`);
|
||||
}
|
||||
|
||||
// Add unique files list if available
|
||||
if (metadata?.uniqueFiles && metadata.uniqueFiles.length > 0) {
|
||||
lines.push('');
|
||||
lines.push('<details>');
|
||||
lines.push(
|
||||
`<summary><strong>Unique Files Referenced (${metadata.uniqueFiles.length})</strong></summary>`,
|
||||
);
|
||||
lines.push('');
|
||||
for (const file of metadata.uniqueFiles) {
|
||||
lines.push(`- \`${sanitizeText(file)}\``);
|
||||
}
|
||||
lines.push('</details>');
|
||||
}
|
||||
|
||||
lines.push(`- **Exported**: ${new Date().toISOString()}`);
|
||||
lines.push('\n---\n');
|
||||
|
||||
// Process each message
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue