Skip to content

Commit 22bdbf6

Browse files
committed
Simplify JSON mangling
1 parent e0e01b2 commit 22bdbf6

File tree

1 file changed

+17
-65
lines changed

1 file changed

+17
-65
lines changed

cli/src/ui/utils/jsonOutput.ts

Lines changed: 17 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -7,84 +7,36 @@ import type { UnifiedMessage } from "../../state/atoms/ui.js"
77
import type { ExtensionChatMessage } from "../../types/messages.js"
88
import type { CliMessage } from "../../types/cli.js"
99

10-
/**
11-
* JSON output format for a message
12-
*/
13-
export interface JsonMessageOutput {
14-
timestamp: number
15-
source: "cli" | "extension"
16-
type: string
17-
content?: string
18-
metadata?: Record<string, any>
19-
}
20-
2110
/**
2211
* Convert a CLI message to JSON output format
2312
*/
24-
function formatCliMessage(message: CliMessage): JsonMessageOutput {
13+
function formatCliMessage(message: CliMessage) {
14+
const { ts, ...restOfMessage } = message
2515
return {
26-
timestamp: message.ts,
16+
timestamp: ts,
2717
source: "cli",
28-
type: message.type,
29-
content: message.content,
30-
...(message.metadata && { metadata: message.metadata }),
18+
...restOfMessage,
3119
}
3220
}
3321

3422
/**
3523
* Convert an extension message to JSON output format
3624
*/
37-
function formatExtensionMessage(message: ExtensionChatMessage): JsonMessageOutput {
38-
const output: JsonMessageOutput = {
39-
timestamp: message.ts,
40-
source: "extension",
41-
type: message.type,
42-
}
25+
function formatExtensionMessage(message: ExtensionChatMessage) {
26+
const { ts, text, ...restOfMessage } = message
4327

44-
// Add content from text field if available
45-
if (message.text) {
46-
output.content = message.text
47-
}
48-
49-
// Build metadata object with relevant fields
50-
const metadata: Record<string, any> = {}
51-
52-
// Add message subtype (say/ask)
53-
if (message.type === "say" && message.say) {
54-
metadata.say = message.say
55-
}
56-
if (message.type === "ask" && message.ask) {
57-
metadata.ask = message.ask
58-
}
59-
60-
// Add partial status
61-
if (message.partial !== undefined) {
62-
metadata.partial = message.partial
63-
}
64-
65-
// Add protection status
66-
if (message.isProtected !== undefined) {
67-
metadata.isProtected = message.isProtected
68-
}
69-
70-
// Add answered status
71-
if (message.isAnswered !== undefined) {
72-
metadata.isAnswered = message.isAnswered
73-
}
74-
75-
// Add images if present
76-
if (message.images && message.images.length > 0) {
77-
metadata.images = message.images
78-
}
79-
80-
// Add any additional metadata from the message
81-
if (message.metadata) {
82-
metadata.messageMetadata = message.metadata
28+
const output: Record<string, unknown> = {
29+
timestamp: ts,
30+
source: "extension",
31+
...restOfMessage,
8332
}
8433

85-
// Only add metadata if it has content
86-
if (Object.keys(metadata).length > 0) {
87-
output.metadata = metadata
34+
try {
35+
output.metadata = JSON.parse(text || "")
36+
} catch {
37+
if (text) {
38+
output.content = text
39+
}
8840
}
8941

9042
return output
@@ -93,7 +45,7 @@ function formatExtensionMessage(message: ExtensionChatMessage): JsonMessageOutpu
9345
/**
9446
* Convert a unified message to JSON output format
9547
*/
96-
export function formatMessageAsJson(unifiedMessage: UnifiedMessage): JsonMessageOutput {
48+
export function formatMessageAsJson(unifiedMessage: UnifiedMessage) {
9749
if (unifiedMessage.source === "cli") {
9850
return formatCliMessage(unifiedMessage.message)
9951
} else {

0 commit comments

Comments
 (0)