@@ -7,84 +7,36 @@ import type { UnifiedMessage } from "../../state/atoms/ui.js"
77import type { ExtensionChatMessage } from "../../types/messages.js"
88import 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