@izagood/avcs 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -8
- package/dist/api/repo.d.ts +12 -42
- package/dist/api/repo.d.ts.map +1 -1
- package/dist/api/repo.js +40 -87
- package/dist/api/repo.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/merge/merge3.d.ts +46 -0
- package/dist/merge/merge3.d.ts.map +1 -0
- package/dist/merge/merge3.js +214 -0
- package/dist/merge/merge3.js.map +1 -0
- package/dist/objects/types.d.ts +9 -10
- package/dist/objects/types.d.ts.map +1 -1
- package/dist/reducer/policy.d.ts +1 -1
- package/dist/reducer/policy.d.ts.map +1 -1
- package/dist/reducer/policy.js +11 -1
- package/dist/reducer/policy.js.map +1 -1
- package/dist/reducer/reducer.d.ts +21 -28
- package/dist/reducer/reducer.d.ts.map +1 -1
- package/dist/reducer/reducer.js +65 -101
- package/dist/reducer/reducer.js.map +1 -1
- package/dist/store/lock.d.ts.map +1 -1
- package/dist/store/lock.js +14 -4
- package/dist/store/lock.js.map +1 -1
- package/package.json +13 -1
- package/dist/semantic/contract.d.ts +0 -32
- package/dist/semantic/contract.d.ts.map +0 -1
- package/dist/semantic/contract.js +0 -150
- package/dist/semantic/contract.js.map +0 -1
- package/dist/semantic/symbols.d.ts +0 -45
- package/dist/semantic/symbols.d.ts.map +0 -1
- package/dist/semantic/symbols.js +0 -323
- package/dist/semantic/symbols.js.map +0 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// Language-neutral N-way 3-way text merge — the ONLY merge primitive in the core.
|
|
2
|
+
//
|
|
3
|
+
// avcs has no code-structure awareness. This module merges *text*: a base and N
|
|
4
|
+
// concurrent variants (each the full content one operation produced from that base).
|
|
5
|
+
// It diffs each variant against the base at the LINE level, then composes the changes:
|
|
6
|
+
// disjoint hunks all apply (auto-merge); overlapping hunks from different variants
|
|
7
|
+
// become a ConflictRegion the reducer's policy resolves. No symbols, no language — the
|
|
8
|
+
// same path runs for python, rust, json, markdown, anything.
|
|
9
|
+
//
|
|
10
|
+
// Determinism: same (base, variants in canonical order) ⇒ identical output on every
|
|
11
|
+
// replica. The algorithm version is pinned into MATERIALIZER_VERSION so a different
|
|
12
|
+
// merge implementation cannot silently diverge a replica's tree.
|
|
13
|
+
export const MERGE3_VERSION = "text3/0.1.0";
|
|
14
|
+
const MAX_LINES = 50_000; // beyond this, line-DP cost isn't worth it → atomic compare.
|
|
15
|
+
const isBinary = (s) => s.includes("\u0000");
|
|
16
|
+
const splitLines = (s) => s.split("\n");
|
|
17
|
+
const joinLines = (a) => a.join("\n");
|
|
18
|
+
/**
|
|
19
|
+
* Merge `variants` (each a full file content) over `base`. `variants` MUST already be
|
|
20
|
+
* in the caller's canonical order (e.g. lamport, oid) — the merge is deterministic in
|
|
21
|
+
* that order. Variants identical to base contribute nothing.
|
|
22
|
+
*/
|
|
23
|
+
export function merge3(base, variants, opts = {}) {
|
|
24
|
+
const onConflict = opts.onConflict ?? "base";
|
|
25
|
+
// ── Safety fallback: binary or oversized → atomic, never a bogus line merge. ──
|
|
26
|
+
const distinct = [...new Set(variants.filter((v) => v !== base))];
|
|
27
|
+
if (distinct.length === 0)
|
|
28
|
+
return { clean: true, merged: base, conflicts: [] };
|
|
29
|
+
const unsafe = isBinary(base) ||
|
|
30
|
+
distinct.some(isBinary) ||
|
|
31
|
+
splitLines(base).length > MAX_LINES ||
|
|
32
|
+
distinct.some((v) => splitLines(v).length > MAX_LINES);
|
|
33
|
+
if (unsafe) {
|
|
34
|
+
if (distinct.length === 1)
|
|
35
|
+
return { clean: true, merged: distinct[0], conflicts: [], atomic: true };
|
|
36
|
+
return {
|
|
37
|
+
clean: false,
|
|
38
|
+
merged: base,
|
|
39
|
+
atomic: true,
|
|
40
|
+
conflicts: [
|
|
41
|
+
{
|
|
42
|
+
baseStart: 0,
|
|
43
|
+
baseEnd: splitLines(base).length,
|
|
44
|
+
base,
|
|
45
|
+
mergedStart: 0,
|
|
46
|
+
options: distinct.map((text, i) => ({ sides: [i], text })),
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const baseLines = splitLines(base);
|
|
52
|
+
// ── Each variant → hunks vs base. Variants equal to base yield none. ──
|
|
53
|
+
const allHunks = [];
|
|
54
|
+
variants.forEach((v, side) => {
|
|
55
|
+
if (v === base)
|
|
56
|
+
return;
|
|
57
|
+
for (const h of diffHunks(baseLines, splitLines(v)))
|
|
58
|
+
allHunks.push({ ...h, side });
|
|
59
|
+
});
|
|
60
|
+
if (allHunks.length === 0)
|
|
61
|
+
return { clean: true, merged: base, conflicts: [] };
|
|
62
|
+
// Collapse byte-identical hunks (same span + replacement) from different variants:
|
|
63
|
+
// that is agreement, not contention.
|
|
64
|
+
const keyOf = (h) => `${h.start}:${h.end}:${joinLines(h.lines)}`;
|
|
65
|
+
const byKey = new Map();
|
|
66
|
+
for (const h of allHunks) {
|
|
67
|
+
const k = keyOf(h);
|
|
68
|
+
const cur = byKey.get(k);
|
|
69
|
+
if (cur)
|
|
70
|
+
cur.sides.push(h.side);
|
|
71
|
+
else
|
|
72
|
+
byKey.set(k, { ...h, sides: [h.side] });
|
|
73
|
+
}
|
|
74
|
+
const hunks = [...byKey.values()].sort((a, b) => a.start - b.start || a.end - b.end || Math.min(...a.sides) - Math.min(...b.sides));
|
|
75
|
+
const clusters = [];
|
|
76
|
+
for (const h of hunks) {
|
|
77
|
+
const last = clusters[clusters.length - 1];
|
|
78
|
+
// Overlap: intervals [s,e) intersect, OR both are insertions at the same position.
|
|
79
|
+
const overlaps = last &&
|
|
80
|
+
(h.start < last.end || (h.start === last.end && (h.start === h.end || last.end === last.start)));
|
|
81
|
+
if (overlaps) {
|
|
82
|
+
last.end = Math.max(last.end, h.end);
|
|
83
|
+
last.members.push(h);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
clusters.push({ start: h.start, end: h.end, members: [h] });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// ── Emit merged text, walking base; record conflicts. ──
|
|
90
|
+
const out = [];
|
|
91
|
+
const conflicts = [];
|
|
92
|
+
let cursor = 0; // next base line to copy
|
|
93
|
+
for (const cl of clusters) {
|
|
94
|
+
// copy untouched base lines before the cluster
|
|
95
|
+
for (let i = cursor; i < cl.start; i++)
|
|
96
|
+
out.push(baseLines[i]);
|
|
97
|
+
cursor = cl.start;
|
|
98
|
+
const sidesInCluster = [...new Set(cl.members.flatMap((m) => m.sides))].sort((a, b) => a - b);
|
|
99
|
+
// Each side's rendering of the cluster's base span [cl.start, cl.end).
|
|
100
|
+
const renders = new Map(); // text → contributing sides
|
|
101
|
+
for (const side of sidesInCluster) {
|
|
102
|
+
const txt = renderSpan(baseLines, cl.start, cl.end, cl.members.filter((m) => m.sides.includes(side)));
|
|
103
|
+
const e = renders.get(txt);
|
|
104
|
+
if (e)
|
|
105
|
+
e.push(side);
|
|
106
|
+
else
|
|
107
|
+
renders.set(txt, [side]);
|
|
108
|
+
}
|
|
109
|
+
const distinctRenders = [...renders.entries()];
|
|
110
|
+
if (distinctRenders.length === 1) {
|
|
111
|
+
// Agreement (or a single contributing variant): apply the change.
|
|
112
|
+
out.push(...splitLines(distinctRenders[0][0]));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Genuine conflict: record options; emit either base or the first option.
|
|
116
|
+
const mergedStart = out.length;
|
|
117
|
+
const options = distinctRenders
|
|
118
|
+
.map(([text, sides]) => ({ sides: sides.sort((a, b) => a - b), text }))
|
|
119
|
+
.sort((a, b) => Math.min(...a.sides) - Math.min(...b.sides));
|
|
120
|
+
const emit = onConflict === "first" ? options[0].text : joinLines(baseLines.slice(cl.start, cl.end));
|
|
121
|
+
out.push(...splitLines(emit));
|
|
122
|
+
conflicts.push({
|
|
123
|
+
baseStart: cl.start,
|
|
124
|
+
baseEnd: cl.end,
|
|
125
|
+
base: joinLines(baseLines.slice(cl.start, cl.end)),
|
|
126
|
+
mergedStart,
|
|
127
|
+
options,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
cursor = cl.end;
|
|
131
|
+
}
|
|
132
|
+
for (let i = cursor; i < baseLines.length; i++)
|
|
133
|
+
out.push(baseLines[i]);
|
|
134
|
+
return { clean: conflicts.length === 0, merged: joinLines(out), conflicts };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Render one variant's version of base span [start,end): apply that variant's hunks
|
|
138
|
+
* (already restricted to this cluster) onto base[start:end). Hunks are non-overlapping
|
|
139
|
+
* within a single variant, so a left-to-right splice is exact.
|
|
140
|
+
*/
|
|
141
|
+
function renderSpan(baseLines, start, end, members) {
|
|
142
|
+
const sorted = [...members].sort((a, b) => a.start - b.start);
|
|
143
|
+
const out = [];
|
|
144
|
+
let cur = start;
|
|
145
|
+
for (const h of sorted) {
|
|
146
|
+
const hs = Math.max(h.start, start);
|
|
147
|
+
for (let i = cur; i < hs; i++)
|
|
148
|
+
out.push(baseLines[i]);
|
|
149
|
+
out.push(...h.lines);
|
|
150
|
+
cur = Math.max(cur, Math.min(h.end, end));
|
|
151
|
+
}
|
|
152
|
+
for (let i = cur; i < end; i++)
|
|
153
|
+
out.push(baseLines[i]);
|
|
154
|
+
return joinLines(out);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Line-level diff (LCS) → maximal changed segments. Each Hunk replaces base[start:end)
|
|
158
|
+
* with `lines`. Unchanged lines produce no hunk. Deterministic.
|
|
159
|
+
*/
|
|
160
|
+
function diffHunks(a, b) {
|
|
161
|
+
const n = a.length;
|
|
162
|
+
const m = b.length;
|
|
163
|
+
// LCS DP table (lengths). O(n*m) — fine for source files.
|
|
164
|
+
const dp = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));
|
|
165
|
+
for (let i = n - 1; i >= 0; i--)
|
|
166
|
+
for (let j = m - 1; j >= 0; j--)
|
|
167
|
+
dp[i][j] = a[i] === b[j] ? dp[i + 1][j + 1] + 1 : Math.max(dp[i + 1][j], dp[i][j + 1]);
|
|
168
|
+
// Backtrack to an edit script; coalesce consecutive non-matches into hunks.
|
|
169
|
+
const hunks = [];
|
|
170
|
+
let i = 0;
|
|
171
|
+
let j = 0;
|
|
172
|
+
let segStart = -1;
|
|
173
|
+
let repl = [];
|
|
174
|
+
const flush = (atBase) => {
|
|
175
|
+
if (segStart !== -1) {
|
|
176
|
+
hunks.push({ start: segStart, end: atBase, lines: repl });
|
|
177
|
+
segStart = -1;
|
|
178
|
+
repl = [];
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
while (i < n && j < m) {
|
|
182
|
+
if (a[i] === b[j]) {
|
|
183
|
+
flush(i);
|
|
184
|
+
i++;
|
|
185
|
+
j++;
|
|
186
|
+
}
|
|
187
|
+
else if (dp[i + 1][j] >= dp[i][j + 1]) {
|
|
188
|
+
// delete a[i]
|
|
189
|
+
if (segStart === -1)
|
|
190
|
+
segStart = i;
|
|
191
|
+
i++;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
// insert b[j]
|
|
195
|
+
if (segStart === -1)
|
|
196
|
+
segStart = i;
|
|
197
|
+
repl.push(b[j]);
|
|
198
|
+
j++;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// tail: remaining deletions / insertions
|
|
202
|
+
if (i < n || j < m) {
|
|
203
|
+
if (segStart === -1)
|
|
204
|
+
segStart = i;
|
|
205
|
+
while (j < m)
|
|
206
|
+
repl.push(b[j++]);
|
|
207
|
+
flush(n);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
flush(i);
|
|
211
|
+
}
|
|
212
|
+
return hunks;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=merge3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge3.js","sourceRoot":"","sources":["../../src/merge/merge3.ts"],"names":[],"mappings":"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"}
|
package/dist/objects/types.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface Blob extends BaseObject {
|
|
|
37
37
|
redactionOid?: string;
|
|
38
38
|
}
|
|
39
39
|
export type IntentKind = "feature" | "bugfix" | "refactor" | "formatting" | "generated";
|
|
40
|
-
/** A
|
|
40
|
+
/** A file/glob scope the intent is allowed to touch. */
|
|
41
41
|
export type ScopeRef = string;
|
|
42
42
|
/** Machine-checkable invariants. `constraints` (NL) is human prose; these are enforced. */
|
|
43
43
|
export type ConstraintKind = "forbid_public_api_break" | "forbid_behavior_change" | "require_tests";
|
|
@@ -65,25 +65,24 @@ export interface Session extends BaseObject {
|
|
|
65
65
|
toolCalls: string[];
|
|
66
66
|
startedAt: string;
|
|
67
67
|
}
|
|
68
|
-
export type OperationKind = "put_file" | "
|
|
68
|
+
export type OperationKind = "put_file" | "edit_file" | "delete_file" | "rename_file" | "note";
|
|
69
69
|
export interface OperationTarget {
|
|
70
70
|
/** What conceptual entity this op changes. */
|
|
71
|
-
entityKind: "file" | "
|
|
72
|
-
/** Stable entity id
|
|
71
|
+
entityKind: "file" | "contract" | "config" | "test";
|
|
72
|
+
/** Stable entity id — for files, the path. */
|
|
73
73
|
entityId: string;
|
|
74
74
|
}
|
|
75
75
|
export interface OperationBody {
|
|
76
76
|
kind: OperationKind;
|
|
77
|
-
/** put_file /
|
|
77
|
+
/** put_file / edit_file / rename_file destination path. */
|
|
78
78
|
path?: string;
|
|
79
79
|
/** rename_file source path. */
|
|
80
80
|
fromPath?: string;
|
|
81
|
-
/** put_file
|
|
81
|
+
/** put_file / edit_file new full file content (blob oid). */
|
|
82
82
|
blobOid?: string;
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
newName?: string;
|
|
83
|
+
/** edit_file: the blob this edit was derived from — the 3-way merge base.
|
|
84
|
+
* Empty/absent ⇒ base is the empty file. */
|
|
85
|
+
baseBlobOid?: string;
|
|
87
86
|
}
|
|
88
87
|
export interface Operation extends BaseObject {
|
|
89
88
|
type: "operation";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/objects/types.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,QAAQ,GACR,SAAS,GACT,WAAW,GACX,UAAU,GACV,UAAU,GACV,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,CAAC;AAEf,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAGD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AACxD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,IAAK,SAAQ,UAAU;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AACxF
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/objects/types.ts"],"names":[],"mappings":"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"}
|
package/dist/reducer/policy.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Evidence, Operation, Policy } from "../objects/types.ts";
|
|
2
|
-
export declare const MATERIALIZER_VERSION = "avcs-
|
|
2
|
+
export declare const MATERIALIZER_VERSION = "avcs-text3/0.1.0";
|
|
3
3
|
/** A sane built-in policy used when a repo has not authored its own. */
|
|
4
4
|
export declare function defaultPolicy(): Policy;
|
|
5
5
|
export interface OpEvaluation {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,QAAQ,EACR,SAAS,EACT,MAAM,EAEP,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,QAAQ,EACR,SAAS,EACT,MAAM,EAEP,MAAM,qBAAqB,CAAC;AAY7B,eAAO,MAAM,oBAAoB,qBAA2B,CAAC;AAE7D,wEAAwE;AACxE,wBAAgB,aAAa,IAAI,MAAM,CAiCtC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAkBD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,QAAQ,EAAE,EACzB,UAAU,EAAE,OAAO,EACnB,0BAA0B,EAAE,OAAO,EACnC,gBAAgB,SAAI,GACnB,YAAY,CAqEd"}
|
package/dist/reducer/policy.js
CHANGED
|
@@ -19,7 +19,17 @@
|
|
|
19
19
|
// gates and the passing-test bonus only count evidence produced by a non-authoring
|
|
20
20
|
// trusted actor (ci_bot / human). Self-reported ai_agent evidence is ignored until
|
|
21
21
|
// signing lands (Phase 3). See docs/04-policy.md.
|
|
22
|
-
|
|
22
|
+
import { MERGE3_VERSION } from "../merge/merge3.js";
|
|
23
|
+
// The materialize result is content-addressed: same ops ⇒ same treeHash, but only if
|
|
24
|
+
// every replica runs the same merge algorithm. This version string is the algorithm's
|
|
25
|
+
// identity, stamped into every materialize result (`materializerVersion`) and surfaced
|
|
26
|
+
// by the hub. It is COMPOSED from MERGE3_VERSION so that any change to the merge
|
|
27
|
+
// substrate flows through automatically — the symbol-aware → text-3way rewrite (0.1.1)
|
|
28
|
+
// failed to bump it, so symbol-era and text-era results shared one string and a
|
|
29
|
+
// consumer could not tell they were produced by incompatible algorithms. Composing it
|
|
30
|
+
// makes the merge3.ts promise ("the algorithm version is pinned into MATERIALIZER_VERSION")
|
|
31
|
+
// self-maintaining. Bumped to a distinct value for the 0.2.0 text-merge core.
|
|
32
|
+
export const MATERIALIZER_VERSION = `avcs-${MERGE3_VERSION}`;
|
|
23
33
|
/** A sane built-in policy used when a repo has not authored its own. */
|
|
24
34
|
export function defaultPolicy() {
|
|
25
35
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,0DAA0D;AAC1D,EAAE;AACF,kDAAkD;AAClD,gFAAgF;AAChF,iEAAiE;AACjE,8EAA8E;AAC9E,uEAAuE;AACvE,yDAAyD;AACzD,gDAAgD;AAChD,iFAAiF;AACjF,kFAAkF;AAClF,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,mFAAmF;AACnF,mFAAmF;AACnF,kDAAkD;
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,0DAA0D;AAC1D,EAAE;AACF,kDAAkD;AAClD,gFAAgF;AAChF,iEAAiE;AACjE,8EAA8E;AAC9E,uEAAuE;AACvE,yDAAyD;AACzD,gDAAgD;AAChD,iFAAiF;AACjF,kFAAkF;AAClF,gFAAgF;AAChF,EAAE;AACF,kFAAkF;AAClF,mFAAmF;AACnF,mFAAmF;AACnF,kDAAkD;AASlD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qFAAqF;AACrF,sFAAsF;AACtF,uFAAuF;AACvF,iFAAiF;AACjF,uFAAuF;AACvF,gFAAgF;AAChF,sFAAsF;AACtF,4FAA4F;AAC5F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,cAAc,EAAE,CAAC;AAE7D,wEAAwE;AACxE,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iBAAiB;QAC1B,UAAU,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,qBAAqB;QAClE,KAAK,EAAE;YACL,mEAAmE;YACnE;gBACE,IAAI,EAAE,+BAA+B;gBACrC,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;gBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;aAC5E;YACD,sEAAsE;YACtE;gBACE,IAAI,EAAE,iCAAiC;gBACvC,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;gBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;aAClC;YACD,uCAAuC;YACvC;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;aAC1C;YACD,iDAAiD;YACjD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;aAChD;SACF;QACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAUD,SAAS,eAAe,CAAC,MAAc,EAAE,KAAY;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB,EAAE,EAAa,EAAE,UAAmB;IACvE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACpB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,CAAC,CAAC,eAAe;QACxF,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,CAAC,CAAC,eAAe;QACxF,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,EAAa,EACb,aAAyB,EACzB,UAAmB,EACnB,0BAAmC,EACnC,gBAAgB,GAAG,CAAC;IAEpB,MAAM,EAAE,GAAiB;QACvB,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC;QACxC,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,gFAAgF;IAChF,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,KAAK,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAClC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,iFAAiF;IACjF,wFAAwF;IACxF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,mBAAmB;QACtB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACxE,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACtD,IAAI,OAAO,GAAG,CAAC;QAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,iCAAiC,CAAC,CAAC;IAE5E,gBAAgB;IAChB,IAAI,0BAA0B,EAAE,CAAC;QAC/B,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;IACD,8DAA8D;IAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACxE,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;QAChB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC;YAAE,SAAS;QACjD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,eAAe;gBAClB,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;gBACxB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/E,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;oBAClB,EAAE,CAAC,aAAa,GAAG,QAAQ,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBAClF,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,UAAU;gBACb,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;gBACrB,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7B,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC;oBAChB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,gDAAgD;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Decision, Evidence, Intent, Operation, OperationStatus, Policy } from "../objects/types.ts";
|
|
2
|
+
import { type ConflictRegion } from "../merge/merge3.ts";
|
|
2
3
|
export interface ConflictOption {
|
|
3
4
|
opOid: string;
|
|
4
5
|
actor: string;
|
|
@@ -19,18 +20,6 @@ export interface Conflict {
|
|
|
19
20
|
/** Actor ids that own this scope and should make the call (Phase 5). */
|
|
20
21
|
requiredOwners?: string[];
|
|
21
22
|
}
|
|
22
|
-
/**
|
|
23
|
-
* A merge that is text-clean but meaning-broken: one op changed a public contract
|
|
24
|
-
* while another depends on the old one. Detected (and escalated) by the repo's
|
|
25
|
-
* semantic pass, not the core grouping.
|
|
26
|
-
*/
|
|
27
|
-
export interface SemanticConflict {
|
|
28
|
-
kind: "contract_break";
|
|
29
|
-
symbol: string;
|
|
30
|
-
breakingOp: string;
|
|
31
|
-
dependentOps: string[];
|
|
32
|
-
reason: string;
|
|
33
|
-
}
|
|
34
23
|
/** A contest the policy resolved by itself — recorded so auto-merges are auditable. */
|
|
35
24
|
export interface AutoDecision {
|
|
36
25
|
key: string;
|
|
@@ -47,15 +36,16 @@ export interface ReductionResult {
|
|
|
47
36
|
statuses: Map<string, OperationStatus>;
|
|
48
37
|
conflicts: Conflict[];
|
|
49
38
|
autoDecisions: AutoDecision[];
|
|
50
|
-
/**
|
|
51
|
-
|
|
39
|
+
/** Line-level text merge conflicts among concurrent edit_file ops, filled by the repo's
|
|
40
|
+
* post-reduce pass (detectFileConflicts). reduce() itself leaves this empty. */
|
|
41
|
+
fileConflicts: FileConflict[];
|
|
52
42
|
/** Frontier op ids: accepted ops that no other accepted op descends from. */
|
|
53
43
|
headOps: string[];
|
|
54
44
|
/**
|
|
55
|
-
* Content for blob oids synthesized during reduction (
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
45
|
+
* Content for blob oids synthesized during reduction (a 3-way text merge produces file
|
|
46
|
+
* content that is not any single stored blob). oid → content. The caller persists or
|
|
47
|
+
* writes these directly. Synthetic oids are content-derived, so the treeHash that
|
|
48
|
+
* references them stays deterministic.
|
|
59
49
|
*/
|
|
60
50
|
synthBlobs: Map<string, string>;
|
|
61
51
|
}
|
|
@@ -67,7 +57,7 @@ export interface ReduceInput {
|
|
|
67
57
|
policy: Policy;
|
|
68
58
|
/** Which statuses get projected into the tree. Default: accepted only. */
|
|
69
59
|
materializeStatuses?: OperationStatus[];
|
|
70
|
-
/** blob oid → content, for ops that need file text (
|
|
60
|
+
/** blob oid → content, for ops that need file text (edit_file 3-way merge). */
|
|
71
61
|
blobContent?: Map<string, string>;
|
|
72
62
|
/** actorId → bounded reliability nudge (Phase 5 trust learning). */
|
|
73
63
|
reliability?: Map<string, number>;
|
|
@@ -81,20 +71,23 @@ export interface ReduceInput {
|
|
|
81
71
|
*/
|
|
82
72
|
export declare function keysOf(op: Operation): string[];
|
|
83
73
|
export declare function conflictIdFor(key: string): string;
|
|
84
|
-
|
|
74
|
+
/** A file whose concurrent edits overlapped at the line level — a genuine text merge
|
|
75
|
+
* conflict. Language-neutral: detected purely by merge3 over the file's content. */
|
|
76
|
+
export interface FileConflict {
|
|
85
77
|
file: string;
|
|
86
78
|
ops: string[];
|
|
79
|
+
regions: ConflictRegion[];
|
|
87
80
|
}
|
|
88
81
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
82
|
+
* Detect line-level merge conflicts among CONCURRENT accepted edit_file ops on the same
|
|
83
|
+
* file. The reducer's grouping accepts all such ops (their disjoint hunks compose); this
|
|
84
|
+
* pass runs the authoritative N-way `merge3` over the file's concurrent frontier to find
|
|
85
|
+
* the ones whose hunks actually OVERLAP, so the repo can surface a Conflict / hold back.
|
|
86
|
+
*
|
|
87
|
+
* No language knowledge — merge3 compares lines. Ancestor relations (an edit built on a
|
|
88
|
+
* prior edit) are not concurrent and never flagged. Deterministic over canonical order.
|
|
96
89
|
*/
|
|
97
|
-
export declare function
|
|
90
|
+
export declare function detectFileConflicts(ops: Operation[], result: ReductionResult, blobContent: Map<string, string>): FileConflict[];
|
|
98
91
|
/** A single group's locally-decided statuses + the conflicts/autoDecisions it emitted. */
|
|
99
92
|
export interface PerKeyDecision {
|
|
100
93
|
local: Map<string, OperationStatus>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/reducer/reducer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,eAAe,EACf,MAAM,EACP,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/reducer/reducer.ts"],"names":[],"mappings":"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"}
|