litmus-cli 1.5.0-beta.1 → 1.5.0-beta.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/README.md +19 -2
- package/dist/commands/connect.d.ts +2 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +1 -1
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +25 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +10 -232
- package/dist/index.js.map +1 -1
- package/dist/lib/ai-tracking.d.ts +4 -0
- package/dist/lib/ai-tracking.d.ts.map +1 -1
- package/dist/lib/ai-tracking.js +68 -0
- package/dist/lib/ai-tracking.js.map +1 -1
- package/dist/lib/api.d.ts +1 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +13 -4
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/capture-notice-ping.d.ts +7 -27
- package/dist/lib/capture-notice-ping.d.ts.map +1 -1
- package/dist/lib/capture-notice-ping.js +10 -42
- package/dist/lib/capture-notice-ping.js.map +1 -1
- package/dist/lib/capture-nudge.d.ts +5 -7
- package/dist/lib/capture-nudge.d.ts.map +1 -1
- package/dist/lib/capture-nudge.js +19 -35
- package/dist/lib/capture-nudge.js.map +1 -1
- package/dist/lib/capture-selftest.d.ts +9 -0
- package/dist/lib/capture-selftest.d.ts.map +1 -1
- package/dist/lib/capture-selftest.js +27 -2
- package/dist/lib/capture-selftest.js.map +1 -1
- package/dist/lib/codex-capture-health.d.ts +21 -0
- package/dist/lib/codex-capture-health.d.ts.map +1 -0
- package/dist/lib/codex-capture-health.js +82 -0
- package/dist/lib/codex-capture-health.js.map +1 -0
- package/dist/lib/environment-checks.d.ts +1 -3
- package/dist/lib/environment-checks.d.ts.map +1 -1
- package/dist/lib/environment-checks.js +2 -16
- package/dist/lib/environment-checks.js.map +1 -1
- package/dist/lib/file-monitor.d.ts +18 -0
- package/dist/lib/file-monitor.d.ts.map +1 -0
- package/dist/lib/file-monitor.js +87 -0
- package/dist/lib/file-monitor.js.map +1 -0
- package/dist/lib/hook-logger.cjs +47 -10
- package/dist/lib/hosted-capture.d.ts +4 -2
- package/dist/lib/hosted-capture.d.ts.map +1 -1
- package/dist/lib/hosted-capture.js +74 -16
- package/dist/lib/hosted-capture.js.map +1 -1
- package/dist/lib/init-location.d.ts +4 -0
- package/dist/lib/init-location.d.ts.map +1 -0
- package/dist/lib/init-location.js +36 -0
- package/dist/lib/init-location.js.map +1 -0
- package/dist/lib/mac-notifier.d.ts +4 -0
- package/dist/lib/mac-notifier.d.ts.map +1 -0
- package/dist/lib/mac-notifier.js +72 -0
- package/dist/lib/mac-notifier.js.map +1 -0
- package/dist/lib/node-version.d.ts +8 -0
- package/dist/lib/node-version.d.ts.map +1 -0
- package/dist/lib/node-version.js +23 -0
- package/dist/lib/node-version.js.map +1 -0
- package/dist/lib/notify.d.ts +4 -5
- package/dist/lib/notify.d.ts.map +1 -1
- package/dist/lib/notify.js +24 -25
- package/dist/lib/notify.js.map +1 -1
- package/dist/lib/portal-launcher.d.ts.map +1 -1
- package/dist/lib/portal-launcher.js +6 -1
- package/dist/lib/portal-launcher.js.map +1 -1
- package/dist/lib/tracker.d.ts +1 -0
- package/dist/lib/tracker.d.ts.map +1 -1
- package/dist/lib/tracker.js +4 -2
- package/dist/lib/tracker.js.map +1 -1
- package/dist/lib/watcher.js +147 -101
- package/dist/lib/watcher.js.map +1 -1
- package/dist/notification-assets/litmus.icns +0 -0
- package/dist/notification-assets/litmus.png +0 -0
- package/dist/notification-assets/notifier.js +12 -0
- package/dist/program.d.ts +2 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +236 -0
- package/dist/program.js.map +1 -0
- package/package.json +5 -5
package/dist/lib/tracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/lib/tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/lib/tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/watcher.js
CHANGED
|
@@ -25,7 +25,7 @@ import { execSync, execFile } from "child_process";
|
|
|
25
25
|
import dns from "dns";
|
|
26
26
|
import https from "https";
|
|
27
27
|
import http from "http";
|
|
28
|
-
import {
|
|
28
|
+
import { startFileMonitor, fileMonitorPolicy } from "./file-monitor.js";
|
|
29
29
|
import { getEffectiveDeadline, writeConfig, validateRebuiltTimes, computeTimeSync } from "./config.js";
|
|
30
30
|
import { CLI_VERSION } from "./version.js";
|
|
31
31
|
import { armDeadlinePoll, createAutoSubmitController } from "./deadline.js";
|
|
@@ -34,17 +34,18 @@ import { buildGitBundle, currentHead } from "./git-bundle.js";
|
|
|
34
34
|
import { fetchInitMetadata, ServerError } from "./api.js";
|
|
35
35
|
import { resolveBackendBase } from "./api-base.js";
|
|
36
36
|
import { ServerTimesSchema } from "./schemas.js";
|
|
37
|
-
import { detectInstalledHooks, addActiveAssessment, removeActiveAssessment } from "./ai-tracking.js";
|
|
37
|
+
import { detectInstalledHooks, notificationSetupAction, addActiveAssessment, removeActiveAssessment } from "./ai-tracking.js";
|
|
38
38
|
import { retireAiCaptureForEndedSession, sessionOverMarked } from "./session-over.js";
|
|
39
39
|
import { readActivityLogTail } from "./activity-tail.js";
|
|
40
40
|
import { setupAiTracking } from "../commands/init.js";
|
|
41
41
|
import { writeShadowChainCursor, readShadowChainCursor, writeShadowTrackerFile, writeShadowReviveInfo, readShadowConfigById, findShadowConfigForDir, deleteShadowForAssessment, writeRepairFile, removeRepairFile, REPAIR_FILE_NAME, } from "./shadow.js";
|
|
42
42
|
import { createKeepAliveGuard } from "./keepalive.js";
|
|
43
|
-
import { WATCHER_READY_GRACE_MS } from "./tracker.js";
|
|
43
|
+
import { WATCHER_READY_GRACE_MS, WATCHER_BOOT_TIMEOUT_MS } from "./tracker.js";
|
|
44
44
|
import { getProcessListAsync, probeUnfilteredTasklist, getConnections, extractConnection, resolvePidNames } from "./platform.js";
|
|
45
45
|
import { detectTools, refineClaudeTool } from "./detection.js";
|
|
46
|
-
import { decideNudge, loadNudgeState, saveNudgeState, scanAssessmentCapture,
|
|
46
|
+
import { decideNudge, loadNudgeState, saveNudgeState, scanAssessmentCapture, NUDGE_TRIGGER_TOOLS, removeAiNoticeFile, nudgeNotificationCopy, isCliNoticeArtifact, AI_NOTICE_FILE_NAME, } from "./capture-nudge.js";
|
|
47
47
|
import { desktopNotify } from "./notify.js";
|
|
48
|
+
import { codexStoreInventory, readCodexDelivery } from "./codex-capture-health.js";
|
|
48
49
|
// ENG-1491: an uncaught throw no longer always kills the watcher — on a
|
|
49
50
|
// multi-day assessment one bad callback used to silently end tracking until
|
|
50
51
|
// something respawned it. The guard keeps the two exits that are still
|
|
@@ -79,7 +80,7 @@ process.on("unhandledRejection", (reason) => {
|
|
|
79
80
|
});
|
|
80
81
|
let [, , projectDir, activityLogPath, cliBinPath, noncePath] = process.argv;
|
|
81
82
|
process.stderr.write(`[watcher] starting: projectDir=${projectDir} log=${activityLogPath}\n`);
|
|
82
|
-
process.stderr.write(`[watcher] node ${process.version}, platform=${process.platform}, arch=${process.arch}\n`);
|
|
83
|
+
process.stderr.write(`[watcher] node ${process.version}, platform=${process.platform}, arch=${process.arch}, kernel=${os.release()}\n`);
|
|
83
84
|
// Touch the nonce file on startup so tracker.ts can distinguish "our watcher
|
|
84
85
|
// is alive" from "a recycled PID happens to match an old tracker.pid".
|
|
85
86
|
// Heartbeat updates the mtime; tracker.ts compares against NONCE_MAX_AGE_MS.
|
|
@@ -166,15 +167,28 @@ function claimantIsAlive(owner) {
|
|
|
166
167
|
// reclaim from it just like a corpse. The env override exists for tests only.
|
|
167
168
|
// The default is tracker.ts's, so it cannot fall below init's boot wait (ENG-3194).
|
|
168
169
|
let readyFilePath = path.join(path.dirname(activityLogPath), "tracker.ready");
|
|
170
|
+
let fileCaptureVerified = false;
|
|
171
|
+
let chainStartTimer;
|
|
169
172
|
const READY_GRACE_MS = Number(process.env.LITMUS_WATCHER_READY_GRACE_MS) || WATCHER_READY_GRACE_MS;
|
|
170
173
|
function markReady() {
|
|
174
|
+
if (!fileCaptureVerified)
|
|
175
|
+
return false;
|
|
171
176
|
try {
|
|
172
177
|
fs.writeFileSync(readyFilePath, String(process.pid), "utf8");
|
|
178
|
+
// A successor may take time to verify files. Its incumbent keeps writing
|
|
179
|
+
// until this stamp appears, so the handoff delay starts NOW, not at spawn.
|
|
180
|
+
if (!chainStartTimer && preChainBuffer !== null && !chainAbandoned) {
|
|
181
|
+
chainStartTimer = setTimeout(startChain, CHAIN_START_DELAY_MS);
|
|
182
|
+
}
|
|
183
|
+
return true;
|
|
173
184
|
}
|
|
174
185
|
catch (err) {
|
|
175
|
-
// Non-fatal: we keep watching either way. Worst case another watcher
|
|
176
|
-
// eventually reclaims the pid file from us; the project stays tracked.
|
|
177
186
|
process.stderr.write(`[watcher] could not write ready marker: ${err}\n`);
|
|
187
|
+
// Without the stamp an incumbent cannot yield and chain writes cannot
|
|
188
|
+
// start. Flush the unchained startup buffer and retire, rather than hold
|
|
189
|
+
// the rest of the session in memory forever.
|
|
190
|
+
shutdown({ preserveSentinel: true });
|
|
191
|
+
return false;
|
|
178
192
|
}
|
|
179
193
|
}
|
|
180
194
|
function claimantIsReady(owner) {
|
|
@@ -519,6 +533,18 @@ const IGNORED = [
|
|
|
519
533
|
const noticeOwnership = new Map();
|
|
520
534
|
isCliNoticeArtifact(projectDir, AI_NOTICE_FILE_NAME, noticeOwnership);
|
|
521
535
|
isCliNoticeArtifact(projectDir, REPAIR_FILE_NAME, noticeOwnership);
|
|
536
|
+
const AI_ARTIFACT_PATTERNS = [
|
|
537
|
+
{ tool: "cursor", paths: [".cursorrules", ".cursorignore"] },
|
|
538
|
+
{ tool: "windsurf", paths: [".windsurfrules"] },
|
|
539
|
+
{ tool: "aider", paths: [".aider.chat.history.md", ".aider.input.history", ".aider.tags.cache"] },
|
|
540
|
+
{ tool: "continue", paths: [".continue"] },
|
|
541
|
+
{ tool: "codeium", paths: [".codeium"] },
|
|
542
|
+
{ tool: "tabnine", paths: [".tabnine"] },
|
|
543
|
+
{ tool: "codex", paths: ["codex.md", ".codex"] },
|
|
544
|
+
];
|
|
545
|
+
function isAiArtifactPath(relative) {
|
|
546
|
+
return AI_ARTIFACT_PATTERNS.some(({ paths }) => paths.some(p => relative === p || relative.startsWith(p + "/") || relative.startsWith(p + "\\")));
|
|
547
|
+
}
|
|
522
548
|
function shouldIgnore(relPath) {
|
|
523
549
|
return isCliNoticeArtifact(projectDir, relPath, noticeOwnership) || IGNORED.some((re) => re.test(relPath));
|
|
524
550
|
}
|
|
@@ -607,7 +633,6 @@ function startChain() {
|
|
|
607
633
|
for (const event of queued)
|
|
608
634
|
writeChained(event);
|
|
609
635
|
}
|
|
610
|
-
setTimeout(startChain, CHAIN_START_DELAY_MS);
|
|
611
636
|
/**
|
|
612
637
|
* Shutdown inside the chain-start window: the incumbent may still own the
|
|
613
638
|
* chain tail, so snapshotting it here would recreate the fork the deferral
|
|
@@ -712,63 +737,54 @@ function handleFileEvent(eventType, filename) {
|
|
|
712
737
|
}, 500));
|
|
713
738
|
}
|
|
714
739
|
let fileWatcher;
|
|
740
|
+
let fileWatchingReady;
|
|
715
741
|
function startFileWatching() {
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
742
|
+
fileCaptureVerified = false;
|
|
743
|
+
const startedAt = Date.now();
|
|
744
|
+
const { polling } = fileMonitorPolicy();
|
|
745
|
+
const modes = polling ? [true] : [false, true];
|
|
746
|
+
fileWatchingReady = (async () => {
|
|
747
|
+
for (let attempt = 0; attempt < modes.length; attempt++) {
|
|
748
|
+
let failure;
|
|
749
|
+
process.stderr.write(`[watcher] file watcher starting (${modes[attempt] ? "polling" : "native"}, filtered discovery)\n`);
|
|
750
|
+
const monitor = startFileMonitor({
|
|
751
|
+
directory: projectDir,
|
|
752
|
+
ignored: shouldIgnore,
|
|
753
|
+
observed: isAiArtifactPath,
|
|
754
|
+
onEvent: handleFileEvent,
|
|
755
|
+
polling: modes[attempt],
|
|
756
|
+
timeoutMs: Math.floor((WATCHER_BOOT_TIMEOUT_MS - 1000) / modes.length),
|
|
757
|
+
onError: (error) => {
|
|
758
|
+
failure = error;
|
|
759
|
+
fileCaptureVerified = false;
|
|
760
|
+
process.stderr.write(`[watcher] file capture unavailable: ${error.message}\n`);
|
|
761
|
+
try {
|
|
762
|
+
if (fs.readFileSync(readyFilePath, "utf8").trim() === String(process.pid))
|
|
763
|
+
fs.unlinkSync(readyFilePath);
|
|
764
|
+
}
|
|
765
|
+
catch { /* no ready marker */ }
|
|
738
766
|
},
|
|
739
767
|
});
|
|
740
|
-
fileWatcher =
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
return;
|
|
758
|
-
handleFileEvent(eventType, filename);
|
|
759
|
-
});
|
|
760
|
-
fileWatcher = watcher;
|
|
761
|
-
watcher.on("error", (err) => {
|
|
762
|
-
process.stderr.write(`[watcher] fs.watch error: ${err}\n`);
|
|
763
|
-
});
|
|
764
|
-
process.stderr.write("[watcher] file watcher started\n");
|
|
765
|
-
}
|
|
766
|
-
catch (err) {
|
|
767
|
-
// fs.watch with recursive: true is not supported on Linux < Node 22.
|
|
768
|
-
// Continue without file watching — heartbeats and git commit polling still work.
|
|
769
|
-
process.stderr.write(`[watcher] file watching unavailable: ${err.message} (heartbeat + git tracking still active)\n`);
|
|
768
|
+
fileWatcher = monitor;
|
|
769
|
+
try {
|
|
770
|
+
await monitor.ready;
|
|
771
|
+
if (failure)
|
|
772
|
+
throw failure;
|
|
773
|
+
if (fileWatcher !== monitor || shuttingDown)
|
|
774
|
+
throw new Error("File watcher replaced or stopped during verification");
|
|
775
|
+
fileCaptureVerified = true;
|
|
776
|
+
process.stderr.write(`[watcher] file capture verified in ${Date.now() - startedAt}ms\n`);
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
779
|
+
catch (error) {
|
|
780
|
+
await monitor.close();
|
|
781
|
+
if (shuttingDown || fileWatcher !== monitor || attempt === modes.length - 1)
|
|
782
|
+
throw error;
|
|
783
|
+
process.stderr.write("[watcher] native file probe failed; retrying with polling\n");
|
|
784
|
+
}
|
|
770
785
|
}
|
|
771
|
-
}
|
|
786
|
+
})();
|
|
787
|
+
void fileWatchingReady.catch(() => { });
|
|
772
788
|
}
|
|
773
789
|
startFileWatching();
|
|
774
790
|
// ── Config presence check ────────────────────────────────────────
|
|
@@ -1052,10 +1068,38 @@ function checkHooksPresence() {
|
|
|
1052
1068
|
catch { /* leave broken; retried next heartbeat, reported already */ }
|
|
1053
1069
|
}
|
|
1054
1070
|
// ── Heartbeats ───────────────────────────────────────────────────
|
|
1071
|
+
const captureHealthStartedAt = Date.parse(litmusConfig?.startedAt ?? "") || Date.now();
|
|
1072
|
+
let captureHealthInFlight = false;
|
|
1073
|
+
let lastCaptureHealth = "";
|
|
1074
|
+
async function checkCodexCaptureHealth() {
|
|
1075
|
+
if (captureHealthInFlight || shuttingDown || sessionOverMarked(projectDir))
|
|
1076
|
+
return;
|
|
1077
|
+
captureHealthInFlight = true;
|
|
1078
|
+
try {
|
|
1079
|
+
const store = await codexStoreInventory();
|
|
1080
|
+
const latestHook = await readCodexDelivery(path.dirname(activityLogPath), captureHealthStartedAt);
|
|
1081
|
+
let hooksInstalled = null;
|
|
1082
|
+
try {
|
|
1083
|
+
hooksInstalled = detectInstalledHooks(projectDir).codex;
|
|
1084
|
+
}
|
|
1085
|
+
catch { /* unknown */ }
|
|
1086
|
+
const health = { hooksInstalled, store, latestHook };
|
|
1087
|
+
const fingerprint = JSON.stringify(health);
|
|
1088
|
+
if (!shuttingDown && fingerprint !== lastCaptureHealth) {
|
|
1089
|
+
emit({ ts: new Date().toISOString(), type: "codex_capture_health", ...health });
|
|
1090
|
+
lastCaptureHealth = fingerprint;
|
|
1091
|
+
}
|
|
1092
|
+
}
|
|
1093
|
+
finally {
|
|
1094
|
+
captureHealthInFlight = false;
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1055
1097
|
function emitHeartbeat() {
|
|
1056
1098
|
if (!reportProjectRootProblem()) {
|
|
1057
1099
|
checkConfigPresence(); // before the heartbeat so both ride the same upload
|
|
1058
1100
|
checkHooksPresence();
|
|
1101
|
+
// Async metadata scan stays outside the startup readiness critical path.
|
|
1102
|
+
setTimeout(() => { void checkCodexCaptureHealth().catch(() => { }); }, 0);
|
|
1059
1103
|
}
|
|
1060
1104
|
emit({ ts: new Date().toISOString(), type: "heartbeat" });
|
|
1061
1105
|
uploadEvents(); // Upload buffered events to server
|
|
@@ -1136,18 +1180,14 @@ function checkGitCommits() {
|
|
|
1136
1180
|
}
|
|
1137
1181
|
setInterval(checkGitCommits, 30 * 1000); // Every 30 seconds
|
|
1138
1182
|
// ── Capture nudge (ENG-1857) ─────────────────────────────────────
|
|
1139
|
-
//
|
|
1140
|
-
//
|
|
1141
|
-
//
|
|
1142
|
-
//
|
|
1143
|
-
// the assessment root, and stderr (-> .litmus/tracker.log, excluded from all
|
|
1144
|
-
// grader signals via substrate.py's _is_capture_artifact). It must emit NO
|
|
1145
|
-
// activity event — the grader renders every non-response activity event
|
|
1146
|
-
// verbatim in the judge-visible timeline and merges the in-zip
|
|
1147
|
-
// activity.jsonl, so an event here would leak straight to reviewers.
|
|
1183
|
+
// Ask for one action only when an active tool has a confirmed setup fault.
|
|
1184
|
+
// No conversations alone proves nothing. Candidate notifications emit no
|
|
1185
|
+
// activity event: the grader renders those in the judge-visible timeline.
|
|
1186
|
+
// Diagnostics stay on stderr (.litmus/tracker.log, excluded from grading).
|
|
1148
1187
|
//
|
|
1149
1188
|
// State persists in .litmus/nudge-state.json so the routine watcher respawns
|
|
1150
1189
|
// (litmus status/doctor revive watchers) don't re-nag from scratch.
|
|
1190
|
+
removeOwnedAiNotice(); // retire guidance left by older CLI versions
|
|
1151
1191
|
let nudgeState = loadNudgeState(projectDir);
|
|
1152
1192
|
// Incremental ai_prompt/ai_response counters over the folder and same-token
|
|
1153
1193
|
// supervisor logs; only appended bytes are read each cycle. A restart rescans
|
|
@@ -1174,24 +1214,24 @@ function runCaptureNudge(aiTools) {
|
|
|
1174
1214
|
}
|
|
1175
1215
|
const deadlineMs = litmusConfig ? getEffectiveDeadline(litmusConfig) : null;
|
|
1176
1216
|
const msRemaining = deadlineMs === null ? null : deadlineMs - Date.now();
|
|
1177
|
-
const
|
|
1217
|
+
const setupIssues = {};
|
|
1218
|
+
for (const tool of NUDGE_TRIGGER_TOOLS) {
|
|
1219
|
+
if (!aiTools.includes(tool))
|
|
1220
|
+
continue;
|
|
1221
|
+
const issue = notificationSetupAction(projectDir, tool);
|
|
1222
|
+
if (issue)
|
|
1223
|
+
setupIssues[tool] = issue;
|
|
1224
|
+
}
|
|
1225
|
+
const decision = decideNudge(nudgeState, aiTools, capturedAiCount, Date.now(), msRemaining, setupIssues);
|
|
1178
1226
|
nudgeState = decision.state;
|
|
1179
1227
|
saveNudgeState(projectDir, nudgeState);
|
|
1180
1228
|
if (decision.action === "nudge") {
|
|
1181
|
-
//
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
const noticeWritten = writeAiNoticeFile(projectDir);
|
|
1185
|
-
if (noticeWritten) {
|
|
1186
|
-
isCliNoticeArtifact(projectDir, AI_NOTICE_FILE_NAME, noticeOwnership); // refresh ownership
|
|
1187
|
-
}
|
|
1188
|
-
else {
|
|
1189
|
-
process.stderr.write(`[watcher] ${AI_NOTICE_FILE_NAME} exists and is not ours; notification only\n`);
|
|
1190
|
-
}
|
|
1191
|
-
const copy = nudgeNotificationCopy(decision.tool, noticeWritten);
|
|
1229
|
+
// Retire old guidance without touching candidate edits.
|
|
1230
|
+
removeOwnedAiNotice();
|
|
1231
|
+
const copy = nudgeNotificationCopy(decision.setupAction);
|
|
1192
1232
|
desktopNotify(copy.title, copy.message);
|
|
1193
1233
|
// stderr only — this lands in tracker.log, never in activity.jsonl.
|
|
1194
|
-
process.stderr.write(`[watcher] capture nudge fired (${decision.tool}, nudge ${nudgeState.nudgeCount}):
|
|
1234
|
+
process.stderr.write(`[watcher] capture nudge fired (${decision.tool}, nudge ${nudgeState.nudgeCount}): confirmed setup issue ${decision.setupAction}\n`);
|
|
1195
1235
|
}
|
|
1196
1236
|
else if (decision.action === "remove_notice") {
|
|
1197
1237
|
removeOwnedAiNotice();
|
|
@@ -1274,15 +1314,6 @@ async function detectEnvironment() {
|
|
|
1274
1314
|
setTimeout(() => { void detectEnvironment(); }, 0);
|
|
1275
1315
|
setInterval(() => { void detectEnvironment(); }, 10 * 60 * 1000); // Every 10 minutes
|
|
1276
1316
|
// ── AI artifact file detection ──────────────────────────────────
|
|
1277
|
-
const AI_ARTIFACT_PATTERNS = [
|
|
1278
|
-
{ tool: "cursor", paths: [".cursorrules", ".cursorignore"] },
|
|
1279
|
-
{ tool: "windsurf", paths: [".windsurfrules"] },
|
|
1280
|
-
{ tool: "aider", paths: [".aider.chat.history.md", ".aider.input.history", ".aider.tags.cache"] },
|
|
1281
|
-
{ tool: "continue", paths: [".continue"] },
|
|
1282
|
-
{ tool: "codeium", paths: [".codeium"] },
|
|
1283
|
-
{ tool: "tabnine", paths: [".tabnine"] },
|
|
1284
|
-
{ tool: "codex", paths: ["codex.md", ".codex"] },
|
|
1285
|
-
];
|
|
1286
1317
|
const seenArtifacts = new Set();
|
|
1287
1318
|
function checkArtifact(relPath) {
|
|
1288
1319
|
if (seenArtifacts.has(relPath))
|
|
@@ -1538,8 +1569,13 @@ function reportProjectRootProblem() {
|
|
|
1538
1569
|
readyFilePath = path.join(path.dirname(activityLogPath), "tracker.ready");
|
|
1539
1570
|
watchedConfigPath = path.join(projectDir, ".litmus", "config.json");
|
|
1540
1571
|
shutdownFile = path.join(projectDir, ".litmus", "shutdown");
|
|
1541
|
-
void Promise.resolve(fileWatcher?.close()).then(() => {
|
|
1542
|
-
|
|
1572
|
+
void Promise.resolve(fileWatcher?.close()).then(() => {
|
|
1573
|
+
if (!shuttingDown) {
|
|
1574
|
+
startFileWatching();
|
|
1575
|
+
void fileWatchingReady.then(() => { if (!shuttingDown)
|
|
1576
|
+
markReady(); }, () => { });
|
|
1577
|
+
}
|
|
1578
|
+
}).catch(() => {
|
|
1543
1579
|
process.stderr.write("[watcher] file watcher could not restart after folder move\n");
|
|
1544
1580
|
});
|
|
1545
1581
|
addActiveAssessment(projectDir);
|
|
@@ -1758,7 +1794,7 @@ if (cliBinPath && litmusConfig) {
|
|
|
1758
1794
|
// ── Graceful shutdown ────────────────────────────────────────────
|
|
1759
1795
|
let shuttingDown = false;
|
|
1760
1796
|
let shutdownFile = path.join(projectDir, ".litmus", "shutdown");
|
|
1761
|
-
function shutdown() {
|
|
1797
|
+
function shutdown(options = {}) {
|
|
1762
1798
|
if (shuttingDown)
|
|
1763
1799
|
return;
|
|
1764
1800
|
shuttingDown = true;
|
|
@@ -1772,10 +1808,12 @@ function shutdown() {
|
|
|
1772
1808
|
// them unchained instead; a fork is structurally impossible that way.
|
|
1773
1809
|
abandonChainAndDrain();
|
|
1774
1810
|
// Clean up sentinel file if it exists
|
|
1775
|
-
|
|
1776
|
-
|
|
1811
|
+
if (!options.preserveSentinel) {
|
|
1812
|
+
try {
|
|
1813
|
+
fs.unlinkSync(shutdownFile);
|
|
1814
|
+
}
|
|
1815
|
+
catch { /* may not exist */ }
|
|
1777
1816
|
}
|
|
1778
|
-
catch { /* may not exist */ }
|
|
1779
1817
|
// Drop our readiness stamp so it can't outlive us and vouch for whatever
|
|
1780
1818
|
// process later recycles our pid (see claimantIsReady). Only ours — a
|
|
1781
1819
|
// successor's stamp is not ours to remove.
|
|
@@ -1806,7 +1844,7 @@ process.on("SIGINT", shutdown);
|
|
|
1806
1844
|
const sentinelPoll = setInterval(() => {
|
|
1807
1845
|
if (fs.existsSync(shutdownFile)) {
|
|
1808
1846
|
process.stderr.write("[watcher] shutdown sentinel detected\n");
|
|
1809
|
-
shutdown();
|
|
1847
|
+
shutdown({ preserveSentinel: !fileCaptureVerified });
|
|
1810
1848
|
return;
|
|
1811
1849
|
}
|
|
1812
1850
|
// Recurring half of the singleton claim — see the note beside
|
|
@@ -1819,6 +1857,14 @@ const sentinelPoll = setInterval(() => {
|
|
|
1819
1857
|
sentinelPoll.unref(); // Don't keep process alive just for this
|
|
1820
1858
|
// Everything is running — publish readiness so an incumbent knows this
|
|
1821
1859
|
// process is a working watcher, not a wedged claimant (see markReady).
|
|
1822
|
-
|
|
1823
|
-
|
|
1860
|
+
void fileWatchingReady.then(() => {
|
|
1861
|
+
if (shuttingDown)
|
|
1862
|
+
return;
|
|
1863
|
+
if (markReady())
|
|
1864
|
+
process.stderr.write("[watcher] all monitors started; file capture verified\n");
|
|
1865
|
+
}, (error) => {
|
|
1866
|
+
process.stderr.write(`[watcher] startup incomplete: ${error instanceof Error ? error.message : error} (retiring unverified watcher)\n`);
|
|
1867
|
+
// A failed replacement must not consume a stop requested for its incumbent.
|
|
1868
|
+
shutdown({ preserveSentinel: true });
|
|
1869
|
+
});
|
|
1824
1870
|
//# sourceMappingURL=watcher.js.map
|