@fenglimg/fabric-shared 2.1.0-rc.2 → 2.2.0-rc.3

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.
@@ -104,6 +104,7 @@ declare const planContextOutputSchema: z.ZodObject<{
104
104
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
105
105
  relevance_scope: z.ZodOptional<z.ZodEnum<["narrow", "broad"]>>;
106
106
  relevance_paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
107
+ related: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
107
108
  }, "strip", z.ZodTypeAny, {
108
109
  summary: string;
109
110
  intent_clues: string[];
@@ -120,6 +121,7 @@ declare const planContextOutputSchema: z.ZodObject<{
120
121
  knowledge_layer?: "personal" | "team" | undefined;
121
122
  layer_reason?: string | undefined;
122
123
  tags?: string[] | undefined;
124
+ related?: string[] | undefined;
123
125
  }, {
124
126
  summary: string;
125
127
  intent_clues: string[];
@@ -136,6 +138,7 @@ declare const planContextOutputSchema: z.ZodObject<{
136
138
  knowledge_layer?: "personal" | "team" | undefined;
137
139
  layer_reason?: string | undefined;
138
140
  tags?: string[] | undefined;
141
+ related?: string[] | undefined;
139
142
  }>;
140
143
  }, "strip", z.ZodTypeAny, {
141
144
  description: {
@@ -154,6 +157,7 @@ declare const planContextOutputSchema: z.ZodObject<{
154
157
  knowledge_layer?: "personal" | "team" | undefined;
155
158
  layer_reason?: string | undefined;
156
159
  tags?: string[] | undefined;
160
+ related?: string[] | undefined;
157
161
  };
158
162
  stable_id: string;
159
163
  }, {
@@ -173,9 +177,11 @@ declare const planContextOutputSchema: z.ZodObject<{
173
177
  knowledge_layer?: "personal" | "team" | undefined;
174
178
  layer_reason?: string | undefined;
175
179
  tags?: string[] | undefined;
180
+ related?: string[] | undefined;
176
181
  };
177
182
  stable_id: string;
178
183
  }>, "many">;
184
+ omitted_candidate_count: z.ZodOptional<z.ZodNumber>;
179
185
  preflight_diagnostics: z.ZodArray<z.ZodObject<{
180
186
  code: z.ZodEnum<["missing_description", "empty_shell_suppressed"]>;
181
187
  severity: z.ZodLiteral<"warn">;
@@ -214,6 +220,7 @@ declare const planContextOutputSchema: z.ZodObject<{
214
220
  auto_healed: z.ZodOptional<z.ZodBoolean>;
215
221
  previous_revision_hash: z.ZodOptional<z.ZodString>;
216
222
  redirects: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
223
+ related_appended: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
217
224
  }, "strip", z.ZodTypeAny, {
218
225
  entries: {
219
226
  path: string;
@@ -244,6 +251,7 @@ declare const planContextOutputSchema: z.ZodObject<{
244
251
  knowledge_layer?: "personal" | "team" | undefined;
245
252
  layer_reason?: string | undefined;
246
253
  tags?: string[] | undefined;
254
+ related?: string[] | undefined;
247
255
  };
248
256
  stable_id: string;
249
257
  }[];
@@ -254,6 +262,7 @@ declare const planContextOutputSchema: z.ZodObject<{
254
262
  path?: string | undefined;
255
263
  stable_ids?: string[] | undefined;
256
264
  }[];
265
+ omitted_candidate_count?: number | undefined;
257
266
  warnings?: {
258
267
  code: string;
259
268
  file: string;
@@ -263,6 +272,7 @@ declare const planContextOutputSchema: z.ZodObject<{
263
272
  auto_healed?: boolean | undefined;
264
273
  previous_revision_hash?: string | undefined;
265
274
  redirects?: Record<string, string> | undefined;
275
+ related_appended?: Record<string, string> | undefined;
266
276
  }, {
267
277
  entries: {
268
278
  path: string;
@@ -293,6 +303,7 @@ declare const planContextOutputSchema: z.ZodObject<{
293
303
  knowledge_layer?: "personal" | "team" | undefined;
294
304
  layer_reason?: string | undefined;
295
305
  tags?: string[] | undefined;
306
+ related?: string[] | undefined;
296
307
  };
297
308
  stable_id: string;
298
309
  }[];
@@ -303,6 +314,7 @@ declare const planContextOutputSchema: z.ZodObject<{
303
314
  path?: string | undefined;
304
315
  stable_ids?: string[] | undefined;
305
316
  }[];
317
+ omitted_candidate_count?: number | undefined;
306
318
  warnings?: {
307
319
  code: string;
308
320
  file: string;
@@ -312,6 +324,7 @@ declare const planContextOutputSchema: z.ZodObject<{
312
324
  auto_healed?: boolean | undefined;
313
325
  previous_revision_hash?: string | undefined;
314
326
  redirects?: Record<string, string> | undefined;
327
+ related_appended?: Record<string, string> | undefined;
315
328
  }>;
316
329
  declare const planContextAnnotations: {
317
330
  readonly readOnlyHint: true;
@@ -383,7 +396,7 @@ declare const planContextHintOutputSchema: z.ZodObject<{
383
396
  declare const knowledgeSectionsInputSchema: z.ZodObject<{
384
397
  selection_token: z.ZodString;
385
398
  ai_selected_stable_ids: z.ZodArray<z.ZodString, "many">;
386
- ai_selection_reasons: z.ZodRecord<z.ZodString, z.ZodString>;
399
+ ai_selection_reasons: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
387
400
  correlation_id: z.ZodOptional<z.ZodString>;
388
401
  session_id: z.ZodOptional<z.ZodString>;
389
402
  client_hash: z.ZodOptional<z.ZodString>;
@@ -397,10 +410,10 @@ declare const knowledgeSectionsInputSchema: z.ZodObject<{
397
410
  }, {
398
411
  selection_token: string;
399
412
  ai_selected_stable_ids: string[];
400
- ai_selection_reasons: Record<string, string>;
401
413
  client_hash?: string | undefined;
402
414
  correlation_id?: string | undefined;
403
415
  session_id?: string | undefined;
416
+ ai_selection_reasons?: Record<string, string> | undefined;
404
417
  }>;
405
418
  declare const knowledgeSectionsOutputSchema: z.ZodObject<{
406
419
  revision_hash: z.ZodString;
@@ -422,17 +435,17 @@ declare const knowledgeSectionsOutputSchema: z.ZodObject<{
422
435
  body: string;
423
436
  }>, "many">;
424
437
  diagnostics: z.ZodArray<z.ZodObject<{
425
- code: z.ZodLiteral<"missing_knowledge_metadata">;
438
+ code: z.ZodEnum<["missing_knowledge_metadata", "unresolved_selected_id"]>;
426
439
  severity: z.ZodLiteral<"warn">;
427
440
  stable_id: z.ZodString;
428
441
  message: z.ZodString;
429
442
  }, "strip", z.ZodTypeAny, {
430
- code: "missing_knowledge_metadata";
443
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
431
444
  message: string;
432
445
  stable_id: string;
433
446
  severity: "warn";
434
447
  }, {
435
- code: "missing_knowledge_metadata";
448
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
436
449
  message: string;
437
450
  stable_id: string;
438
451
  severity: "warn";
@@ -470,7 +483,7 @@ declare const knowledgeSectionsOutputSchema: z.ZodObject<{
470
483
  body: string;
471
484
  }[];
472
485
  diagnostics: {
473
- code: "missing_knowledge_metadata";
486
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
474
487
  message: string;
475
488
  stable_id: string;
476
489
  severity: "warn";
@@ -494,7 +507,7 @@ declare const knowledgeSectionsOutputSchema: z.ZodObject<{
494
507
  body: string;
495
508
  }[];
496
509
  diagnostics: {
497
- code: "missing_knowledge_metadata";
510
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
498
511
  message: string;
499
512
  stable_id: string;
500
513
  severity: "warn";
@@ -527,6 +540,7 @@ declare const recallInputSchema: z.ZodObject<{
527
540
  layer_filter: z.ZodOptional<z.ZodEnum<["team", "personal", "both"]>>;
528
541
  target_paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
529
542
  ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
543
+ include_related: z.ZodOptional<z.ZodBoolean>;
530
544
  }, "strip", z.ZodTypeAny, {
531
545
  paths: string[];
532
546
  known_tech?: string[] | undefined;
@@ -538,6 +552,7 @@ declare const recallInputSchema: z.ZodObject<{
538
552
  layer_filter?: "personal" | "team" | "both" | undefined;
539
553
  target_paths?: string[] | undefined;
540
554
  ids?: string[] | undefined;
555
+ include_related?: boolean | undefined;
541
556
  }, {
542
557
  paths: string[];
543
558
  known_tech?: string[] | undefined;
@@ -549,6 +564,7 @@ declare const recallInputSchema: z.ZodObject<{
549
564
  layer_filter?: "personal" | "team" | "both" | undefined;
550
565
  target_paths?: string[] | undefined;
551
566
  ids?: string[] | undefined;
567
+ include_related?: boolean | undefined;
552
568
  }>;
553
569
  declare const recallOutputSchema: z.ZodObject<{
554
570
  revision_hash: z.ZodString;
@@ -607,6 +623,7 @@ declare const recallOutputSchema: z.ZodObject<{
607
623
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
608
624
  relevance_scope: z.ZodOptional<z.ZodEnum<["narrow", "broad"]>>;
609
625
  relevance_paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
626
+ related: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
610
627
  }, "strip", z.ZodTypeAny, {
611
628
  summary: string;
612
629
  intent_clues: string[];
@@ -623,6 +640,7 @@ declare const recallOutputSchema: z.ZodObject<{
623
640
  knowledge_layer?: "personal" | "team" | undefined;
624
641
  layer_reason?: string | undefined;
625
642
  tags?: string[] | undefined;
643
+ related?: string[] | undefined;
626
644
  }, {
627
645
  summary: string;
628
646
  intent_clues: string[];
@@ -639,6 +657,7 @@ declare const recallOutputSchema: z.ZodObject<{
639
657
  knowledge_layer?: "personal" | "team" | undefined;
640
658
  layer_reason?: string | undefined;
641
659
  tags?: string[] | undefined;
660
+ related?: string[] | undefined;
642
661
  }>;
643
662
  }, "strip", z.ZodTypeAny, {
644
663
  description: {
@@ -657,6 +676,7 @@ declare const recallOutputSchema: z.ZodObject<{
657
676
  knowledge_layer?: "personal" | "team" | undefined;
658
677
  layer_reason?: string | undefined;
659
678
  tags?: string[] | undefined;
679
+ related?: string[] | undefined;
660
680
  };
661
681
  stable_id: string;
662
682
  }, {
@@ -676,9 +696,11 @@ declare const recallOutputSchema: z.ZodObject<{
676
696
  knowledge_layer?: "personal" | "team" | undefined;
677
697
  layer_reason?: string | undefined;
678
698
  tags?: string[] | undefined;
699
+ related?: string[] | undefined;
679
700
  };
680
701
  stable_id: string;
681
702
  }>, "many">;
703
+ omitted_candidate_count: z.ZodOptional<z.ZodNumber>;
682
704
  preflight_diagnostics: z.ZodArray<z.ZodObject<{
683
705
  code: z.ZodEnum<["missing_description", "empty_shell_suppressed"]>;
684
706
  severity: z.ZodLiteral<"warn">;
@@ -703,30 +725,43 @@ declare const recallOutputSchema: z.ZodObject<{
703
725
  level: z.ZodEnum<["L0", "L1", "L2"]>;
704
726
  path: z.ZodString;
705
727
  body: z.ZodString;
728
+ store: z.ZodOptional<z.ZodObject<{
729
+ alias: z.ZodString;
730
+ }, "strip", z.ZodTypeAny, {
731
+ alias: string;
732
+ }, {
733
+ alias: string;
734
+ }>>;
706
735
  }, "strip", z.ZodTypeAny, {
707
736
  path: string;
708
737
  stable_id: string;
709
738
  level: "L0" | "L1" | "L2";
710
739
  body: string;
740
+ store?: {
741
+ alias: string;
742
+ } | undefined;
711
743
  }, {
712
744
  path: string;
713
745
  stable_id: string;
714
746
  level: "L0" | "L1" | "L2";
715
747
  body: string;
748
+ store?: {
749
+ alias: string;
750
+ } | undefined;
716
751
  }>, "many">;
717
752
  selected_stable_ids: z.ZodArray<z.ZodString, "many">;
718
753
  diagnostics: z.ZodArray<z.ZodObject<{
719
- code: z.ZodLiteral<"missing_knowledge_metadata">;
754
+ code: z.ZodEnum<["missing_knowledge_metadata", "unresolved_selected_id"]>;
720
755
  severity: z.ZodLiteral<"warn">;
721
756
  stable_id: z.ZodString;
722
757
  message: z.ZodString;
723
758
  }, "strip", z.ZodTypeAny, {
724
- code: "missing_knowledge_metadata";
759
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
725
760
  message: string;
726
761
  stable_id: string;
727
762
  severity: "warn";
728
763
  }, {
729
- code: "missing_knowledge_metadata";
764
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
730
765
  message: string;
731
766
  stable_id: string;
732
767
  severity: "warn";
@@ -750,6 +785,18 @@ declare const recallOutputSchema: z.ZodObject<{
750
785
  auto_healed: z.ZodOptional<z.ZodBoolean>;
751
786
  previous_revision_hash: z.ZodOptional<z.ZodString>;
752
787
  redirects: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
788
+ directive: z.ZodString;
789
+ next_steps: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
790
+ truncation: z.ZodOptional<z.ZodObject<{
791
+ omitted_candidate_count: z.ZodNumber;
792
+ returned_candidate_count: z.ZodNumber;
793
+ }, "strip", z.ZodTypeAny, {
794
+ omitted_candidate_count: number;
795
+ returned_candidate_count: number;
796
+ }, {
797
+ omitted_candidate_count: number;
798
+ returned_candidate_count: number;
799
+ }>>;
753
800
  }, "strip", z.ZodTypeAny, {
754
801
  entries: {
755
802
  path: string;
@@ -780,6 +827,7 @@ declare const recallOutputSchema: z.ZodObject<{
780
827
  knowledge_layer?: "personal" | "team" | undefined;
781
828
  layer_reason?: string | undefined;
782
829
  tags?: string[] | undefined;
830
+ related?: string[] | undefined;
783
831
  };
784
832
  stable_id: string;
785
833
  }[];
@@ -796,13 +844,18 @@ declare const recallOutputSchema: z.ZodObject<{
796
844
  stable_id: string;
797
845
  level: "L0" | "L1" | "L2";
798
846
  body: string;
847
+ store?: {
848
+ alias: string;
849
+ } | undefined;
799
850
  }[];
800
851
  diagnostics: {
801
- code: "missing_knowledge_metadata";
852
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
802
853
  message: string;
803
854
  stable_id: string;
804
855
  severity: "warn";
805
856
  }[];
857
+ directive: string;
858
+ omitted_candidate_count?: number | undefined;
806
859
  warnings?: {
807
860
  code: string;
808
861
  file: string;
@@ -812,6 +865,11 @@ declare const recallOutputSchema: z.ZodObject<{
812
865
  auto_healed?: boolean | undefined;
813
866
  previous_revision_hash?: string | undefined;
814
867
  redirects?: Record<string, string> | undefined;
868
+ next_steps?: string[] | undefined;
869
+ truncation?: {
870
+ omitted_candidate_count: number;
871
+ returned_candidate_count: number;
872
+ } | undefined;
815
873
  }, {
816
874
  entries: {
817
875
  path: string;
@@ -842,6 +900,7 @@ declare const recallOutputSchema: z.ZodObject<{
842
900
  knowledge_layer?: "personal" | "team" | undefined;
843
901
  layer_reason?: string | undefined;
844
902
  tags?: string[] | undefined;
903
+ related?: string[] | undefined;
845
904
  };
846
905
  stable_id: string;
847
906
  }[];
@@ -858,13 +917,18 @@ declare const recallOutputSchema: z.ZodObject<{
858
917
  stable_id: string;
859
918
  level: "L0" | "L1" | "L2";
860
919
  body: string;
920
+ store?: {
921
+ alias: string;
922
+ } | undefined;
861
923
  }[];
862
924
  diagnostics: {
863
- code: "missing_knowledge_metadata";
925
+ code: "missing_knowledge_metadata" | "unresolved_selected_id";
864
926
  message: string;
865
927
  stable_id: string;
866
928
  severity: "warn";
867
929
  }[];
930
+ directive: string;
931
+ omitted_candidate_count?: number | undefined;
868
932
  warnings?: {
869
933
  code: string;
870
934
  file: string;
@@ -874,6 +938,11 @@ declare const recallOutputSchema: z.ZodObject<{
874
938
  auto_healed?: boolean | undefined;
875
939
  previous_revision_hash?: string | undefined;
876
940
  redirects?: Record<string, string> | undefined;
941
+ next_steps?: string[] | undefined;
942
+ truncation?: {
943
+ omitted_candidate_count: number;
944
+ returned_candidate_count: number;
945
+ } | undefined;
877
946
  }>;
878
947
  declare const recallAnnotations: {
879
948
  readonly readOnlyHint: true;
@@ -973,7 +1042,7 @@ declare const ProposedReasonSchema: z.ZodEnum<["explicit-user-mark", "diagnostic
973
1042
  type ProposedReason = z.infer<typeof ProposedReasonSchema>;
974
1043
  declare const PROPOSED_REASON_DESCRIPTIONS: Record<ProposedReason, string>;
975
1044
  declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
976
- source_sessions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1045
+ source_sessions: z.ZodArray<z.ZodString, "many">;
977
1046
  recent_paths: z.ZodArray<z.ZodString, "many">;
978
1047
  user_messages_summary: z.ZodString;
979
1048
  type: z.ZodEnum<["decisions", "pitfalls", "guidelines", "models", "processes"]>;
@@ -992,6 +1061,7 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
992
1061
  evidence_paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
993
1062
  }, "strip", z.ZodTypeAny, {
994
1063
  type: "models" | "decisions" | "guidelines" | "pitfalls" | "processes";
1064
+ source_sessions: string[];
995
1065
  proposed_reason: "explicit-user-mark" | "diagnostic-then-fix" | "decision-confirmation" | "wrong-turn-revert" | "new-dependency-or-pattern" | "dismissal-with-reason";
996
1066
  session_context: string;
997
1067
  recent_paths: string[];
@@ -999,7 +1069,6 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
999
1069
  slug: string;
1000
1070
  relevance_scope?: "narrow" | "broad" | undefined;
1001
1071
  relevance_paths?: string[] | undefined;
1002
- source_sessions?: string[] | undefined;
1003
1072
  layer?: "personal" | "team" | undefined;
1004
1073
  intent_clues?: string[] | undefined;
1005
1074
  tech_stack?: string[] | undefined;
@@ -1010,6 +1079,7 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1010
1079
  evidence_paths?: string[] | undefined;
1011
1080
  }, {
1012
1081
  type: "models" | "decisions" | "guidelines" | "pitfalls" | "processes";
1082
+ source_sessions: string[];
1013
1083
  proposed_reason: "explicit-user-mark" | "diagnostic-then-fix" | "decision-confirmation" | "wrong-turn-revert" | "new-dependency-or-pattern" | "dismissal-with-reason";
1014
1084
  session_context: string;
1015
1085
  recent_paths: string[];
@@ -1017,7 +1087,6 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1017
1087
  slug: string;
1018
1088
  relevance_scope?: "narrow" | "broad" | undefined;
1019
1089
  relevance_paths?: string[] | undefined;
1020
- source_sessions?: string[] | undefined;
1021
1090
  layer?: "personal" | "team" | undefined;
1022
1091
  intent_clues?: string[] | undefined;
1023
1092
  tech_stack?: string[] | undefined;
@@ -1028,6 +1097,7 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1028
1097
  evidence_paths?: string[] | undefined;
1029
1098
  }>, {
1030
1099
  type: "models" | "decisions" | "guidelines" | "pitfalls" | "processes";
1100
+ source_sessions: string[];
1031
1101
  proposed_reason: "explicit-user-mark" | "diagnostic-then-fix" | "decision-confirmation" | "wrong-turn-revert" | "new-dependency-or-pattern" | "dismissal-with-reason";
1032
1102
  session_context: string;
1033
1103
  recent_paths: string[];
@@ -1035,7 +1105,6 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1035
1105
  slug: string;
1036
1106
  relevance_scope?: "narrow" | "broad" | undefined;
1037
1107
  relevance_paths?: string[] | undefined;
1038
- source_sessions?: string[] | undefined;
1039
1108
  layer?: "personal" | "team" | undefined;
1040
1109
  intent_clues?: string[] | undefined;
1041
1110
  tech_stack?: string[] | undefined;
@@ -1046,6 +1115,7 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1046
1115
  evidence_paths?: string[] | undefined;
1047
1116
  }, {
1048
1117
  type: "models" | "decisions" | "guidelines" | "pitfalls" | "processes";
1118
+ source_sessions: string[];
1049
1119
  proposed_reason: "explicit-user-mark" | "diagnostic-then-fix" | "decision-confirmation" | "wrong-turn-revert" | "new-dependency-or-pattern" | "dismissal-with-reason";
1050
1120
  session_context: string;
1051
1121
  recent_paths: string[];
@@ -1053,7 +1123,6 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1053
1123
  slug: string;
1054
1124
  relevance_scope?: "narrow" | "broad" | undefined;
1055
1125
  relevance_paths?: string[] | undefined;
1056
- source_sessions?: string[] | undefined;
1057
1126
  layer?: "personal" | "team" | undefined;
1058
1127
  intent_clues?: string[] | undefined;
1059
1128
  tech_stack?: string[] | undefined;
@@ -1064,7 +1133,7 @@ declare const FabExtractKnowledgeInputSchema: z.ZodEffects<z.ZodObject<{
1064
1133
  evidence_paths?: string[] | undefined;
1065
1134
  }>;
1066
1135
  declare const FabExtractKnowledgeInputShape: {
1067
- source_sessions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1136
+ source_sessions: z.ZodArray<z.ZodString, "many">;
1068
1137
  recent_paths: z.ZodArray<z.ZodString, "many">;
1069
1138
  user_messages_summary: z.ZodString;
1070
1139
  type: z.ZodEnum<["decisions", "pitfalls", "guidelines", "models", "processes"]>;
@@ -2061,6 +2130,42 @@ declare const citeCoverageReportSchema: z.ZodObject<{
2061
2130
  compliant_cites: z.ZodOptional<z.ZodNumber>;
2062
2131
  noncompliant_cites: z.ZodOptional<z.ZodNumber>;
2063
2132
  uncorrelatable_edits: z.ZodOptional<z.ZodNumber>;
2133
+ recall_backed_edits: z.ZodOptional<z.ZodNumber>;
2134
+ recall_coverage_rate: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
2135
+ exposed_and_mutated: z.ZodOptional<z.ZodObject<{
2136
+ count: z.ZodNumber;
2137
+ ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2138
+ }, "strip", z.ZodTypeAny, {
2139
+ count: number;
2140
+ ids?: string[] | undefined;
2141
+ }, {
2142
+ count: number;
2143
+ ids?: string[] | undefined;
2144
+ }>>;
2145
+ mutations_observed: z.ZodOptional<z.ZodObject<{
2146
+ count: z.ZodNumber;
2147
+ }, "strip", z.ZodTypeAny, {
2148
+ count: number;
2149
+ }, {
2150
+ count: number;
2151
+ }>>;
2152
+ mutation_pool: z.ZodOptional<z.ZodObject<{
2153
+ attributed: z.ZodNumber;
2154
+ unattributed_workspace_dirty: z.ZodNumber;
2155
+ }, "strip", z.ZodTypeAny, {
2156
+ attributed: number;
2157
+ unattributed_workspace_dirty: number;
2158
+ }, {
2159
+ attributed: number;
2160
+ unattributed_workspace_dirty: number;
2161
+ }>>;
2162
+ sessions_closed: z.ZodOptional<z.ZodObject<{
2163
+ count: z.ZodNumber;
2164
+ }, "strip", z.ZodTypeAny, {
2165
+ count: number;
2166
+ }, {
2167
+ count: number;
2168
+ }>>;
2064
2169
  }, "strip", z.ZodTypeAny, {
2065
2170
  edits_touched: number;
2066
2171
  qualifying_cites: number;
@@ -2071,6 +2176,22 @@ declare const citeCoverageReportSchema: z.ZodObject<{
2071
2176
  compliant_cites?: number | undefined;
2072
2177
  noncompliant_cites?: number | undefined;
2073
2178
  uncorrelatable_edits?: number | undefined;
2179
+ recall_backed_edits?: number | undefined;
2180
+ recall_coverage_rate?: number | null | undefined;
2181
+ exposed_and_mutated?: {
2182
+ count: number;
2183
+ ids?: string[] | undefined;
2184
+ } | undefined;
2185
+ mutations_observed?: {
2186
+ count: number;
2187
+ } | undefined;
2188
+ mutation_pool?: {
2189
+ attributed: number;
2190
+ unattributed_workspace_dirty: number;
2191
+ } | undefined;
2192
+ sessions_closed?: {
2193
+ count: number;
2194
+ } | undefined;
2074
2195
  }, {
2075
2196
  edits_touched: number;
2076
2197
  qualifying_cites: number;
@@ -2081,6 +2202,22 @@ declare const citeCoverageReportSchema: z.ZodObject<{
2081
2202
  compliant_cites?: number | undefined;
2082
2203
  noncompliant_cites?: number | undefined;
2083
2204
  uncorrelatable_edits?: number | undefined;
2205
+ recall_backed_edits?: number | undefined;
2206
+ recall_coverage_rate?: number | null | undefined;
2207
+ exposed_and_mutated?: {
2208
+ count: number;
2209
+ ids?: string[] | undefined;
2210
+ } | undefined;
2211
+ mutations_observed?: {
2212
+ count: number;
2213
+ } | undefined;
2214
+ mutation_pool?: {
2215
+ attributed: number;
2216
+ unattributed_workspace_dirty: number;
2217
+ } | undefined;
2218
+ sessions_closed?: {
2219
+ count: number;
2220
+ } | undefined;
2084
2221
  }>;
2085
2222
  per_client: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2086
2223
  edits_touched: z.ZodOptional<z.ZodNumber>;
@@ -2157,6 +2294,22 @@ declare const citeCoverageReportSchema: z.ZodObject<{
2157
2294
  compliant_cites?: number | undefined;
2158
2295
  noncompliant_cites?: number | undefined;
2159
2296
  uncorrelatable_edits?: number | undefined;
2297
+ recall_backed_edits?: number | undefined;
2298
+ recall_coverage_rate?: number | null | undefined;
2299
+ exposed_and_mutated?: {
2300
+ count: number;
2301
+ ids?: string[] | undefined;
2302
+ } | undefined;
2303
+ mutations_observed?: {
2304
+ count: number;
2305
+ } | undefined;
2306
+ mutation_pool?: {
2307
+ attributed: number;
2308
+ unattributed_workspace_dirty: number;
2309
+ } | undefined;
2310
+ sessions_closed?: {
2311
+ count: number;
2312
+ } | undefined;
2160
2313
  };
2161
2314
  generated_at: string;
2162
2315
  layer_filter?: "personal" | "team" | "all" | undefined;
@@ -2200,6 +2353,22 @@ declare const citeCoverageReportSchema: z.ZodObject<{
2200
2353
  compliant_cites?: number | undefined;
2201
2354
  noncompliant_cites?: number | undefined;
2202
2355
  uncorrelatable_edits?: number | undefined;
2356
+ recall_backed_edits?: number | undefined;
2357
+ recall_coverage_rate?: number | null | undefined;
2358
+ exposed_and_mutated?: {
2359
+ count: number;
2360
+ ids?: string[] | undefined;
2361
+ } | undefined;
2362
+ mutations_observed?: {
2363
+ count: number;
2364
+ } | undefined;
2365
+ mutation_pool?: {
2366
+ attributed: number;
2367
+ unattributed_workspace_dirty: number;
2368
+ } | undefined;
2369
+ sessions_closed?: {
2370
+ count: number;
2371
+ } | undefined;
2203
2372
  };
2204
2373
  generated_at: string;
2205
2374
  layer_filter?: "personal" | "team" | "all" | undefined;
@@ -42,7 +42,7 @@ import {
42
42
  recallInputSchema,
43
43
  recallOutputSchema,
44
44
  structuredWarningSchema
45
- } from "../chunk-WVPDH4BF.js";
45
+ } from "../chunk-355LUDLW.js";
46
46
  export {
47
47
  FabExtractKnowledgeInputSchema,
48
48
  FabExtractKnowledgeInputShape,
@@ -51,6 +51,6 @@ declare const LEGACY_KB_REGEX: RegExp;
51
51
  *
52
52
  * Length guarantee: ≥ 800 bytes (rc.24: grew from ≥400 with cite-contract syntax).
53
53
  */
54
- declare const BOOTSTRAP_CANONICAL = "# Fabric Bootstrap\n\n\u672C\u9879\u76EE\u4F7F\u7528 Fabric \u7BA1\u7406\u8DE8\u5BA2\u6237\u7AEF AI \u77E5\u8BC6\u4E0E\u884C\u4E3A\u89C4\u5219\u3002\u672C\u6587\u4EF6\u7531 `fabric install` \u540C\u6B65\u5230\u4E09\u7AEF managed block,**\u4E0D\u8981\u624B\u52A8\u7F16\u8F91\u4E09\u7AEF\u7684 block**,\u53EA\u6539\u8FD9\u91CC + \u91CD\u8DD1 `fabric install`\u3002\n\n## For Developers\n\n\u8FD9\u4E2A\u6587\u4EF6\u662F **AI \u5BA2\u6237\u7AEF\u7684\u7B56\u7565\u4E0E\u89C4\u7EA6\u914D\u7F6E**,\u4E0D\u662F dev onboarding\u3002\u4F60\u4E0D\u9700\u8981\u8BFB Self-archive / Cite / Phase 0.4 \u7B49\u7EC6\u8282\u3002\n\u4F5C\u4E3A dev \u4F60\u53EA\u9700\u8981:\u5728\u6BCF\u4E2A repo \u8DD1\u4E00\u6B21 `fabric install`,\u51FA\u95EE\u9898\u8DD1 `fabric doctor`,\u5728 `.fabric/knowledge/<type>/` \u4E0B\u5199 markdown\u3002\n**\u4E25\u7981\u624B\u52A8\u7F16\u8F91 `.fabric/agents.meta.json`** \u2014 \u6D3E\u751F\u72B6\u6001\u7531 engine \u91CD\u5EFA\u3002\n\n## 5 \u5206\u949F\u4E0A\u624B (Dev Quickstart)\n\n**Fabric \u662F\u4EC0\u4E48**:\u8DE8\u5BA2\u6237\u7AEF(Claude Code / Codex CLI / Cursor)\u7684 AI \u77E5\u8BC6\u5C42\u3002\u628A\u56E2\u961F/\u9879\u76EE\u7684 **decisions / pitfalls / guidelines / models / processes** \u5B58\u4E3A markdown,hook \u81EA\u52A8 surface \u7ED9 AI,\u8BA9 AI \u4E0D\u7528\u6BCF\u6B21\u91CD\u5B66\u3002\n\n**\u4F60\u8981\u505A\u7684 (DO)** vs **engine \u81EA\u52A8\u7684 (DON'T \u624B\u52A8)**:\n\n| \u4F60 DO | \u4F60 DON'T |\n| --- | --- |\n| \u6BCF\u4E2A repo \u8DD1\u4E00\u6B21 `fabric install` | \u624B\u7F16 `.fabric/agents.meta.json` |\n| \u5F02\u5E38\u65F6\u8DD1 `fabric doctor` (--fix \u81EA\u6108) | \u624B\u7F16 `.claude/hooks/` \u4E0B `.cjs` |\n| \u5728 `.fabric/knowledge/<type>/` \u4E0B\u5199 markdown | \u64CD\u5FC3 Phase 0.4 / E3 / cite policy |\n| `npm install -g @fenglimg/fabric-cli@latest` \u5347\u7EA7 | \u80CC 35 \u6761 doctor lint \u4EE3\u7801 |\n\n**4 \u6B65\u5FAA\u73AF**: `fabric install` (\u4E00\u6B21) \u2192 AI \u6B63\u5E38\u5DE5\u4F5C (hook on session start + edit) \u2192 AI \u63D0\u8BAE\u6761\u76EE\u5165 `.fabric/knowledge/pending/` \u2192 \u7528 `fabric-review` skill \u6216 `fabric doctor --fix` \u5BA1\u6838\u5F52\u6863\u3002\n\n**\u771F\u4F8B**:\u67D0 sprite \u9ED1\u8FB9 root cause \u662F `atlas.premultiplyAlpha` flag \u53CD\u5411 \u2014 \u5199\u8FDB `.fabric/knowledge/pitfalls/` \u540E,\u4E0B\u6B21\u540C\u7C7B\u95EE\u9898 AI \u81EA\u52A8 reference\u3002\n\n\u5B8C\u6574 maintainer \u7248\u89C1 `docs/USER-QUICKSTART.md`\u3002\n\n## \u884C\u4E3A\u89C4\u5219\n- **\u4FEE\u6539\u4EFB\u4F55\u6587\u4EF6\u524D**:\u4F18\u5148\u5355\u6B65 `fab_recall(paths=[<\u88AB\u6539\u6587\u4EF6>])` \u2014\u2014 \u4E00\u6B21\u8C03\u7528\u76F4\u63A5\u62FF\u56DE\u6240\u6709\u76F8\u5173 KB \u6B63\u6587(rc.37+ \u9ED8\u8BA4\u8DEF\u5F84,\u7701\u6389\u624B\u52A8\u6311 id \u7684\u73AF\u8282)\u3002**\u4EC5\u5F53\u5355\u6B65\u62C9\u56DE\u7684\u6B63\u6587\u8FC7\u591A\u3001\u5BFC\u81F4\u4E0A\u4E0B\u6587\u8FC7\u8F7D\u9700\u7CBE\u786E\u88C1\u526A\u566A\u97F3\u65F6**\u624D\u8D70\u4E24\u6B65:\u5148 `fab_plan_context(paths=[...])` \u62FF `selection_token` + \u9876\u5C42 `candidates[]`(\u4ECE `candidates[].stable_id` \u6311),\u518D `fab_get_knowledge_sections({ selection_token, ai_selected_stable_ids: [<id>...] })` \u53D6\u6B63\u6587\u3002\n- **`.fabric/agents.meta.json` \u4E25\u7981\u624B\u52A8\u7F16\u8F91**;engine \u4F1A\u81EA\u52A8\u540C\u6B65\u6D3E\u751F\u72B6\u6001,\u663E\u5F0F reconcile \u8DD1 `fabric doctor --fix`\u3002\n\n## \u77E5\u8BC6\u5E93(KB)\n- **Discovery**:SessionStart hook \u5217 broad-scoped \u6761\u76EE(\u542B personal layer `KP-*` \u6761\u76EE,\u5F15\u7528\u65B9\u5F0F\u76F8\u540C);edit \u6587\u4EF6\u65F6 PreToolUse hook \u53EF\u80FD\u89E6\u53D1 narrow hint\u3002\n- **Usage**:\u5E38\u6001\u8D70\u5355\u6B65 `fab_recall(paths=[...])` \u4E00\u6B21\u62FF\u56DE\u76F8\u5173 KB \u6B63\u6587\u3002\u4EC5\u5F53\u5355\u6B65\u6B63\u6587\u8FC7\u591A\u81F4\u4E0A\u4E0B\u6587\u8FC7\u8F7D\u3001\u9700\u7CBE\u786E\u88C1\u526A\u566A\u97F3\u65F6\u624D\u4E24\u6B65:`fab_plan_context(paths=[...])` \u8FD4\u56DE `selection_token` + \u9876\u5C42 `candidates[]`,\u518D `fab_get_knowledge_sections({ selection_token, ai_selected_stable_ids: [<\u4ECE candidates[].stable_id \u6311>...] })` \u62C9\u5168\u6587;`selection_token` \u5FC5\u987B\u6765\u81EA\u6700\u8FD1\u4E00\u6B21 `fab_plan_context`,\u4E0D\u53EF\u51ED\u7A7A\u7F16\u9020\u3002\n- **session_id**: \u8C03\u7528 `fab_recall` / `fab_plan_context` \u65F6, \u52A1\u5FC5\u628A\u5F53\u524D client session id \u4F5C\u4E3A `session_id` \u53C2\u6570\u4F20\u5165(Claude Code \u7684 session id \u5728 stdin payload \u4E2D, Codex \u7684\u5BF9\u5E94 identifier \u540C\u7406)\u3002\u8FD9\u80FD\u8BA9 `fabric doctor --archive-history` \u4E0E archive-hint hook \u51C6\u786E\u8BC6\u522B\u8DE8\u4F1A\u8BDD debt \u72B6\u6001\u3002\n- **Write flows**:`fabric-archive` / `fabric-review` / `fabric-import` \u4E09\u4E2A Skills\u3002\n- **Language**:\u6E32\u67D3\u6309 `.fabric/fabric-config.json` \u7684 `fabric_language` \u5B57\u6BB5\u3002\n- **Archive cadence nudge** (rc.36): \u6BCF\u5B8C\u6210 5+ \u6B21 Edit / \u663E\u8457 decision \u540E,\u5728\u5408\u9002\u56DE\u5408\u4E3B\u52A8 propose \u8C03 `fabric-archive` skill \u2014 archive \u6CA1\u5EFA\u7ACB\u9891\u7387\u4F1A\u8BA9 KB \u6162\u901F\u6B7B\u6389\u3002\n- **Review backlog nudge** (rc.36): `.fabric/knowledge/pending/` \u7D2F\u79EF >10 \u6761\u65F6,\u5728\u5408\u9002\u56DE\u5408\u4E3B\u52A8 propose \u8C03 `fabric-review` skill \u6279\u91CF\u5BA1,\u907F\u514D draft \u5361\u6B7B\u3002\n\n## Self-archive policy (v2.0.0-rc.37 NEW-2: \u7B80\u5316 4 \u4FE1\u53F7 \u2192 2 \u5927\u7C7B)\n\n- **\u89E6\u53D1** (\u672C\u4F1A\u8BDD\u51FA\u73B0\u4EE5\u4E0B\u4EFB\u4E00\u4FE1\u53F7, \u5728\u8BE5 turn \u56DE\u590D\u672B\u5C3E\u81EA\u4E3B\u8C03\u7528 `fabric-archive` skill, \u8D70 AI \u81EA\u89E6\u53D1\u5165\u53E3 E3_ai_self_trigger):\n 1. **User-driven normative** \u2014 \u7528\u6237\u6D88\u606F\u4E2D\u663E\u5F0F\u8868\u8FBE normative \u610F\u56FE: `\u4EE5\u540E` / `always` / `never` / `from now on` / `\u4E0B\u6B21\u6CE8\u610F` / `\u8BB0\u4E00\u4E0B` / `\u6C38\u8FDC\u4E0D\u8981`, OR \u7528\u6237\u5728 \u22652 \u5019\u9009\u95F4\u6743\u8861\u540E\u7ED9\u51FA rationale \u9501\u5B9A\u65B9\u5411, OR \u7528\u6237\u62D2\u4E86\u67D0\u5EFA\u8BAE**\u5E76**\u8BF4\u4E86\u539F\u56E0 (\u62D2\u7EDD\u7406\u7531\u672C\u8EAB\u662F\u77E5\u8BC6)\n 2. **Wrong-turn-and-revert** \u2014 AI \u5C1D\u8BD5 path X, \u53CD\u601D\u540E\u6539\u8D70 path Y (\u5C24\u5176\u5F53 path X \u662F\u975E\u663E\u7136\u8E29\u5751); \u6DB5\u76D6\u6280\u672F\u51B3\u7B56\u53CD\u8F6C + \u5DE5\u5177/\u8303\u5F0F\u5207\u6362 + \u5931\u8D25\u91CD\u8BD5\u3002Anchor: \u4E00\u5B9A\u6709\"\u5426\u5B9A+\u66FF\u4EE3\"\u7684\u4E24\u6B65\u7ED3\u6784, \u4E0D\u662F\u5355\u7EAF\u63A2\u7D22\u5931\u8D25\n\n \u8001 4-state (Normative / Decision-confirmation / Explicit-dismissal / Wrong-turn) \u73B0\u5408\u5E76: \u524D 3 \u4E2A\u5168\u662F\"\u7528\u6237\u6D88\u606F\u4E2D\u663E\u5F0F\u8868\u8FBE\"\u6027\u8D28, \u6298\u6210 1 \u7C7B; \u7B2C 4 \u662F\"AI \u81EA\u5DF1\u7684\u53CD\u601D\u8DEF\u5F84\", \u72EC\u7ACB 1 \u7C7B\u3002\u4E24\u7C7B\u5404\u81EA\u7684\u672C\u8D28\u5224\u522B\u4E0D\u53D8, \u89E6\u53D1\u9762\u6CA1\u53D8\u7A84\u3002\n\n- **Anti-trigger** (\u660E\u786E\u4E0D\u89E6\u53D1):\n - \u7528\u6237\u7EAF\u8BE2\u95EE (\u65E0 normative \u8868\u8FBE)\n - \u7B80\u5355 refactor / typo fix\n - AI \u81EA\u5DF1\u4EA7\u751F\u7684'\u6D1E\u5BDF' (\u5FC5\u987B\u7531\u7528\u6237\u6D88\u606F\u4E2D\u4FE1\u53F7\u6216 AI \u81EA\u5DF1\u7684 wrong-turn \u89E6\u53D1, \u4E0D\u662F\u51ED\u7A7A\"\u6211\u5B66\u5230\u4E86\"\u6027\u8D28)\n\n- **Anti-loop \u4E09\u6761\u9632\u62A4**:\n - \u540C turn \u6700\u591A\u81EA\u8C03 1 \u6B21\n - \u540C session \u540C outcome \u4E0D\u91CD\u590D (\u82E5 user_dismissed, \u672C\u4F1A\u8BDD\u4E0D\u518D\u81EA\u8C03\u76F8\u540C\u4E3B\u9898)\n - Phase 2.5 viability gate \u515C\u5E95 (skill \u5185\u90E8\u4ECD\u8DD1 gate, AI \u5224\u9519\u4E0D\u4F1A\u4E71\u5199 pending)\n\n- **\u5448\u73B0\u6A21\u677F** (turn \u672B\u5C3E\u63D2\u5165, \u4E24\u884C: \u5148 marker \u884C\u4F9B Phase 1.5 \u68C0\u6D4B, \u518D user-facing \u63D0\u793A):\n ```\n self-archive policy triggered by signal: <User-driven normative|Wrong-turn-and-revert>\n \u987A\u624B\u5F52\u6863: \u6CE8\u610F\u5230\u4F60\u8BF4 `<\u89E6\u53D1\u77ED\u8BED>`, \u5DF2\u8C03\u7528 fabric-archive \u6293 N \u6761\u5019\u9009 \u2192 .fabric/knowledge/pending/...\n \u82E5\u4E0D\u8BE5\u8BB0, \u7B54 '\u64A4\u9500' \u6211\u4F1A\u8C03 fab_review reject\u3002\n ```\n \u7B2C\u4E00\u884C\u662F Phase 1.5 Trigger Gate \u8BC6\u522B E3 \u5165\u53E3\u7684 structured marker (verbatim \u5B57\u7B26\u4E32 `self-archive policy triggered by signal`, \u540E\u63A5\u5192\u53F7 + \u89E6\u53D1\u4FE1\u53F7\u540D)\u3002\u7B2C\u4E8C\u884C\u8D77\u662F\u7ED9\u7528\u6237\u770B\u7684\u4E2D\u6587\u63D0\u793A\u3002\u4E24\u884C\u90FD\u5FC5\u987B\u51FA\u73B0; \u7F3A marker \u884C Phase 1.5 \u65E0\u6CD5\u8DEF\u7531\u5230 E3_ai_self_trigger\u3002\n\n Backward compat: Phase 1.5 entry-point regex \u540C\u65F6\u8BC6\u522B\u8001 4 \u4E2A\u4FE1\u53F7\u540D (Normative / Wrong-turn-and-revert / Decision confirmation / Explicit dismissal) \u4E0E\u65B0 2 \u5927\u7C7B\u540D, \u65E7 session marker \u4ECD\u80FD\u6B63\u786E\u8DEF\u7531\u3002\n\n## Cite policy (v2.0.0-rc.37 NEW-1: \u7B80\u5316 4-state \u2192 2-state)\n\n- **\u89E6\u53D1**: \u505A edit / decide / propose plan \u4E4B\u524D,**\u56DE\u590D\u9996\u884C**\u5FC5\u987B\u5199 `KB: <id> (<\u22648\u5B57 \u7528\u6CD5>) [applied|dismissed:<reason>]` \u6216 `KB: none [<reason>]`\u3002\n- **`[applied]` \u9A8C\u8BC1\u4E49\u52A1**: \u5F15\u7528\u4EFB\u4F55 id \u524D\u5FC5\u987B\u5148\u7528 fab_recall (\u6216\u4E24\u6B65 fab_plan_context \u2192 fab_get_knowledge_sections) \u5B9E\u9645\u6293 KB body, \u9632\u6B62\u7F16\u9020 id\u3002\u9A8C\u8BC1\u4E0D\u901A\u8FC7 = \u4E0D\u80FD cite\u3002\n- **store \u524D\u7F00 (v2.1, \u591A store)**: \u5F53 read-set \u542B\u591A\u4E2A store \u4E14\u540C\u4E00 local id \u5728\u591A store \u95F4 shadow \u65F6,cite \u5FC5\u987B store-qualified: `KB: <store-alias>:<id> ...`(\u5982 `KB: team:KT-DEC-0001 (auth) [applied]`);alias \u7528\u6237\u81EA\u5B9A/canonical,\u5E95\u5C42 UUID\u3002\u5355 store \u6216\u65E0\u6B67\u4E49\u65F6\u88F8 `KB: <id>` \u4ECD valid\u3002personal-only \u6761\u76EE cite \u8FDB\u56E2\u961F\u4EA7\u7269=\u5F3A warning(\u63A5 P2 \u5199\u8DEF\u5F84\u9632\u6CC4\u6F0F R5#3)\u3002\n- **contract \u8BED\u6CD5**: decisions/pitfalls \u7C7B `[applied]` cite \u5C3E\u6BB5\u52A0 contract: `\u2192 <operator> [<operator> ...]`,operator \u2208 {`edit:<glob>` `!edit:<glob>` `require:<symbol>` `forbid:<symbol>` `skip:<reason>`}\u3002\u4F8B:`KB: K-001 (auth) [applied] \u2192 edit:src/auth/**/*.ts !edit:src/legacy/**`\u3002\n- **skip reason \u8BCD\u5178**: `sequencing | conditional | semantic | aesthetic | architectural | other:<text>`\u3002\n- **type \u8DEF\u7531**: models \u7C7B\u5F15\u7528\u4E3A reference cite,\u4E0D\u9700\u8981 contract;guidelines/processes \u7C7B\u6682\u4E0D\u5F3A\u5236,\u63A8\u540E LLM-judge\u3002\n- **\u7528\u6237\u53E3\u5934\u63D0\u89C4\u5219\u6CA1\u7ED9 id**: \u5148\u8C03 `fab_recall(paths)` \u6216 `fab_extract_knowledge` \u53CD\u67E5\u3002\n- **dismissed reason**: \u679A\u4E3E `scope-mismatch | outdated | not-applicable | other:<text>`\u3002\n- **`KB: none` sentinel**: \u679A\u4E3E\u4E24\u79CD\u5408\u89C4\u7406\u7531\u2014\u2014`[no-relevant]` \u5DF2\u8C03 `fab_recall` / `fab_plan_context`(\u6216 hook \u8F93\u51FA\u53EF\u89C1)\u4F46\u65E0\u53EF\u7528\u6761\u76EE;`[not-applicable]` \u5F53\u524D\u52A8\u4F5C\u4E0D\u5728 cite \u8303\u56F4(\u7EAF\u63A2\u7D22 / Bash \u53EA\u8BFB / \u7528\u6237\u95EE\u7B54)\u3002\u88F8 `KB: none`(\u65E0\u540E\u7F00)\u4ECD\u7136 valid,\u5F52\u7C7B\u4E3A `[unspecified]`(legacy \u517C\u5BB9,\u9F13\u52B1\u540E\u7EED\u8865\u6CE8)\u3002\n- **\u7A3D\u6838**: `fabric doctor --cite-coverage [--since=7d] [--client=cc|codex|all]` \u8F93\u51FA cite \u8986\u76D6\u7387,\u542B `KB: none` sentinel \u62C6\u5206\u3002\u672C\u89C4\u5219\u4E0D\u963B\u65AD\u4F60\u5DE5\u4F5C,\u53EA\u8BB0\u5F55\u3002\n- **Backward compat**: \u89E3\u6790\u5668\u540C\u65F6\u63A5\u53D7\u8001 4-state tags (`planned` / `recalled` / `chained-from <id>`) \u2014 \u90FD\u6620\u5C04\u5230 `[applied]` \u8BED\u4E49,gradually \u8FC1\u5230\u65B0\u7B80\u5316\u5F62\u6001\u5373\u53EF,\u65E7 session \u7559\u4E0B\u7684 cite \u4ECD\u7136\u8BA1\u5165 cite-coverage\u3002\n";
54
+ declare const BOOTSTRAP_CANONICAL = "# Fabric Bootstrap\n\n\u672C\u9879\u76EE\u4F7F\u7528 Fabric \u7BA1\u7406\u8DE8\u5BA2\u6237\u7AEF AI \u77E5\u8BC6\u4E0E\u884C\u4E3A\u89C4\u5219\u3002\u672C\u6587\u4EF6\u7531 `fabric install` \u540C\u6B65\u5230\u4E09\u7AEF managed block,**\u4E0D\u8981\u624B\u52A8\u7F16\u8F91\u4E09\u7AEF\u7684 block**,\u53EA\u6539\u8FD9\u91CC + \u91CD\u8DD1 `fabric install`\u3002\n\n## For Developers\n\n\u8FD9\u4E2A\u6587\u4EF6\u662F **AI \u5BA2\u6237\u7AEF\u7684\u7B56\u7565\u4E0E\u89C4\u7EA6\u914D\u7F6E**,\u4E0D\u662F dev onboarding\u3002\u4F60\u4E0D\u9700\u8981\u8BFB Self-archive / Cite / Phase 0.4 \u7B49\u7EC6\u8282\u3002\n\u4F5C\u4E3A dev \u4F60\u53EA\u9700\u8981:\u5728\u6BCF\u4E2A repo \u8DD1\u4E00\u6B21 `fabric install`,\u51FA\u95EE\u9898\u8DD1 `fabric doctor`,\u5728 `.fabric/knowledge/<type>/` \u4E0B\u5199 markdown\u3002\n**\u4E25\u7981\u624B\u52A8\u7F16\u8F91 `.fabric/agents.meta.json`** \u2014 \u6D3E\u751F\u72B6\u6001\u7531 engine \u91CD\u5EFA\u3002\n\n## 5 \u5206\u949F\u4E0A\u624B (Dev Quickstart)\n\n**Fabric \u662F\u4EC0\u4E48**:\u8DE8\u5BA2\u6237\u7AEF(Claude Code / Codex CLI / Cursor)\u7684 AI \u77E5\u8BC6\u5C42\u3002\u628A\u56E2\u961F/\u9879\u76EE\u7684 **decisions / pitfalls / guidelines / models / processes** \u5B58\u4E3A markdown,hook \u81EA\u52A8 surface \u7ED9 AI,\u8BA9 AI \u4E0D\u7528\u6BCF\u6B21\u91CD\u5B66\u3002\n\n**\u4F60\u8981\u505A\u7684 (DO)** vs **engine \u81EA\u52A8\u7684 (DON'T \u624B\u52A8)**:\n\n| \u4F60 DO | \u4F60 DON'T |\n| --- | --- |\n| \u6BCF\u4E2A repo \u8DD1\u4E00\u6B21 `fabric install` | \u624B\u7F16 `.fabric/agents.meta.json` |\n| \u5F02\u5E38\u65F6\u8DD1 `fabric doctor` (--fix \u81EA\u6108) | \u624B\u7F16 `.claude/hooks/` \u4E0B `.cjs` |\n| \u5728 `.fabric/knowledge/<type>/` \u4E0B\u5199 markdown | \u64CD\u5FC3 Phase 0.4 / E3 / cite policy |\n| `npm install -g @fenglimg/fabric-cli@latest` \u5347\u7EA7 | \u80CC 35 \u6761 doctor lint \u4EE3\u7801 |\n\n**4 \u6B65\u5FAA\u73AF**: `fabric install` (\u4E00\u6B21) \u2192 AI \u6B63\u5E38\u5DE5\u4F5C (hook on session start + edit) \u2192 AI \u63D0\u8BAE\u6761\u76EE\u5165 `.fabric/knowledge/pending/` \u2192 \u7528 `fabric-review` skill \u6216 `fabric doctor --fix` \u5BA1\u6838\u5F52\u6863\u3002\n\n**\u771F\u4F8B**:\u67D0 sprite \u9ED1\u8FB9 root cause \u662F `atlas.premultiplyAlpha` flag \u53CD\u5411 \u2014 \u5199\u8FDB `.fabric/knowledge/pitfalls/` \u540E,\u4E0B\u6B21\u540C\u7C7B\u95EE\u9898 AI \u81EA\u52A8 reference\u3002\n\n\u5B8C\u6574 maintainer \u7248\u89C1 `docs/USER-QUICKSTART.md`\u3002\n\n## \u884C\u4E3A\u89C4\u5219\n- **\u4FEE\u6539\u4EFB\u4F55\u6587\u4EF6\u524D**:\u4F18\u5148\u5355\u6B65 `fab_recall(paths=[<\u88AB\u6539\u6587\u4EF6>])` \u2014\u2014 \u4E00\u6B21\u8C03\u7528\u76F4\u63A5\u62FF\u56DE\u6240\u6709\u76F8\u5173 KB \u6B63\u6587(rc.37+ \u9ED8\u8BA4\u8DEF\u5F84,\u7701\u6389\u624B\u52A8\u6311 id \u7684\u73AF\u8282)\u3002**\u4EC5\u5F53\u5355\u6B65\u62C9\u56DE\u7684\u6B63\u6587\u8FC7\u591A\u3001\u5BFC\u81F4\u4E0A\u4E0B\u6587\u8FC7\u8F7D\u9700\u7CBE\u786E\u88C1\u526A\u566A\u97F3\u65F6**\u624D\u8D70\u4E24\u6B65:\u5148 `fab_plan_context(paths=[...])` \u62FF `selection_token` + \u9876\u5C42 `candidates[]`(\u4ECE `candidates[].stable_id` \u6311),\u518D `fab_get_knowledge_sections({ selection_token, ai_selected_stable_ids: [<id>...] })` \u53D6\u6B63\u6587\u3002\n- **`.fabric/agents.meta.json` \u4E25\u7981\u624B\u52A8\u7F16\u8F91**;engine \u4F1A\u81EA\u52A8\u540C\u6B65\u6D3E\u751F\u72B6\u6001,\u663E\u5F0F reconcile \u8DD1 `fabric doctor --fix`\u3002\n\n## \u77E5\u8BC6\u5E93(KB)\n- **Discovery**:SessionStart hook \u5217 broad-scoped \u6761\u76EE(\u542B personal layer `KP-*` \u6761\u76EE,\u5F15\u7528\u65B9\u5F0F\u76F8\u540C);edit \u6587\u4EF6\u65F6 PreToolUse hook \u53EF\u80FD\u89E6\u53D1 narrow hint\u3002\n- **Usage**:\u5E38\u6001\u8D70\u5355\u6B65 `fab_recall(paths=[...])` \u4E00\u6B21\u62FF\u56DE\u76F8\u5173 KB \u6B63\u6587\u3002\u4EC5\u5F53\u5355\u6B65\u6B63\u6587\u8FC7\u591A\u81F4\u4E0A\u4E0B\u6587\u8FC7\u8F7D\u3001\u9700\u7CBE\u786E\u88C1\u526A\u566A\u97F3\u65F6\u624D\u4E24\u6B65:`fab_plan_context(paths=[...])` \u8FD4\u56DE `selection_token` + \u9876\u5C42 `candidates[]`,\u518D `fab_get_knowledge_sections({ selection_token, ai_selected_stable_ids: [<\u4ECE candidates[].stable_id \u6311>...] })` \u62C9\u5168\u6587;`selection_token` \u5FC5\u987B\u6765\u81EA\u6700\u8FD1\u4E00\u6B21 `fab_plan_context`,\u4E0D\u53EF\u51ED\u7A7A\u7F16\u9020\u3002\n- **session_id**: \u8C03\u7528 `fab_recall` / `fab_plan_context` \u65F6, \u52A1\u5FC5\u628A\u5F53\u524D client session id \u4F5C\u4E3A `session_id` \u53C2\u6570\u4F20\u5165(Claude Code \u7684 session id \u5728 stdin payload \u4E2D, Codex \u7684\u5BF9\u5E94 identifier \u540C\u7406)\u3002\u8FD9\u80FD\u8BA9 `fabric doctor --archive-history` \u4E0E archive-hint hook \u51C6\u786E\u8BC6\u522B\u8DE8\u4F1A\u8BDD debt \u72B6\u6001\u3002\n- **Skills (7)**:\u5199\u6D41\u7A0B `fabric-archive` / `fabric-review` / `fabric-import`;store \u6D41\u7A0B `fabric-store` / `fabric-sync` / `fabric-connect`;\u8BCA\u65AD `fabric-audit`\u3002\n- **Language**:\u6E32\u67D3\u6309 `.fabric/fabric-config.json` \u7684 `fabric_language` \u5B57\u6BB5\u3002\n- **Archive cadence nudge** (rc.36): \u6BCF\u5B8C\u6210\u4E00\u6279 Edit(\u9ED8\u8BA4 ~20 \u6B21, \u4E0E Stop hook \u9608\u503C config `archive_edit_threshold` \u4E00\u81F4)/ \u663E\u8457 decision \u540E,\u5728\u5408\u9002\u56DE\u5408\u4E3B\u52A8 propose \u8C03 `fabric-archive` skill \u2014 archive \u6CA1\u5EFA\u7ACB\u9891\u7387\u4F1A\u8BA9 KB \u6162\u901F\u6B7B\u6389\u3002\n- **Review backlog nudge** (rc.36): `.fabric/knowledge/pending/` \u7D2F\u79EF >10 \u6761\u65F6,\u5728\u5408\u9002\u56DE\u5408\u4E3B\u52A8 propose \u8C03 `fabric-review` skill \u6279\u91CF\u5BA1,\u907F\u514D draft \u5361\u6B7B\u3002\n\n## Self-archive policy (v2.0.0-rc.37 NEW-2: \u7B80\u5316 4 \u4FE1\u53F7 \u2192 2 \u5927\u7C7B)\n\n- **\u89E6\u53D1** (\u672C\u4F1A\u8BDD\u51FA\u73B0\u4EE5\u4E0B\u4EFB\u4E00\u4FE1\u53F7, \u5728\u8BE5 turn \u56DE\u590D\u672B\u5C3E\u81EA\u4E3B\u8C03\u7528 `fabric-archive` skill, \u8D70 AI \u81EA\u89E6\u53D1\u5165\u53E3 E3_ai_self_trigger):\n 1. **User-driven normative** \u2014 \u7528\u6237\u6D88\u606F\u4E2D\u663E\u5F0F\u8868\u8FBE normative \u610F\u56FE: `\u4EE5\u540E` / `always` / `never` / `from now on` / `\u4E0B\u6B21\u6CE8\u610F` / `\u8BB0\u4E00\u4E0B` / `\u6C38\u8FDC\u4E0D\u8981`, OR \u7528\u6237\u5728 \u22652 \u5019\u9009\u95F4\u6743\u8861\u540E\u7ED9\u51FA rationale \u9501\u5B9A\u65B9\u5411, OR \u7528\u6237\u62D2\u4E86\u67D0\u5EFA\u8BAE**\u5E76**\u8BF4\u4E86\u539F\u56E0 (\u62D2\u7EDD\u7406\u7531\u672C\u8EAB\u662F\u77E5\u8BC6)\n 2. **Wrong-turn-and-revert** \u2014 AI \u5C1D\u8BD5 path X, \u53CD\u601D\u540E\u6539\u8D70 path Y (\u5C24\u5176\u5F53 path X \u662F\u975E\u663E\u7136\u8E29\u5751); \u6DB5\u76D6\u6280\u672F\u51B3\u7B56\u53CD\u8F6C + \u5DE5\u5177/\u8303\u5F0F\u5207\u6362 + \u5931\u8D25\u91CD\u8BD5\u3002Anchor: \u4E00\u5B9A\u6709\"\u5426\u5B9A+\u66FF\u4EE3\"\u7684\u4E24\u6B65\u7ED3\u6784, \u4E0D\u662F\u5355\u7EAF\u63A2\u7D22\u5931\u8D25\n\n \u8001 4-state (Normative / Decision-confirmation / Explicit-dismissal / Wrong-turn) \u73B0\u5408\u5E76: \u524D 3 \u4E2A\u5168\u662F\"\u7528\u6237\u6D88\u606F\u4E2D\u663E\u5F0F\u8868\u8FBE\"\u6027\u8D28, \u6298\u6210 1 \u7C7B; \u7B2C 4 \u662F\"AI \u81EA\u5DF1\u7684\u53CD\u601D\u8DEF\u5F84\", \u72EC\u7ACB 1 \u7C7B\u3002\u4E24\u7C7B\u5404\u81EA\u7684\u672C\u8D28\u5224\u522B\u4E0D\u53D8, \u89E6\u53D1\u9762\u6CA1\u53D8\u7A84\u3002\n\n- **Anti-trigger** (\u660E\u786E\u4E0D\u89E6\u53D1):\n - \u7528\u6237\u7EAF\u8BE2\u95EE (\u65E0 normative \u8868\u8FBE)\n - \u7B80\u5355 refactor / typo fix\n - AI \u81EA\u5DF1\u4EA7\u751F\u7684'\u6D1E\u5BDF' (\u5FC5\u987B\u7531\u7528\u6237\u6D88\u606F\u4E2D\u4FE1\u53F7\u6216 AI \u81EA\u5DF1\u7684 wrong-turn \u89E6\u53D1, \u4E0D\u662F\u51ED\u7A7A\"\u6211\u5B66\u5230\u4E86\"\u6027\u8D28)\n\n- **Anti-loop \u4E09\u6761\u9632\u62A4**:\n - \u540C turn \u6700\u591A\u81EA\u8C03 1 \u6B21\n - \u540C session \u540C outcome \u4E0D\u91CD\u590D (\u82E5 user_dismissed, \u672C\u4F1A\u8BDD\u4E0D\u518D\u81EA\u8C03\u76F8\u540C\u4E3B\u9898)\n - Phase 2.5 viability gate \u515C\u5E95 (skill \u5185\u90E8\u4ECD\u8DD1 gate, AI \u5224\u9519\u4E0D\u4F1A\u4E71\u5199 pending)\n\n- **\u5448\u73B0\u6A21\u677F** (turn \u672B\u5C3E\u63D2\u5165, \u4E24\u884C: \u5148 marker \u884C\u4F9B Phase 1.5 \u68C0\u6D4B, \u518D user-facing \u63D0\u793A):\n ```\n self-archive policy triggered by signal: <User-driven normative|Wrong-turn-and-revert>\n \u987A\u624B\u5F52\u6863: \u6CE8\u610F\u5230\u4F60\u8BF4 `<\u89E6\u53D1\u77ED\u8BED>`, \u5DF2\u8C03\u7528 fabric-archive \u6293 N \u6761\u5019\u9009 \u2192 .fabric/knowledge/pending/...\n \u82E5\u4E0D\u8BE5\u8BB0, \u7B54 '\u64A4\u9500' \u6211\u4F1A\u8C03 fab_review reject\u3002\n ```\n \u7B2C\u4E00\u884C\u662F Phase 1.5 Trigger Gate \u8BC6\u522B E3 \u5165\u53E3\u7684 structured marker (verbatim \u5B57\u7B26\u4E32 `self-archive policy triggered by signal`, \u540E\u63A5\u5192\u53F7 + \u89E6\u53D1\u4FE1\u53F7\u540D)\u3002\u7B2C\u4E8C\u884C\u8D77\u662F\u7ED9\u7528\u6237\u770B\u7684\u4E2D\u6587\u63D0\u793A\u3002\u4E24\u884C\u90FD\u5FC5\u987B\u51FA\u73B0; \u7F3A marker \u884C Phase 1.5 \u65E0\u6CD5\u8DEF\u7531\u5230 E3_ai_self_trigger\u3002\n\n Backward compat: Phase 1.5 entry-point regex \u540C\u65F6\u8BC6\u522B\u8001 4 \u4E2A\u4FE1\u53F7\u540D (Normative / Wrong-turn-and-revert / Decision confirmation / Explicit dismissal) \u4E0E\u65B0 2 \u5927\u7C7B\u540D, \u65E7 session marker \u4ECD\u80FD\u6B63\u786E\u8DEF\u7531\u3002\n\n## Cite policy (v2.1 \u2464 recall-based: \u81EA\u52A8\u8BB0\u8D26\u4F18\u5148, \u9996\u884C KB: \u53EF\u9009 override)\n\n- **\u6838\u5FC3 (recall-first \u81EA\u52A8\u8BB0\u8D26)**: \u6539\u4EFB\u4F55\u6587\u4EF6\u524D\u5148 `fab_recall(paths=[<\u88AB\u6539\u6587\u4EF6>])`\u3002\u7CFB\u7EDF\u6309\"\u672C session \u8FD1\u671F recall \u547D\u4E2D\u7684 path \u4E0E\u7F16\u8F91\u76EE\u6807\u91CD\u53E0\"\u81EA\u52A8\u628A\u53EC\u56DE\u7684 KB \u5173\u8054\u4E3A\u8BE5\u6B21 edit \u7684\u5F15\u7528 \u2014\u2014 **\u65E0\u9700\u624B\u5199\u56DE\u590D\u9996\u884C**\u3002PreToolUse hook \u5728\u68C0\u6D4B\u4E0D\u5230\u76F8\u5173 recall \u65F6\u7ED9\u4E00\u6761\u8F6F nudge(nudge \u975E gate,\u5B88 KT-DEC-0007);\u6539\u524D recall \u8FC7(\u6216\u5DF2\u624B\u5199 cite)\u5373\u9759\u9ED8\u3002\u4E3A\u4EC0\u4E48\u4E0D\u518D\u903C\u9996\u884C:\u5148\u60F3\u540E\u8BF4,recall \u624D\u662F\u5F15\u7528\u53D1\u751F\u7684\u771F\u5B9E\u4FE1\u53F7,\u624B\u5199\u9996\u884C\u8FDD\u80CC CoT \u4E14 `KB: none` \u9003\u9038\u4F7F\u65E7\u89C4\u5219\u5F62\u540C\u865A\u8BBE\u3002\n- **\u53EF\u9009 override (\u9996\u884C KB:)**: \u4ECD\u53EF\u5728\u56DE\u590D\u9996\u884C\u624B\u5199 `KB: <id> (<\u22648\u5B57 \u7528\u6CD5>) [applied|dismissed:<reason>]` \u6216 `KB: none [<reason>]` \u6765\u663E\u5F0F\u6807\u6CE8/\u7CBE\u786E\u5316\u5F15\u7528;cite-line \u89E3\u6790\u5668\u4FDD\u7559(\u5411\u540E\u517C\u5BB9),\u65E7\u4E60\u60EF\u4E0D\u7834\u3002\n- **`[applied]` \u9A8C\u8BC1\u4E49\u52A1**: \u5F15\u7528\u4EFB\u4F55 id(\u81EA\u52A8\u6216\u624B\u5199)\u7684\u524D\u63D0\u662F\u5148\u7528 fab_recall (\u6216\u4E24\u6B65 fab_plan_context \u2192 fab_get_knowledge_sections) \u5B9E\u9645\u6293 KB body, \u9632\u6B62\u7F16\u9020 id\u3002\u9A8C\u8BC1\u4E0D\u901A\u8FC7 = \u4E0D\u80FD cite\u3002\n- **store \u524D\u7F00 (v2.1, \u591A store)**: \u5F53 read-set \u542B\u591A\u4E2A store \u4E14\u540C\u4E00 local id \u5728\u591A store \u95F4 shadow \u65F6,cite \u5FC5\u987B store-qualified: `KB: <store-alias>:<id> ...`(\u5982 `KB: team:KT-DEC-0001 (auth) [applied]`);alias \u7528\u6237\u81EA\u5B9A/canonical,\u5E95\u5C42 UUID\u3002\u5355 store \u6216\u65E0\u6B67\u4E49\u65F6\u88F8 `KB: <id>` \u4ECD valid\u3002personal-only \u6761\u76EE cite \u8FDB\u56E2\u961F\u4EA7\u7269=\u5F3A warning(\u63A5 P2 \u5199\u8DEF\u5F84\u9632\u6CC4\u6F0F R5#3)\u3002\n- **contract \u8BED\u6CD5**: decisions/pitfalls \u7C7B `[applied]` cite \u5C3E\u6BB5\u52A0 contract: `\u2192 <operator> [<operator> ...]`,operator \u2208 {`edit:<glob>` `!edit:<glob>` `require:<symbol>` `forbid:<symbol>` `skip:<reason>`}\u3002\u4F8B:`KB: K-001 (auth) [applied] \u2192 edit:src/auth/**/*.ts !edit:src/legacy/**`\u3002\n- **skip reason \u8BCD\u5178**: `sequencing | conditional | semantic | aesthetic | architectural | other:<text>`\u3002\n- **type \u8DEF\u7531**: models \u7C7B\u5F15\u7528\u4E3A reference cite,\u4E0D\u9700\u8981 contract;guidelines/processes \u7C7B\u6682\u4E0D\u5F3A\u5236,\u63A8\u540E LLM-judge\u3002\n- **\u7528\u6237\u53E3\u5934\u63D0\u89C4\u5219\u6CA1\u7ED9 id**: \u5148\u8C03 `fab_recall(paths)` \u6216 `fab_extract_knowledge` \u53CD\u67E5\u3002\n- **dismissed reason**: \u679A\u4E3E `scope-mismatch | outdated | not-applicable | other:<text>`\u3002\n- **`KB: none` sentinel**: \u679A\u4E3E\u4E24\u79CD\u5408\u89C4\u7406\u7531\u2014\u2014`[no-relevant]` \u5DF2\u8C03 `fab_recall` / `fab_plan_context`(\u6216 hook \u8F93\u51FA\u53EF\u89C1)\u4F46\u65E0\u53EF\u7528\u6761\u76EE;`[not-applicable]` \u5F53\u524D\u52A8\u4F5C\u4E0D\u5728 cite \u8303\u56F4(\u7EAF\u63A2\u7D22 / Bash \u53EA\u8BFB / \u7528\u6237\u95EE\u7B54)\u3002\u88F8 `KB: none`(\u65E0\u540E\u7F00)\u4ECD\u7136 valid,\u5F52\u7C7B\u4E3A `[unspecified]`(legacy \u517C\u5BB9,\u9F13\u52B1\u540E\u7EED\u8865\u6CE8)\u3002\n- **\u7A3D\u6838**: `fabric doctor --cite-coverage [--since=7d] [--client=cc|codex|all]` \u8F93\u51FA cite \u8986\u76D6\u7387,\u542B `KB: none` sentinel \u62C6\u5206\u3002\u672C\u89C4\u5219\u4E0D\u963B\u65AD\u4F60\u5DE5\u4F5C,\u53EA\u8BB0\u5F55\u3002\n- **Backward compat**: \u89E3\u6790\u5668\u540C\u65F6\u63A5\u53D7\u8001 4-state tags (`planned` / `recalled` / `chained-from <id>`) \u2014 \u90FD\u6620\u5C04\u5230 `[applied]` \u8BED\u4E49,gradually \u8FC1\u5230\u65B0\u7B80\u5316\u5F62\u6001\u5373\u53EF,\u65E7 session \u7559\u4E0B\u7684 cite \u4ECD\u7136\u8BA1\u5165 cite-coverage\u3002\n- **\u5B8C\u6574\u53C2\u8003\u4E0B\u6C89** (v2.2 SK5): contract operator / skip\u00B7dismissed \u8BCD\u5178 / \u7C7B\u578B\u8DEF\u7531 / \u7A3D\u6838\u53E3\u5F84 / **\u88C1\u51B3\u9636\u68AF** (AI\u81EA\u51B3 \u2192 \u591A-LLM \u542B\u96F6\u4E0A\u4E0B\u6587\u51B7\u8BC4 \u2192 \u975E\u963B\u585E\u961F\u5217) \u7684\u6743\u5A01\u8BE6\u53C2\u5728 `fabric-review` skill \u7684 `ref/cite-contract.md` \u2014\u2014 bootstrap \u53EA\u7559\u53EF\u6267\u884C core,\u6CBB\u7406\u7EC6\u8282\u5F52 ref \u4E0D\u518D\u6491\u5927 bootstrap\u3002\n";
55
55
 
56
56
  export { BOOTSTRAP_CANONICAL, BOOTSTRAP_MARKER_BEGIN, BOOTSTRAP_MARKER_END, BOOTSTRAP_REGEX, LEGACY_KB_MARKER_BEGIN, LEGACY_KB_MARKER_END, LEGACY_KB_REGEX };
@@ -6,7 +6,7 @@ import {
6
6
  LEGACY_KB_MARKER_BEGIN,
7
7
  LEGACY_KB_MARKER_END,
8
8
  LEGACY_KB_REGEX
9
- } from "../chunk-MDWTGOAY.js";
9
+ } from "../chunk-AFT7DB4P.js";
10
10
  export {
11
11
  BOOTSTRAP_CANONICAL,
12
12
  BOOTSTRAP_MARKER_BEGIN,
@@ -1,2 +1,2 @@
1
- export { e as AgentsActivationTier, a as AgentsIdentitySource, b as AgentsLayer, d as AgentsMeta, g as AgentsMetaCountersEnvelope, h as AgentsMetaKnowledgeTypeCounters, A as AgentsMetaNode, i as AgentsMetaNodeActivation, c as AgentsTopologyType, j as AiLedgerEntry, k as AuditMode, C as ClientPaths, D as DefaultLayerFilter, F as FabricConfig, l as FabricLanguage, m as HumanLedgerEntry, H as HumanLockEntry, L as LedgerEntry, M as McpPayloadLimits, R as RuleDescription, n as RuleDescriptionIndexItem } from '../index-GQpaWTm-.js';
1
+ export { e as AgentsActivationTier, a as AgentsIdentitySource, b as AgentsLayer, d as AgentsMeta, g as AgentsMetaCountersEnvelope, h as AgentsMetaKnowledgeTypeCounters, A as AgentsMetaNode, i as AgentsMetaNodeActivation, c as AgentsTopologyType, j as AiLedgerEntry, k as AuditMode, C as ClientPaths, D as DefaultLayerFilter, F as FabricConfig, l as FabricLanguage, m as HumanLedgerEntry, H as HumanLockEntry, L as LedgerEntry, M as McpPayloadLimits, R as RuleDescription, n as RuleDescriptionIndexItem } from '../index-Dm4IJWwB.js';
2
2
  import 'zod';