@ngockhoale/ukit 1.6.7 → 1.6.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
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to UKit are documented here.
|
|
4
4
|
|
|
5
|
+
## 1.6.8 - 2026-08-09
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **`extract-image.mjs`** no longer re-arms `pending-<sha>.json` for an image that already has an `analyzed-<sha>.json` receipt. `selectImages()` always returns the most recent N images from the whole transcript, so a fully-analyzed image never fell out of that window on its own; since `vision-router.sh` calls `--mark-pending` on every prompt, this re-triggered the vision hint/gate on the same closed-out image forever, even on unrelated prompts. Both `--detect` and `--mark-pending` now skip any sha with an existing analyzed receipt.
|
|
10
|
+
|
|
5
11
|
## 1.6.7 - 2026-08-09
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/package.json
CHANGED
|
@@ -315,8 +315,16 @@ function main() {
|
|
|
315
315
|
|
|
316
316
|
const lines = sessionPath ? readLines(sessionPath) : [];
|
|
317
317
|
const blocks = extractImageBlocks(lines);
|
|
318
|
-
const
|
|
319
|
-
|
|
318
|
+
const markerDir = path.join(outDir, sessionId);
|
|
319
|
+
// selectImages() picks the most recent N images from the WHOLE transcript, so a resolved
|
|
320
|
+
// image never falls out of that window on its own — without this filter, --mark-pending
|
|
321
|
+
// (called on every prompt by vision-router.sh) would re-arm pending-<sha>.json for the same
|
|
322
|
+
// already-analyzed image forever, re-triggering the vision hint/gate on unrelated prompts.
|
|
323
|
+
// A sha with an existing analyzed-<sha>.json receipt is a closed, content-addressed case:
|
|
324
|
+
// identical bytes already produced that analysis, so skipping it loses no information.
|
|
325
|
+
const isAlreadyAnalyzed = (sha) => fs.existsSync(path.join(markerDir, `analyzed-${sha}.json`));
|
|
326
|
+
const selected = selectImages(blocks, opts.limit).filter((img) => !isAlreadyAnalyzed(img.sha));
|
|
327
|
+
const refs = resolveRefs(opts.refs).filter((ref) => !isAlreadyAnalyzed(ref.sha));
|
|
320
328
|
|
|
321
329
|
// --detect is report-only, so it must not short-circuit --mark-pending when both are
|
|
322
330
|
// passed together. vision-router.sh combines them; short-circuiting here would arm
|
|
@@ -327,7 +335,6 @@ function main() {
|
|
|
327
335
|
}
|
|
328
336
|
|
|
329
337
|
if (opts.markPending) {
|
|
330
|
-
const markerDir = path.join(outDir, sessionId);
|
|
331
338
|
if (selected.length > 0 || refs.length > 0) {
|
|
332
339
|
try {
|
|
333
340
|
fs.mkdirSync(markerDir, { recursive: true });
|