@@ -58,6 +58,49 @@ describe("clean-artifact-title utility", () => {
5858 expect ( src ) . toMatch ( / S u r e / ) ;
5959 expect ( src ) . toMatch ( / H m m / ) ;
6060 } ) ;
61+
62+ it ( "detects 'Absolutely' preamble pattern" , ( ) => {
63+ const src = readFileSync ( utilPath , "utf-8" ) ;
64+ expect ( src ) . toMatch ( / A b s o l u t e l y / ) ;
65+ } ) ;
66+
67+ it ( "detects 'Assuming ' preamble pattern" , ( ) => {
68+ const src = readFileSync ( utilPath , "utf-8" ) ;
69+ expect ( src ) . toMatch ( / A s s u m i n g / ) ;
70+ } ) ;
71+
72+ it ( "detects 'Here\\'' (Here's) preamble pattern" , ( ) => {
73+ const src = readFileSync ( utilPath , "utf-8" ) ;
74+ expect ( src ) . toMatch ( / H e r e ' / ) ;
75+ } ) ;
76+
77+ it ( "detects 'I can ' preamble pattern" , ( ) => {
78+ const src = readFileSync ( utilPath , "utf-8" ) ;
79+ expect ( src ) . toMatch ( / I c a n / ) ;
80+ } ) ;
81+
82+ it ( "desktop CONVERSATIONAL_PATTERN matches sidecar patterns" , ( ) => {
83+ const src = readFileSync ( utilPath , "utf-8" ) ;
84+ const sidecarSrc = readFileSync (
85+ resolve ( __dirname , "../../packages/sidecar/src/artifact-extractor/title-cleaner.ts" ) ,
86+ "utf-8" ,
87+ ) ;
88+
89+ // Extract pattern alternatives from both files
90+ const extractAlternatives = ( source : string ) : string [ ] => {
91+ const match = source . match ( / C O N V E R S A T I O N A L _ P A T T E R N \s * = \s * \/ \^ \( ( [ ^ ) ] + ) \) \/ / ) ;
92+ if ( ! match ) return [ ] ;
93+ return match [ 1 ] . split ( "|" ) . map ( ( s ) => s . trim ( ) ) . sort ( ) ;
94+ } ;
95+
96+ const desktopAlts = extractAlternatives ( src ) ;
97+ const sidecarAlts = extractAlternatives ( sidecarSrc ) ;
98+
99+ // Every sidecar pattern should be present in desktop
100+ for ( const pattern of sidecarAlts ) {
101+ expect ( desktopAlts ) . toContain ( pattern ) ;
102+ }
103+ } ) ;
61104} ) ;
62105
63106describe ( "ArtifactCard summary filtering" , ( ) => {
0 commit comments