Skip to content

Commit 7387a25

Browse files
author
catlog22
committed
feat: 引入智能内容格式化器以优化 CLI 输出的格式化处理
1 parent e1eafed commit 7387a25

6 files changed

Lines changed: 351 additions & 18 deletions

File tree

ccw/src/core/routes/claude-routes.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -556,8 +556,9 @@ export async function handleClaudeRoutes(ctx: RouteContext): Promise<boolean> {
556556
}
557557

558558
try {
559-
// Import CLI executor
559+
// Import CLI executor and content formatter
560560
const { executeCliTool } = await import('../../tools/cli-executor.js');
561+
const { SmartContentFormatter } = await import('../../tools/cli-output-converter.js');
561562

562563
// Determine file path based on level
563564
let filePath: string;
@@ -628,8 +629,8 @@ export async function handleClaudeRoutes(ctx: RouteContext): Promise<boolean> {
628629
category: 'internal',
629630
id: syncId
630631
}, (unit) => {
631-
// CliOutputUnit handler: convert to string content for broadcast
632-
const content = typeof unit.content === 'string' ? unit.content : JSON.stringify(unit.content);
632+
// CliOutputUnit handler: use SmartContentFormatter for intelligent formatting
633+
const content = SmartContentFormatter.format(unit.content, unit.type) || JSON.stringify(unit.content);
633634
broadcastToClients({
634635
type: 'CLI_OUTPUT',
635636
payload: {

ccw/src/core/routes/cli-routes.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
getEnrichedConversation,
2424
getHistoryWithNativeInfo
2525
} from '../../tools/cli-executor.js';
26+
import { SmartContentFormatter } from '../../tools/cli-output-converter.js';
2627
import { generateSmartContext, formatSmartContext } from '../../tools/smart-context.js';
2728
import {
2829
loadCliConfig,
@@ -564,8 +565,8 @@ export async function handleCliRoutes(ctx: RouteContext): Promise<boolean> {
564565
parentExecutionId,
565566
stream: true
566567
}, (unit) => {
567-
// CliOutputUnit handler: convert to string content
568-
const content = typeof unit.content === 'string' ? unit.content : JSON.stringify(unit.content);
568+
// CliOutputUnit handler: use SmartContentFormatter for intelligent formatting
569+
const content = SmartContentFormatter.format(unit.content, unit.type) || JSON.stringify(unit.content);
569570

570571
// Append to active execution buffer
571572
const activeExec = activeExecutions.get(executionId);

ccw/src/core/routes/memory-routes.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { join, isAbsolute, extname } from 'path';
55
import { homedir } from 'os';
66
import { getMemoryStore } from '../memory-store.js';
77
import { executeCliTool } from '../../tools/cli-executor.js';
8+
import { SmartContentFormatter } from '../../tools/cli-output-converter.js';
89

910
/**
1011
* Route context interface
@@ -1008,8 +1009,8 @@ RULES: Be concise. Focus on practical understanding. Include function signatures
10081009
category: 'internal',
10091010
id: syncId
10101011
}, (unit) => {
1011-
// CliOutputUnit handler: convert to string content for broadcast
1012-
const content = typeof unit.content === 'string' ? unit.content : JSON.stringify(unit.content);
1012+
// CliOutputUnit handler: use SmartContentFormatter for intelligent formatting
1013+
const content = SmartContentFormatter.format(unit.content, unit.type) || JSON.stringify(unit.content);
10131014
broadcastToClients({
10141015
type: 'CLI_OUTPUT',
10151016
payload: {

ccw/src/core/routes/rules-routes.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { readFileSync, existsSync, readdirSync, unlinkSync, promises as fsPromis
66
import { join } from 'path';
77
import { homedir } from 'os';
88
import { executeCliTool } from '../../tools/cli-executor.js';
9+
import { SmartContentFormatter } from '../../tools/cli-output-converter.js';
910
import type { RouteContext } from './types.js';
1011

1112
interface ParsedRuleFrontmatter {
@@ -662,8 +663,8 @@ FILE NAME: ${fileName}`;
662663
// Create onOutput callback for real-time streaming
663664
const onOutput = broadcastToClients
664665
? (unit: import('../../tools/cli-output-converter.js').CliOutputUnit) => {
665-
// CliOutputUnit handler: convert to string content for broadcast
666-
const content = typeof unit.content === 'string' ? unit.content : JSON.stringify(unit.content);
666+
// CliOutputUnit handler: use SmartContentFormatter for intelligent formatting
667+
const content = SmartContentFormatter.format(unit.content, unit.type) || JSON.stringify(unit.content);
667668
broadcastToClients({
668669
type: 'CLI_OUTPUT',
669670
payload: {
@@ -749,8 +750,8 @@ FILE NAME: ${fileName}`;
749750
// Create onOutput callback for review step
750751
const reviewOnOutput = broadcastToClients
751752
? (unit: import('../../tools/cli-output-converter.js').CliOutputUnit) => {
752-
// CliOutputUnit handler: convert to string content for broadcast
753-
const content = typeof unit.content === 'string' ? unit.content : JSON.stringify(unit.content);
753+
// CliOutputUnit handler: use SmartContentFormatter for intelligent formatting
754+
const content = SmartContentFormatter.format(unit.content, unit.type) || JSON.stringify(unit.content);
754755
broadcastToClients({
755756
type: 'CLI_OUTPUT',
756757
payload: {

ccw/src/core/routes/skills-routes.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { readFileSync, existsSync, readdirSync, statSync, unlinkSync, promises a
66
import { join } from 'path';
77
import { homedir } from 'os';
88
import { executeCliTool } from '../../tools/cli-executor.js';
9+
import { SmartContentFormatter } from '../../tools/cli-output-converter.js';
910
import { validatePath as validateAllowedPath } from '../../utils/path-validator.js';
1011
import type { RouteContext } from './types.js';
1112

@@ -580,8 +581,8 @@ Create a new Claude Code skill with the following specifications:
580581
// Create onOutput callback for real-time streaming
581582
const onOutput = broadcastToClients
582583
? (unit: import('../../tools/cli-output-converter.js').CliOutputUnit) => {
583-
// CliOutputUnit handler: convert to string content for broadcast
584-
const content = typeof unit.content === 'string' ? unit.content : JSON.stringify(unit.content);
584+
// CliOutputUnit handler: use SmartContentFormatter for intelligent formatting
585+
const content = SmartContentFormatter.format(unit.content, unit.type) || JSON.stringify(unit.content);
585586
broadcastToClients({
586587
type: 'CLI_OUTPUT',
587588
payload: {

0 commit comments

Comments
 (0)