@co-engram/core 0.1.0 → 0.1.1

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 (113) hide show
  1. package/dist/i18n/en.d.ts.map +1 -1
  2. package/dist/i18n/en.js +1 -0
  3. package/dist/i18n/en.js.map +1 -1
  4. package/dist/i18n/zh.d.ts +1 -0
  5. package/dist/i18n/zh.d.ts.map +1 -1
  6. package/dist/i18n/zh.js +1 -0
  7. package/dist/i18n/zh.js.map +1 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/merge/anomaly-detector.d.ts +63 -0
  13. package/dist/merge/anomaly-detector.d.ts.map +1 -0
  14. package/dist/merge/anomaly-detector.js +128 -0
  15. package/dist/merge/anomaly-detector.js.map +1 -0
  16. package/dist/merge/arbitration.d.ts +18 -0
  17. package/dist/merge/arbitration.d.ts.map +1 -0
  18. package/dist/merge/arbitration.js +27 -0
  19. package/dist/merge/arbitration.js.map +1 -0
  20. package/dist/merge/auto-onboard.d.ts +56 -0
  21. package/dist/merge/auto-onboard.d.ts.map +1 -0
  22. package/dist/merge/auto-onboard.js +81 -0
  23. package/dist/merge/auto-onboard.js.map +1 -0
  24. package/dist/merge/backup.d.ts +27 -0
  25. package/dist/merge/backup.d.ts.map +1 -0
  26. package/dist/merge/backup.js +49 -0
  27. package/dist/merge/backup.js.map +1 -0
  28. package/dist/merge/content.d.ts +50 -0
  29. package/dist/merge/content.d.ts.map +1 -0
  30. package/dist/merge/content.js +137 -0
  31. package/dist/merge/content.js.map +1 -0
  32. package/dist/merge/cross-file-coordinator.d.ts +52 -0
  33. package/dist/merge/cross-file-coordinator.d.ts.map +1 -0
  34. package/dist/merge/cross-file-coordinator.js +222 -0
  35. package/dist/merge/cross-file-coordinator.js.map +1 -0
  36. package/dist/merge/data-root.d.ts +9 -0
  37. package/dist/merge/data-root.d.ts.map +1 -0
  38. package/dist/merge/data-root.js +42 -0
  39. package/dist/merge/data-root.js.map +1 -0
  40. package/dist/merge/driver-llm.d.ts +92 -0
  41. package/dist/merge/driver-llm.d.ts.map +1 -0
  42. package/dist/merge/driver-llm.js +174 -0
  43. package/dist/merge/driver-llm.js.map +1 -0
  44. package/dist/merge/driver-main.d.ts +29 -0
  45. package/dist/merge/driver-main.d.ts.map +1 -0
  46. package/dist/merge/driver-main.js +220 -0
  47. package/dist/merge/driver-main.js.map +1 -0
  48. package/dist/merge/evidence-union.d.ts +35 -0
  49. package/dist/merge/evidence-union.d.ts.map +1 -0
  50. package/dist/merge/evidence-union.js +88 -0
  51. package/dist/merge/evidence-union.js.map +1 -0
  52. package/dist/merge/frontmatter-rules.d.ts +38 -0
  53. package/dist/merge/frontmatter-rules.d.ts.map +1 -0
  54. package/dist/merge/frontmatter-rules.js +77 -0
  55. package/dist/merge/frontmatter-rules.js.map +1 -0
  56. package/dist/merge/frontmatter.d.ts +52 -0
  57. package/dist/merge/frontmatter.d.ts.map +1 -0
  58. package/dist/merge/frontmatter.js +211 -0
  59. package/dist/merge/frontmatter.js.map +1 -0
  60. package/dist/merge/index.d.ts +31 -0
  61. package/dist/merge/index.d.ts.map +1 -0
  62. package/dist/merge/index.js +31 -0
  63. package/dist/merge/index.js.map +1 -0
  64. package/dist/merge/llm-arbiter.d.ts +85 -0
  65. package/dist/merge/llm-arbiter.d.ts.map +1 -0
  66. package/dist/merge/llm-arbiter.js +177 -0
  67. package/dist/merge/llm-arbiter.js.map +1 -0
  68. package/dist/merge/llm-contract.d.ts +86 -0
  69. package/dist/merge/llm-contract.d.ts.map +1 -0
  70. package/dist/merge/llm-contract.js +134 -0
  71. package/dist/merge/llm-contract.js.map +1 -0
  72. package/dist/merge/llm-prompt.d.ts +25 -0
  73. package/dist/merge/llm-prompt.d.ts.map +1 -0
  74. package/dist/merge/llm-prompt.js +73 -0
  75. package/dist/merge/llm-prompt.js.map +1 -0
  76. package/dist/merge/merge-engram.d.ts +33 -0
  77. package/dist/merge/merge-engram.d.ts.map +1 -0
  78. package/dist/merge/merge-engram.js +164 -0
  79. package/dist/merge/merge-engram.js.map +1 -0
  80. package/dist/merge/merge-stats.d.ts +68 -0
  81. package/dist/merge/merge-stats.d.ts.map +1 -0
  82. package/dist/merge/merge-stats.js +152 -0
  83. package/dist/merge/merge-stats.js.map +1 -0
  84. package/dist/merge/onboard.d.ts +72 -0
  85. package/dist/merge/onboard.d.ts.map +1 -0
  86. package/dist/merge/onboard.js +146 -0
  87. package/dist/merge/onboard.js.map +1 -0
  88. package/dist/merge/post-merge-hook.d.ts +77 -0
  89. package/dist/merge/post-merge-hook.d.ts.map +1 -0
  90. package/dist/merge/post-merge-hook.js +211 -0
  91. package/dist/merge/post-merge-hook.js.map +1 -0
  92. package/dist/merge/resolution-state.d.ts +41 -0
  93. package/dist/merge/resolution-state.d.ts.map +1 -0
  94. package/dist/merge/resolution-state.js +100 -0
  95. package/dist/merge/resolution-state.js.map +1 -0
  96. package/dist/merge/synapse-merger.d.ts +63 -0
  97. package/dist/merge/synapse-merger.d.ts.map +1 -0
  98. package/dist/merge/synapse-merger.js +277 -0
  99. package/dist/merge/synapse-merger.js.map +1 -0
  100. package/dist/merge/synapse-rules.d.ts +66 -0
  101. package/dist/merge/synapse-rules.d.ts.map +1 -0
  102. package/dist/merge/synapse-rules.js +112 -0
  103. package/dist/merge/synapse-rules.js.map +1 -0
  104. package/dist/merge/version.d.ts +10 -0
  105. package/dist/merge/version.d.ts.map +1 -0
  106. package/dist/merge/version.js +10 -0
  107. package/dist/merge/version.js.map +1 -0
  108. package/dist/merge-driver.cjs +9371 -0
  109. package/dist/observability/audit-log.d.ts +4 -1
  110. package/dist/observability/audit-log.d.ts.map +1 -1
  111. package/dist/observability/audit-log.js +3 -0
  112. package/dist/observability/audit-log.js.map +1 -1
  113. package/package.json +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,EAAE,EAAE,eAuRhB,CAAC"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,EAAE,EAAE,eAwRhB,CAAC"}
package/dist/i18n/en.js CHANGED
@@ -65,6 +65,7 @@ export const en = {
65
65
  "viewer.tab.trash": "Trash",
66
66
  "viewer.tab.config": "Config",
67
67
  "viewer.tab.help": "Help",
68
+ "viewer.tab.merges": "Merges",
68
69
  "viewer.search.placeholder": "Full-text search engrams...",
69
70
  "viewer.search.button": "Search",
70
71
  "viewer.search.clear": "Clear",
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
package/dist/i18n/zh.d.ts CHANGED
@@ -60,6 +60,7 @@ export declare const zh: {
60
60
  readonly "viewer.tab.trash": "记忆回收站";
61
61
  readonly "viewer.tab.config": "配置";
62
62
  readonly "viewer.tab.help": "帮助";
63
+ readonly "viewer.tab.merges": "合并";
63
64
  readonly "viewer.search.placeholder": "全文检索记忆印迹...";
64
65
  readonly "viewer.search.button": "搜索";
65
66
  readonly "viewer.search.clear": "清空";
@@ -1 +1 @@
1
- {"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8QsC,CAAC"}
1
+ {"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+QsC,CAAC"}
package/dist/i18n/zh.js CHANGED
@@ -70,6 +70,7 @@ export const zh = {
70
70
  "viewer.tab.trash": "记忆回收站",
71
71
  "viewer.tab.config": "配置",
72
72
  "viewer.tab.help": "帮助",
73
+ "viewer.tab.merges": "合并",
73
74
  "viewer.search.placeholder": "全文检索记忆印迹...",
74
75
  "viewer.search.button": "搜索",
75
76
  "viewer.search.clear": "清空",
@@ -1 +1 @@
1
- {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -34,4 +34,5 @@ export * from "./tools/index.js";
34
34
  export * from "./i18n/index.js";
35
35
  export * from "./config/index.js";
36
36
  export * from "./host/index.js";
37
+ export * from "./merge/index.js";
37
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -34,4 +34,5 @@ export * from "./tools/index.js";
34
34
  export * from "./i18n/index.js";
35
35
  export * from "./config/index.js";
36
36
  export * from "./host/index.js";
37
+ export * from "./merge/index.js";
37
38
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 异常检测(spec §13.1 KPI 表 + §13.2 "异常报警")。
3
+ *
4
+ * 把 MergeStats 与一组可配置阈值比对,返回违规列表(带严重级别)。
5
+ * 设计原则:
6
+ * - 纯函数,不读 audit log / 不调 LLM;输入已聚合的 MergeStats
7
+ * - 阈值有默认值(spec §13.1),但全部可覆盖以便团队调校
8
+ * - 样本不足时(总 merge 数 < minSamples)跳过比率类检查,避免噪声
9
+ *
10
+ * spec §13.2 触发场景:
11
+ * - LLM 仲裁率飙升(可能 prompt drift)→ successRate 低于阈值
12
+ * - 备份失败(磁盘问题)→ backupFailures 超过阈值
13
+ * - 团队集中编辑核心 engram → escalatedToMarkers 比率超标
14
+ *
15
+ * @module @co-engram/core/merge
16
+ */
17
+ import type { MergeStats } from "./merge-stats.js";
18
+ /** 异常严重级别。 */
19
+ export type AnomalySeverity = "info" | "warning" | "critical";
20
+ /** 异常种类标识符(稳定字符串,便于过滤 / audit)。 */
21
+ export type AnomalyKind = "low_llm_success_rate" | "high_escalation_rate" | "low_auto_resolve_rate" | "backup_failure" | "hot_path_concentration";
22
+ /** 单条异常报告。 */
23
+ export interface Anomaly {
24
+ /** 异常种类。 */
25
+ readonly kind: AnomalyKind;
26
+ /** 严重级别。 */
27
+ readonly severity: AnomalySeverity;
28
+ /** 人类可读描述(含具体数值)。 */
29
+ readonly message: string;
30
+ /** 当前观测值。 */
31
+ readonly observed: number;
32
+ /** 触发的阈值。 */
33
+ readonly threshold: number;
34
+ }
35
+ /** 可配置阈值(全部可选,有默认值)。 */
36
+ export interface AnomalyThresholds {
37
+ /** LLM 仲裁成功率低于此值 → warning(spec §13.1 目标 ≥ 0.7)。 */
38
+ readonly llmSuccessRateWarning?: number;
39
+ /** LLM 仲裁成功率低于此值 → critical。 */
40
+ readonly llmSuccessRateCritical?: number;
41
+ /** 升级到 markers 的比率超过此值 → warning(spec §13.1 目标 ≤ 0.05)。 */
42
+ readonly escalationRateWarning?: number;
43
+ /** 自动解决率低于此值 → warning(spec §13.1 目标 ≥ 0.95)。 */
44
+ readonly autoResolveRateWarning?: number;
45
+ /** 备份失败次数(窗口内绝对值)超过此值 → critical(spec §13.1 备份失败率 ≤ 0.1%)。 */
46
+ readonly backupFailuresCritical?: number;
47
+ /** 单条路径占总冲突比率超过此值 → warning(热点集中)。 */
48
+ readonly hotPathConcentrationWarning?: number;
49
+ /** 比率类检查的最小样本数,不足则跳过(避免小样本噪声)。 */
50
+ readonly minSamples?: number;
51
+ }
52
+ export declare const DEFAULT_ANOMALY_THRESHOLDS: Required<AnomalyThresholds>;
53
+ /**
54
+ * 检测异常。
55
+ *
56
+ * @param stats 已聚合的 MergeStats(由 computeMergeStats 产生)
57
+ * @param thresholds 可选阈值覆盖
58
+ * @returns 异常列表,按 severity 降序排列(critical → warning → info)
59
+ */
60
+ export declare function detectAnomalies(stats: MergeStats, thresholds?: AnomalyThresholds): Anomaly[];
61
+ /** 把异常列表格式化成人类可读文本(供 CLI 输出)。 */
62
+ export declare function formatAnomaliesAsText(anomalies: readonly Anomaly[]): string;
63
+ //# sourceMappingURL=anomaly-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly-detector.d.ts","sourceRoot":"","sources":["../../src/merge/anomaly-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,cAAc;AACd,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D,mCAAmC;AACnC,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,gBAAgB,GAChB,wBAAwB,CAAC;AAE7B,cAAc;AACd,MAAM,WAAW,OAAO;IACtB,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,YAAY;IACZ,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,aAAa;IACb,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,aAAa;IACb,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,gCAAgC;IAChC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,2DAA2D;IAC3D,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,iDAAiD;IACjD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,sCAAsC;IACtC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C,kCAAkC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,iBAAiB,CAQlE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,UAAU,GAAE,iBAAsB,GACjC,OAAO,EAAE,CA6FX;AAcD,iCAAiC;AACjC,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAU3E"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * 异常检测(spec §13.1 KPI 表 + §13.2 "异常报警")。
3
+ *
4
+ * 把 MergeStats 与一组可配置阈值比对,返回违规列表(带严重级别)。
5
+ * 设计原则:
6
+ * - 纯函数,不读 audit log / 不调 LLM;输入已聚合的 MergeStats
7
+ * - 阈值有默认值(spec §13.1),但全部可覆盖以便团队调校
8
+ * - 样本不足时(总 merge 数 < minSamples)跳过比率类检查,避免噪声
9
+ *
10
+ * spec §13.2 触发场景:
11
+ * - LLM 仲裁率飙升(可能 prompt drift)→ successRate 低于阈值
12
+ * - 备份失败(磁盘问题)→ backupFailures 超过阈值
13
+ * - 团队集中编辑核心 engram → escalatedToMarkers 比率超标
14
+ *
15
+ * @module @co-engram/core/merge
16
+ */
17
+ export const DEFAULT_ANOMALY_THRESHOLDS = {
18
+ llmSuccessRateWarning: 0.7,
19
+ llmSuccessRateCritical: 0.5,
20
+ escalationRateWarning: 0.05,
21
+ autoResolveRateWarning: 0.95,
22
+ backupFailuresCritical: 1,
23
+ hotPathConcentrationWarning: 0.4,
24
+ minSamples: 10,
25
+ };
26
+ /**
27
+ * 检测异常。
28
+ *
29
+ * @param stats 已聚合的 MergeStats(由 computeMergeStats 产生)
30
+ * @param thresholds 可选阈值覆盖
31
+ * @returns 异常列表,按 severity 降序排列(critical → warning → info)
32
+ */
33
+ export function detectAnomalies(stats, thresholds = {}) {
34
+ const t = { ...DEFAULT_ANOMALY_THRESHOLDS, ...thresholds };
35
+ const anomalies = [];
36
+ // 备份失败是绝对值检查,不需要 minSamples
37
+ if (stats.backupFailures >= t.backupFailuresCritical) {
38
+ anomalies.push({
39
+ kind: "backup_failure",
40
+ severity: "critical",
41
+ message: `Backup 失败 ${stats.backupFailures} 次(阈值 ≥${t.backupFailuresCritical}),可能存在磁盘问题`,
42
+ observed: stats.backupFailures,
43
+ threshold: t.backupFailuresCritical,
44
+ });
45
+ }
46
+ // 比率类检查需要足够样本
47
+ if (stats.totalMerges >= t.minSamples) {
48
+ // LLM 成功率(只在有 LLM 调用时检查)
49
+ if (stats.llm.totalInvocations > 0) {
50
+ const rate = stats.llm.successRate;
51
+ if (rate < t.llmSuccessRateCritical) {
52
+ anomalies.push({
53
+ kind: "low_llm_success_rate",
54
+ severity: "critical",
55
+ message: `LLM 仲裁成功率 ${(rate * 100).toFixed(1)}% 低于 ${(t.llmSuccessRateCritical * 100).toFixed(0)}%(critical),可能是 prompt drift 或上游故障`,
56
+ observed: rate,
57
+ threshold: t.llmSuccessRateCritical,
58
+ });
59
+ }
60
+ else if (rate < t.llmSuccessRateWarning) {
61
+ anomalies.push({
62
+ kind: "low_llm_success_rate",
63
+ severity: "warning",
64
+ message: `LLM 仲裁成功率 ${(rate * 100).toFixed(1)}% 低于 ${(t.llmSuccessRateWarning * 100).toFixed(0)}%(warning)`,
65
+ observed: rate,
66
+ threshold: t.llmSuccessRateWarning,
67
+ });
68
+ }
69
+ }
70
+ // 升级率
71
+ const escalationRate = stats.totalMerges > 0 ? stats.escalatedToMarkers / stats.totalMerges : 0;
72
+ if (escalationRate > t.escalationRateWarning) {
73
+ anomalies.push({
74
+ kind: "high_escalation_rate",
75
+ severity: "warning",
76
+ message: `冲突升级率 ${(escalationRate * 100).toFixed(1)}% 超过 ${(t.escalationRateWarning * 100).toFixed(0)}%(spec §13.1 目标 ≤ 5%)`,
77
+ observed: escalationRate,
78
+ threshold: t.escalationRateWarning,
79
+ });
80
+ }
81
+ // 自动解决率
82
+ if (stats.autoResolveRate < t.autoResolveRateWarning) {
83
+ anomalies.push({
84
+ kind: "low_auto_resolve_rate",
85
+ severity: "warning",
86
+ message: `自动解决率 ${(stats.autoResolveRate * 100).toFixed(1)}% 低于 ${(t.autoResolveRateWarning * 100).toFixed(0)}%(spec §13.1 目标 ≥ 95%)`,
87
+ observed: stats.autoResolveRate,
88
+ threshold: t.autoResolveRateWarning,
89
+ });
90
+ }
91
+ // 热点路径集中度
92
+ const pathEntries = Object.entries(stats.byPath);
93
+ if (pathEntries.length > 0) {
94
+ const maxPath = pathEntries.reduce((a, b) => (a[1] > b[1] ? a : b));
95
+ const concentration = maxPath[1] / stats.totalMerges;
96
+ if (concentration > t.hotPathConcentrationWarning) {
97
+ anomalies.push({
98
+ kind: "hot_path_concentration",
99
+ severity: "info",
100
+ message: `路径 "${maxPath[0]}" 占冲突的 ${(concentration * 100).toFixed(1)}%(>${(t.hotPathConcentrationWarning * 100).toFixed(0)}%),可能存在团队集中编辑`,
101
+ observed: concentration,
102
+ threshold: t.hotPathConcentrationWarning,
103
+ });
104
+ }
105
+ }
106
+ }
107
+ return sortAnomalies(anomalies);
108
+ }
109
+ const SEVERITY_ORDER = {
110
+ critical: 0,
111
+ warning: 1,
112
+ info: 2,
113
+ };
114
+ function sortAnomalies(anomalies) {
115
+ return [...anomalies].sort((a, b) => SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity]);
116
+ }
117
+ /** 把异常列表格式化成人类可读文本(供 CLI 输出)。 */
118
+ export function formatAnomaliesAsText(anomalies) {
119
+ if (anomalies.length === 0) {
120
+ return "✓ 无异常告警 — 所有 KPI 在阈值内。";
121
+ }
122
+ const lines = anomalies.map((a) => {
123
+ const icon = a.severity === "critical" ? "✗" : a.severity === "warning" ? "⚠" : "ℹ";
124
+ return `[${a.severity.toUpperCase()}] ${icon} ${a.kind}: ${a.message}`;
125
+ });
126
+ return lines.join("\n");
127
+ }
128
+ //# sourceMappingURL=anomaly-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomaly-detector.js","sourceRoot":"","sources":["../../src/merge/anomaly-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * updatedAt 仲裁 + tiebreaker
3
+ *
4
+ * Layer A of spec §5.6 三层仲裁。当 ours.updatedAt != theirs.updatedAt 时直接判赢家;
5
+ * 秒级碰撞时用 contentHash tiebreaker 判断"谁相对 base 真改了"。
6
+ * 仍平局 → 返回 'escalate',由调用方决定(Phase 1: 留 git marker;Phase 3: 调 LLM)。
7
+ *
8
+ * @module @co-engram/core/merge
9
+ */
10
+ export type ArbitrationVerdict = "ours" | "theirs" | "escalate";
11
+ export declare function arbitrateByUpdatedAt(params: {
12
+ oursUpdatedAt: string;
13
+ theirsUpdatedAt: string;
14
+ baseContentHash?: string;
15
+ oursContentHash?: string;
16
+ theirsContentHash?: string;
17
+ }): ArbitrationVerdict;
18
+ //# sourceMappingURL=arbitration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitration.d.ts","sourceRoot":"","sources":["../../src/merge/arbitration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,kBAAkB,CAkBrB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * updatedAt 仲裁 + tiebreaker
3
+ *
4
+ * Layer A of spec §5.6 三层仲裁。当 ours.updatedAt != theirs.updatedAt 时直接判赢家;
5
+ * 秒级碰撞时用 contentHash tiebreaker 判断"谁相对 base 真改了"。
6
+ * 仍平局 → 返回 'escalate',由调用方决定(Phase 1: 留 git marker;Phase 3: 调 LLM)。
7
+ *
8
+ * @module @co-engram/core/merge
9
+ */
10
+ export function arbitrateByUpdatedAt(params) {
11
+ const { oursUpdatedAt, theirsUpdatedAt } = params;
12
+ if (oursUpdatedAt > theirsUpdatedAt)
13
+ return "ours";
14
+ if (theirsUpdatedAt > oursUpdatedAt)
15
+ return "theirs";
16
+ // 秒级碰撞 — 用 contentHash tiebreaker
17
+ const base = params.baseContentHash;
18
+ const oursChanged = params.oursContentHash !== undefined && params.oursContentHash !== base;
19
+ const theirsChanged = params.theirsContentHash !== undefined && params.theirsContentHash !== base;
20
+ if (oursChanged && !theirsChanged)
21
+ return "ours";
22
+ if (theirsChanged && !oursChanged)
23
+ return "theirs";
24
+ // 双方都改 / 双方都没改 / 无 contentHash 信号 → 升级
25
+ return "escalate";
26
+ }
27
+ //# sourceMappingURL=arbitration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitration.js","sourceRoot":"","sources":["../../src/merge/arbitration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,UAAU,oBAAoB,CAAC,MAMpC;IACC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAElD,IAAI,aAAa,GAAG,eAAe;QAAE,OAAO,MAAM,CAAC;IACnD,IAAI,eAAe,GAAG,aAAa;QAAE,OAAO,QAAQ,CAAC;IAErD,kCAAkC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;IACpC,MAAM,WAAW,GACf,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;IAC1E,MAAM,aAAa,GACjB,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAE9E,IAAI,WAAW,IAAI,CAAC,aAAa;QAAE,OAAO,MAAM,CAAC;IACjD,IAAI,aAAa,IAAI,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC;IAEnD,uCAAuC;IACvC,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Auto-onboard primitives:跨 host(openclaw-plugin / claude-code-mcp)共享的
3
+ * merge driver 自动安装逻辑。
4
+ *
5
+ * 设计目标(匹配用户 low-friction-defaults 偏好):
6
+ * - 默认开启(host config.autoOnboardMergeDriver 默认 true)
7
+ * - 零手动步骤:首次启动就把 bundle / .gitattributes / .git/config 全部装好
8
+ * - 幂等:installMergeDriver 本身幂等,所以每次启动都跑也无副作用
9
+ * - 失败不阻塞 host:onboard 抛错时返回 error 字段,host 决定如何记录
10
+ *
11
+ * Host 自己负责 bundle 路径解析(取决于 host 的 node_modules 布局 / require.resolve 上下文)。
12
+ *
13
+ * @module @co-engram/core/merge
14
+ */
15
+ /**
16
+ * 解析 merge-driver bundle 的源路径。
17
+ *
18
+ * 调用方传入 `@co-engram/core` 的入口 dist 目录,bundle 就在它的 `merge-driver.cjs`。
19
+ * 如果该路径不存在(例如 monorepo 未构建),返回 null,调用方按"装不上"处理。
20
+ */
21
+ export declare function resolveMergeDriverBundle(coreDistDir: string): string | null;
22
+ /**
23
+ * 从 dataRoot 起向上找最近的 git 仓库根。
24
+ *
25
+ * 找到 .git 目录(文件或目录)就返回该目录;到根目录都没找到就返回 null。
26
+ */
27
+ export declare function findGitRepoRoot(dataRoot: string): string | null;
28
+ export interface AutoOnboardResult {
29
+ /** 是否执行了 onboard。false 表示跳过(不是 git repo / bundle 缺失)。 */
30
+ readonly attempted: boolean;
31
+ /** 找到的 git repo root,attempted=true 时必有。 */
32
+ readonly repoRoot?: string;
33
+ /** bundle 是否升级(true=新装或版本不同,false=版本相同跳过)。 */
34
+ readonly bundleUpgraded?: boolean;
35
+ /** .gitattributes 是否被新增条目。 */
36
+ readonly gitattributesUpdated?: boolean;
37
+ /** 错误信息(onboard 抛错时填,host 不应崩溃)。 */
38
+ readonly error?: string;
39
+ }
40
+ /**
41
+ * 自动 onboard merge driver。
42
+ *
43
+ * 行为:
44
+ * 1. 找 dataRoot 所在 git repo(找不到就 noop)
45
+ * 2. 验证 bundle 源存在(不存在就 noop)
46
+ * 3. 调 installMergeDriver
47
+ *
48
+ * 任何步骤抛错都返回 `{ attempted: true, error: msg }`,不向上抛。
49
+ */
50
+ export declare function autoOnboardMergeDriver(params: {
51
+ dataRoot: string;
52
+ bundleSourcePath: string;
53
+ /** 可选:跳过 git repo 检测,直接认为 dataRoot 就是 repo root(测试用) */
54
+ readonly repoRootOverride?: string;
55
+ }): AutoOnboardResult;
56
+ //# sourceMappingURL=auto-onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-onboard.d.ts","sourceRoot":"","sources":["../../src/merge/auto-onboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS/D;AAED,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,8BAA8B;IAC9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,oCAAoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC,GAAG,iBAAiB,CA0BpB"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Auto-onboard primitives:跨 host(openclaw-plugin / claude-code-mcp)共享的
3
+ * merge driver 自动安装逻辑。
4
+ *
5
+ * 设计目标(匹配用户 low-friction-defaults 偏好):
6
+ * - 默认开启(host config.autoOnboardMergeDriver 默认 true)
7
+ * - 零手动步骤:首次启动就把 bundle / .gitattributes / .git/config 全部装好
8
+ * - 幂等:installMergeDriver 本身幂等,所以每次启动都跑也无副作用
9
+ * - 失败不阻塞 host:onboard 抛错时返回 error 字段,host 决定如何记录
10
+ *
11
+ * Host 自己负责 bundle 路径解析(取决于 host 的 node_modules 布局 / require.resolve 上下文)。
12
+ *
13
+ * @module @co-engram/core/merge
14
+ */
15
+ import { existsSync } from "node:fs";
16
+ import { dirname } from "node:path";
17
+ import { installMergeDriver } from "./onboard.js";
18
+ /**
19
+ * 解析 merge-driver bundle 的源路径。
20
+ *
21
+ * 调用方传入 `@co-engram/core` 的入口 dist 目录,bundle 就在它的 `merge-driver.cjs`。
22
+ * 如果该路径不存在(例如 monorepo 未构建),返回 null,调用方按"装不上"处理。
23
+ */
24
+ export function resolveMergeDriverBundle(coreDistDir) {
25
+ const candidate = `${coreDistDir}/merge-driver.cjs`;
26
+ return existsSync(candidate) ? candidate : null;
27
+ }
28
+ /**
29
+ * 从 dataRoot 起向上找最近的 git 仓库根。
30
+ *
31
+ * 找到 .git 目录(文件或目录)就返回该目录;到根目录都没找到就返回 null。
32
+ */
33
+ export function findGitRepoRoot(dataRoot) {
34
+ let cur = dataRoot;
35
+ for (let i = 0; i < 32; i++) {
36
+ if (existsSync(`${cur}/.git`))
37
+ return cur;
38
+ const parent = dirname(cur);
39
+ if (parent === cur)
40
+ return null;
41
+ cur = parent;
42
+ }
43
+ return null;
44
+ }
45
+ /**
46
+ * 自动 onboard merge driver。
47
+ *
48
+ * 行为:
49
+ * 1. 找 dataRoot 所在 git repo(找不到就 noop)
50
+ * 2. 验证 bundle 源存在(不存在就 noop)
51
+ * 3. 调 installMergeDriver
52
+ *
53
+ * 任何步骤抛错都返回 `{ attempted: true, error: msg }`,不向上抛。
54
+ */
55
+ export function autoOnboardMergeDriver(params) {
56
+ const { dataRoot, bundleSourcePath, repoRootOverride } = params;
57
+ const repoRoot = repoRootOverride ?? findGitRepoRoot(dataRoot);
58
+ if (!repoRoot) {
59
+ return { attempted: false };
60
+ }
61
+ if (!existsSync(bundleSourcePath)) {
62
+ return { attempted: false };
63
+ }
64
+ try {
65
+ const result = installMergeDriver({ repoRoot, bundleSourcePath });
66
+ return {
67
+ attempted: true,
68
+ repoRoot,
69
+ bundleUpgraded: result.bundleUpgraded,
70
+ gitattributesUpdated: result.gitattributesUpdated,
71
+ };
72
+ }
73
+ catch (e) {
74
+ return {
75
+ attempted: true,
76
+ repoRoot,
77
+ error: e instanceof Error ? e.message : String(e),
78
+ };
79
+ }
80
+ }
81
+ //# sourceMappingURL=auto-onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-onboard.js","sourceRoot":"","sources":["../../src/merge/auto-onboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,MAAM,SAAS,GAAG,GAAG,WAAW,mBAAmB,CAAC;IACpD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAeD;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAKtC;IACC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IAEhE,MAAM,QAAQ,GAAG,gBAAgB,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAClE,OAAO;YACL,SAAS,EAAE,IAAI;YACf,QAAQ;YACR,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SAClD,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,SAAS,EAAE,IAAI;YACf,QAAQ;YACR,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 输方版本备份 + TTL 清理
3
+ *
4
+ * 当 merge driver 选定赢家后,把输方的完整文件内容写入
5
+ * $DATA_ROOT/.co-engram/merge-backup/{YYYYMMDD}/{relPath}.{side}
6
+ * 以便人工事后取回。7 天后自动清理(由 maintenance 调用 cleanupOldBackups)。
7
+ *
8
+ * @module @co-engram/core/merge
9
+ */
10
+ export interface BackupResult {
11
+ readonly backupPath: string;
12
+ readonly createdAt: string;
13
+ }
14
+ export declare function snapshotLoser(params: {
15
+ dataRoot: string;
16
+ relPath: string;
17
+ side: "ours" | "theirs";
18
+ content: string;
19
+ }): BackupResult;
20
+ export declare function cleanupOldBackups(params: {
21
+ dataRoot: string;
22
+ now?: Date;
23
+ ttlDays?: number;
24
+ }): {
25
+ deleted: readonly string[];
26
+ };
27
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/merge/backup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,YAAY,CAYf;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CA0BjC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * 输方版本备份 + TTL 清理
3
+ *
4
+ * 当 merge driver 选定赢家后,把输方的完整文件内容写入
5
+ * $DATA_ROOT/.co-engram/merge-backup/{YYYYMMDD}/{relPath}.{side}
6
+ * 以便人工事后取回。7 天后自动清理(由 maintenance 调用 cleanupOldBackups)。
7
+ *
8
+ * @module @co-engram/core/merge
9
+ */
10
+ import { mkdirSync, writeFileSync, existsSync, readdirSync, unlinkSync, rmdirSync, } from "node:fs";
11
+ import { dirname, join } from "node:path";
12
+ const MERGE_BACKUP_DIR = ".co-engram/merge-backup";
13
+ const DEFAULT_TTL_DAYS = 7;
14
+ const DATE_DIR_RE = /^\d{8}$/;
15
+ export function snapshotLoser(params) {
16
+ const { dataRoot, relPath, side, content } = params;
17
+ const dateDir = new Date().toISOString().slice(0, 10).replace(/-/g, "");
18
+ const backupPath = join(dataRoot, MERGE_BACKUP_DIR, dateDir, `${relPath}.${side}`);
19
+ mkdirSync(dirname(backupPath), { recursive: true });
20
+ writeFileSync(backupPath, content, "utf8");
21
+ return { backupPath, createdAt: new Date().toISOString() };
22
+ }
23
+ export function cleanupOldBackups(params) {
24
+ const { dataRoot, now = new Date(), ttlDays = DEFAULT_TTL_DAYS } = params;
25
+ const root = join(dataRoot, MERGE_BACKUP_DIR);
26
+ if (!existsSync(root))
27
+ return { deleted: [] };
28
+ const cutoffMs = now.getTime() - ttlDays * 24 * 60 * 60 * 1000;
29
+ const deleted = [];
30
+ for (const entry of readdirSync(root)) {
31
+ if (!DATE_DIR_RE.test(entry))
32
+ continue;
33
+ const year = parseInt(entry.slice(0, 4), 10);
34
+ const month = parseInt(entry.slice(4, 6), 10) - 1;
35
+ const day = parseInt(entry.slice(6, 8), 10);
36
+ const entryDate = new Date(Date.UTC(year, month, day));
37
+ if (entryDate.getTime() >= cutoffMs)
38
+ continue;
39
+ const entryDir = join(root, entry);
40
+ for (const file of readdirSync(entryDir)) {
41
+ const filePath = join(entryDir, file);
42
+ unlinkSync(filePath);
43
+ deleted.push(filePath);
44
+ }
45
+ rmdirSync(entryDir);
46
+ }
47
+ return { deleted };
48
+ }
49
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/merge/backup.ts"],"names":[],"mappings":"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"}