@vibe-validate/history 0.17.0-rc4 → 0.17.1-rc.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/README.md CHANGED
@@ -4,6 +4,7 @@ Validation history tracking via git notes for vibe-validate.
4
4
 
5
5
  ## Features
6
6
 
7
+ - **Automatic Work Protection**: Every validation creates recoverable snapshots of all files
7
8
  - **Git Notes Storage**: Store validation results keyed by git tree hash
8
9
  - **Distributed Cache**: Remember validation for EVERY tree hash
9
10
  - **Worktree Stability Check**: Verify tree unchanged during validation
@@ -228,6 +229,73 @@ await recordValidationHistory(treeHashBefore, result);
228
229
 
229
230
  **Sharing**: Local by default (no auto-push to remote)
230
231
 
232
+ ## Work Protection
233
+
234
+ Every validation run that records history also provides automatic work protection.
235
+
236
+ ### How Validation History Enables Recovery
237
+
238
+ Each history entry stores:
239
+ - `treeHash`: The git tree hash for that validation
240
+ - `timestamp`: When validation occurred
241
+ - `branch`: Which branch you were on
242
+ - `headCommit`: Last commit at validation time
243
+ - `uncommittedChanges`: Whether you had uncommitted work
244
+
245
+ The `treeHash` is the key to recovery - it references a git tree object containing all your files as they existed during that validation.
246
+
247
+ ### Recovery Workflow
248
+
249
+ 1. **Find the validation** you want to recover from:
250
+ ```bash
251
+ vv history list
252
+ ```
253
+
254
+ 2. **Examine the tree hash** to see what files existed:
255
+ ```bash
256
+ git ls-tree <tree-hash>
257
+ ```
258
+
259
+ 3. **View specific file content**:
260
+ ```bash
261
+ git cat-file -p <tree-hash>:path/to/file.ts
262
+ ```
263
+
264
+ 4. **Recover files**:
265
+ ```bash
266
+ # Single file
267
+ git cat-file -p <tree-hash>:src/feature.ts > src/feature.ts
268
+
269
+ # Entire directory
270
+ git checkout <tree-hash> -- src/
271
+ ```
272
+
273
+ ### Example: Recovering from Accidental Loss
274
+
275
+ ```typescript
276
+ // You were working on new features (unstaged)
277
+ // Accidentally ran `git restore .`
278
+ // Work is gone from file system!
279
+
280
+ // But history remembers:
281
+ const notes = await readHistoryNote(currentTreeHash);
282
+ console.log(`Last validation: ${notes.runs[0].timestamp}`);
283
+ console.log(`Tree hash: ${notes.treeHash}`);
284
+
285
+ // Recover via git:
286
+ // git cat-file -p <tree-hash>:src/lost-work.ts
287
+ ```
288
+
289
+ ### Privacy Implications
290
+
291
+ Work protection does NOT increase privacy risks:
292
+ - Git objects are local (not pushed unless you explicitly push git notes)
293
+ - Only files already tracked or trackable are protected
294
+ - .gitignore is respected (secrets stay ignored)
295
+ - Tree hashes are content-based (no PII)
296
+
297
+ See [Work Protection Guide](../../docs/work-protection.md) for comprehensive examples.
298
+
231
299
  ## Future Extensions
232
300
 
233
301
  - Team sharing (opt-in)
@@ -1 +1 @@
1
- {"version":3,"file":"pruner.d.ts","sourceRoot":"","sources":["../src/pruner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAY7D;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,aAAkB,EAC1B,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,WAAW,CAAC,CA0DtB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,GAAE,aAAkB,EAC1B,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,WAAW,CAAC,CA4CtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAwCpF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAgCpF"}
1
+ {"version":3,"file":"pruner.d.ts","sourceRoot":"","sources":["../src/pruner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAwB7D;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,aAAkB,EAC1B,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,WAAW,CAAC,CA4CtB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,GAAE,aAAkB,EAC1B,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,WAAW,CAAC,CA8BtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAkCpF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA8BpF"}
package/dist/pruner.js CHANGED
@@ -1,16 +1,24 @@
1
1
  /**
2
2
  * History pruning utilities
3
3
  */
4
- import { execSync } from 'node:child_process';
4
+ import { removeNote, removeNotesRefs } from '@vibe-validate/git';
5
5
  import { DEFAULT_HISTORY_CONFIG } from './types.js';
6
6
  import { getAllHistoryNotes } from './reader.js';
7
7
  import { listRunCacheTreeHashes, getAllRunCacheForTree } from './run-cache-reader.js';
8
- const GIT_TIMEOUT = 30000;
9
- const GIT_OPTIONS = {
10
- encoding: 'utf8',
11
- timeout: GIT_TIMEOUT,
12
- stdio: ['pipe', 'pipe', 'ignore'],
13
- };
8
+ // Removed: Git operations now use secure @vibe-validate/git functions
9
+ /**
10
+ * Merge user config with defaults
11
+ */
12
+ function mergeConfig(config = {}) {
13
+ const mergedGitNotes = config.gitNotes
14
+ ? { ...DEFAULT_HISTORY_CONFIG.gitNotes, ...config.gitNotes }
15
+ : DEFAULT_HISTORY_CONFIG.gitNotes;
16
+ return {
17
+ ...DEFAULT_HISTORY_CONFIG,
18
+ ...config,
19
+ gitNotes: mergedGitNotes,
20
+ };
21
+ }
14
22
  /**
15
23
  * Prune validation history older than specified days
16
24
  *
@@ -20,14 +28,7 @@ const GIT_OPTIONS = {
20
28
  * @returns Prune result
21
29
  */
22
30
  export async function pruneHistoryByAge(olderThanDays, config = {}, dryRun = false) {
23
- const mergedConfig = {
24
- ...DEFAULT_HISTORY_CONFIG,
25
- ...config,
26
- gitNotes: {
27
- ...DEFAULT_HISTORY_CONFIG.gitNotes,
28
- ...config.gitNotes,
29
- },
30
- };
31
+ const mergedConfig = mergeConfig(config);
31
32
  const notesRef = mergedConfig.gitNotes.ref;
32
33
  const cutoffTime = Date.now() - olderThanDays * 24 * 60 * 60 * 1000;
33
34
  let notesPruned = 0;
@@ -48,12 +49,8 @@ export async function pruneHistoryByAge(olderThanDays, config = {}, dryRun = fal
48
49
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
49
50
  const treeHash = note.treeHash;
50
51
  if (!dryRun) {
51
- try {
52
- execSync(`git notes --ref=${notesRef} remove ${treeHash}`, { ...GIT_OPTIONS, stdio: 'ignore' });
53
- }
54
- catch {
55
- // Ignore errors (note might not exist)
56
- }
52
+ // Use secure removeNote function (no command injection risk)
53
+ removeNote(notesRef, treeHash);
57
54
  }
58
55
  notesPruned++;
59
56
  runsPruned += note.runs.length;
@@ -75,14 +72,7 @@ export async function pruneHistoryByAge(olderThanDays, config = {}, dryRun = fal
75
72
  * @returns Prune result
76
73
  */
77
74
  export async function pruneAllHistory(config = {}, dryRun = false) {
78
- const mergedConfig = {
79
- ...DEFAULT_HISTORY_CONFIG,
80
- ...config,
81
- gitNotes: {
82
- ...DEFAULT_HISTORY_CONFIG.gitNotes,
83
- ...config.gitNotes,
84
- },
85
- };
75
+ const mergedConfig = mergeConfig(config);
86
76
  const notesRef = mergedConfig.gitNotes.ref;
87
77
  const allNotes = await getAllHistoryNotes(notesRef);
88
78
  let notesPruned = 0;
@@ -93,12 +83,8 @@ export async function pruneAllHistory(config = {}, dryRun = false) {
93
83
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
94
84
  const treeHash = note.treeHash;
95
85
  if (!dryRun) {
96
- try {
97
- execSync(`git notes --ref=${notesRef} remove ${treeHash}`, { ...GIT_OPTIONS, stdio: 'ignore' });
98
- }
99
- catch {
100
- // Ignore errors
101
- }
86
+ // Use secure removeNote function (no command injection risk)
87
+ removeNote(notesRef, treeHash);
102
88
  }
103
89
  notesPruned++;
104
90
  runsPruned += note.runs?.length ?? 0;
@@ -132,12 +118,8 @@ export async function pruneLegacyNotes(dryRun = false) {
132
118
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
133
119
  const treeHash = note.treeHash;
134
120
  if (!dryRun) {
135
- try {
136
- execSync(`git notes --ref=${legacyRef} remove ${treeHash}`, { ...GIT_OPTIONS, stdio: 'ignore' });
137
- }
138
- catch {
139
- // Ignore errors
140
- }
121
+ // Use secure removeNote function (no command injection risk)
122
+ removeNote(legacyRef, treeHash);
141
123
  }
142
124
  notesPruned++;
143
125
  runsPruned += note.runs?.length ?? 0;
@@ -166,19 +148,19 @@ export async function pruneAllRunCache(dryRun = false) {
166
148
  const prunedTreeHashes = [];
167
149
  for (const treeHash of treeHashes) {
168
150
  const entries = await getAllRunCacheForTree(treeHash);
169
- if (entries.length > 0) {
170
- if (!dryRun) {
171
- try {
172
- // Delete all run cache notes under this tree hash
173
- execSync(`git for-each-ref --format="%(refname)" refs/notes/vibe-validate/run/${treeHash}/ | xargs -I {} git update-ref -d {}`, { ...GIT_OPTIONS, stdio: 'ignore' });
174
- }
175
- catch {
176
- // Ignore errors
177
- }
178
- }
151
+ if (entries.length === 0) {
152
+ continue;
153
+ }
154
+ if (dryRun) {
179
155
  notesPruned += entries.length;
180
- prunedTreeHashes.push(treeHash);
181
156
  }
157
+ else {
158
+ // SECURITY FIX: Use secure removeNotesRefs instead of shell piping
159
+ // This eliminates command injection risk from treeHash variable
160
+ const deleted = removeNotesRefs(`refs/notes/vibe-validate/run/${treeHash}`);
161
+ notesPruned += deleted;
162
+ }
163
+ prunedTreeHashes.push(treeHash);
182
164
  }
183
165
  return {
184
166
  notesPruned,
@@ -1 +1 @@
1
- {"version":3,"file":"pruner.js","sourceRoot":"","sources":["../src/pruner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,MAAe;IACzB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA+B;CAChE,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,SAAwB,EAAE,EAC1B,SAAkB,KAAK;IAEvB,MAAM,YAAY,GAAG;QACnB,GAAG,sBAAsB;QACzB,GAAG,MAAM;QACT,QAAQ,EAAE;YACR,GAAG,sBAAsB,CAAC,QAAQ;YAClC,GAAG,MAAM,CAAC,QAAQ;SACnB;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEpE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAEhE,IAAI,eAAe,GAAG,UAAU,EAAE,CAAC;YACjC,qDAAqD;YACrD,iFAAiF;YACjF,oEAAoE;YACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAS,CAAC;YAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,QAAQ,CACN,mBAAmB,QAAQ,WAAW,QAAQ,EAAE,EAChD,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,uCAAuC;gBACzC,CAAC;YACH,CAAC;YAED,WAAW,EAAE,CAAC;YACd,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU;QACV,cAAc,EAAE,cAAc,GAAG,WAAW;QAC5C,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAwB,EAAE,EAC1B,SAAkB,KAAK;IAEvB,MAAM,YAAY,GAAG;QACnB,GAAG,sBAAsB;QACzB,GAAG,MAAM;QACT,QAAQ,EAAE;YACR,GAAG,sBAAsB,CAAC,QAAQ;YAClC,GAAG,MAAM,CAAC,QAAQ;SACnB;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;IAE3C,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,iFAAiF;QACjF,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAS,CAAC;QAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,QAAQ,CACN,mBAAmB,QAAQ,WAAW,QAAQ,EAAE,EAChD,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;QAED,WAAW,EAAE,CAAC;QACd,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;QACrC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU;QACV,cAAc,EAAE,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAkB,KAAK;IAC5D,MAAM,SAAS,GAAG,oBAAoB,CAAC;IAEvC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAErD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,iFAAiF;YACjF,oEAAoE;YACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAS,CAAC;YAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,QAAQ,CACN,mBAAmB,SAAS,WAAW,QAAQ,EAAE,EACjD,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,gBAAgB;gBAClB,CAAC;YACH,CAAC;YAED,WAAW,EAAE,CAAC;YACd,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;YACrC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU;QACV,cAAc,EAAE,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAkB,KAAK;IAC5D,MAAM,UAAU,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAClD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,kDAAkD;oBAClD,QAAQ,CACN,uEAAuE,QAAQ,sCAAsC,EACrH,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,gBAAgB;gBAClB,CAAC;YACH,CAAC;YAED,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;YAC9B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU,EAAE,WAAW,EAAE,iDAAiD;QAC1E,cAAc,EAAE,CAAC;QACjB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pruner.js","sourceRoot":"","sources":["../src/pruner.ts"],"names":[],"mappings":"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"}
package/dist/reader.js CHANGED
@@ -27,16 +27,16 @@ export async function readHistoryNote(treeHash, notesRef = 'vibe-validate/valida
27
27
  return null;
28
28
  }
29
29
  // Validate each ValidationResult in runs array using safe validation
30
+ // Silently skip corrupted entries (e.g., legacy 0/0 line/column from rc.9)
31
+ // After upgrading vibe-validate, run 'vv doctor' to check for issues
32
+ // Users can optionally cleanup old history with: vv history prune --all
30
33
  const validatedRuns = [];
31
34
  for (const run of parsed.runs) {
32
35
  if (!run.result) {
33
- console.warn(`Run ${run.id} missing result field - skipping`);
34
36
  continue;
35
37
  }
36
38
  const validationResult = safeValidateResult(run.result);
37
39
  if (!validationResult.success) {
38
- console.warn(`Invalid ValidationResult in run ${run.id}:`, validationResult.errors);
39
- console.warn('Skipping corrupted run entry');
40
40
  continue;
41
41
  }
42
42
  validatedRuns.push({
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,MAAe;IACzB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA+B;CAChE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,WAAmB,wBAAwB;IAE3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CACnB,mBAAmB,QAAQ,SAAS,QAAQ,EAAE,EAC9C,WAAW,CACZ,CAAC;QAEF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/B,oCAAoC;QACpC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAChG,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,uBAAuB,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qEAAqE;QACrE,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,kCAAkC,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;YAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACpF,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBAC7C,SAAS;YACX,CAAC;YAED,aAAa,CAAC,IAAI,CAAC;gBACjB,GAAG,GAAG;gBACN,MAAM,EAAE,gBAAgB,CAAC,IAAI;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ;YACrC,IAAI,EAAE,aAAa;SACL,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,wBAAwB;IAE3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,mBAAmB,QAAQ,OAAO,EAAE,WAAW,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0CAA0C;QAC1C,MAAM,UAAU,GAAG,MAAM;aACtB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;QAC/B,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,wBAAwB;IAE3C,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,WAAmB,wBAAwB;IAE3C,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,IAAI,KAAK,IAAI,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAGV,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAuCpB;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,YAAY,CAAC,CA8FvB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC,CAQzB"}
1
+ {"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAGV,YAAY,EACZ,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAuCpB;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,YAAY,CAAC,CA8FvB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC,CAQzB"}
package/dist/recorder.js CHANGED
@@ -6,7 +6,7 @@ import { writeFileSync, unlinkSync } from 'node:fs';
6
6
  import { tmpdir } from 'node:os';
7
7
  import { join } from 'node:path';
8
8
  import { stringify as stringifyYaml } from 'yaml';
9
- import { getGitTreeHash, hasWorkingTreeChanges } from '@vibe-validate/git';
9
+ import { getGitTreeHash, hasWorkingTreeChanges, getCurrentBranch as getGitBranch, getHeadCommitSha, } from '@vibe-validate/git';
10
10
  import { DEFAULT_HISTORY_CONFIG } from './types.js';
11
11
  import { truncateValidationOutput } from './truncate.js';
12
12
  import { readHistoryNote } from './reader.js';
@@ -23,7 +23,7 @@ const GIT_OPTIONS = {
23
23
  */
24
24
  async function getCurrentBranch() {
25
25
  try {
26
- const branch = execSync('git rev-parse --abbrev-ref HEAD', GIT_OPTIONS).trim();
26
+ const branch = getGitBranch();
27
27
  return branch === 'HEAD' ? 'detached' : branch;
28
28
  }
29
29
  catch {
@@ -37,7 +37,7 @@ async function getCurrentBranch() {
37
37
  */
38
38
  async function getHeadCommit() {
39
39
  try {
40
- return execSync('git rev-parse HEAD', GIT_OPTIONS).trim();
40
+ return getHeadCommitSha();
41
41
  }
42
42
  catch {
43
43
  return 'none';
@@ -1 +1 @@
1
- {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recorder.js","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-validate/history",
3
- "version": "0.17.0-rc4",
3
+ "version": "0.17.1-rc.1",
4
4
  "description": "Validation history tracking via git notes for vibe-validate",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -39,8 +39,8 @@
39
39
  "dependencies": {
40
40
  "yaml": "^2.3.4",
41
41
  "zod": "^3.24.1",
42
- "@vibe-validate/git": "0.17.0-rc4",
43
- "@vibe-validate/core": "0.17.0-rc4"
42
+ "@vibe-validate/git": "0.17.1-rc.1",
43
+ "@vibe-validate/core": "0.17.1-rc.1"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^22.0.0",