@sudocode-ai/cli 0.1.0 → 0.1.2
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/cli/feedback-commands.d.ts.map +1 -0
- package/dist/cli/feedback-commands.js +274 -0
- package/dist/cli/feedback-commands.js.map +1 -0
- package/dist/cli/init-commands.d.ts.map +1 -0
- package/dist/cli/init-commands.js +148 -0
- package/dist/cli/init-commands.js.map +1 -0
- package/dist/cli/issue-commands.d.ts.map +1 -0
- package/dist/cli/issue-commands.js +310 -0
- package/dist/cli/issue-commands.js.map +1 -0
- package/dist/cli/query-commands.d.ts.map +1 -0
- package/dist/cli/query-commands.js +61 -0
- package/dist/cli/query-commands.js.map +1 -0
- package/dist/cli/reference-commands.d.ts.map +1 -0
- package/dist/cli/reference-commands.js +136 -0
- package/dist/cli/reference-commands.js.map +1 -0
- package/dist/cli/relationship-commands.d.ts.map +1 -0
- package/dist/cli/relationship-commands.js +76 -0
- package/dist/cli/relationship-commands.js.map +1 -0
- package/dist/cli/server-commands.d.ts.map +1 -0
- package/dist/cli/server-commands.js +99 -0
- package/dist/cli/server-commands.js.map +1 -0
- package/dist/cli/spec-commands.d.ts.map +1 -0
- package/dist/cli/spec-commands.js +321 -0
- package/dist/cli/spec-commands.js.map +1 -0
- package/dist/cli/status-commands.d.ts.map +1 -0
- package/dist/cli/status-commands.js +131 -0
- package/dist/cli/status-commands.js.map +1 -0
- package/dist/cli/sync-commands.d.ts.map +1 -0
- package/dist/cli/sync-commands.js +416 -0
- package/dist/cli/sync-commands.js.map +1 -0
- package/dist/cli/update-commands.d.ts.map +1 -0
- package/dist/cli/update-commands.js +78 -0
- package/dist/cli/update-commands.js.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +425 -195
- package/dist/cli.js.map +1 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +54 -0
- package/dist/db.js.map +1 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +195 -0
- package/dist/export.js.map +1 -0
- package/dist/filename-generator.d.ts.map +1 -0
- package/dist/filename-generator.js +93 -0
- package/dist/filename-generator.js.map +1 -0
- package/dist/id-generator.d.ts.map +1 -0
- package/dist/id-generator.js +123 -0
- package/dist/id-generator.js.map +1 -0
- package/dist/import.d.ts.map +1 -0
- package/dist/import.js +608 -0
- package/dist/import.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -189
- package/dist/index.js.map +1 -0
- package/dist/jsonl.d.ts.map +1 -0
- package/dist/jsonl.js +333 -0
- package/dist/jsonl.js.map +1 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +357 -0
- package/dist/markdown.js.map +1 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +57 -0
- package/dist/migrations.js.map +1 -0
- package/dist/operations/events.d.ts.map +1 -0
- package/dist/operations/events.js +108 -0
- package/dist/operations/events.js.map +1 -0
- package/dist/operations/feedback-anchors.d.ts.map +1 -0
- package/dist/operations/feedback-anchors.js +444 -0
- package/dist/operations/feedback-anchors.js.map +1 -0
- package/dist/operations/feedback.d.ts.map +1 -0
- package/dist/operations/feedback.js +234 -0
- package/dist/operations/feedback.js.map +1 -0
- package/dist/operations/index.d.ts.map +1 -0
- package/dist/operations/index.js +10 -0
- package/dist/operations/index.js.map +1 -0
- package/dist/operations/issues.d.ts.map +1 -0
- package/dist/operations/issues.js +411 -0
- package/dist/operations/issues.js.map +1 -0
- package/dist/operations/references.d.ts.map +1 -0
- package/dist/operations/references.js +117 -0
- package/dist/operations/references.js.map +1 -0
- package/dist/operations/relationships.d.ts.map +1 -0
- package/dist/operations/relationships.js +236 -0
- package/dist/operations/relationships.js.map +1 -0
- package/dist/operations/specs.d.ts.map +1 -0
- package/dist/operations/specs.js +290 -0
- package/dist/operations/specs.js.map +1 -0
- package/dist/operations/tags.d.ts.map +1 -0
- package/dist/operations/tags.js +127 -0
- package/dist/operations/tags.js.map +1 -0
- package/dist/operations/transactions.d.ts.map +1 -0
- package/dist/operations/transactions.js +111 -0
- package/dist/operations/transactions.js.map +1 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +442 -0
- package/dist/sync.js.map +1 -0
- package/dist/test-schema.d.ts.map +1 -0
- package/dist/test-schema.js +46 -0
- package/dist/test-schema.js.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/update-checker.d.ts.map +1 -0
- package/dist/update-checker.js +151 -0
- package/dist/update-checker.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/version.js.map +1 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +438 -0
- package/dist/watcher.js.map +1 -0
- package/package.json +4 -7
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback anchor creation and manipulation utilities
|
|
3
|
+
*/
|
|
4
|
+
import * as crypto from 'crypto';
|
|
5
|
+
/**
|
|
6
|
+
* Create a feedback anchor at a specific line in spec content
|
|
7
|
+
*/
|
|
8
|
+
export function createFeedbackAnchor(specContent, lineNumber, charOffset) {
|
|
9
|
+
const lines = specContent.split('\n');
|
|
10
|
+
// Validate line number
|
|
11
|
+
if (lineNumber < 1 || lineNumber > lines.length) {
|
|
12
|
+
throw new Error(`Line number ${lineNumber} is out of range (1-${lines.length})`);
|
|
13
|
+
}
|
|
14
|
+
const targetLine = lines[lineNumber - 1];
|
|
15
|
+
// Find containing section
|
|
16
|
+
const section = findContainingSection(lines, lineNumber);
|
|
17
|
+
// Extract snippet with context
|
|
18
|
+
const snippet = extractSnippet(targetLine, charOffset, 50);
|
|
19
|
+
const contextBefore = getContext(lines, lineNumber, -50);
|
|
20
|
+
const contextAfter = getContext(lines, lineNumber, 50);
|
|
21
|
+
// Calculate relative offset from section start
|
|
22
|
+
const lineOffset = section ? lineNumber - section.startLine : undefined;
|
|
23
|
+
// Create content hash for validation
|
|
24
|
+
const hash = createContentHash(snippet);
|
|
25
|
+
return {
|
|
26
|
+
section_heading: section?.heading,
|
|
27
|
+
section_level: section?.level,
|
|
28
|
+
line_number: lineNumber,
|
|
29
|
+
line_offset: lineOffset,
|
|
30
|
+
text_snippet: snippet,
|
|
31
|
+
context_before: contextBefore,
|
|
32
|
+
context_after: contextAfter,
|
|
33
|
+
content_hash: hash,
|
|
34
|
+
anchor_status: 'valid',
|
|
35
|
+
last_verified_at: new Date().toISOString(),
|
|
36
|
+
original_location: {
|
|
37
|
+
line_number: lineNumber,
|
|
38
|
+
section_heading: section?.heading,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a feedback anchor by searching for text in spec content
|
|
44
|
+
*/
|
|
45
|
+
export function createAnchorByText(specContent, searchText) {
|
|
46
|
+
const lines = specContent.split('\n');
|
|
47
|
+
// Find the first line containing the search text
|
|
48
|
+
for (let i = 0; i < lines.length; i++) {
|
|
49
|
+
const line = lines[i];
|
|
50
|
+
const index = line.indexOf(searchText);
|
|
51
|
+
if (index !== -1) {
|
|
52
|
+
// Found it! Create anchor at this location
|
|
53
|
+
const lineNumber = i + 1;
|
|
54
|
+
return createFeedbackAnchor(specContent, lineNumber, index);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Not found
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Find the section (markdown heading) containing a given line
|
|
62
|
+
* Walks backwards from the line to find the nearest heading
|
|
63
|
+
*/
|
|
64
|
+
export function findContainingSection(lines, lineNumber) {
|
|
65
|
+
// Walk backwards from the target line
|
|
66
|
+
for (let i = lineNumber - 1; i >= 0; i--) {
|
|
67
|
+
const line = lines[i];
|
|
68
|
+
// Handle Windows line endings by trimming \r
|
|
69
|
+
const match = line.match(/^(#{1,6})\s+(.+?)(\r)?$/);
|
|
70
|
+
if (match) {
|
|
71
|
+
const level = match[1].length;
|
|
72
|
+
const heading = match[2].trim();
|
|
73
|
+
return {
|
|
74
|
+
heading,
|
|
75
|
+
level,
|
|
76
|
+
startLine: i + 1,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Extract a text snippet from a line with optional character offset
|
|
84
|
+
*/
|
|
85
|
+
export function extractSnippet(line, charOffset, maxLength = 50) {
|
|
86
|
+
if (!line || line.trim() === '') {
|
|
87
|
+
return '';
|
|
88
|
+
}
|
|
89
|
+
// Trim the line first
|
|
90
|
+
const trimmed = line.trim();
|
|
91
|
+
let start = 0;
|
|
92
|
+
let end = trimmed.length;
|
|
93
|
+
if (charOffset !== undefined) {
|
|
94
|
+
// Adjust offset for trimmed line
|
|
95
|
+
const leadingSpaces = line.length - line.trimStart().length;
|
|
96
|
+
const adjustedOffset = Math.max(0, charOffset - leadingSpaces);
|
|
97
|
+
// Center snippet around the char offset
|
|
98
|
+
const halfLen = Math.floor(maxLength / 2);
|
|
99
|
+
start = Math.max(0, adjustedOffset - halfLen);
|
|
100
|
+
end = Math.min(trimmed.length, adjustedOffset + halfLen);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Take from start
|
|
104
|
+
end = Math.min(trimmed.length, maxLength);
|
|
105
|
+
}
|
|
106
|
+
let snippet = trimmed.substring(start, end);
|
|
107
|
+
// Add ellipsis if truncated (no space before ellipsis)
|
|
108
|
+
if (start > 0) {
|
|
109
|
+
snippet = '...' + snippet;
|
|
110
|
+
}
|
|
111
|
+
if (end < trimmed.length) {
|
|
112
|
+
snippet = snippet + '...';
|
|
113
|
+
}
|
|
114
|
+
return snippet;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get context around a line (before or after)
|
|
118
|
+
* @param chars Number of characters to get (negative for before, positive for after)
|
|
119
|
+
*/
|
|
120
|
+
export function getContext(lines, fromLine, chars) {
|
|
121
|
+
if (chars === 0) {
|
|
122
|
+
return '';
|
|
123
|
+
}
|
|
124
|
+
const direction = chars > 0 ? 1 : -1;
|
|
125
|
+
const maxChars = Math.abs(chars);
|
|
126
|
+
let collected = '';
|
|
127
|
+
let currentLine = fromLine - 1; // Convert to 0-indexed
|
|
128
|
+
if (direction > 0) {
|
|
129
|
+
// Get context after
|
|
130
|
+
currentLine += 1; // Start from next line
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// Get context before
|
|
134
|
+
currentLine -= 1; // Start from previous line
|
|
135
|
+
}
|
|
136
|
+
while (currentLine >= 0 &&
|
|
137
|
+
currentLine < lines.length &&
|
|
138
|
+
collected.length < maxChars) {
|
|
139
|
+
const line = lines[currentLine];
|
|
140
|
+
const remaining = maxChars - collected.length;
|
|
141
|
+
if (direction > 0) {
|
|
142
|
+
// Adding after - append
|
|
143
|
+
if (collected.length > 0) {
|
|
144
|
+
collected += ' ';
|
|
145
|
+
}
|
|
146
|
+
collected += line.substring(0, remaining);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Adding before - prepend
|
|
150
|
+
const start = Math.max(0, line.length - remaining);
|
|
151
|
+
const chunk = line.substring(start);
|
|
152
|
+
if (collected.length > 0) {
|
|
153
|
+
collected = chunk + ' ' + collected;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
collected = chunk;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
currentLine += direction;
|
|
160
|
+
}
|
|
161
|
+
return collected.trim();
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create a content hash for quick validation
|
|
165
|
+
*/
|
|
166
|
+
export function createContentHash(content) {
|
|
167
|
+
return crypto
|
|
168
|
+
.createHash('sha256')
|
|
169
|
+
.update(content)
|
|
170
|
+
.digest('hex')
|
|
171
|
+
.substring(0, 16);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Verify that an anchor still points to the expected location
|
|
175
|
+
*/
|
|
176
|
+
export function verifyAnchor(specContent, anchor) {
|
|
177
|
+
if (!anchor.line_number) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
const lines = specContent.split('\n');
|
|
181
|
+
if (anchor.line_number < 1 || anchor.line_number > lines.length) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
const targetLine = lines[anchor.line_number - 1];
|
|
185
|
+
// Check if the line still contains the snippet (remove ellipsis for matching)
|
|
186
|
+
if (anchor.text_snippet && anchor.text_snippet.trim()) {
|
|
187
|
+
const cleanSnippet = anchor.text_snippet.replace(/\.\.\./g, '').trim();
|
|
188
|
+
if (cleanSnippet && !targetLine.includes(cleanSnippet)) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Check content hash if available (most reliable check)
|
|
193
|
+
if (anchor.content_hash && anchor.text_snippet && anchor.text_snippet.trim()) {
|
|
194
|
+
const currentSnippet = extractSnippet(targetLine, undefined, 50);
|
|
195
|
+
if (currentSnippet) {
|
|
196
|
+
const currentHash = createContentHash(currentSnippet);
|
|
197
|
+
if (currentHash !== anchor.content_hash) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get all section headings from spec content
|
|
206
|
+
*/
|
|
207
|
+
export function getAllSections(specContent) {
|
|
208
|
+
const lines = specContent.split('\n');
|
|
209
|
+
const sections = [];
|
|
210
|
+
for (let i = 0; i < lines.length; i++) {
|
|
211
|
+
const line = lines[i];
|
|
212
|
+
// Handle Windows line endings
|
|
213
|
+
const match = line.match(/^(#{1,6})\s+(.+?)(\r)?$/);
|
|
214
|
+
if (match) {
|
|
215
|
+
sections.push({
|
|
216
|
+
heading: match[2].trim(),
|
|
217
|
+
level: match[1].length,
|
|
218
|
+
startLine: i + 1,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return sections;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Search for text with context matching
|
|
226
|
+
* Returns all matching locations with confidence scores
|
|
227
|
+
*/
|
|
228
|
+
export function searchByContent(specContent, snippet, contextBefore, contextAfter) {
|
|
229
|
+
if (!snippet) {
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
const lines = specContent.split('\n');
|
|
233
|
+
const results = [];
|
|
234
|
+
// Clean snippet (remove ellipsis)
|
|
235
|
+
const cleanSnippet = snippet.replace(/\.\.\./g, '').trim();
|
|
236
|
+
for (let i = 0; i < lines.length; i++) {
|
|
237
|
+
const line = lines[i];
|
|
238
|
+
if (line.includes(cleanSnippet)) {
|
|
239
|
+
let confidence = 0.5; // Base confidence for snippet match
|
|
240
|
+
// Boost confidence if context matches
|
|
241
|
+
if (contextBefore) {
|
|
242
|
+
const actualBefore = getContext(lines, i + 1, -50);
|
|
243
|
+
if (actualBefore.includes(contextBefore.substring(0, 20))) {
|
|
244
|
+
confidence += 0.25;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (contextAfter) {
|
|
248
|
+
const actualAfter = getContext(lines, i + 1, 50);
|
|
249
|
+
if (actualAfter.includes(contextAfter.substring(0, 20))) {
|
|
250
|
+
confidence += 0.25;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
results.push({
|
|
254
|
+
lineNumber: i + 1,
|
|
255
|
+
confidence: Math.min(confidence, 1.0),
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Sort by confidence (highest first)
|
|
260
|
+
return results.sort((a, b) => b.confidence - a.confidence);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Calculate Levenshtein distance between two strings
|
|
264
|
+
* Used for fuzzy matching of section headings
|
|
265
|
+
*/
|
|
266
|
+
export function levenshteinDistance(str1, str2) {
|
|
267
|
+
const len1 = str1.length;
|
|
268
|
+
const len2 = str2.length;
|
|
269
|
+
// Create a 2D array for dynamic programming
|
|
270
|
+
const matrix = Array(len1 + 1)
|
|
271
|
+
.fill(null)
|
|
272
|
+
.map(() => Array(len2 + 1).fill(0));
|
|
273
|
+
// Initialize first row and column
|
|
274
|
+
for (let i = 0; i <= len1; i++) {
|
|
275
|
+
matrix[i][0] = i;
|
|
276
|
+
}
|
|
277
|
+
for (let j = 0; j <= len2; j++) {
|
|
278
|
+
matrix[0][j] = j;
|
|
279
|
+
}
|
|
280
|
+
// Calculate distances
|
|
281
|
+
for (let i = 1; i <= len1; i++) {
|
|
282
|
+
for (let j = 1; j <= len2; j++) {
|
|
283
|
+
const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
|
|
284
|
+
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion
|
|
285
|
+
matrix[i][j - 1] + 1, // insertion
|
|
286
|
+
matrix[i - 1][j - 1] + cost // substitution
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return matrix[len1][len2];
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Find the best matching section using fuzzy matching
|
|
294
|
+
* Returns section with lowest edit distance (Levenshtein)
|
|
295
|
+
*/
|
|
296
|
+
export function findFuzzySection(specContent, targetHeading, maxDistance = 5) {
|
|
297
|
+
const sections = getAllSections(specContent);
|
|
298
|
+
if (sections.length === 0) {
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
// Normalize headings for comparison (lowercase, trim)
|
|
302
|
+
const normalizedTarget = targetHeading.toLowerCase().trim();
|
|
303
|
+
let bestMatch = null;
|
|
304
|
+
let bestDistance = Infinity;
|
|
305
|
+
for (const section of sections) {
|
|
306
|
+
const normalizedHeading = section.heading.toLowerCase().trim();
|
|
307
|
+
const distance = levenshteinDistance(normalizedTarget, normalizedHeading);
|
|
308
|
+
if (distance < bestDistance && distance <= maxDistance) {
|
|
309
|
+
bestDistance = distance;
|
|
310
|
+
bestMatch = section;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return bestMatch;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Relocate a feedback anchor when spec content changes
|
|
317
|
+
* Uses cascade strategy:
|
|
318
|
+
* 1. Section + Line Offset (if section unchanged)
|
|
319
|
+
* 2. Content Search (snippet + context)
|
|
320
|
+
* 3. Fuzzy Section Match (Levenshtein distance)
|
|
321
|
+
* 4. Mark as Stale (preserve original)
|
|
322
|
+
*/
|
|
323
|
+
export function relocateFeedbackAnchor(oldSpecContent, newSpecContent, anchor) {
|
|
324
|
+
// First, verify if anchor is still valid at original location
|
|
325
|
+
if (verifyAnchor(newSpecContent, anchor)) {
|
|
326
|
+
return {
|
|
327
|
+
...anchor,
|
|
328
|
+
anchor_status: 'valid',
|
|
329
|
+
last_verified_at: new Date().toISOString(),
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
// Strategy 1: Try Section + Line Offset
|
|
333
|
+
if (anchor.section_heading && anchor.line_offset !== undefined) {
|
|
334
|
+
const sections = getAllSections(newSpecContent);
|
|
335
|
+
const matchingSection = sections.find((s) => s.heading === anchor.section_heading);
|
|
336
|
+
if (matchingSection) {
|
|
337
|
+
const newLineNumber = matchingSection.startLine + anchor.line_offset;
|
|
338
|
+
const lines = newSpecContent.split('\n');
|
|
339
|
+
if (newLineNumber > 0 && newLineNumber <= lines.length) {
|
|
340
|
+
const targetLine = lines[newLineNumber - 1];
|
|
341
|
+
// Verify this looks right (check if snippet is close)
|
|
342
|
+
if (anchor.text_snippet) {
|
|
343
|
+
const cleanSnippet = anchor.text_snippet.replace(/\.\.\./g, '').trim();
|
|
344
|
+
if (cleanSnippet && targetLine.includes(cleanSnippet)) {
|
|
345
|
+
// Success! Create new anchor at relocated position
|
|
346
|
+
const newAnchor = createFeedbackAnchor(newSpecContent, newLineNumber);
|
|
347
|
+
return {
|
|
348
|
+
...newAnchor,
|
|
349
|
+
anchor_status: 'relocated',
|
|
350
|
+
last_verified_at: new Date().toISOString(),
|
|
351
|
+
original_location: anchor.original_location || {
|
|
352
|
+
line_number: anchor.line_number || 0,
|
|
353
|
+
section_heading: anchor.section_heading,
|
|
354
|
+
},
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// Strategy 2: Content Search with Context
|
|
362
|
+
if (anchor.text_snippet) {
|
|
363
|
+
const matches = searchByContent(newSpecContent, anchor.text_snippet, anchor.context_before, anchor.context_after);
|
|
364
|
+
if (matches.length > 0 && matches[0].confidence >= 0.7) {
|
|
365
|
+
// High confidence match found
|
|
366
|
+
const newAnchor = createFeedbackAnchor(newSpecContent, matches[0].lineNumber);
|
|
367
|
+
return {
|
|
368
|
+
...newAnchor,
|
|
369
|
+
anchor_status: 'relocated',
|
|
370
|
+
last_verified_at: new Date().toISOString(),
|
|
371
|
+
original_location: anchor.original_location || {
|
|
372
|
+
line_number: anchor.line_number || 0,
|
|
373
|
+
section_heading: anchor.section_heading,
|
|
374
|
+
},
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// Strategy 3: Fuzzy Section Match
|
|
379
|
+
if (anchor.section_heading && anchor.line_offset !== undefined) {
|
|
380
|
+
const fuzzyMatch = findFuzzySection(newSpecContent, anchor.section_heading, 5);
|
|
381
|
+
if (fuzzyMatch) {
|
|
382
|
+
const newLineNumber = fuzzyMatch.startLine + anchor.line_offset;
|
|
383
|
+
const lines = newSpecContent.split('\n');
|
|
384
|
+
if (newLineNumber > 0 && newLineNumber <= lines.length) {
|
|
385
|
+
const newAnchor = createFeedbackAnchor(newSpecContent, newLineNumber);
|
|
386
|
+
return {
|
|
387
|
+
...newAnchor,
|
|
388
|
+
anchor_status: 'relocated',
|
|
389
|
+
last_verified_at: new Date().toISOString(),
|
|
390
|
+
original_location: anchor.original_location || {
|
|
391
|
+
line_number: anchor.line_number || 0,
|
|
392
|
+
section_heading: anchor.section_heading,
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// Strategy 4: Mark as Stale - preserve original but mark invalid
|
|
399
|
+
return {
|
|
400
|
+
...anchor,
|
|
401
|
+
anchor_status: 'stale',
|
|
402
|
+
last_verified_at: new Date().toISOString(),
|
|
403
|
+
original_location: anchor.original_location || {
|
|
404
|
+
line_number: anchor.line_number || 0,
|
|
405
|
+
section_heading: anchor.section_heading,
|
|
406
|
+
},
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
export function relocateSpecFeedback(oldSpecContent, newSpecContent, feedbackList) {
|
|
410
|
+
const results = [];
|
|
411
|
+
let validCount = 0;
|
|
412
|
+
let relocatedCount = 0;
|
|
413
|
+
let staleCount = 0;
|
|
414
|
+
for (const feedback of feedbackList) {
|
|
415
|
+
const oldStatus = feedback.anchor.anchor_status;
|
|
416
|
+
const newAnchor = relocateFeedbackAnchor(oldSpecContent, newSpecContent, feedback.anchor);
|
|
417
|
+
const relocated = newAnchor.anchor_status === 'relocated';
|
|
418
|
+
if (newAnchor.anchor_status === 'valid') {
|
|
419
|
+
validCount++;
|
|
420
|
+
}
|
|
421
|
+
else if (newAnchor.anchor_status === 'relocated') {
|
|
422
|
+
relocatedCount++;
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
staleCount++;
|
|
426
|
+
}
|
|
427
|
+
results.push({
|
|
428
|
+
feedback_id: feedback.id,
|
|
429
|
+
old_status: oldStatus,
|
|
430
|
+
new_status: newAnchor.anchor_status,
|
|
431
|
+
relocated,
|
|
432
|
+
});
|
|
433
|
+
// Note: Actual database update should be done by the caller
|
|
434
|
+
// This function only performs the relocation logic
|
|
435
|
+
}
|
|
436
|
+
return {
|
|
437
|
+
total: feedbackList.length,
|
|
438
|
+
valid: validCount,
|
|
439
|
+
relocated: relocatedCount,
|
|
440
|
+
stale: staleCount,
|
|
441
|
+
results,
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
//# sourceMappingURL=feedback-anchors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-anchors.js","sourceRoot":"","sources":["../../src/operations/feedback-anchors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/operations/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAkBhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB,aAAa,CAiDf;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,aAAa,GAAG,IAAI,CAOtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,GACzB,aAAa,CA8Cf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAIzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,GACT,aAAa,CAEf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,mBAAwB,GAChC,aAAa,EAAE,CAuCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA4BvC"}
|