@syntrologie/adapt-nav 2.2.0-canary.8 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/NavWidget.js +1 -1
  2. package/dist/cdn.d.ts +1 -6
  3. package/dist/cdn.d.ts.map +1 -1
  4. package/dist/cdn.js +1 -21
  5. package/dist/editor.js +2 -2
  6. package/dist/runtime.d.ts +16 -0
  7. package/dist/runtime.d.ts.map +1 -1
  8. package/dist/runtime.js +41 -1
  9. package/dist/schema.d.ts +417 -33
  10. package/dist/schema.d.ts.map +1 -1
  11. package/dist/schema.js +8 -3
  12. package/dist/types.d.ts +4 -2
  13. package/dist/types.d.ts.map +1 -1
  14. package/node_modules/@syntro/design-system/dist/tailwind-preset.d.ts.map +1 -1
  15. package/node_modules/@syntro/design-system/dist/tailwind-preset.js +23 -2
  16. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/BeforeAfterToggle.test.js +1 -0
  17. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/ConditionStatusLine.test.d.ts +2 -0
  18. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/ConditionStatusLine.test.d.ts.map +1 -0
  19. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/ConditionStatusLine.test.js +158 -0
  20. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/DismissedSection.test.js +6 -0
  21. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/EditorCard.test.js +1 -1
  22. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/EditorHeader.test.js +4 -5
  23. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/EditorPanelShell.test.d.ts +2 -0
  24. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/EditorPanelShell.test.d.ts.map +1 -0
  25. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/EditorPanelShell.test.js +25 -0
  26. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/ElementHighlight.test.js +22 -0
  27. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/TriggerJourney.test.js +77 -14
  28. package/node_modules/@syntrologie/shared-editor-ui/dist/__tests__/formatConditionLabel.test.js +1 -1
  29. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts +1 -2
  30. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.d.ts.map +1 -1
  31. package/node_modules/@syntrologie/shared-editor-ui/dist/components/AnchorPicker.js +4 -4
  32. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.d.ts.map +1 -1
  33. package/node_modules/@syntrologie/shared-editor-ui/dist/components/BeforeAfterToggle.js +4 -4
  34. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ConditionStatusLine.js +5 -5
  35. package/node_modules/@syntrologie/shared-editor-ui/dist/components/DismissedSection.js +1 -1
  36. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.d.ts.map +1 -1
  37. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditBackButton.js +1 -1
  38. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.d.ts.map +1 -1
  39. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorCard.js +10 -1
  40. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.d.ts.map +1 -1
  41. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorFooter.js +1 -1
  42. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts +1 -1
  43. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.d.ts.map +1 -1
  44. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorInput.js +5 -2
  45. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.d.ts.map +1 -1
  46. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorPanelShell.js +4 -4
  47. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts +1 -1
  48. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.d.ts.map +1 -1
  49. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorSelect.js +5 -2
  50. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts +1 -1
  51. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.d.ts.map +1 -1
  52. package/node_modules/@syntrologie/shared-editor-ui/dist/components/EditorTextarea.js +6 -4
  53. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.d.ts.map +1 -1
  54. package/node_modules/@syntrologie/shared-editor-ui/dist/components/ElementHighlight.js +24 -12
  55. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.d.ts.map +1 -1
  56. package/node_modules/@syntrologie/shared-editor-ui/dist/components/TriggerJourney.js +4 -4
  57. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.d.ts.map +1 -1
  58. package/node_modules/@syntrologie/shared-editor-ui/dist/formatConditionLabel.js +12 -20
  59. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts +1 -1
  60. package/node_modules/@syntrologie/shared-editor-ui/dist/index.d.ts.map +1 -1
  61. package/node_modules/@syntrologie/shared-editor-ui/dist/index.js +1 -1
  62. package/package.json +1 -1
package/dist/schema.d.ts CHANGED
@@ -8,7 +8,7 @@ import { z } from 'zod';
8
8
  /**
9
9
  * Schema for a single navigation tip (compositional action).
10
10
  */
11
- export declare const NavTipSchema: z.ZodObject<{
11
+ export declare const NavTipSchema: z.ZodEffects<z.ZodObject<{
12
12
  kind: z.ZodLiteral<"nav:tip">;
13
13
  config: z.ZodObject<{
14
14
  /** Unique identifier */
@@ -139,8 +139,8 @@ export declare const NavTipSchema: z.ZodObject<{
139
139
  method?: "GET" | "POST" | undefined;
140
140
  timeoutMs?: number | undefined;
141
141
  }>]>>>;
142
- /** Toast notification config for showWhen transitions */
143
- notify: z.ZodOptional<z.ZodObject<{
142
+ /** Toast config when showWhen transitions false → true. Required when showWhen is set (use null to opt out). */
143
+ notify: z.ZodOptional<z.ZodNullable<z.ZodObject<{
144
144
  title: z.ZodOptional<z.ZodString>;
145
145
  body: z.ZodOptional<z.ZodString>;
146
146
  icon: z.ZodOptional<z.ZodString>;
@@ -152,7 +152,7 @@ export declare const NavTipSchema: z.ZodObject<{
152
152
  title?: string | undefined;
153
153
  icon?: string | undefined;
154
154
  body?: string | undefined;
155
- }>>;
155
+ }>>>;
156
156
  /** AI-generated reasoning for why this tip was recommended */
157
157
  rationale: z.ZodOptional<z.ZodObject<{
158
158
  why: z.ZodString;
@@ -207,7 +207,7 @@ export declare const NavTipSchema: z.ZodObject<{
207
207
  title?: string | undefined;
208
208
  icon?: string | undefined;
209
209
  body?: string | undefined;
210
- } | undefined;
210
+ } | null | undefined;
211
211
  rationale?: {
212
212
  why: string;
213
213
  confidence?: number | undefined;
@@ -255,7 +255,103 @@ export declare const NavTipSchema: z.ZodObject<{
255
255
  title?: string | undefined;
256
256
  icon?: string | undefined;
257
257
  body?: string | undefined;
258
+ } | null | undefined;
259
+ rationale?: {
260
+ why: string;
261
+ confidence?: number | undefined;
262
+ } | undefined;
263
+ }>, {
264
+ kind: "nav:tip";
265
+ config: {
266
+ external: boolean;
267
+ title: string;
268
+ description: string;
269
+ id: string;
270
+ href?: string | undefined;
271
+ icon?: string | undefined;
272
+ category?: string | undefined;
273
+ };
274
+ showWhen?: {
275
+ rules: {
276
+ conditions: z.objectOutputType<{
277
+ type: z.ZodString;
278
+ }, z.ZodTypeAny, "passthrough">[];
279
+ value?: unknown;
280
+ }[];
281
+ type: "rules";
282
+ default?: unknown;
283
+ } | {
284
+ type: "score";
285
+ threshold: number;
286
+ field: string;
287
+ above?: unknown;
288
+ below?: unknown;
289
+ } | {
290
+ type: "model";
291
+ modelId: string;
292
+ inputs: string[];
293
+ outputMapping: Record<string, unknown>;
294
+ default?: unknown;
295
+ } | {
296
+ type: "external";
297
+ endpoint: string;
298
+ default?: unknown;
299
+ method?: "GET" | "POST" | undefined;
300
+ timeoutMs?: number | undefined;
301
+ } | null | undefined;
302
+ notify?: {
303
+ title?: string | undefined;
304
+ icon?: string | undefined;
305
+ body?: string | undefined;
306
+ } | null | undefined;
307
+ rationale?: {
308
+ why: string;
309
+ confidence?: number | undefined;
258
310
  } | undefined;
311
+ }, {
312
+ kind: "nav:tip";
313
+ config: {
314
+ title: string;
315
+ description: string;
316
+ id: string;
317
+ external?: boolean | undefined;
318
+ href?: string | undefined;
319
+ icon?: string | undefined;
320
+ category?: string | undefined;
321
+ };
322
+ showWhen?: {
323
+ rules: {
324
+ conditions: z.objectInputType<{
325
+ type: z.ZodString;
326
+ }, z.ZodTypeAny, "passthrough">[];
327
+ value?: unknown;
328
+ }[];
329
+ type: "rules";
330
+ default?: unknown;
331
+ } | {
332
+ type: "score";
333
+ threshold: number;
334
+ field: string;
335
+ above?: unknown;
336
+ below?: unknown;
337
+ } | {
338
+ type: "model";
339
+ modelId: string;
340
+ inputs: string[];
341
+ outputMapping: Record<string, unknown>;
342
+ default?: unknown;
343
+ } | {
344
+ type: "external";
345
+ endpoint: string;
346
+ default?: unknown;
347
+ method?: "GET" | "POST" | undefined;
348
+ timeoutMs?: number | undefined;
349
+ } | null | undefined;
350
+ notify?: {
351
+ title?: string | undefined;
352
+ icon?: string | undefined;
353
+ body?: string | undefined;
354
+ } | null | undefined;
259
355
  rationale?: {
260
356
  why: string;
261
357
  confidence?: number | undefined;
@@ -263,7 +359,7 @@ export declare const NavTipSchema: z.ZodObject<{
263
359
  }>;
264
360
  export type NavTipSchemaType = z.infer<typeof NavTipSchema>;
265
361
  /** @deprecated Use NavTipSchema */
266
- export declare const NavLinkSchema: z.ZodObject<{
362
+ export declare const NavLinkSchema: z.ZodEffects<z.ZodObject<{
267
363
  kind: z.ZodLiteral<"nav:tip">;
268
364
  config: z.ZodObject<{
269
365
  /** Unique identifier */
@@ -394,8 +490,8 @@ export declare const NavLinkSchema: z.ZodObject<{
394
490
  method?: "GET" | "POST" | undefined;
395
491
  timeoutMs?: number | undefined;
396
492
  }>]>>>;
397
- /** Toast notification config for showWhen transitions */
398
- notify: z.ZodOptional<z.ZodObject<{
493
+ /** Toast config when showWhen transitions false → true. Required when showWhen is set (use null to opt out). */
494
+ notify: z.ZodOptional<z.ZodNullable<z.ZodObject<{
399
495
  title: z.ZodOptional<z.ZodString>;
400
496
  body: z.ZodOptional<z.ZodString>;
401
497
  icon: z.ZodOptional<z.ZodString>;
@@ -407,7 +503,7 @@ export declare const NavLinkSchema: z.ZodObject<{
407
503
  title?: string | undefined;
408
504
  icon?: string | undefined;
409
505
  body?: string | undefined;
410
- }>>;
506
+ }>>>;
411
507
  /** AI-generated reasoning for why this tip was recommended */
412
508
  rationale: z.ZodOptional<z.ZodObject<{
413
509
  why: z.ZodString;
@@ -462,7 +558,7 @@ export declare const NavLinkSchema: z.ZodObject<{
462
558
  title?: string | undefined;
463
559
  icon?: string | undefined;
464
560
  body?: string | undefined;
465
- } | undefined;
561
+ } | null | undefined;
466
562
  rationale?: {
467
563
  why: string;
468
564
  confidence?: number | undefined;
@@ -510,7 +606,103 @@ export declare const NavLinkSchema: z.ZodObject<{
510
606
  title?: string | undefined;
511
607
  icon?: string | undefined;
512
608
  body?: string | undefined;
609
+ } | null | undefined;
610
+ rationale?: {
611
+ why: string;
612
+ confidence?: number | undefined;
513
613
  } | undefined;
614
+ }>, {
615
+ kind: "nav:tip";
616
+ config: {
617
+ external: boolean;
618
+ title: string;
619
+ description: string;
620
+ id: string;
621
+ href?: string | undefined;
622
+ icon?: string | undefined;
623
+ category?: string | undefined;
624
+ };
625
+ showWhen?: {
626
+ rules: {
627
+ conditions: z.objectOutputType<{
628
+ type: z.ZodString;
629
+ }, z.ZodTypeAny, "passthrough">[];
630
+ value?: unknown;
631
+ }[];
632
+ type: "rules";
633
+ default?: unknown;
634
+ } | {
635
+ type: "score";
636
+ threshold: number;
637
+ field: string;
638
+ above?: unknown;
639
+ below?: unknown;
640
+ } | {
641
+ type: "model";
642
+ modelId: string;
643
+ inputs: string[];
644
+ outputMapping: Record<string, unknown>;
645
+ default?: unknown;
646
+ } | {
647
+ type: "external";
648
+ endpoint: string;
649
+ default?: unknown;
650
+ method?: "GET" | "POST" | undefined;
651
+ timeoutMs?: number | undefined;
652
+ } | null | undefined;
653
+ notify?: {
654
+ title?: string | undefined;
655
+ icon?: string | undefined;
656
+ body?: string | undefined;
657
+ } | null | undefined;
658
+ rationale?: {
659
+ why: string;
660
+ confidence?: number | undefined;
661
+ } | undefined;
662
+ }, {
663
+ kind: "nav:tip";
664
+ config: {
665
+ title: string;
666
+ description: string;
667
+ id: string;
668
+ external?: boolean | undefined;
669
+ href?: string | undefined;
670
+ icon?: string | undefined;
671
+ category?: string | undefined;
672
+ };
673
+ showWhen?: {
674
+ rules: {
675
+ conditions: z.objectInputType<{
676
+ type: z.ZodString;
677
+ }, z.ZodTypeAny, "passthrough">[];
678
+ value?: unknown;
679
+ }[];
680
+ type: "rules";
681
+ default?: unknown;
682
+ } | {
683
+ type: "score";
684
+ threshold: number;
685
+ field: string;
686
+ above?: unknown;
687
+ below?: unknown;
688
+ } | {
689
+ type: "model";
690
+ modelId: string;
691
+ inputs: string[];
692
+ outputMapping: Record<string, unknown>;
693
+ default?: unknown;
694
+ } | {
695
+ type: "external";
696
+ endpoint: string;
697
+ default?: unknown;
698
+ method?: "GET" | "POST" | undefined;
699
+ timeoutMs?: number | undefined;
700
+ } | null | undefined;
701
+ notify?: {
702
+ title?: string | undefined;
703
+ icon?: string | undefined;
704
+ body?: string | undefined;
705
+ } | null | undefined;
514
706
  rationale?: {
515
707
  why: string;
516
708
  confidence?: number | undefined;
@@ -528,7 +720,7 @@ export declare const configSchema: z.ZodObject<{
528
720
  /** Color theme */
529
721
  theme: z.ZodDefault<z.ZodEnum<["light", "dark", "auto"]>>;
530
722
  /** Navigation tips (compositional actions) */
531
- actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
723
+ actions: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
532
724
  kind: z.ZodLiteral<"nav:tip">;
533
725
  config: z.ZodObject<{
534
726
  /** Unique identifier */
@@ -659,8 +851,8 @@ export declare const configSchema: z.ZodObject<{
659
851
  method?: "GET" | "POST" | undefined;
660
852
  timeoutMs?: number | undefined;
661
853
  }>]>>>;
662
- /** Toast notification config for showWhen transitions */
663
- notify: z.ZodOptional<z.ZodObject<{
854
+ /** Toast config when showWhen transitions false → true. Required when showWhen is set (use null to opt out). */
855
+ notify: z.ZodOptional<z.ZodNullable<z.ZodObject<{
664
856
  title: z.ZodOptional<z.ZodString>;
665
857
  body: z.ZodOptional<z.ZodString>;
666
858
  icon: z.ZodOptional<z.ZodString>;
@@ -672,7 +864,7 @@ export declare const configSchema: z.ZodObject<{
672
864
  title?: string | undefined;
673
865
  icon?: string | undefined;
674
866
  body?: string | undefined;
675
- }>>;
867
+ }>>>;
676
868
  /** AI-generated reasoning for why this tip was recommended */
677
869
  rationale: z.ZodOptional<z.ZodObject<{
678
870
  why: z.ZodString;
@@ -727,7 +919,7 @@ export declare const configSchema: z.ZodObject<{
727
919
  title?: string | undefined;
728
920
  icon?: string | undefined;
729
921
  body?: string | undefined;
730
- } | undefined;
922
+ } | null | undefined;
731
923
  rationale?: {
732
924
  why: string;
733
925
  confidence?: number | undefined;
@@ -775,7 +967,103 @@ export declare const configSchema: z.ZodObject<{
775
967
  title?: string | undefined;
776
968
  icon?: string | undefined;
777
969
  body?: string | undefined;
970
+ } | null | undefined;
971
+ rationale?: {
972
+ why: string;
973
+ confidence?: number | undefined;
778
974
  } | undefined;
975
+ }>, {
976
+ kind: "nav:tip";
977
+ config: {
978
+ external: boolean;
979
+ title: string;
980
+ description: string;
981
+ id: string;
982
+ href?: string | undefined;
983
+ icon?: string | undefined;
984
+ category?: string | undefined;
985
+ };
986
+ showWhen?: {
987
+ rules: {
988
+ conditions: z.objectOutputType<{
989
+ type: z.ZodString;
990
+ }, z.ZodTypeAny, "passthrough">[];
991
+ value?: unknown;
992
+ }[];
993
+ type: "rules";
994
+ default?: unknown;
995
+ } | {
996
+ type: "score";
997
+ threshold: number;
998
+ field: string;
999
+ above?: unknown;
1000
+ below?: unknown;
1001
+ } | {
1002
+ type: "model";
1003
+ modelId: string;
1004
+ inputs: string[];
1005
+ outputMapping: Record<string, unknown>;
1006
+ default?: unknown;
1007
+ } | {
1008
+ type: "external";
1009
+ endpoint: string;
1010
+ default?: unknown;
1011
+ method?: "GET" | "POST" | undefined;
1012
+ timeoutMs?: number | undefined;
1013
+ } | null | undefined;
1014
+ notify?: {
1015
+ title?: string | undefined;
1016
+ icon?: string | undefined;
1017
+ body?: string | undefined;
1018
+ } | null | undefined;
1019
+ rationale?: {
1020
+ why: string;
1021
+ confidence?: number | undefined;
1022
+ } | undefined;
1023
+ }, {
1024
+ kind: "nav:tip";
1025
+ config: {
1026
+ title: string;
1027
+ description: string;
1028
+ id: string;
1029
+ external?: boolean | undefined;
1030
+ href?: string | undefined;
1031
+ icon?: string | undefined;
1032
+ category?: string | undefined;
1033
+ };
1034
+ showWhen?: {
1035
+ rules: {
1036
+ conditions: z.objectInputType<{
1037
+ type: z.ZodString;
1038
+ }, z.ZodTypeAny, "passthrough">[];
1039
+ value?: unknown;
1040
+ }[];
1041
+ type: "rules";
1042
+ default?: unknown;
1043
+ } | {
1044
+ type: "score";
1045
+ threshold: number;
1046
+ field: string;
1047
+ above?: unknown;
1048
+ below?: unknown;
1049
+ } | {
1050
+ type: "model";
1051
+ modelId: string;
1052
+ inputs: string[];
1053
+ outputMapping: Record<string, unknown>;
1054
+ default?: unknown;
1055
+ } | {
1056
+ type: "external";
1057
+ endpoint: string;
1058
+ default?: unknown;
1059
+ method?: "GET" | "POST" | undefined;
1060
+ timeoutMs?: number | undefined;
1061
+ } | null | undefined;
1062
+ notify?: {
1063
+ title?: string | undefined;
1064
+ icon?: string | undefined;
1065
+ body?: string | undefined;
1066
+ } | null | undefined;
779
1067
  rationale?: {
780
1068
  why: string;
781
1069
  confidence?: number | undefined;
@@ -841,7 +1129,7 @@ export declare const configSchema: z.ZodObject<{
841
1129
  title?: string | undefined;
842
1130
  icon?: string | undefined;
843
1131
  body?: string | undefined;
844
- } | undefined;
1132
+ } | null | undefined;
845
1133
  rationale?: {
846
1134
  why: string;
847
1135
  confidence?: number | undefined;
@@ -900,7 +1188,7 @@ export declare const configSchema: z.ZodObject<{
900
1188
  title?: string | undefined;
901
1189
  icon?: string | undefined;
902
1190
  body?: string | undefined;
903
- } | undefined;
1191
+ } | null | undefined;
904
1192
  rationale?: {
905
1193
  why: string;
906
1194
  confidence?: number | undefined;
@@ -994,7 +1282,7 @@ export declare function validateNavTip(data: unknown): z.SafeParseReturnType<{
994
1282
  title?: string | undefined;
995
1283
  icon?: string | undefined;
996
1284
  body?: string | undefined;
997
- } | undefined;
1285
+ } | null | undefined;
998
1286
  rationale?: {
999
1287
  why: string;
1000
1288
  confidence?: number | undefined;
@@ -1042,7 +1330,7 @@ export declare function validateNavTip(data: unknown): z.SafeParseReturnType<{
1042
1330
  title?: string | undefined;
1043
1331
  icon?: string | undefined;
1044
1332
  body?: string | undefined;
1045
- } | undefined;
1333
+ } | null | undefined;
1046
1334
  rationale?: {
1047
1335
  why: string;
1048
1336
  confidence?: number | undefined;
@@ -1100,7 +1388,7 @@ export declare function validateNavConfig(data: unknown): z.SafeParseReturnType<
1100
1388
  title?: string | undefined;
1101
1389
  icon?: string | undefined;
1102
1390
  body?: string | undefined;
1103
- } | undefined;
1391
+ } | null | undefined;
1104
1392
  rationale?: {
1105
1393
  why: string;
1106
1394
  confidence?: number | undefined;
@@ -1157,7 +1445,7 @@ export declare function validateNavConfig(data: unknown): z.SafeParseReturnType<
1157
1445
  title?: string | undefined;
1158
1446
  icon?: string | undefined;
1159
1447
  body?: string | undefined;
1160
- } | undefined;
1448
+ } | null | undefined;
1161
1449
  rationale?: {
1162
1450
  why: string;
1163
1451
  confidence?: number | undefined;
@@ -1308,8 +1596,8 @@ export declare const actionStepSchemas: {
1308
1596
  method?: "GET" | "POST" | undefined;
1309
1597
  timeoutMs?: number | undefined;
1310
1598
  }>]>>>;
1311
- /** Toast notification config for showWhen transitions */
1312
- notify: z.ZodOptional<z.ZodObject<{
1599
+ /** Toast config when showWhen transitions false → true. Required when showWhen is set (use null to opt out). */
1600
+ notify: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1313
1601
  title: z.ZodOptional<z.ZodString>;
1314
1602
  body: z.ZodOptional<z.ZodString>;
1315
1603
  icon: z.ZodOptional<z.ZodString>;
@@ -1321,7 +1609,7 @@ export declare const actionStepSchemas: {
1321
1609
  title?: string | undefined;
1322
1610
  icon?: string | undefined;
1323
1611
  body?: string | undefined;
1324
- }>>;
1612
+ }>>>;
1325
1613
  /** AI-generated reasoning for why this tip was recommended */
1326
1614
  rationale: z.ZodOptional<z.ZodObject<{
1327
1615
  why: z.ZodString;
@@ -1376,7 +1664,7 @@ export declare const actionStepSchemas: {
1376
1664
  title?: string | undefined;
1377
1665
  icon?: string | undefined;
1378
1666
  body?: string | undefined;
1379
- } | undefined;
1667
+ } | null | undefined;
1380
1668
  rationale?: {
1381
1669
  why: string;
1382
1670
  confidence?: number | undefined;
@@ -1424,7 +1712,7 @@ export declare const actionStepSchemas: {
1424
1712
  title?: string | undefined;
1425
1713
  icon?: string | undefined;
1426
1714
  body?: string | undefined;
1427
- } | undefined;
1715
+ } | null | undefined;
1428
1716
  rationale?: {
1429
1717
  why: string;
1430
1718
  confidence?: number | undefined;
@@ -1447,7 +1735,7 @@ export declare const tileWidgets: {
1447
1735
  /** Color theme */
1448
1736
  theme: z.ZodDefault<z.ZodEnum<["light", "dark", "auto"]>>;
1449
1737
  /** Navigation tips (compositional actions) */
1450
- actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
1738
+ actions: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
1451
1739
  kind: z.ZodLiteral<"nav:tip">;
1452
1740
  config: z.ZodObject<{
1453
1741
  /** Unique identifier */
@@ -1578,8 +1866,8 @@ export declare const tileWidgets: {
1578
1866
  method?: "GET" | "POST" | undefined;
1579
1867
  timeoutMs?: number | undefined;
1580
1868
  }>]>>>;
1581
- /** Toast notification config for showWhen transitions */
1582
- notify: z.ZodOptional<z.ZodObject<{
1869
+ /** Toast config when showWhen transitions false → true. Required when showWhen is set (use null to opt out). */
1870
+ notify: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1583
1871
  title: z.ZodOptional<z.ZodString>;
1584
1872
  body: z.ZodOptional<z.ZodString>;
1585
1873
  icon: z.ZodOptional<z.ZodString>;
@@ -1591,7 +1879,7 @@ export declare const tileWidgets: {
1591
1879
  title?: string | undefined;
1592
1880
  icon?: string | undefined;
1593
1881
  body?: string | undefined;
1594
- }>>;
1882
+ }>>>;
1595
1883
  /** AI-generated reasoning for why this tip was recommended */
1596
1884
  rationale: z.ZodOptional<z.ZodObject<{
1597
1885
  why: z.ZodString;
@@ -1646,7 +1934,7 @@ export declare const tileWidgets: {
1646
1934
  title?: string | undefined;
1647
1935
  icon?: string | undefined;
1648
1936
  body?: string | undefined;
1649
- } | undefined;
1937
+ } | null | undefined;
1650
1938
  rationale?: {
1651
1939
  why: string;
1652
1940
  confidence?: number | undefined;
@@ -1694,7 +1982,103 @@ export declare const tileWidgets: {
1694
1982
  title?: string | undefined;
1695
1983
  icon?: string | undefined;
1696
1984
  body?: string | undefined;
1985
+ } | null | undefined;
1986
+ rationale?: {
1987
+ why: string;
1988
+ confidence?: number | undefined;
1697
1989
  } | undefined;
1990
+ }>, {
1991
+ kind: "nav:tip";
1992
+ config: {
1993
+ external: boolean;
1994
+ title: string;
1995
+ description: string;
1996
+ id: string;
1997
+ href?: string | undefined;
1998
+ icon?: string | undefined;
1999
+ category?: string | undefined;
2000
+ };
2001
+ showWhen?: {
2002
+ rules: {
2003
+ conditions: z.objectOutputType<{
2004
+ type: z.ZodString;
2005
+ }, z.ZodTypeAny, "passthrough">[];
2006
+ value?: unknown;
2007
+ }[];
2008
+ type: "rules";
2009
+ default?: unknown;
2010
+ } | {
2011
+ type: "score";
2012
+ threshold: number;
2013
+ field: string;
2014
+ above?: unknown;
2015
+ below?: unknown;
2016
+ } | {
2017
+ type: "model";
2018
+ modelId: string;
2019
+ inputs: string[];
2020
+ outputMapping: Record<string, unknown>;
2021
+ default?: unknown;
2022
+ } | {
2023
+ type: "external";
2024
+ endpoint: string;
2025
+ default?: unknown;
2026
+ method?: "GET" | "POST" | undefined;
2027
+ timeoutMs?: number | undefined;
2028
+ } | null | undefined;
2029
+ notify?: {
2030
+ title?: string | undefined;
2031
+ icon?: string | undefined;
2032
+ body?: string | undefined;
2033
+ } | null | undefined;
2034
+ rationale?: {
2035
+ why: string;
2036
+ confidence?: number | undefined;
2037
+ } | undefined;
2038
+ }, {
2039
+ kind: "nav:tip";
2040
+ config: {
2041
+ title: string;
2042
+ description: string;
2043
+ id: string;
2044
+ external?: boolean | undefined;
2045
+ href?: string | undefined;
2046
+ icon?: string | undefined;
2047
+ category?: string | undefined;
2048
+ };
2049
+ showWhen?: {
2050
+ rules: {
2051
+ conditions: z.objectInputType<{
2052
+ type: z.ZodString;
2053
+ }, z.ZodTypeAny, "passthrough">[];
2054
+ value?: unknown;
2055
+ }[];
2056
+ type: "rules";
2057
+ default?: unknown;
2058
+ } | {
2059
+ type: "score";
2060
+ threshold: number;
2061
+ field: string;
2062
+ above?: unknown;
2063
+ below?: unknown;
2064
+ } | {
2065
+ type: "model";
2066
+ modelId: string;
2067
+ inputs: string[];
2068
+ outputMapping: Record<string, unknown>;
2069
+ default?: unknown;
2070
+ } | {
2071
+ type: "external";
2072
+ endpoint: string;
2073
+ default?: unknown;
2074
+ method?: "GET" | "POST" | undefined;
2075
+ timeoutMs?: number | undefined;
2076
+ } | null | undefined;
2077
+ notify?: {
2078
+ title?: string | undefined;
2079
+ icon?: string | undefined;
2080
+ body?: string | undefined;
2081
+ } | null | undefined;
1698
2082
  rationale?: {
1699
2083
  why: string;
1700
2084
  confidence?: number | undefined;
@@ -1760,7 +2144,7 @@ export declare const tileWidgets: {
1760
2144
  title?: string | undefined;
1761
2145
  icon?: string | undefined;
1762
2146
  body?: string | undefined;
1763
- } | undefined;
2147
+ } | null | undefined;
1764
2148
  rationale?: {
1765
2149
  why: string;
1766
2150
  confidence?: number | undefined;
@@ -1819,7 +2203,7 @@ export declare const tileWidgets: {
1819
2203
  title?: string | undefined;
1820
2204
  icon?: string | undefined;
1821
2205
  body?: string | undefined;
1822
- } | undefined;
2206
+ } | null | undefined;
1823
2207
  rationale?: {
1824
2208
  why: string;
1825
2209
  confidence?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0DxB;;GAEG;AACH,eAAO,MAAM,YAAY;;;QAGrB,wBAAwB;;QAExB,4BAA4B;;QAE5B,yBAAyB;;QAEzB,4BAA4B;;QAE5B,oBAAoB;;QAEpB,iCAAiC;;QAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;IAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAExD,yDAAyD;;;;;;;;;;;;;;IAQzD,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO9D,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D,mCAAmC;AACnC,eAAO,MAAM,aAAa;;;QArCtB,wBAAwB;;QAExB,4BAA4B;;QAE5B,yBAAyB;;QAEzB,4BAA4B;;QAE5B,oBAAoB;;QAEpB,iCAAiC;;QAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;IAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAExD,yDAAyD;;;;;;;;;;;;;;IAQzD,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYvB,CAAC;AAC1C,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAiBjD;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,uCAAuC;;IAEvC,sBAAsB;;IAEtB,kBAAkB;;IAElB,8CAA8C;;;;YAjE5C,wBAAwB;;YAExB,4BAA4B;;YAE5B,yBAAyB;;YAEzB,4BAA4B;;YAE5B,oBAAoB;;YAEpB,iCAAiC;;YAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;QAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAExD,yDAAyD;;;;;;;;;;;;;;QAQzD,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0C9D,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAMrD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;YASnB,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;YAQvB,CAAC;AAMd;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE3C;AAED,qCAAqC;AACrC,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE9C;AAMD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;YAtI1B,wBAAwB;;YAExB,4BAA4B;;YAE5B,yBAAyB;;YAEzB,4BAA4B;;YAE5B,oBAAoB;;YAEpB,iCAAiC;;YAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;QAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAExD,yDAAyD;;;;;;;;;;;;;;QAQzD,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6Gc,CAAC;AAM/E;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;QAtFtB,uCAAuC;;QAEvC,sBAAsB;;QAEtB,kBAAkB;;QAElB,8CAA8C;;;;gBAjE5C,wBAAwB;;gBAExB,4BAA4B;;gBAE5B,yBAAyB;;gBAEzB,4BAA4B;;gBAE5B,oBAAoB;;gBAEpB,iCAAiC;;gBAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;YAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAExD,yDAAyD;;;;;;;;;;;;;;YAQzD,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0C9D,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFtC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0DxB;;GAEG;AACH,eAAO,MAAM,YAAY;;;QAInB,wBAAwB;;QAExB,4BAA4B;;QAE5B,yBAAyB;;QAEzB,4BAA4B;;QAE5B,oBAAoB;;QAEpB,iCAAiC;;QAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;IAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAExD,gHAAgH;;;;;;;;;;;;;;IAShH,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU9D,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D,mCAAmC;AACnC,eAAO,MAAM,aAAa;;;QAzCpB,wBAAwB;;QAExB,4BAA4B;;QAE5B,yBAAyB;;QAEzB,4BAA4B;;QAE5B,oBAAoB;;QAEpB,iCAAiC;;QAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;IAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAExD,gHAAgH;;;;;;;;;;;;;;IAShH,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAezB,CAAC;AAC1C,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAiBjD;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,uCAAuC;;IAEvC,sBAAsB;;IAEtB,kBAAkB;;IAElB,8CAA8C;;;;YArE1C,wBAAwB;;YAExB,4BAA4B;;YAE5B,yBAAyB;;YAEzB,4BAA4B;;YAE5B,oBAAoB;;YAEpB,iCAAiC;;YAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;QAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAExD,gHAAgH;;;;;;;;;;;;;;QAShH,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6ChE,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAMrD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;YASnB,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;YAQvB,CAAC;AAMd;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE3C;AAED,qCAAqC;AACrC,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE9C;AAMD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;YA1IxB,wBAAwB;;YAExB,4BAA4B;;YAE5B,yBAAyB;;YAEzB,4BAA4B;;YAE5B,oBAAoB;;YAEpB,iCAAiC;;YAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;QAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAExD,gHAAgH;;;;;;;;;;;;;;QAShH,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHwB,CAAC;AAM3F;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;QAtFtB,uCAAuC;;QAEvC,sBAAsB;;QAEtB,kBAAkB;;QAElB,8CAA8C;;;;gBArE1C,wBAAwB;;gBAExB,4BAA4B;;gBAE5B,yBAAyB;;gBAEzB,4BAA4B;;gBAE5B,oBAAoB;;gBAEpB,iCAAiC;;gBAEjC,4BAA4B;;;;;;;;;;;;;;;;;;;YAG9B,wDAAwD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAExD,gHAAgH;;;;;;;;;;;;;;YAShH,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6ChE,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFtC,CAAC"}