forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchat.json
More file actions
1000 lines (1000 loc) · 49.2 KB
/
Copy pathchat.json
File metadata and controls
1000 lines (1000 loc) · 49.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"_meta": {
"description": "D4 chat fixtures for langgraph-python",
"sourceFile": "feature-parity.json",
"created": "2026-05-21"
},
"fixtures": [
{
"match": {
"toolCallId": "call_fp_generate_a2ui_sales_dashboard_001",
"context": "langgraph-python"
},
"response": {
"content": "Here's your sales dashboard — total revenue is $1.2M (+12% MoM), 342 new customers, and 4.2% conversion. The pie shows revenue split by category and the bar chart tracks monthly sales."
}
},
{
"match": {
"userMessage": "with total revenue, new customers, and conversion rate metrics",
"toolName": "_design_a2ui_surface",
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_design_a2ui_surface_sales_dashboard_001",
"name": "_design_a2ui_surface",
"arguments": "{\"surfaceId\":\"beautiful-chat-sales-dashboard\",\"catalogId\":\"copilotkit://app-dashboard-catalog\",\"components\":[{\"id\":\"root\",\"component\":\"Column\",\"children\":[\"row-metrics\",\"row-charts\"],\"gap\":16},{\"id\":\"row-metrics\",\"component\":\"Row\",\"children\":[\"card-revenue\",\"card-customers\",\"card-conversion\"],\"gap\":16},{\"id\":\"card-revenue\",\"component\":\"DashboardCard\",\"title\":\"Total Revenue\",\"child\":\"metric-revenue\"},{\"id\":\"metric-revenue\",\"component\":\"Metric\",\"label\":\"Total Revenue\",\"value\":\"$1.2M\",\"trend\":\"up\",\"trendValue\":\"+12% MoM\"},{\"id\":\"card-customers\",\"component\":\"DashboardCard\",\"title\":\"New Customers\",\"child\":\"metric-customers\"},{\"id\":\"metric-customers\",\"component\":\"Metric\",\"label\":\"New Customers\",\"value\":\"342\",\"trend\":\"up\",\"trendValue\":\"+8% MoM\"},{\"id\":\"card-conversion\",\"component\":\"DashboardCard\",\"title\":\"Conversion Rate\",\"child\":\"metric-conversion\"},{\"id\":\"metric-conversion\",\"component\":\"Metric\",\"label\":\"Conversion Rate\",\"value\":\"4.2%\",\"trend\":\"neutral\"},{\"id\":\"row-charts\",\"component\":\"Row\",\"children\":[\"card-pie\",\"card-bar\"],\"gap\":16},{\"id\":\"card-pie\",\"component\":\"DashboardCard\",\"title\":\"Revenue by Category\",\"child\":\"pie-revenue\"},{\"id\":\"pie-revenue\",\"component\":\"PieChart\",\"data\":[{\"label\":\"Electronics\",\"value\":42000},{\"label\":\"Clothing\",\"value\":28000},{\"label\":\"Food\",\"value\":18000},{\"label\":\"Books\",\"value\":12000}]},{\"id\":\"card-bar\",\"component\":\"DashboardCard\",\"title\":\"Monthly Sales\",\"child\":\"bar-monthly\"},{\"id\":\"bar-monthly\",\"component\":\"BarChart\",\"data\":[{\"label\":\"Jan\",\"value\":50000},{\"label\":\"Feb\",\"value\":62000},{\"label\":\"Mar\",\"value\":58000},{\"label\":\"Apr\",\"value\":71000},{\"label\":\"May\",\"value\":80000},{\"label\":\"Jun\",\"value\":92000}]}]}"
}
]
}
},
{
"match": {
"userMessage": "with total revenue, new customers, and conversion rate metrics",
"toolName": "render_a2ui",
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_render_a2ui_sales_dashboard_001",
"name": "render_a2ui",
"arguments": "{\"surfaceId\":\"beautiful-chat-sales-dashboard\",\"catalogId\":\"copilotkit://app-dashboard-catalog\",\"components\":[{\"id\":\"root\",\"component\":\"Column\",\"children\":[\"row-metrics\",\"row-charts\"],\"gap\":16},{\"id\":\"row-metrics\",\"component\":\"Row\",\"children\":[\"card-revenue\",\"card-customers\",\"card-conversion\"],\"gap\":16},{\"id\":\"card-revenue\",\"component\":\"DashboardCard\",\"title\":\"Total Revenue\",\"child\":\"metric-revenue\"},{\"id\":\"metric-revenue\",\"component\":\"Metric\",\"label\":\"Total Revenue\",\"value\":\"$1.2M\",\"trend\":\"up\",\"trendValue\":\"+12% MoM\"},{\"id\":\"card-customers\",\"component\":\"DashboardCard\",\"title\":\"New Customers\",\"child\":\"metric-customers\"},{\"id\":\"metric-customers\",\"component\":\"Metric\",\"label\":\"New Customers\",\"value\":\"342\",\"trend\":\"up\",\"trendValue\":\"+8% MoM\"},{\"id\":\"card-conversion\",\"component\":\"DashboardCard\",\"title\":\"Conversion Rate\",\"child\":\"metric-conversion\"},{\"id\":\"metric-conversion\",\"component\":\"Metric\",\"label\":\"Conversion Rate\",\"value\":\"4.2%\",\"trend\":\"neutral\"},{\"id\":\"row-charts\",\"component\":\"Row\",\"children\":[\"card-pie\",\"card-bar\"],\"gap\":16},{\"id\":\"card-pie\",\"component\":\"DashboardCard\",\"title\":\"Revenue by Category\",\"child\":\"pie-revenue\"},{\"id\":\"pie-revenue\",\"component\":\"PieChart\",\"data\":[{\"label\":\"Electronics\",\"value\":42000},{\"label\":\"Clothing\",\"value\":28000},{\"label\":\"Food\",\"value\":18000},{\"label\":\"Books\",\"value\":12000}]},{\"id\":\"card-bar\",\"component\":\"DashboardCard\",\"title\":\"Monthly Sales\",\"child\":\"bar-monthly\"},{\"id\":\"bar-monthly\",\"component\":\"BarChart\",\"data\":[{\"label\":\"Jan\",\"value\":50000},{\"label\":\"Feb\",\"value\":62000},{\"label\":\"Mar\",\"value\":58000},{\"label\":\"Apr\",\"value\":71000},{\"label\":\"May\",\"value\":80000},{\"label\":\"Jun\",\"value\":92000}]}]}"
}
]
}
},
{
"match": {
"userMessage": "with total revenue, new customers, and conversion rate metrics",
"toolName": "generate_a2ui",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_generate_a2ui_sales_dashboard_001",
"name": "generate_a2ui",
"arguments": "{}"
}
]
}
},
{
"match": {
"toolCallId": "call_fp_get_weather_001",
"context": "langgraph-python"
},
"response": {
"content": "The current weather in San Francisco is 68°F and sunny with light winds. Perfect weather for a walk outside!"
}
},
{
"match": {
"toolCallId": "call_fp_render_pie_chart_001",
"context": "langgraph-python"
},
"response": {
"content": "Pie chart rendered above — Electronics is the largest slice at $42,000, followed by Clothing, Food, and Books."
}
},
{
"match": {
"toolCallId": "call_fp_show_card_001",
"context": "langgraph-python"
},
"response": {
"content": "Here is a quick card for Ada Lovelace — the rendered card above shows a short biography. Let me know if you want a deeper dive on her work or a different historical figure."
}
},
{
"match": {
"toolCallId": "call_fp_request_approval_001",
"context": "langgraph-python"
},
"response": {
"content": "Approved — processing the $50 refund to customer #12345 now."
}
},
{
"match": {
"toolCallId": "call_fp_book_call_001",
"context": "langgraph-python"
},
"response": {
"content": "Booked Alice's onboarding call for the time you selected — calendar invite is on its way."
}
},
{
"match": {
"toolCallId": "call_fp_set_notes_001",
"context": "langgraph-python"
},
"response": {
"content": "Got it — I have noted that your favorite color is blue."
}
},
{
"match": {
"toolCallId": "call_fp_critique_agent_001",
"context": "langgraph-python"
},
"response": {
"content": "Here is the summary, after research → drafting → critique:\n\nRemote work returns roughly ten hours a week to employees by eliminating the commute, and repeated surveys show meaningfully higher job satisfaction among remote workers. Employers benefit too: a geographically unbounded talent pool and lower office overhead. The honest counterweight is that ad-hoc collaboration, mentorship of junior staff, and cultural cohesion all degrade without intentional rituals to replace what an office provided implicitly."
}
},
{
"match": {
"toolCallId": "call_fp_writing_agent_001",
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_critique_agent_001",
"name": "critique_agent",
"arguments": "{\"draft\":\"Remote work returns roughly ten hours a week to employees by eliminating the commute, and repeated surveys show meaningfully higher job satisfaction among remote workers. Employers benefit too: a geographically unbounded talent pool and lower office overhead. The honest counterweight is that ad-hoc collaboration, mentorship of junior staff, and cultural cohesion all degrade without intentional rituals to replace what an office provided implicitly.\",\"instructions\":\"Check factual claims, tighten prose, flag any unsupported assertions.\"}"
}
]
}
},
{
"match": {
"toolCallId": "call_fp_research_agent_001",
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_writing_agent_001",
"name": "writing_agent",
"arguments": "{\"brief\":\"One-paragraph summary on the benefits of remote work, grounded in the research facts.\",\"facts\":[\"Eliminating commutes returns roughly ten hours per week per employee.\",\"Repeated surveys show meaningfully higher job satisfaction among remote workers.\",\"Employers gain access to a geographically unbounded talent pool.\",\"Office overhead (leases, utilities, maintenance) drops significantly.\",\"Trade-offs include reduced ad-hoc collaboration, harder mentorship of junior staff, and erosion of cultural cohesion without intentional replacement rituals.\"]}"
}
]
}
},
{
"match": {
"toolCallId": "call_fp_pie_chart_001",
"context": "langgraph-python"
},
"response": {
"content": "Pie chart rendered above — Electronics is the largest slice, followed by Clothing, Food, and Books."
}
},
{
"match": {
"toolCallId": "call_fp_bar_chart_001",
"context": "langgraph-python"
},
"response": {
"content": "Bar chart rendered above — Salaries dominate monthly spend, with Rent, Marketing, and Travel rounding out the breakdown."
}
},
{
"match": {
"toolCallId": "call_fp_pie_chart_002",
"context": "langgraph-python"
},
"response": {
"content": "Pie chart rendered above — Organic Search drives most traffic, followed by Direct, Social, and Referral."
}
},
{
"match": {
"toolCallId": "call_fp_pie_chart_003",
"context": "langgraph-python"
},
"response": {
"content": "Pie chart rendered above — Apple and Samsung lead, with Xiaomi third and the long tail under \"Others\"."
}
},
{
"match": {
"toolCallId": "call_fp_bar_chart_002",
"context": "langgraph-python"
},
"response": {
"content": "Bar chart rendered above — Q4 was the strongest quarter, with Q2 close behind."
}
},
{
"match": {
"toolCallId": "call_fp_pie_chart_004",
"context": "langgraph-python"
},
"response": {
"content": "Pie chart rendered above — Electronics is the largest slice, followed by Clothing, Food, and Books."
}
},
{
"match": {
"toolCallId": "call_fp_bar_chart_003",
"context": "langgraph-python"
},
"response": {
"content": "Bar chart rendered above — monthly expenses ranged from $12k in January to $15.8k in April."
}
},
{
"match": {
"toolCallId": "call_fp_schedule_time_001",
"context": "langgraph-python"
},
"response": {
"content": "Meeting scheduled — calendar invite is on its way."
}
},
{
"match": {
"toolCallId": "call_fp_search_flights_001",
"context": "langgraph-python"
},
"response": {
"content": "Two flights shown above — United at $349 (08:00) and Delta at $289 (10:15), both on time."
}
},
{
"match": {
"toolCallId": "call_fp_toggle_theme_001",
"context": "langgraph-python"
},
"response": {
"content": "Theme toggled."
}
},
{
"match": {
"userMessage": "What is the largest continent?",
"context": "langgraph-python"
},
"response": {
"content": "Asia is the largest continent — about 30% of Earth's land area, home to over 4.6 billion people."
}
},
{
"_comment": "shared-state-read — e2e test sends 'What recipe am I making?' via the sidebar. The agent reads the shared recipe state (title, ingredients, instructions) and responds with a summary.",
"match": {
"userMessage": "What recipe am I making",
"context": "langgraph-python"
},
"response": {
"content": "Based on your current recipe state, you're making **Make Your Recipe** — a dish featuring carrots (3 large, grated) and all-purpose flour (2 cups). The first instruction is to preheat the oven to 350°F (175°C). It looks like a carrot-based bake, perhaps a carrot cake or savory carrot bread. Would you like me to suggest more ingredients or steps?"
}
},
{
"_comment": "Disabled: prior matcher 'weather in San Francisco' load-order-shadowed D6 pills like 'What's the weather in San Francisco?' (custom-catchall) and 'Chain a few tools ... weather in Tokyo' (default-catchall). Mirrors the LGT d4 fix at aimock/d4/langgraph-typescript/chat.json — userMessage renamed to a non-matching sentinel so this entry is effectively dead; downstream D6 fixtures own the get_weather flow for SF.",
"match": {
"userMessage": "_d4_unused_weather_probe_sf",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_get_weather_001",
"name": "get_weather",
"arguments": "{\"location\":\"San Francisco\"}"
}
]
}
},
{
"match": {
"userMessage": "weather summary",
"context": "langgraph-python"
},
"response": {
"content": "The current weather in Tokyo is 22°C with partly cloudy skies. Humidity is at 65% with light winds from the east at 12 km/h. Perfect weather for a walk outside!"
}
},
{
"match": {
"userMessage": "revenue distribution by category",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_pie_chart_001",
"name": "pieChart",
"arguments": "{\"title\":\"Revenue by Category\",\"description\":\"Breakdown of revenue across product categories\",\"data\":[{\"label\":\"Electronics\",\"value\":42000},{\"label\":\"Clothing\",\"value\":28000},{\"label\":\"Food\",\"value\":18000},{\"label\":\"Books\",\"value\":12000}]}"
}
]
}
},
{
"match": {
"userMessage": "expenses by category",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_bar_chart_001",
"name": "barChart",
"arguments": "{\"title\":\"Expenses by Category\",\"description\":\"Monthly expense breakdown\",\"data\":[{\"label\":\"Rent\",\"value\":15000},{\"label\":\"Salaries\",\"value\":80000},{\"label\":\"Marketing\",\"value\":12000},{\"label\":\"Travel\",\"value\":5000}]}"
}
]
}
},
{
"match": {
"userMessage": "pie chart of website traffic by source",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_pie_chart_002",
"name": "render_pie_chart",
"arguments": "{\"title\":\"Website Traffic by Source\",\"description\":\"Traffic sources this month\",\"data\":[{\"label\":\"Organic Search\",\"value\":45},{\"label\":\"Direct\",\"value\":25},{\"label\":\"Social\",\"value\":18},{\"label\":\"Referral\",\"value\":12}]}"
}
]
}
},
{
"match": {
"userMessage": "smartphone market share by brand",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_pie_chart_003",
"name": "render_pie_chart",
"arguments": "{\"title\":\"Smartphone Market Share\",\"description\":\"Global smartphone market share by brand\",\"data\":[{\"label\":\"Apple\",\"value\":28},{\"label\":\"Samsung\",\"value\":22},{\"label\":\"Xiaomi\",\"value\":14},{\"label\":\"Others\",\"value\":36}]}"
}
]
}
},
{
"match": {
"userMessage": "bar chart of quarterly sales for Q1, Q2, Q3, Q4",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_bar_chart_002",
"name": "render_bar_chart",
"arguments": "{\"title\":\"Quarterly Sales\",\"description\":\"Sales across Q1-Q4\",\"data\":[{\"label\":\"Q1\",\"value\":145000},{\"label\":\"Q2\",\"value\":178000},{\"label\":\"Q3\",\"value\":162000},{\"label\":\"Q4\",\"value\":215000}]}"
}
]
}
},
{
"match": {
"userMessage": "Show me the sales dashboard with metrics and a revenue chart",
"context": "langgraph-python"
},
"response": {
"content": "{\"root\":\"revenue-metric\",\"elements\":{\"revenue-metric\":{\"type\":\"MetricCard\",\"props\":{\"label\":\"Revenue (Q3)\",\"value\":\"$1.24M\",\"trend\":\"+18% vs Q2\"},\"children\":[\"revenue-bar\"]},\"revenue-bar\":{\"type\":\"BarChart\",\"props\":{\"title\":\"Monthly revenue\",\"description\":\"Revenue by month across Q3\",\"data\":[{\"label\":\"Jul\",\"value\":380000},{\"label\":\"Aug\",\"value\":410000},{\"label\":\"Sep\",\"value\":450000}]}}}}"
}
},
{
"match": {
"userMessage": "Break down revenue by category as a pie chart",
"context": "langgraph-python"
},
"response": {
"content": "{\"root\":\"category-pie\",\"elements\":{\"category-pie\":{\"type\":\"PieChart\",\"props\":{\"title\":\"Revenue by category\",\"description\":\"Share of total revenue by product category\",\"data\":[{\"label\":\"Enterprise\",\"value\":540000},{\"label\":\"SMB\",\"value\":310000},{\"label\":\"Self-serve\",\"value\":220000},{\"label\":\"Partner\",\"value\":170000}]}}}}"
}
},
{
"match": {
"userMessage": "Show me monthly expenses as a bar chart",
"context": "langgraph-python"
},
"response": {
"content": "{\"root\":\"expense-bar\",\"elements\":{\"expense-bar\":{\"type\":\"BarChart\",\"props\":{\"title\":\"Monthly expenses\",\"description\":\"Operating expenses by month\",\"data\":[{\"label\":\"Jul\",\"value\":210000},{\"label\":\"Aug\",\"value\":225000},{\"label\":\"Sep\",\"value\":240000}]}}}}"
}
},
{
"match": {
"userMessage": "Show me a Q4 sales dashboard. Include a total-revenue metric card, a pie chart of revenue by segment, and a bar chart of monthly revenue.",
"context": "langgraph-python"
},
"response": {
"content": "{\"ui\":[{\"Markdown\":{\"props\":{\"children\":\"## Q4 Sales Summary\"}}},{\"metric\":{\"props\":{\"label\":\"Total Revenue\",\"value\":\"$1.2M\"}}},{\"pieChart\":{\"props\":{\"title\":\"Revenue by Segment\",\"data\":\"[{\\\"label\\\":\\\"Enterprise\\\",\\\"value\\\":600000},{\\\"label\\\":\\\"SMB\\\",\\\"value\\\":400000},{\\\"label\\\":\\\"Startup\\\",\\\"value\\\":200000}]\"}}},{\"barChart\":{\"props\":{\"title\":\"Monthly Revenue\",\"data\":\"[{\\\"label\\\":\\\"Oct\\\",\\\"value\\\":350000},{\\\"label\\\":\\\"Nov\\\",\\\"value\\\":400000},{\\\"label\\\":\\\"Dec\\\",\\\"value\\\":450000}]\"}}}]}"
}
},
{
"match": {
"userMessage": "Break down Q4 revenue by product category as a pie chart. Include at least four segments with realistic sample values.",
"context": "langgraph-python"
},
"response": {
"content": "{\"ui\":[{\"pieChart\":{\"props\":{\"title\":\"Q4 Revenue by Product Category\",\"data\":\"[{\\\"label\\\":\\\"Software\\\",\\\"value\\\":500000},{\\\"label\\\":\\\"Hardware\\\",\\\"value\\\":300000},{\\\"label\\\":\\\"Consulting\\\",\\\"value\\\":150000},{\\\"label\\\":\\\"Subscriptions\\\",\\\"value\\\":50000}]\"}}}]}"
}
},
{
"match": {
"userMessage": "Show me monthly operating expenses for the last six months as a bar chart with one bar per month.",
"context": "langgraph-python"
},
"response": {
"content": "{\"ui\":[{\"barChart\":{\"props\":{\"title\":\"Monthly Operating Expenses\",\"data\":\"[{\\\"label\\\":\\\"Apr\\\",\\\"value\\\":205000},{\\\"label\\\":\\\"May\\\",\\\"value\\\":215000},{\\\"label\\\":\\\"Jun\\\",\\\"value\\\":222000},{\\\"label\\\":\\\"Jul\\\",\\\"value\\\":228000},{\\\"label\\\":\\\"Aug\\\",\\\"value\\\":234000},{\\\"label\\\":\\\"Sep\\\",\\\"value\\\":241000}]\"}}}]}"
}
},
{
"match": {
"userMessage": "revenue by category as a pie chart",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_pie_chart_004",
"name": "render_pie_chart",
"arguments": "{\"title\":\"Revenue by Category\",\"description\":\"Revenue breakdown by product category\",\"data\":[{\"label\":\"Electronics\",\"value\":42000},{\"label\":\"Clothing\",\"value\":28000},{\"label\":\"Food\",\"value\":18000},{\"label\":\"Books\",\"value\":12000}]}"
}
]
}
},
{
"match": {
"userMessage": "monthly expenses as a bar chart",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_bar_chart_003",
"name": "render_bar_chart",
"arguments": "{\"title\":\"Monthly Expenses\",\"description\":\"Expense breakdown by month\",\"data\":[{\"label\":\"Jan\",\"value\":12000},{\"label\":\"Feb\",\"value\":14500},{\"label\":\"Mar\",\"value\":13200},{\"label\":\"Apr\",\"value\":15800}]}"
}
]
}
},
{
"match": {
"userMessage": "30-minute meeting to learn about CopilotKit",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_schedule_time_001",
"name": "scheduleTime",
"arguments": "{\"reasonForScheduling\":\"Learn about CopilotKit\",\"meetingDuration\":30}"
}
]
}
},
{
"_comment": "Disabled: 'flights from SFO to JFK for next Tuesday' was the exact pill prompt for the D6 beautiful-chat 'Search Flights (A2UI Fixed Schema)' demo, so this d4 fixture load-order-shadowed the d6 beautiful-chat fixture (d4 loads before d6). The d4 chat-roundtrip probe sends 'Hello, please respond with a brief greeting.' / 'What's the weather in San Francisco?' (see harness/src/probes/drivers/d4-chat-roundtrip.ts) — it does not exercise the flights tool, so this entry is dead. Mirrors the disabled-weather pattern earlier in this file (_d4_unused_weather_probe_sf). The d6 beautiful-chat fixture in aimock/d6/langgraph-python/beautiful-chat.json (userMessage matcher 'for next Tuesday') now owns this pill.",
"match": {
"userMessage": "_d4_unused_flights_probe_sfo_jfk",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_search_flights_001",
"name": "search_flights",
"arguments": "{\"origin\":\"SFO\",\"destination\":\"JFK\"}"
}
]
}
},
{
"match": {
"userMessage": "toggle",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_toggle_theme_001",
"name": "toggleTheme",
"arguments": "{}"
}
]
}
},
{
"match": {
"toolCallId": "call_fp_beautiful_chat_manage_todos_001",
"context": "langgraph-python"
},
"response": {
"content": "Done — added three todos about learning CopilotKit to your task manager."
}
},
{
"_comment": "Large chunkSize keeps the manage_todos args (with 4-byte UTF-8 emoji) as a single SSE chunk. aimock chunks via JavaScript .slice() which operates on UTF-16 code units; emoji surrogate pairs split mid-codepoint produce unpaired surrogates that strict pydantic deserializers (e.g. agent_framework_ag_ui) reject with PydanticSerializationError. chunkSize MUST live at the fixture root (alongside match/response) — server.ts:681 reads `fixture.chunkSize`, NOT `response.chunkSize`.",
"match": {
"toolCallId": "call_fp_beautiful_chat_enable_app_mode_001",
"context": "langgraph-python"
},
"chunkSize": 9999,
"response": {
"toolCalls": [
{
"id": "call_fp_beautiful_chat_manage_todos_001",
"name": "manage_todos",
"arguments": "{\"todos\":[{\"id\":\"todo-cpk-1\",\"title\":\"Read the CopilotKit docs\",\"description\":\"Start with the quickstart and explore the core hooks.\",\"emoji\":\"📚\",\"status\":\"pending\"},{\"id\":\"todo-cpk-2\",\"title\":\"Build a CopilotKit prototype\",\"description\":\"Wire up a basic chat and register a frontend tool.\",\"emoji\":\"🚀\",\"status\":\"pending\"},{\"id\":\"todo-cpk-3\",\"title\":\"Explore shared agent state\",\"description\":\"Watch the canvas re-render as the agent writes to state.\",\"emoji\":\"🎯\",\"status\":\"pending\"}]}"
}
]
}
},
{
"match": {
"userMessage": "three todos about learning CopilotKit",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_fp_beautiful_chat_enable_app_mode_001",
"name": "enableAppMode",
"arguments": "{}"
}
]
}
},
{
"_comment": "Scoped showcase-assistant 'hello' fixture — anchored so it doesn't substring-match arbitrary prompts containing 'hello' (e.g. 'mellow', 'fellow'). Matches both 'hello' and 'Hello' as standalone greeting attempts only.",
"match": {
"userMessage": "hello, what can you do",
"context": "langgraph-python"
},
"response": {
"content": "Hello! I can help you with weather lookups, creating pie and bar charts, scheduling meetings, managing sales todos, searching flights, and toggling the theme. What would you like to do?"
}
},
{
"_comment": "Scoped showcase-assistant help fixture — anchored on 'what can you help me with' so it doesn't substring-match arbitrary prompts that happen to contain 'help' (e.g. 'helpful', 'helping').",
"match": {
"userMessage": "what can you help me with",
"context": "langgraph-python"
},
"response": {
"content": "Here are the things I can help with:\n- Check the weather for any location\n- Create pie charts and bar charts from data\n- Schedule meetings with a reason and duration\n- Manage your sales pipeline and todos\n- Search for flights between cities\n- Toggle the UI theme between light and dark\n\nJust ask me about any of these!"
}
},
{
"match": {
"userMessage": "can you tell me what is in this demo pdf I just attached",
"context": "langgraph-python"
},
"response": {
"content": "The attached PDF document is the CopilotKit Quickstart guide. It walks through three steps: install `@copilotkit/react-core` and `@copilotkit/react-ui`, wrap your app in a `<CopilotKit runtimeUrl=\"/api/copilotkit\">` provider, and drop a `<CopilotChat />` wherever you want the assistant to appear."
}
},
{
"match": {
"userMessage": "can you tell me what is in this demo image I just attached",
"context": "langgraph-python"
},
"response": {
"content": "The attached image is the CopilotKit logo — a clean, geometric mark used across CopilotKit branding."
}
},
{
"match": {
"userMessage": "Plan a 3-day Tokyo trip for a solo traveler interested in food, art, and architecture. Keep it concise.",
"context": "langgraph-python"
},
"response": {
"content": "Here's a tight 3-day Tokyo loop for a solo traveler who wants food, art, and architecture in equal measure.\n\n**Day 1 — Shibuya & Harajuku**\n- Morning: breakfast at a kissaten in Shibuya, then walk Cat Street to Harajuku.\n- Afternoon: Nezu Museum (architecture by Kengo Kuma + traditional garden).\n- Evening: izakaya in Nonbei Yokocho.\n\n**Day 2 — Roppongi & Ginza**\n- Morning: Mori Art Museum and the Tokyo City View deck.\n- Afternoon: stroll Ginza, stop into Itoya, lunch at a sushi counter.\n- Evening: jazz at a Ginza basement bar.\n\n**Day 3 — Yanaka & Asakusa**\n- Morning: Yanaka Ginza for old-Tokyo atmosphere and craft shops.\n- Afternoon: Senso-ji and the Asakusa back-streets; consider the Sumida River walk to the Tadao Ando-designed 21_21 if you want one more architecture stop.\n- Evening: ramen near Ueno before catching the train.\n\nLet me know if you want a vegetarian variant or a more architecture-heavy version."
}
},
{
"match": {
"userMessage": "Explain retrieval-augmented generation as if I were 12. Use a simple analogy.",
"context": "langgraph-python"
},
"response": {
"content": "Imagine you're taking an open-book test.\n\nA regular language model is like a kid who studied really hard but isn't allowed to look at the textbook during the test — they have to answer from memory, and sometimes they confidently make stuff up.\n\nRetrieval-Augmented Generation (RAG) is the same kid, but now they're allowed to flip through the textbook before answering each question. First they look up the relevant pages (that's the *retrieval* step), then they write the answer using what they just read (that's the *generation* step).\n\nSo RAG = \"look it up, then answer.\" The model still talks like itself, but the facts come from the book instead of from its memory — which means fewer made-up answers, and you can swap the book out whenever your information changes."
}
},
{
"match": {
"userMessage": "Draft a short, upbeat launch email announcing a new AI-powered chat feature. 3 short paragraphs max.",
"context": "langgraph-python"
},
"response": {
"content": "**Subject:** Meet your new AI co-pilot — now built right into the app\n\nHi there,\n\nWe just shipped something we're really excited about: an AI-powered chat that lives inside the product you already use. Ask it questions, hand off tasks, or just have it summarize what you're looking at — it has full context of your workspace, so you don't have to copy-paste anything.\n\nIt's rolling out today to every account, no setup required. Open the app, look for the new chat button in the corner, and try it on your messiest task. We'd love to hear what you build with it.\n\n— The team"
}
},
{
"_comment": "Scoped showcase-assistant intro fixture. Anchored on 'Hi, who are you' so it doesn't substring-match arbitrary prompts that happen to contain 'hi' inside other words (e.g. 'this', 'history', 'while') — those caused subagents writer/critique sub-LLM calls to return this boilerplate, breaking the demo.",
"match": {
"userMessage": "Hi, who are you",
"context": "langgraph-python"
},
"response": {
"content": "Hi there! I'm your showcase assistant. I can help with weather, charts, meetings, sales todos, flights, and theme toggling. What would you like to try?"
}
},
{
"match": {
"userMessage": "Based on the following context, write a concise",
"context": "langgraph-python"
},
"response": {
"content": "A short input value used to parameterize the crew's tasks and agents."
}
},
{
"_comment": "D4 toolbar 'Summarize' button — further narrowed from 'Summarize the' to 'Summarize the sales pipeline' (verbatim D4 toolbar probe). The prior 'Summarize the' still matched the D6 subagents pill 'Summarize the current state of reusable rockets...' and the response (sales-pipeline summary) is wildly off-topic for a subagents probe, breaking the subagents e2e regression test for the delegations reducer. 'Summarize the sales pipeline' is unique to the D4 toolbar probe.",
"match": {
"userMessage": "Summarize the sales pipeline",
"context": "langgraph-python"
},
"response": {
"content": "Here's a summary of your current sales pipeline:\n\n- **Total Pipeline Value**: $185,000\n- **Active Deals**: 5 deals across Prospect, Qualified, and Proposal stages\n- **Top Deal**: Acme Corp at $50,000 (Proposal stage)\n- **Win Rate**: 62% this quarter\n\nThe pipeline is healthy with good distribution across stages. Would you like to drill into any specific metric?"
}
},
{
"match": {
"userMessage": "expand",
"context": "langgraph-python"
},
"response": {
"content": "# Project Proposal: Q2 Initiative\n\n## Executive Summary\nThis proposal outlines the strategic objectives, timeline, and resource allocation for the Q2 project initiative.\n\n## Objectives\n1. Increase customer engagement by 25%\n2. Launch three new product features\n3. Reduce operational costs by 15%\n\n## Timeline\n- **Week 1-2**: Discovery and requirements gathering\n- **Week 3-6**: Development and implementation\n- **Week 7-8**: Testing and quality assurance\n- **Week 9-10**: Staged rollout and monitoring\n\n## Budget\nEstimated total: $45,000\n- Development: $25,000\n- Testing: $10,000\n- Infrastructure: $10,000\n\n## Success Metrics\n- Customer satisfaction score > 4.5\n- Feature adoption rate > 60%\n- Zero critical bugs at launch"
}
},
{
"match": {
"userMessage": "rewrite",
"context": "langgraph-python"
},
"response": {
"content": "Dear Team,\n\nI am writing to formally document the proceedings and key decisions from today's meeting.\n\n**Attendees**: Full project team\n**Date**: Today's session\n\n**Key Discussion Points**:\n1. Project timeline was reviewed and approved\n2. Resource allocation was confirmed\n3. Next milestones were established\n\n**Action Items**:\n- Complete phase one deliverables by end of week\n- Schedule follow-up review meeting\n- Distribute updated project documentation\n\nPlease review and confirm your respective action items.\n\nBest regards"
}
},
{
"_comment": "D4 toolbar 'Detailed' button — tightened from bare 'detailed' so it doesn't shadow d6 agent-config 'responseLength:detailed — describe agent context per your config'. Anchored on the longer phrase that the d4 button actually sends.",
"match": {
"userMessage": "Make this more detailed",
"context": "langgraph-python"
},
"response": {
"content": "# Budget Report - Q3\n\n## Overview\n- **Total Budget**: $150,000\n- **Spent to Date**: $89,500 (59.7%)\n- **Remaining**: $60,500\n\n## Breakdown by Category\n- **Personnel**: $52,000 (58.1% of spend)\n- **Infrastructure**: $18,500 (20.7%)\n- **Software Licenses**: $12,000 (13.4%)\n- **Miscellaneous**: $7,000 (7.8%)\n\n## Key Highlights\n- Personnel costs are tracking 5% under budget\n- Infrastructure spend increased due to scaling needs\n- Software license renewal saved $3,000 through annual plan\n\n## Recommendations\n- Reallocate $5,000 from personnel to infrastructure\n- Prepay Q4 licenses for additional savings"
}
},
{
"match": {
"userMessage": "formal letter",
"context": "langgraph-python"
},
"response": {
"content": "Dear Sir/Madam,\n\nI am writing to formally present the enclosed draft text for your review and consideration.\n\nThe document has been prepared in accordance with standard formatting guidelines and organizational protocols. All relevant sections have been reviewed for accuracy and completeness.\n\nPlease find the revised content enclosed. Should you require any modifications or have questions regarding the content, please do not hesitate to contact me at your earliest convenience.\n\nI look forward to your feedback.\n\nYours sincerely,\nThe Document Editor"
}
},
{
"_comment": "Scoped sales-pipeline 'add a deal' fixture — anchored on the full intent phrase so it doesn't substring-match arbitrary prompts that happen to contain 'deal' (e.g. 'dealing with', 'idealized').",
"match": {
"userMessage": "add a new enterprise deal",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "manage_sales_todos",
"arguments": "{\"todos\": [{\"id\": \"new-1\", \"title\": \"New Enterprise Deal\", \"stage\": \"prospect\", \"value\": 50000, \"dueDate\": \"2026-05-01\", \"assignee\": \"Alice\", \"completed\": false}]}"
}
]
}
},
{
"match": {
"userMessage": "sample deals",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "manage_sales_todos",
"arguments": "{\"todos\": [{\"id\": \"new-1\", \"title\": \"New Enterprise Deal\", \"stage\": \"prospect\", \"value\": 50000, \"dueDate\": \"2026-05-01\", \"assignee\": \"Alice\", \"completed\": false}]}"
}
]
}
},
{
"match": {
"userMessage": "flights to Paris",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "search_flights",
"arguments": "{\"flights\":[{\"airline\":\"Air France\",\"airlineLogo\":\"https://www.google.com/s2/favicons?domain=airfrance.com&sz=128\",\"flightNumber\":\"AF85\",\"origin\":\"SFO\",\"destination\":\"CDG\",\"date\":\"Mon, Apr 21\",\"departureTime\":\"16:00\",\"arrivalTime\":\"11:30+1\",\"duration\":\"10h 30m\",\"status\":\"On Time\",\"statusColor\":\"#22c55e\",\"price\":\"$780\",\"currency\":\"USD\"},{\"airline\":\"United Airlines\",\"airlineLogo\":\"https://www.google.com/s2/favicons?domain=united.com&sz=128\",\"flightNumber\":\"UA990\",\"origin\":\"SFO\",\"destination\":\"CDG\",\"date\":\"Mon, Apr 21\",\"departureTime\":\"18:15\",\"arrivalTime\":\"13:45+1\",\"duration\":\"10h 30m\",\"status\":\"On Time\",\"statusColor\":\"#22c55e\",\"price\":\"$720\",\"currency\":\"USD\"}]}"
}
]
}
},
{
"match": {
"toolCallId": "call_hitl_book_intro_sales_001",
"context": "langgraph-python"
},
"response": {
"content": "Booked the intro call with the sales team for the time you selected — calendar invite is on its way."
}
},
{
"match": {
"userMessage": "Please book an intro call with the sales team to discuss pricing.",
"toolName": "book_call",
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"id": "call_hitl_book_intro_sales_001",
"name": "book_call",
"arguments": "{\"topic\":\"Intro call — discuss pricing\",\"attendee\":\"Sales team\"}"
}
]
}
},
{
"match": {
"userMessage": "What name did I just give",
"context": "langgraph-python"
},
"response": {
"content": "You said your name is Alice."
}
},
{
"_comment": "Scoped 'what city do I live in' fixture — anchored so it doesn't substring-match arbitrary prompts containing 'city' (e.g. 'capacity', 'velocity', 'specificity').",
"match": {
"userMessage": "what city do I live in",
"context": "langgraph-python"
},
"response": {
"content": "Based on our conversation, you said you live in Tokyo!"
}
},
{
"match": {
"userMessage": "sunset-themed gradient",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "change_background",
"arguments": "{\"background\":\"linear-gradient(135deg, #ff7e5f 0%, #feb47b 50%, #ffd194 100%)\"}"
}
]
}
},
{
"match": {
"userMessage": "Describe this image",
"context": "langgraph-python"
},
"response": {
"content": "This appears to be the CopilotKit logo. The mark combines clean geometric shapes typical of the CopilotKit brand identity."
}
},
{
"match": {
"userMessage": "Summarize this document",
"context": "langgraph-python"
},
"response": {
"content": "This is an excerpt from the CopilotKit documentation covering the quickstart — installing the packages and wrapping the app in a CopilotKitProvider pointing at a runtime endpoint."
}
},
{
"match": {
"userMessage": "blue gradient",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "change_background",
"arguments": "{\"background\":\"linear-gradient(135deg, #3b82f6 0%, #1e40af 100%)\"}"
}
]
}
},
{
"match": {
"userMessage": "short joke",
"context": "langgraph-python"
},
"response": {
"content": "Why did the developer go broke? Because they used up all their cache."
}
},
{
"match": {
"userMessage": "Search my notes for 'auth'",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "query_notes",
"arguments": "{\"keyword\":\"auth\"}"
}
]
}
},
{
"match": {
"userMessage": "xyzzy-nonsense-keyword",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "query_notes",
"arguments": "{\"keyword\":\"xyzzy-nonsense-keyword\"}"
}
]
}
},
{
"match": {
"userMessage": "bar chart of monthly expenses",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "render_bar_chart",
"arguments": "{\"title\":\"Monthly Expenses\",\"description\":\"Expense breakdown by month\",\"data\":[{\"label\":\"Jan\",\"value\":12000},{\"label\":\"Feb\",\"value\":14500},{\"label\":\"Mar\",\"value\":13200},{\"label\":\"Apr\",\"value\":15800}]}"
}
]
}
},
{
"match": {
"userMessage": "What is my name?",
"context": "langgraph-python"
},
"response": {
"content": "Based on the context you provided, your name is Jamie."
}
},
{
"_comment": "Narrowed from bare 'Roll a 20-sided die' to 'Roll a 20-sided die for me' so it no longer shadows the D6 tool-rendering pill 'Roll a 20-sided die.' (which chains 5 roll_d20 calls). The d4/d5-reasoning-chain probe uses the 'for me' phrasing.",
"match": {
"userMessage": "Roll a 20-sided die for me",
"hasToolResult": false,
"context": "langgraph-python"
},
"response": {
"toolCalls": [
{
"name": "roll_dice",
"arguments": "{\"sides\":20}"
}
]
}
},
{
"_comment": "agentic-chat e2e: typed-message test sends 'Say hello in one word.'",
"match": {
"userMessage": "Say hello in one word",
"context": "langgraph-python"
},
"response": {
"content": "Hello!"
}
},
{
"_comment": "Pilot cell suggestion — 'Write a short sonnet about AI.' (agentic-chat, chat-slots)",
"match": {
"userMessage": "sonnet",
"context": "langgraph-python"
},
"response": {
"content": "A mind of silicon and light,\nTrained on the words that humans weave,\nIt learns to dream beyond its sight\nAnd crafts what few could yet conceive.\n\nIt speaks in tongues it never heard,\nAssembles thought from scattered streams,\nPredicts the next most likely word\nYet conjures something close to dreams.\n\nNo heart to break, no breath to take,\nStill something stirs inside the math —\nA pattern born for patterns' sake\nThat walks a strange, recursive path.\n\nSo here we stand, uncertain, awed:\nA mirror made — but not by God."
}
},
{
"_comment": "Pilot cell suggestion — 'Walk me through whether 17 is prime.' (agentic-chat, prebuilt-popup, prebuilt-sidebar)",
"match": {
"userMessage": "17 is prime",
"context": "langgraph-python"
},
"response": {
"content": "Let's check whether 17 is prime step by step.\n\nA prime number is a natural number greater than 1 whose only divisors are 1 and itself. So we need to test whether any integer from 2 up to the square root of 17 divides it evenly.\n\n1. **Square root of 17** is about 4.12, so we only need to test 2, 3, and 4.\n2. **17 ÷ 2 = 8.5** — not a whole number, so 2 is not a factor.\n3. **17 ÷ 3 ≈ 5.67** — not a whole number, so 3 is not a factor.\n4. **17 ÷ 4 = 4.25** — not a whole number, so 4 is not a factor.\n\nSince none of those divide 17 evenly, **17 is prime**."
}
},
{
"_comment": "Pilot cell suggestion — 'Write me a quick limerick.' (prebuilt-popup)",
"match": {
"userMessage": "limerick",
"context": "langgraph-python"
},
"response": {
"content": "A chatbot that lived in the cloud\nWould answer both meek and the loud.\nIt rhymed on demand,\nWith flair close at hand,\nAnd took its last bow to the crowd."
}
},
{
"_comment": "Pilot cell suggestion — 'Give me a fun fact.' (prebuilt-sidebar). Narrowed userMessage from bare 'fun fact' to 'fun fact for the prebuilt sidebar' so it ONLY matches a hypothetical sidebar-specific probe (none currently exists; this entry is preserved as a structural placeholder). The narrow gate prevents this from shadowing the D6 headless-simple pill 'Give me a fun fact.' which expects a DIFFERENT leading phrase ('A fun fact: Honey never spoils!') and is tested by tests/e2e/headless-simple.spec.ts. Substring matching is forward-only — no current pill prompt contains 'fun fact for the prebuilt sidebar' so this is effectively disabled.",
"match": {
"userMessage": "fun fact for the prebuilt sidebar",
"context": "langgraph-python"
},
"response": {
"content": "Here's a fun fact: honey never spoils. Archaeologists have found 3,000-year-old honey in Egyptian tombs that was still perfectly edible. Its low moisture content and acidic pH create an environment where bacteria and microorganisms simply cannot survive."
}
},
{
"_comment": "Pilot cell suggestion — 'Say hi from the popup!' (prebuilt-popup). Placed before the shorter 'Say hi' fixture so the popup version matches first.",
"match": {
"userMessage": "Say hi from the popup",
"context": "langgraph-python"
},
"response": {
"content": "Hi from the popup! I'm your CopilotKit assistant, tucked away in this little overlay. Ask me anything — a quick question, a limerick, or a math walk-through. What would you like?"
}
},
{
"_comment": "Pilot cell suggestion — 'Say hi!' (prebuilt-sidebar). Narrowed userMessage from 'Say hi' to 'Say hi!' (with exclamation — verbatim prebuilt-sidebar pill text) so this no longer shadows the D6 shared-state-read-write pill 'Say hi and introduce yourself.' (no exclamation, different intended response). The exclamation is unique to the prebuilt-sidebar pill among current LGP demos.",
"match": {
"userMessage": "Say hi!",
"context": "langgraph-python"
},
"response": {
"content": "Hi there! I'm your CopilotKit sidebar assistant. I can answer questions, share fun facts, or help you think through problems. What's on your mind?"
}
},
{
"_comment": "agent-config e2e: 'send produces an assistant response' test sends 'Hello'.",
"match": {
"userMessage": "Hello",
"context": "langgraph-python"
},
"response": {
"content": "Hello! How can I assist you today?"
}
},
{
"_comment": "agent-config e2e: 'changing config between sends' test — first send with default config.",
"match": {
"userMessage": "First",
"context": "langgraph-python"
},
"response": {
"content": "Understood. What would you like to discuss first?"
}
},
{
"_comment": "agent-config e2e: 'changing config between sends' test — second send after config change.",
"match": {
"userMessage": "Second",
"context": "langgraph-python"
},
"response": {
"content": "Got it! Moving on to your second topic."
}
}
]
}