@osovv/vv-opencode 1.2.6 → 1.2.8
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/CHANGELOG.md +16 -0
- package/README.md +29 -2
- package/dist/commands/patch-provider.js +2 -0
- package/dist/commands/patch-provider.js.map +1 -1
- package/dist/commands/plugin-list.js +8 -3
- package/dist/commands/plugin-list.js.map +1 -1
- package/dist/commands/plugin-toggle.js +8 -1
- package/dist/commands/plugin-toggle.js.map +1 -1
- package/dist/lib/plugin-toggle-config.d.ts +5 -1
- package/dist/lib/plugin-toggle-config.js +15 -10
- package/dist/lib/plugin-toggle-config.js.map +1 -1
- package/dist/lib/vvoc-config.d.ts +33 -1
- package/dist/lib/vvoc-config.js +49 -1
- package/dist/lib/vvoc-config.js.map +1 -1
- package/dist/plugins/hashline-edit/diff-summary.d.ts +7 -0
- package/dist/plugins/hashline-edit/diff-summary.js +79 -0
- package/dist/plugins/hashline-edit/diff-summary.js.map +1 -0
- package/dist/plugins/hashline-edit/edit-operation-primitives.d.ts +2 -2
- package/dist/plugins/hashline-edit/edit-operation-primitives.js +56 -37
- package/dist/plugins/hashline-edit/edit-operation-primitives.js.map +1 -1
- package/dist/plugins/hashline-edit/edit-operations.d.ts +1 -0
- package/dist/plugins/hashline-edit/edit-operations.js +17 -10
- package/dist/plugins/hashline-edit/edit-operations.js.map +1 -1
- package/dist/plugins/hashline-edit/edit-text-normalization.d.ts +27 -4
- package/dist/plugins/hashline-edit/edit-text-normalization.js +45 -56
- package/dist/plugins/hashline-edit/edit-text-normalization.js.map +1 -1
- package/dist/plugins/hashline-edit/index.js +331 -35
- package/dist/plugins/hashline-edit/index.js.map +1 -1
- package/dist/plugins/hashline-edit/normalize-edits.js +56 -20
- package/dist/plugins/hashline-edit/normalize-edits.js.map +1 -1
- package/dist/plugins/hashline-edit/replace-engine.d.ts +24 -0
- package/dist/plugins/hashline-edit/replace-engine.js +246 -0
- package/dist/plugins/hashline-edit/replace-engine.js.map +1 -0
- package/dist/plugins/hashline-edit/routing.d.ts +21 -0
- package/dist/plugins/hashline-edit/routing.js +113 -0
- package/dist/plugins/hashline-edit/routing.js.map +1 -0
- package/dist/plugins/hashline-edit/session-state.d.ts +23 -0
- package/dist/plugins/hashline-edit/session-state.js +70 -0
- package/dist/plugins/hashline-edit/session-state.js.map +1 -0
- package/dist/plugins/hashline-edit/str-replace-editor.d.ts +50 -0
- package/dist/plugins/hashline-edit/str-replace-editor.js +285 -0
- package/dist/plugins/hashline-edit/str-replace-editor.js.map +1 -0
- package/dist/plugins/hashline-edit/tool-description.d.ts +2 -1
- package/dist/plugins/hashline-edit/tool-description.js +44 -18
- package/dist/plugins/hashline-edit/tool-description.js.map +1 -1
- package/dist/plugins/hashline-edit/validation.d.ts +1 -0
- package/dist/plugins/hashline-edit/validation.js +13 -3
- package/dist/plugins/hashline-edit/validation.js.map +1 -1
- package/package.json +1 -1
- package/schemas/vvoc/v3.json +29 -2
- package/dist/plugins/hashline-edit/autocorrect-replacement-lines.d.ts +0 -1
- package/dist/plugins/hashline-edit/autocorrect-replacement-lines.js +0 -188
- package/dist/plugins/hashline-edit/autocorrect-replacement-lines.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/plugins/hashline-edit/validation.ts
|
|
2
|
-
// VERSION: 0.
|
|
2
|
+
// VERSION: 0.5.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Parse and validate hashline references with optional context-anchored hashes against the current file snapshot before edits are applied.
|
|
5
|
-
// SCOPE: Anchor normalization, line reference parsing with optional anchor hash, full-batch validation with anchor-hash verification, and mismatch diagnostics for current hashline anchors.
|
|
5
|
+
// SCOPE: Anchor normalization, line reference parsing with optional anchor hash, mandatory three-part edit reference enforcement, full-batch validation with anchor-hash verification, and mismatch diagnostics for current hashline anchors.
|
|
6
6
|
// DEPENDS: [src/plugins/hashline-edit/constants.ts, src/plugins/hashline-edit/hash-computation.ts]
|
|
7
7
|
// LINKS: [M-PLUGIN-HASHLINE-EDIT]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
// LineRef - Parsed `{ line, hash, anchorHash? }` structure for a normalized hashline anchor.
|
|
14
14
|
// normalizeLineRef - Strip copied prefixes and inline content from a raw anchor string.
|
|
15
15
|
// parseLineRef - Parse a normalized hashline anchor and fail loudly on malformed references.
|
|
16
|
+
// requireThreePartRef - Parse an edit anchor and reject two-part references missing the anchor hash.
|
|
16
17
|
// validateLineRef - Validate a single anchor against the current file lines including context-anchored hash.
|
|
17
18
|
// validateLineRefs - Validate a batch of anchors and aggregate mismatches.
|
|
18
19
|
// HashlineMismatchError - Rich mismatch error that includes updated surrounding anchors.
|
|
19
20
|
// END_MODULE_MAP
|
|
20
21
|
//
|
|
21
22
|
// START_CHANGE_SUMMARY
|
|
22
|
-
// LAST_CHANGE: [v0.
|
|
23
|
+
// LAST_CHANGE: [v0.5.0 - Added requireThreePartRef so edit anchors must carry the full line#hash#anchor triple.]
|
|
23
24
|
// END_CHANGE_SUMMARY
|
|
24
25
|
import { HASHLINE_REF_PATTERN } from "./constants.js";
|
|
25
26
|
import { computeAnchorHash, computeLineHash } from "./hash-computation.js";
|
|
@@ -77,6 +78,15 @@ export function parseLineRef(ref) {
|
|
|
77
78
|
}
|
|
78
79
|
throw new Error(`Invalid line reference format: "${ref}". Expected format: "{line_number}#{hash_id}" or "{line_number}#{hash_id}#{anchor_hash}"`);
|
|
79
80
|
}
|
|
81
|
+
export function requireThreePartRef(ref, context) {
|
|
82
|
+
const parsed = parseLineRefWithHint(ref, []);
|
|
83
|
+
if (!parsed.anchorHash) {
|
|
84
|
+
throw new Error(`${context}: anchor "${ref}" is missing the anchor hash. Use the full three-part ` +
|
|
85
|
+
'"{line_number}#{hash_id}#{anchor_hash}" reference copied exactly from the latest read output. ' +
|
|
86
|
+
"Two-part references are no longer accepted for edits.");
|
|
87
|
+
}
|
|
88
|
+
return parsed;
|
|
89
|
+
}
|
|
80
90
|
export class HashlineMismatchError extends Error {
|
|
81
91
|
mismatches;
|
|
82
92
|
fileLines;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/validation.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,iBAAiB;AACjB,wBAAwB;AACxB,sJAAsJ;AACtJ
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/schemas/vvoc/v3.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@1.2.
|
|
3
|
+
"$id": "https://cdn.jsdelivr.net/npm/@osovv/vv-opencode@1.2.8/schemas/vvoc/v3.json",
|
|
4
4
|
"title": "vvoc config",
|
|
5
5
|
"description": "Canonical vvoc configuration document.",
|
|
6
6
|
"type": "object",
|
|
@@ -136,7 +136,34 @@
|
|
|
136
136
|
"type": "object",
|
|
137
137
|
"propertyNames": { "minLength": 1 },
|
|
138
138
|
"additionalProperties": {
|
|
139
|
-
"
|
|
139
|
+
"anyOf": [
|
|
140
|
+
{ "type": "boolean" },
|
|
141
|
+
{
|
|
142
|
+
"type": "object",
|
|
143
|
+
"additionalProperties": false,
|
|
144
|
+
"properties": {
|
|
145
|
+
"enabled": { "type": "boolean" },
|
|
146
|
+
"routing": {
|
|
147
|
+
"type": "object",
|
|
148
|
+
"additionalProperties": false,
|
|
149
|
+
"properties": {
|
|
150
|
+
"default": {
|
|
151
|
+
"type": "string",
|
|
152
|
+
"enum": ["hashline", "replace", "str_replace_editor", "passthrough"]
|
|
153
|
+
},
|
|
154
|
+
"rules": {
|
|
155
|
+
"type": "object",
|
|
156
|
+
"propertyNames": { "minLength": 1 },
|
|
157
|
+
"additionalProperties": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"enum": ["hashline", "replace", "str_replace_editor", "passthrough"]
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
]
|
|
140
167
|
}
|
|
141
168
|
},
|
|
142
169
|
"web": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function autocorrectReplacementLines(originalLines: string[], replacementLines: string[]): string[];
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
// FILE: src/plugins/hashline-edit/autocorrect-replacement-lines.ts
|
|
2
|
-
// VERSION: 0.1.0
|
|
3
|
-
// START_MODULE_CONTRACT
|
|
4
|
-
// PURPOSE: Recover common model formatting mistakes in replacement payloads without changing user-requested semantics.
|
|
5
|
-
// SCOPE: Merged-line expansion, recovery of uniquely wrapped original lines, and indentation restoration for paired replacements.
|
|
6
|
-
// DEPENDS: []
|
|
7
|
-
// LINKS: [M-PLUGIN-HASHLINE-EDIT]
|
|
8
|
-
// ROLE: RUNTIME
|
|
9
|
-
// MAP_MODE: EXPORTS
|
|
10
|
-
// END_MODULE_CONTRACT
|
|
11
|
-
//
|
|
12
|
-
// START_MODULE_MAP
|
|
13
|
-
// autocorrectReplacementLines - Apply conservative autocorrections to replacement payload lines.
|
|
14
|
-
// END_MODULE_MAP
|
|
15
|
-
//
|
|
16
|
-
// START_CHANGE_SUMMARY
|
|
17
|
-
// LAST_CHANGE: [v0.0.0 - Initial GRACE compliance: added missing CHANGE_SUMMARY.]
|
|
18
|
-
// END_CHANGE_SUMMARY
|
|
19
|
-
function normalizeTokens(text) {
|
|
20
|
-
return text.replace(/\s+/g, "");
|
|
21
|
-
}
|
|
22
|
-
function stripTrailingContinuationTokens(text) {
|
|
23
|
-
return text.replace(/(?:&&|\|\||\?\?|\?|:|=|,|\+|-|\*|\/|\.|\()\s*$/u, "");
|
|
24
|
-
}
|
|
25
|
-
function stripMergeOperatorChars(text) {
|
|
26
|
-
return text.replace(/[|&?]/g, "");
|
|
27
|
-
}
|
|
28
|
-
function leadingWhitespace(text) {
|
|
29
|
-
return text.match(/^\s*/)?.[0] ?? "";
|
|
30
|
-
}
|
|
31
|
-
function restoreOldWrappedLines(originalLines, replacementLines) {
|
|
32
|
-
if (originalLines.length === 0 || replacementLines.length < 2) {
|
|
33
|
-
return replacementLines;
|
|
34
|
-
}
|
|
35
|
-
const canonicalToOriginal = new Map();
|
|
36
|
-
for (const line of originalLines) {
|
|
37
|
-
const canonical = normalizeTokens(line);
|
|
38
|
-
const existing = canonicalToOriginal.get(canonical);
|
|
39
|
-
if (existing) {
|
|
40
|
-
existing.count += 1;
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
canonicalToOriginal.set(canonical, { line, count: 1 });
|
|
44
|
-
}
|
|
45
|
-
const candidates = [];
|
|
46
|
-
for (let start = 0; start < replacementLines.length; start += 1) {
|
|
47
|
-
for (let length = 2; length <= 10 && start + length <= replacementLines.length; length += 1) {
|
|
48
|
-
const span = replacementLines.slice(start, start + length);
|
|
49
|
-
if (span.some((line) => line.trim().length === 0)) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
const canonicalSpan = normalizeTokens(span.join(""));
|
|
53
|
-
const original = canonicalToOriginal.get(canonicalSpan);
|
|
54
|
-
if (original && original.count === 1 && canonicalSpan.length >= 6) {
|
|
55
|
-
candidates.push({
|
|
56
|
-
start,
|
|
57
|
-
len: length,
|
|
58
|
-
replacement: original.line,
|
|
59
|
-
canonical: canonicalSpan,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (candidates.length === 0) {
|
|
65
|
-
return replacementLines;
|
|
66
|
-
}
|
|
67
|
-
const canonicalCounts = new Map();
|
|
68
|
-
for (const candidate of candidates) {
|
|
69
|
-
canonicalCounts.set(candidate.canonical, (canonicalCounts.get(candidate.canonical) ?? 0) + 1);
|
|
70
|
-
}
|
|
71
|
-
const uniqueCandidates = candidates.filter((candidate) => (canonicalCounts.get(candidate.canonical) ?? 0) === 1);
|
|
72
|
-
if (uniqueCandidates.length === 0) {
|
|
73
|
-
return replacementLines;
|
|
74
|
-
}
|
|
75
|
-
uniqueCandidates.sort((left, right) => right.start - left.start);
|
|
76
|
-
const corrected = [...replacementLines];
|
|
77
|
-
for (const candidate of uniqueCandidates) {
|
|
78
|
-
corrected.splice(candidate.start, candidate.len, candidate.replacement);
|
|
79
|
-
}
|
|
80
|
-
return corrected;
|
|
81
|
-
}
|
|
82
|
-
function maybeExpandSingleLineMerge(originalLines, replacementLines) {
|
|
83
|
-
if (replacementLines.length !== 1 || originalLines.length <= 1) {
|
|
84
|
-
return replacementLines;
|
|
85
|
-
}
|
|
86
|
-
const merged = replacementLines[0] ?? "";
|
|
87
|
-
const parts = originalLines.map((line) => line.trim()).filter((line) => line.length > 0);
|
|
88
|
-
if (parts.length !== originalLines.length) {
|
|
89
|
-
return replacementLines;
|
|
90
|
-
}
|
|
91
|
-
const indices = [];
|
|
92
|
-
let offset = 0;
|
|
93
|
-
let orderedMatch = true;
|
|
94
|
-
for (const part of parts) {
|
|
95
|
-
let index = merged.indexOf(part, offset);
|
|
96
|
-
let matchedLength = part.length;
|
|
97
|
-
if (index === -1) {
|
|
98
|
-
const stripped = stripTrailingContinuationTokens(part);
|
|
99
|
-
if (stripped !== part) {
|
|
100
|
-
index = merged.indexOf(stripped, offset);
|
|
101
|
-
if (index !== -1) {
|
|
102
|
-
matchedLength = stripped.length;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (index === -1) {
|
|
107
|
-
const segment = merged.slice(offset);
|
|
108
|
-
const fuzzyIndex = stripMergeOperatorChars(segment).indexOf(stripMergeOperatorChars(part));
|
|
109
|
-
if (fuzzyIndex !== -1) {
|
|
110
|
-
let strippedPos = 0;
|
|
111
|
-
let originalPos = 0;
|
|
112
|
-
while (strippedPos < fuzzyIndex && originalPos < segment.length) {
|
|
113
|
-
if (!/[|&?]/.test(segment[originalPos] ?? "")) {
|
|
114
|
-
strippedPos += 1;
|
|
115
|
-
}
|
|
116
|
-
originalPos += 1;
|
|
117
|
-
}
|
|
118
|
-
index = offset + originalPos;
|
|
119
|
-
matchedLength = part.length;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
if (index === -1) {
|
|
123
|
-
orderedMatch = false;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
indices.push(index);
|
|
127
|
-
offset = index + matchedLength;
|
|
128
|
-
}
|
|
129
|
-
const expanded = [];
|
|
130
|
-
if (orderedMatch) {
|
|
131
|
-
for (let index = 0; index < indices.length; index += 1) {
|
|
132
|
-
const start = indices[index] ?? 0;
|
|
133
|
-
const end = index + 1 < indices.length ? (indices[index + 1] ?? merged.length) : merged.length;
|
|
134
|
-
const candidate = merged.slice(start, end).trim();
|
|
135
|
-
if (candidate.length === 0) {
|
|
136
|
-
orderedMatch = false;
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
expanded.push(candidate);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (orderedMatch && expanded.length === originalLines.length) {
|
|
143
|
-
return expanded;
|
|
144
|
-
}
|
|
145
|
-
const semicolonSplit = merged
|
|
146
|
-
.split(/;\s+/)
|
|
147
|
-
.map((line, index, array) => {
|
|
148
|
-
if (index < array.length - 1 && !line.endsWith(";")) {
|
|
149
|
-
return `${line};`;
|
|
150
|
-
}
|
|
151
|
-
return line;
|
|
152
|
-
})
|
|
153
|
-
.map((line) => line.trim())
|
|
154
|
-
.filter((line) => line.length > 0);
|
|
155
|
-
if (semicolonSplit.length === originalLines.length) {
|
|
156
|
-
return semicolonSplit;
|
|
157
|
-
}
|
|
158
|
-
return replacementLines;
|
|
159
|
-
}
|
|
160
|
-
function restoreIndentForPairedReplacement(originalLines, replacementLines) {
|
|
161
|
-
if (originalLines.length !== replacementLines.length) {
|
|
162
|
-
return replacementLines;
|
|
163
|
-
}
|
|
164
|
-
return replacementLines.map((line, index) => {
|
|
165
|
-
if (line.length === 0) {
|
|
166
|
-
return line;
|
|
167
|
-
}
|
|
168
|
-
if (leadingWhitespace(line).length > 0) {
|
|
169
|
-
return line;
|
|
170
|
-
}
|
|
171
|
-
const indent = leadingWhitespace(originalLines[index] ?? "");
|
|
172
|
-
if (indent.length === 0) {
|
|
173
|
-
return line;
|
|
174
|
-
}
|
|
175
|
-
if ((originalLines[index] ?? "").trim() === line.trim()) {
|
|
176
|
-
return line;
|
|
177
|
-
}
|
|
178
|
-
return `${indent}${line}`;
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
export function autocorrectReplacementLines(originalLines, replacementLines) {
|
|
182
|
-
let next = replacementLines;
|
|
183
|
-
next = maybeExpandSingleLineMerge(originalLines, next);
|
|
184
|
-
next = restoreOldWrappedLines(originalLines, next);
|
|
185
|
-
next = restoreIndentForPairedReplacement(originalLines, next);
|
|
186
|
-
return next;
|
|
187
|
-
}
|
|
188
|
-
//# sourceMappingURL=autocorrect-replacement-lines.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autocorrect-replacement-lines.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/autocorrect-replacement-lines.ts"],"names":[],"mappings":"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"}
|