@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.
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts +1 -0
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +1 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/merge/anomaly-detector.d.ts +63 -0
- package/dist/merge/anomaly-detector.d.ts.map +1 -0
- package/dist/merge/anomaly-detector.js +128 -0
- package/dist/merge/anomaly-detector.js.map +1 -0
- package/dist/merge/arbitration.d.ts +18 -0
- package/dist/merge/arbitration.d.ts.map +1 -0
- package/dist/merge/arbitration.js +27 -0
- package/dist/merge/arbitration.js.map +1 -0
- package/dist/merge/auto-onboard.d.ts +56 -0
- package/dist/merge/auto-onboard.d.ts.map +1 -0
- package/dist/merge/auto-onboard.js +81 -0
- package/dist/merge/auto-onboard.js.map +1 -0
- package/dist/merge/backup.d.ts +27 -0
- package/dist/merge/backup.d.ts.map +1 -0
- package/dist/merge/backup.js +49 -0
- package/dist/merge/backup.js.map +1 -0
- package/dist/merge/content.d.ts +50 -0
- package/dist/merge/content.d.ts.map +1 -0
- package/dist/merge/content.js +137 -0
- package/dist/merge/content.js.map +1 -0
- package/dist/merge/cross-file-coordinator.d.ts +52 -0
- package/dist/merge/cross-file-coordinator.d.ts.map +1 -0
- package/dist/merge/cross-file-coordinator.js +222 -0
- package/dist/merge/cross-file-coordinator.js.map +1 -0
- package/dist/merge/data-root.d.ts +9 -0
- package/dist/merge/data-root.d.ts.map +1 -0
- package/dist/merge/data-root.js +42 -0
- package/dist/merge/data-root.js.map +1 -0
- package/dist/merge/driver-llm.d.ts +92 -0
- package/dist/merge/driver-llm.d.ts.map +1 -0
- package/dist/merge/driver-llm.js +174 -0
- package/dist/merge/driver-llm.js.map +1 -0
- package/dist/merge/driver-main.d.ts +29 -0
- package/dist/merge/driver-main.d.ts.map +1 -0
- package/dist/merge/driver-main.js +220 -0
- package/dist/merge/driver-main.js.map +1 -0
- package/dist/merge/evidence-union.d.ts +35 -0
- package/dist/merge/evidence-union.d.ts.map +1 -0
- package/dist/merge/evidence-union.js +88 -0
- package/dist/merge/evidence-union.js.map +1 -0
- package/dist/merge/frontmatter-rules.d.ts +38 -0
- package/dist/merge/frontmatter-rules.d.ts.map +1 -0
- package/dist/merge/frontmatter-rules.js +77 -0
- package/dist/merge/frontmatter-rules.js.map +1 -0
- package/dist/merge/frontmatter.d.ts +52 -0
- package/dist/merge/frontmatter.d.ts.map +1 -0
- package/dist/merge/frontmatter.js +211 -0
- package/dist/merge/frontmatter.js.map +1 -0
- package/dist/merge/index.d.ts +31 -0
- package/dist/merge/index.d.ts.map +1 -0
- package/dist/merge/index.js +31 -0
- package/dist/merge/index.js.map +1 -0
- package/dist/merge/llm-arbiter.d.ts +85 -0
- package/dist/merge/llm-arbiter.d.ts.map +1 -0
- package/dist/merge/llm-arbiter.js +177 -0
- package/dist/merge/llm-arbiter.js.map +1 -0
- package/dist/merge/llm-contract.d.ts +86 -0
- package/dist/merge/llm-contract.d.ts.map +1 -0
- package/dist/merge/llm-contract.js +134 -0
- package/dist/merge/llm-contract.js.map +1 -0
- package/dist/merge/llm-prompt.d.ts +25 -0
- package/dist/merge/llm-prompt.d.ts.map +1 -0
- package/dist/merge/llm-prompt.js +73 -0
- package/dist/merge/llm-prompt.js.map +1 -0
- package/dist/merge/merge-engram.d.ts +33 -0
- package/dist/merge/merge-engram.d.ts.map +1 -0
- package/dist/merge/merge-engram.js +164 -0
- package/dist/merge/merge-engram.js.map +1 -0
- package/dist/merge/merge-stats.d.ts +68 -0
- package/dist/merge/merge-stats.d.ts.map +1 -0
- package/dist/merge/merge-stats.js +152 -0
- package/dist/merge/merge-stats.js.map +1 -0
- package/dist/merge/onboard.d.ts +72 -0
- package/dist/merge/onboard.d.ts.map +1 -0
- package/dist/merge/onboard.js +146 -0
- package/dist/merge/onboard.js.map +1 -0
- package/dist/merge/post-merge-hook.d.ts +77 -0
- package/dist/merge/post-merge-hook.d.ts.map +1 -0
- package/dist/merge/post-merge-hook.js +211 -0
- package/dist/merge/post-merge-hook.js.map +1 -0
- package/dist/merge/resolution-state.d.ts +41 -0
- package/dist/merge/resolution-state.d.ts.map +1 -0
- package/dist/merge/resolution-state.js +100 -0
- package/dist/merge/resolution-state.js.map +1 -0
- package/dist/merge/synapse-merger.d.ts +63 -0
- package/dist/merge/synapse-merger.d.ts.map +1 -0
- package/dist/merge/synapse-merger.js +277 -0
- package/dist/merge/synapse-merger.js.map +1 -0
- package/dist/merge/synapse-rules.d.ts +66 -0
- package/dist/merge/synapse-rules.d.ts.map +1 -0
- package/dist/merge/synapse-rules.js +112 -0
- package/dist/merge/synapse-rules.js.map +1 -0
- package/dist/merge/version.d.ts +10 -0
- package/dist/merge/version.d.ts.map +1 -0
- package/dist/merge/version.js +10 -0
- package/dist/merge/version.js.map +1 -0
- package/dist/merge-driver.cjs +9371 -0
- package/dist/observability/audit-log.d.ts +4 -1
- package/dist/observability/audit-log.d.ts.map +1 -1
- package/dist/observability/audit-log.js +3 -0
- package/dist/observability/audit-log.js.map +1 -1
- package/package.json +6 -2
package/dist/i18n/en.d.ts.map
CHANGED
|
@@ -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,
|
|
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",
|
package/dist/i18n/en.js.map
CHANGED
|
@@ -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": "清空";
|
package/dist/i18n/zh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../src/i18n/zh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,EAAE
|
|
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
package/dist/i18n/zh.js.map
CHANGED
|
@@ -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
package/dist/index.d.ts.map
CHANGED
|
@@ -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
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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"}
|