workday-daemon 0.9.0 → 0.14.0
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 +3 -1
- package/dist/cli.js +63 -2
- package/dist/cli.js.map +1 -1
- package/dist/collectors/git-tracker.d.ts +6 -7
- package/dist/collectors/git-tracker.js +28 -39
- package/dist/collectors/git-tracker.js.map +1 -1
- package/dist/core/config.js +10 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +4 -1
- package/dist/core/constants.js +10 -2
- package/dist/core/constants.js.map +1 -1
- package/dist/core/daily-log.d.ts +16 -0
- package/dist/core/daily-log.js +37 -0
- package/dist/core/daily-log.js.map +1 -1
- package/dist/core/day-lifecycle.d.ts +10 -0
- package/dist/core/day-lifecycle.js +14 -0
- package/dist/core/day-lifecycle.js.map +1 -0
- package/dist/core/gap-detector.d.ts +20 -0
- package/dist/core/gap-detector.js +20 -0
- package/dist/core/gap-detector.js.map +1 -0
- package/dist/core/janitor.d.ts +32 -0
- package/dist/core/janitor.js +113 -0
- package/dist/core/janitor.js.map +1 -0
- package/dist/core/session-tracker.d.ts +76 -12
- package/dist/core/session-tracker.js +231 -53
- package/dist/core/session-tracker.js.map +1 -1
- package/dist/core/status-renderer.js +5 -3
- package/dist/core/status-renderer.js.map +1 -1
- package/dist/core/stop-marker.d.ts +3 -0
- package/dist/core/stop-marker.js +32 -0
- package/dist/core/stop-marker.js.map +1 -0
- package/dist/core/types.d.ts +17 -7
- package/dist/core/types.js +1 -7
- package/dist/core/types.js.map +1 -1
- package/dist/daemon.d.ts +21 -3
- package/dist/daemon.js +79 -38
- package/dist/daemon.js.map +1 -1
- package/dist/http-server.d.ts +11 -1
- package/dist/http-server.js +94 -4
- package/dist/http-server.js.map +1 -1
- package/dist/push/report-builder.js +21 -2
- package/dist/push/report-builder.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { basename } from 'node:path';
|
|
2
|
-
import { SessionState, ClosedBy, SignalType, PauseSource } from './types.js';
|
|
2
|
+
import { SessionState, ClosedBy, DayStatus, SignalType, PauseSource } from './types.js';
|
|
3
3
|
import { applyLedgerUpdate, countSessionCommits, createEmptyLedger } from './commit-ledger.js';
|
|
4
|
-
import {
|
|
4
|
+
import { isDayMaterialized } from './day-lifecycle.js';
|
|
5
|
+
import { generateSessionId, createEmptyEvidence, createEmptyLog, writeDailyLog, deleteDailyLog, addSignal, addManualAdjustment, addManualEntry, editManualEntry, resolveSessionTarget, computeManualMinutes, getOpenPause, trimTrailingPauses, } from './daily-log.js';
|
|
5
6
|
import { computeWorkingDate, getSensitivityForRepo, resolveSensitivityTicks, writeConfig } from './config.js';
|
|
6
7
|
/**
|
|
7
8
|
* Manages session lifecycle within a DailyLog.
|
|
@@ -29,11 +30,20 @@ export class SessionTracker {
|
|
|
29
30
|
dailyLog;
|
|
30
31
|
config;
|
|
31
32
|
lastEvaluatorResult = null;
|
|
33
|
+
// In-memory candidate sessions (born from activity, not yet confirmed
|
|
34
|
+
// facts) keyed by repo name. Promoted to dailyLog.sessions by the
|
|
35
|
+
// evaluator (score > 0 && leader); evaporate when the stamina score
|
|
36
|
+
// drains to zero, on checkout away, or at rollover.
|
|
37
|
+
candidates = new Map();
|
|
38
|
+
// Lazy-day gate: a day loaded from disk keeps being written; a fresh draft
|
|
39
|
+
// materializes only on the first confirmed fact (activation/manual entry).
|
|
40
|
+
loadedFromDisk;
|
|
32
41
|
onSessionClosed = null;
|
|
33
42
|
constructor(config, initialLog) {
|
|
34
43
|
const today = computeWorkingDate(Date.now(), config.schedule.end, config.timezone);
|
|
35
44
|
this.config = config;
|
|
36
45
|
this.dailyLog = initialLog ?? createEmptyLog(today, config);
|
|
46
|
+
this.loadedFromDisk = initialLog !== undefined;
|
|
37
47
|
// Normalize old logs that lack new fields
|
|
38
48
|
if (this.dailyLog.dayStartedAt === undefined) {
|
|
39
49
|
this.dailyLog.dayStartedAt = null;
|
|
@@ -74,19 +84,20 @@ export class SessionTracker {
|
|
|
74
84
|
* Process one poll tick for a single repo.
|
|
75
85
|
*
|
|
76
86
|
* Flow:
|
|
77
|
-
* 1.
|
|
78
|
-
* 2.
|
|
79
|
-
*
|
|
80
|
-
*
|
|
87
|
+
* 1. Log signals (dynamics, commits, checkouts) — into the in-memory draft
|
|
88
|
+
* 2. Session lifecycle: open session → tick; task gone/changed → close
|
|
89
|
+
* session AND drop the candidate
|
|
90
|
+
* 3. No session: activity births a candidate (in-memory Session, honest
|
|
91
|
+
* startedAt = first signal); an existing candidate ticks like a session
|
|
81
92
|
*/
|
|
82
93
|
processPollResult(result) {
|
|
83
94
|
const now = new Date().toISOString();
|
|
84
95
|
const repoName = basename(result.repoPath);
|
|
85
96
|
let openSession = this.findOpenSession(repoName);
|
|
97
|
+
const hasActivity = result.delta.hasDynamics || result.newReflogEntries.some(e => e.type === 'commit');
|
|
86
98
|
// Pause handling
|
|
87
99
|
if (openSession && this.hasOpenPause(openSession)) {
|
|
88
100
|
const pauseSource = this.getOpenPauseSource(openSession);
|
|
89
|
-
const hasActivity = result.delta.hasDynamics || result.newReflogEntries.some(e => e.type === 'commit');
|
|
90
101
|
if (pauseSource === PauseSource.Manual) {
|
|
91
102
|
if (hasActivity) {
|
|
92
103
|
// Auto-resume: developer forgot to resume, close pause and continue
|
|
@@ -102,24 +113,38 @@ export class SessionTracker {
|
|
|
102
113
|
// 1. Log signals (reflog evidence is now derived from `git rev-list baseSha..HEAD`
|
|
103
114
|
// each tick, not accumulated from reflog entries — see updateSessionTick).
|
|
104
115
|
this.logSignals(repoName, result);
|
|
105
|
-
//
|
|
116
|
+
// 2. Session lifecycle
|
|
106
117
|
if (result.task === null) {
|
|
107
|
-
// Not on developer's branch → close
|
|
118
|
+
// Not on developer's branch → close session, evaporate candidate
|
|
108
119
|
if (openSession) {
|
|
109
120
|
this.closeSession(openSession, ClosedBy.CheckoutOtherTask, now);
|
|
110
121
|
}
|
|
122
|
+
this.dropCandidate(repoName);
|
|
111
123
|
return;
|
|
112
124
|
}
|
|
113
125
|
if (openSession && openSession.task !== result.task) {
|
|
114
|
-
// Task changed → close old
|
|
126
|
+
// Task changed → close old; a new candidate may be born below
|
|
115
127
|
this.closeSession(openSession, ClosedBy.CheckoutOtherTask, now);
|
|
116
128
|
openSession = null;
|
|
117
129
|
}
|
|
118
|
-
if (
|
|
119
|
-
|
|
130
|
+
if (openSession) {
|
|
131
|
+
this.updateSessionTick(openSession, result, now);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// 3. Candidate lifecycle — sessions are born from activity, never from
|
|
135
|
+
// the mere presence of a task branch (checkout alone is not activity).
|
|
136
|
+
let candidate = this.candidates.get(repoName);
|
|
137
|
+
if (candidate && candidate.task !== result.task) {
|
|
138
|
+
this.dropCandidate(repoName);
|
|
139
|
+
candidate = undefined;
|
|
120
140
|
}
|
|
121
|
-
|
|
122
|
-
|
|
141
|
+
if (!candidate) {
|
|
142
|
+
if (!hasActivity)
|
|
143
|
+
return; // watching — nothing exists yet
|
|
144
|
+
candidate = this.createSession(repoName, result.task, result.branch, now);
|
|
145
|
+
this.candidates.set(repoName, candidate);
|
|
146
|
+
}
|
|
147
|
+
this.updateSessionTick(candidate, result, now);
|
|
123
148
|
}
|
|
124
149
|
/**
|
|
125
150
|
* Close orphaned sessions from a previous daemon crash.
|
|
@@ -129,7 +154,9 @@ export class SessionTracker {
|
|
|
129
154
|
let count = 0;
|
|
130
155
|
for (const session of this.dailyLog.sessions) {
|
|
131
156
|
if (!session.closedBy) {
|
|
132
|
-
|
|
157
|
+
const trimmedEnd = trimTrailingPauses(session);
|
|
158
|
+
if (trimmedEnd)
|
|
159
|
+
session.lastSeenAt = trimmedEnd;
|
|
133
160
|
session.closedBy = ClosedBy.DaemonCrash;
|
|
134
161
|
count++;
|
|
135
162
|
}
|
|
@@ -155,6 +182,7 @@ export class SessionTracker {
|
|
|
155
182
|
this.closeSession(session, ClosedBy.ManualStop, now);
|
|
156
183
|
}
|
|
157
184
|
}
|
|
185
|
+
this.dropCandidate(repoName);
|
|
158
186
|
this.pruneEmptySessions();
|
|
159
187
|
}
|
|
160
188
|
/**
|
|
@@ -177,16 +205,21 @@ export class SessionTracker {
|
|
|
177
205
|
}
|
|
178
206
|
}
|
|
179
207
|
/**
|
|
180
|
-
* Handle day boundary: close all sessions,
|
|
181
|
-
*
|
|
208
|
+
* Handle day boundary: close all sessions, evaporate candidates, start a
|
|
209
|
+
* fresh in-memory draft. The caller writes the returned log to disk ONLY
|
|
210
|
+
* when it is materialized — an empty day leaves no file and no console
|
|
211
|
+
* noise (lazy day).
|
|
182
212
|
*/
|
|
183
213
|
handleDayBoundary() {
|
|
184
214
|
this.closeAllSessions(ClosedBy.DayBoundary);
|
|
185
215
|
const completedLog = this.dailyLog;
|
|
216
|
+
const materialized = isDayMaterialized(completedLog, this.loadedFromDisk);
|
|
217
|
+
this.dropAllCandidates();
|
|
186
218
|
const newDate = computeWorkingDate(Date.now(), this.config.schedule.end, this.config.timezone);
|
|
187
219
|
this.dailyLog = createEmptyLog(newDate, this.config);
|
|
220
|
+
this.loadedFromDisk = false;
|
|
188
221
|
this.lastEvaluatorResult = null;
|
|
189
|
-
return completedLog;
|
|
222
|
+
return { oldLog: completedLog, materialized };
|
|
190
223
|
}
|
|
191
224
|
/** Set dayStartedAt (called by daemon on startup) */
|
|
192
225
|
setDayStartedAt(timestamp) {
|
|
@@ -194,6 +227,35 @@ export class SessionTracker {
|
|
|
194
227
|
this.dailyLog.dayStartedAt = timestamp;
|
|
195
228
|
}
|
|
196
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Delete a session from today's log — a user decision at review time
|
|
232
|
+
* (junk from a stray touch), never automatic. The record is removed
|
|
233
|
+
* entirely; if the day loses its last confirmed fact the file goes too
|
|
234
|
+
* (storage invariant), unless the day was already pushed — then the file
|
|
235
|
+
* stays as the push marker and the status drops to Draft for re-sync.
|
|
236
|
+
* Deleting an open session is allowed: current activity simply re-births
|
|
237
|
+
* a fresh candidate on the next tick.
|
|
238
|
+
*/
|
|
239
|
+
deleteSession(target) {
|
|
240
|
+
const session = resolveSessionTarget(this.dailyLog, target);
|
|
241
|
+
if (!session) {
|
|
242
|
+
return { ok: false, error: `Session not found: ${target}` };
|
|
243
|
+
}
|
|
244
|
+
this.dailyLog.sessions = this.dailyLog.sessions.filter(s => s !== session);
|
|
245
|
+
this.onSessionClosed?.(session.id);
|
|
246
|
+
if (this.dailyLog.sessions.length === 0
|
|
247
|
+
&& (this.dailyLog.manualEntries ?? []).length === 0
|
|
248
|
+
&& !this.dailyLog.pushedAt) {
|
|
249
|
+
deleteDailyLog(this.dailyLog.date);
|
|
250
|
+
this.loadedFromDisk = false; // day de-materializes back into a draft
|
|
251
|
+
return { ok: true, deleted: session, dayFileDeleted: true };
|
|
252
|
+
}
|
|
253
|
+
if (this.dailyLog.status !== DayStatus.Draft) {
|
|
254
|
+
this.dailyLog.status = DayStatus.Draft; // pushed day edited → re-sync on next push
|
|
255
|
+
}
|
|
256
|
+
this.flush();
|
|
257
|
+
return { ok: true, deleted: session, dayFileDeleted: false };
|
|
258
|
+
}
|
|
197
259
|
/** Add manual time adjustment to a session */
|
|
198
260
|
addAdjustment(target, minutes, reason) {
|
|
199
261
|
const session = resolveSessionTarget(this.dailyLog, target);
|
|
@@ -232,8 +294,13 @@ export class SessionTracker {
|
|
|
232
294
|
getManualMinutes(session) {
|
|
233
295
|
return computeManualMinutes(session);
|
|
234
296
|
}
|
|
235
|
-
/**
|
|
297
|
+
/**
|
|
298
|
+
* Write current daily log to disk (atomic). No-op until the day is
|
|
299
|
+
* materialized: file exists ⇔ a confirmed fact happened (lazy day).
|
|
300
|
+
*/
|
|
236
301
|
flush() {
|
|
302
|
+
if (!isDayMaterialized(this.dailyLog, this.loadedFromDisk))
|
|
303
|
+
return;
|
|
237
304
|
writeDailyLog(this.dailyLog);
|
|
238
305
|
}
|
|
239
306
|
/** Get summary of open sessions (for status display) */
|
|
@@ -249,7 +316,7 @@ export class SessionTracker {
|
|
|
249
316
|
const map = new Map();
|
|
250
317
|
for (const repoPath of repoPaths) {
|
|
251
318
|
const name = basename(repoPath);
|
|
252
|
-
const session = this.
|
|
319
|
+
const session = this.findOpenOrCandidateSession(name);
|
|
253
320
|
map.set(repoPath, session?.baseSha ?? null);
|
|
254
321
|
}
|
|
255
322
|
return map;
|
|
@@ -264,7 +331,7 @@ export class SessionTracker {
|
|
|
264
331
|
const map = new Map();
|
|
265
332
|
for (const repoPath of repoPaths) {
|
|
266
333
|
const name = basename(repoPath);
|
|
267
|
-
const session = this.
|
|
334
|
+
const session = this.findOpenOrCandidateSession(name);
|
|
268
335
|
if (!session?.ledger) {
|
|
269
336
|
map.set(repoPath, null);
|
|
270
337
|
continue;
|
|
@@ -278,13 +345,15 @@ export class SessionTracker {
|
|
|
278
345
|
return map;
|
|
279
346
|
}
|
|
280
347
|
// ─── Evaluator integration ────────────────────────────────────────────
|
|
281
|
-
/**
|
|
348
|
+
/**
|
|
349
|
+
* Build TickInput[] for all open sessions (except manually paused) and
|
|
350
|
+
* all candidates — candidates compete for leadership like sessions do.
|
|
351
|
+
*/
|
|
282
352
|
buildTickInputs(pollResults) {
|
|
283
353
|
const resultMap = new Map();
|
|
284
354
|
for (const r of pollResults) {
|
|
285
355
|
resultMap.set(basename(r.repoPath), r);
|
|
286
356
|
}
|
|
287
|
-
const pollSeconds = this.config.session.diffPollSeconds;
|
|
288
357
|
const ticks = [];
|
|
289
358
|
for (const session of this.dailyLog.sessions) {
|
|
290
359
|
if (session.closedBy)
|
|
@@ -293,26 +362,27 @@ export class SessionTracker {
|
|
|
293
362
|
if (this.hasOpenPause(session) && this.getOpenPauseSource(session) === PauseSource.Manual) {
|
|
294
363
|
continue;
|
|
295
364
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
hasCommit: poll.newReflogEntries.some(e => e.type === 'commit'),
|
|
301
|
-
deltaMagnitude: poll.delta.magnitude,
|
|
302
|
-
}
|
|
303
|
-
: { hasDynamics: false, hasCommit: false, deltaMagnitude: 0 };
|
|
304
|
-
const level = getSensitivityForRepo(this.config, session.repo);
|
|
305
|
-
const { maxTicks, ignoreIdleTimeout } = resolveSensitivityTicks(level, pollSeconds);
|
|
306
|
-
ticks.push({
|
|
307
|
-
sessionId: session.id,
|
|
308
|
-
signals,
|
|
309
|
-
maxTicks,
|
|
310
|
-
ignoreIdleTimeout,
|
|
311
|
-
});
|
|
365
|
+
ticks.push(this.toTickInput(session, resultMap));
|
|
366
|
+
}
|
|
367
|
+
for (const session of this.candidates.values()) {
|
|
368
|
+
ticks.push(this.toTickInput(session, resultMap));
|
|
312
369
|
}
|
|
313
370
|
return ticks;
|
|
314
371
|
}
|
|
315
|
-
|
|
372
|
+
toTickInput(session, resultMap) {
|
|
373
|
+
const poll = resultMap.get(session.repo);
|
|
374
|
+
const signals = poll
|
|
375
|
+
? {
|
|
376
|
+
hasDynamics: poll.delta.hasDynamics,
|
|
377
|
+
hasCommit: poll.newReflogEntries.some(e => e.type === 'commit'),
|
|
378
|
+
deltaMagnitude: poll.delta.magnitude,
|
|
379
|
+
}
|
|
380
|
+
: { hasDynamics: false, hasCommit: false, deltaMagnitude: 0 };
|
|
381
|
+
const level = getSensitivityForRepo(this.config, session.repo);
|
|
382
|
+
const { maxTicks, ignoreIdleTimeout } = resolveSensitivityTicks(level, this.config.session.diffPollSeconds);
|
|
383
|
+
return { sessionId: session.id, signals, maxTicks, ignoreIdleTimeout };
|
|
384
|
+
}
|
|
385
|
+
/** Apply evaluator results: auto-pause, auto-resume, candidate promotion */
|
|
316
386
|
applyEvaluatorResult(result) {
|
|
317
387
|
this.lastEvaluatorResult = result;
|
|
318
388
|
const now = new Date().toISOString();
|
|
@@ -338,13 +408,38 @@ export class SessionTracker {
|
|
|
338
408
|
}
|
|
339
409
|
}
|
|
340
410
|
else if (session.state === SessionState.Pending) {
|
|
341
|
-
//
|
|
411
|
+
// Legacy PENDING sessions loaded from old logs: promote as before
|
|
342
412
|
if (sessionScore.score > 0 && isLeader) {
|
|
343
413
|
session.state = SessionState.Active;
|
|
344
414
|
session.activatedAt = now;
|
|
345
415
|
}
|
|
346
416
|
}
|
|
347
417
|
}
|
|
418
|
+
// Candidate lifecycle by evaluator score. Promotion: leadership (implies
|
|
419
|
+
// score > 0) — the first active tick when the repo leads; the session
|
|
420
|
+
// becomes a confirmed fact, pushed into the log and flushed immediately
|
|
421
|
+
// (the moment the day materializes). Fade-out: score drained to zero —
|
|
422
|
+
// the same decay that idle-pauses a session, but an unconfirmed fact has
|
|
423
|
+
// nothing to pause, so it evaporates. Raw score, not isIdleTimeout: an
|
|
424
|
+
// Always-on repo must not breed an immortal candidate.
|
|
425
|
+
let promoted = false;
|
|
426
|
+
for (const [repoName, session] of [...this.candidates]) {
|
|
427
|
+
const sessionScore = result.scores.get(session.id);
|
|
428
|
+
if (!sessionScore)
|
|
429
|
+
continue;
|
|
430
|
+
if (sessionScore.score === 0) {
|
|
431
|
+
this.dropCandidate(repoName);
|
|
432
|
+
}
|
|
433
|
+
else if (result.leaderId === session.id) {
|
|
434
|
+
session.state = SessionState.Active;
|
|
435
|
+
session.activatedAt = now;
|
|
436
|
+
this.dailyLog.sessions.push(session);
|
|
437
|
+
this.candidates.delete(repoName);
|
|
438
|
+
promoted = true;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (promoted)
|
|
442
|
+
this.flush();
|
|
348
443
|
}
|
|
349
444
|
getLastEvaluatorResult() {
|
|
350
445
|
return this.lastEvaluatorResult;
|
|
@@ -412,25 +507,97 @@ export class SessionTracker {
|
|
|
412
507
|
hasOpenPause(session) {
|
|
413
508
|
return getOpenPause(session) !== null;
|
|
414
509
|
}
|
|
510
|
+
/**
|
|
511
|
+
* Idle auto-close (honest session end): a session sitting in an open
|
|
512
|
+
* IdleTimeout pause longer than session.idleCloseHours closes with a
|
|
513
|
+
* trimmed end (= where the pause chain began). Manual pauses are exempt —
|
|
514
|
+
* a frozen session waits for the user; Superseded transitions into
|
|
515
|
+
* IdleTimeout once the score drains, so it is covered transitively.
|
|
516
|
+
* Runs at the start of each daemon tick, so after a PC-sleep gap the
|
|
517
|
+
* stale session closes before wake-up activity births a new one.
|
|
518
|
+
*/
|
|
519
|
+
closeIdleSessions(now) {
|
|
520
|
+
const thresholdMs = this.config.session.idleCloseHours * 3_600_000;
|
|
521
|
+
if (thresholdMs <= 0)
|
|
522
|
+
return;
|
|
523
|
+
const nowIso = new Date(now).toISOString();
|
|
524
|
+
for (const session of this.dailyLog.sessions) {
|
|
525
|
+
if (session.closedBy)
|
|
526
|
+
continue;
|
|
527
|
+
const pause = getOpenPause(session);
|
|
528
|
+
if (!pause || pause.source !== PauseSource.IdleTimeout)
|
|
529
|
+
continue;
|
|
530
|
+
if (now - Date.parse(pause.from) >= thresholdMs) {
|
|
531
|
+
this.closeSession(session, ClosedBy.IdleTimeout, nowIso);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Retroactive idle pause after an observation gap (PC sleep / hibernate,
|
|
537
|
+
* suspended process). Every open, unpaused session gets an IdleTimeout
|
|
538
|
+
* pause opened at its own pre-gap lastSeenAt — the last moment work was
|
|
539
|
+
* actually observed — so the gap never counts as work. Sessions already
|
|
540
|
+
* paused keep their pause (it spans the gap naturally; the chain trim
|
|
541
|
+
* yields the honest end either way). Returns the number paused.
|
|
542
|
+
*/
|
|
543
|
+
applyGapPauses() {
|
|
544
|
+
let count = 0;
|
|
545
|
+
for (const session of this.dailyLog.sessions) {
|
|
546
|
+
if (session.closedBy)
|
|
547
|
+
continue;
|
|
548
|
+
if (this.hasOpenPause(session))
|
|
549
|
+
continue;
|
|
550
|
+
session.pauses.push({ from: session.lastSeenAt, to: null, source: PauseSource.IdleTimeout });
|
|
551
|
+
count++;
|
|
552
|
+
}
|
|
553
|
+
return count;
|
|
554
|
+
}
|
|
415
555
|
/**
|
|
416
556
|
* True when someone is plausibly mid-work: at least one open, unpaused
|
|
417
|
-
* session
|
|
557
|
+
* session OR a candidate (a session mid-birth — live by construction:
|
|
558
|
+
* a drained candidate evaporates on the same tick). Used as the
|
|
559
|
+
* quiet-window gate for self-update restarts.
|
|
418
560
|
*/
|
|
419
561
|
hasActiveWork() {
|
|
420
|
-
return this.
|
|
562
|
+
return this.candidates.size > 0
|
|
563
|
+
|| this.getOpenSessions().some(s => !this.hasOpenPause(s));
|
|
564
|
+
}
|
|
565
|
+
// ─── Candidates ──────────────────────────────────────────────────────
|
|
566
|
+
/** Candidate sessions (in-memory, not yet confirmed facts) in birth order. */
|
|
567
|
+
getCandidates() {
|
|
568
|
+
return [...this.candidates.values()];
|
|
569
|
+
}
|
|
570
|
+
dropCandidate(repoName) {
|
|
571
|
+
const session = this.candidates.get(repoName);
|
|
572
|
+
if (!session)
|
|
573
|
+
return;
|
|
574
|
+
this.candidates.delete(repoName);
|
|
575
|
+
this.onSessionClosed?.(session.id);
|
|
576
|
+
}
|
|
577
|
+
/** Evaporate every candidate (rollover, observation gap — state is stale). */
|
|
578
|
+
dropAllCandidates() {
|
|
579
|
+
for (const repoName of [...this.candidates.keys()]) {
|
|
580
|
+
this.dropCandidate(repoName);
|
|
581
|
+
}
|
|
421
582
|
}
|
|
422
583
|
// ─── Private: session lifecycle ────────────────────────────────────────
|
|
423
584
|
findOpenSession(repo) {
|
|
424
585
|
return this.dailyLog.sessions.find(s => s.repo === repo && !s.closedBy) ?? null;
|
|
425
586
|
}
|
|
426
|
-
|
|
587
|
+
/** Open session first, then candidate — for baseSha/ledger poll context. */
|
|
588
|
+
findOpenOrCandidateSession(repo) {
|
|
589
|
+
return this.findOpenSession(repo) ?? this.candidates.get(repo) ?? null;
|
|
590
|
+
}
|
|
591
|
+
createSession(repo, task, branch, now) {
|
|
427
592
|
// Every session starts from a clean slate — nothing is inherited from
|
|
428
593
|
// earlier sessions on the same repo+task. The counters are strictly
|
|
429
594
|
// bounded by the session's lifetime: the first poll captures a fresh
|
|
430
595
|
// line baseline and seeds the commit ledger with everything already on
|
|
431
596
|
// the branch marked pre-session, so commits/lines produced while no
|
|
432
597
|
// session was open (daemon down, session closed) are never counted.
|
|
433
|
-
|
|
598
|
+
// NOT pushed into dailyLog.sessions — the caller keeps it as a candidate
|
|
599
|
+
// until the evaluator promotes it.
|
|
600
|
+
return {
|
|
434
601
|
id: generateSessionId(),
|
|
435
602
|
repo,
|
|
436
603
|
task,
|
|
@@ -449,16 +616,15 @@ export class SessionTracker {
|
|
|
449
616
|
lastBranchCommits: null,
|
|
450
617
|
ledger: null,
|
|
451
618
|
};
|
|
452
|
-
this.dailyLog.sessions.push(session);
|
|
453
|
-
return session;
|
|
454
619
|
}
|
|
455
620
|
closeSession(session, reason, now) {
|
|
456
621
|
if (session.closedBy)
|
|
457
622
|
return; // already closed
|
|
458
|
-
//
|
|
459
|
-
|
|
623
|
+
// Honest end: an open trailing pause chain means work actually stopped
|
|
624
|
+
// where the chain began — trim it and end the session there.
|
|
625
|
+
const trimmedEnd = trimTrailingPauses(session);
|
|
460
626
|
session.closedBy = reason;
|
|
461
|
-
session.lastSeenAt = now;
|
|
627
|
+
session.lastSeenAt = trimmedEnd ?? now;
|
|
462
628
|
// state stays as 'pending' or 'active' — preserved for reporting
|
|
463
629
|
this.onSessionClosed?.(session.id);
|
|
464
630
|
}
|
|
@@ -549,18 +715,30 @@ export class SessionTracker {
|
|
|
549
715
|
* The baseline ratchets down when branch totals drop below it (own work
|
|
550
716
|
* merged upstream, dropped commits) so evidence never goes negative and
|
|
551
717
|
* subsequent work is counted from the new, lower base.
|
|
718
|
+
*
|
|
719
|
+
* First tick (baseline == null): seeded from the PREVIOUS tick's snapshot
|
|
720
|
+
* when available (A-3) — a candidate born from a burst would otherwise
|
|
721
|
+
* bake that burst into the baseline and lose it from the line counters.
|
|
722
|
+
* The prev snapshot is branch-guarded by GitTracker: null when the branch
|
|
723
|
+
* changed this tick, so edits carried over a checkout are never counted.
|
|
552
724
|
*/
|
|
553
725
|
applyMergeBaseEvidence(session, snap, result) {
|
|
554
726
|
// Commit ledger first: a seed also delivers the day-start line baseline.
|
|
555
727
|
const ledgerActive = this.applyLedger(session, result);
|
|
556
728
|
let base = session.evidenceBaseline;
|
|
557
729
|
if (base === null) {
|
|
730
|
+
const seed = result.prevEvidenceSnapshot ?? snap;
|
|
558
731
|
base = {
|
|
559
|
-
linesAdded:
|
|
560
|
-
linesRemoved:
|
|
561
|
-
filesChanged:
|
|
732
|
+
linesAdded: seed.linesAdded,
|
|
733
|
+
linesRemoved: seed.linesRemoved,
|
|
734
|
+
filesChanged: seed.filesChanged,
|
|
562
735
|
};
|
|
563
736
|
session.evidenceBaseline = base;
|
|
737
|
+
// Ratchet against the current snapshot right away (prev may be higher
|
|
738
|
+
// after a revert between ticks — evidence must not go negative).
|
|
739
|
+
base.linesAdded = Math.min(base.linesAdded, snap.linesAdded);
|
|
740
|
+
base.linesRemoved = Math.min(base.linesRemoved, snap.linesRemoved);
|
|
741
|
+
base.filesChanged = Math.min(base.filesChanged, snap.filesChanged);
|
|
564
742
|
}
|
|
565
743
|
else {
|
|
566
744
|
base.linesAdded = Math.min(base.linesAdded, snap.linesAdded);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/core/session-tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/core/session-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,8 @@ export class StatusRenderer {
|
|
|
42
42
|
const dayStartTime = dayStartIso ? formatTime(new Date(dayStartIso).getTime(), this.ctx.timezone) : '—';
|
|
43
43
|
lines.push(` ${DIM}PID${RESET} ${process.pid} ${DIM}Date${RESET} ${this.ctx.currentDate} ${DIM}Start${RESET} ${dayStartTime} ${DIM}Up${RESET} ${uptime} ${DIM}(#${this.tickCount})${RESET}`);
|
|
44
44
|
lines.push('');
|
|
45
|
-
// Sessions
|
|
46
|
-
const openSessions = log.sessions.filter(s => !s.closedBy);
|
|
45
|
+
// Sessions: confirmed open ones + in-memory candidates (shown as PENDING)
|
|
46
|
+
const openSessions = [...log.sessions.filter(s => !s.closedBy), ...tracker.getCandidates()];
|
|
47
47
|
const closedSessions = log.sessions.filter(s => s.closedBy);
|
|
48
48
|
const evalResult = tracker.getLastEvaluatorResult();
|
|
49
49
|
if (openSessions.length === 0 && closedSessions.length === 0) {
|
|
@@ -56,7 +56,9 @@ export class StatusRenderer {
|
|
|
56
56
|
lines.push(`${DIM}${'─'.repeat(LINE_WIDTH)}${RESET}`);
|
|
57
57
|
for (let si = 0; si < openSessions.length; si++) {
|
|
58
58
|
const session = openSessions[si];
|
|
59
|
+
// Candidates are not in the log — no CLI-addressable index yet.
|
|
59
60
|
const globalIdx = log.sessions.indexOf(session) + 1;
|
|
61
|
+
const idxLabel = globalIdx > 0 ? `#${globalIdx}` : '#·';
|
|
60
62
|
const sessionScore = evalResult?.scores.get(session.id);
|
|
61
63
|
const isPaused = tracker.hasOpenPause(session);
|
|
62
64
|
const openPause = getOpenPause(session);
|
|
@@ -80,7 +82,7 @@ export class StatusRenderer {
|
|
|
80
82
|
const dot = (!isPaused && session.state === 'active') ? ` ${GREEN}●${RESET}` : '';
|
|
81
83
|
const sens = ` ${DIM}[${tracker.getSensitivity(session.repo).toUpperCase()}]${RESET}`;
|
|
82
84
|
const COL1 = 18; // first value column width
|
|
83
|
-
lines.push(` ${DIM}
|
|
85
|
+
lines.push(` ${DIM}${idxLabel}${RESET} ${BOLD}${repoLabel}${RESET}${dot} ${badge}${sens}`);
|
|
84
86
|
const L = (label) => `${INDENT}${DIM}${label.padEnd(LABEL_WIDTH)}${RESET}`;
|
|
85
87
|
const R = (label) => `${DIM}${label}${RESET} `;
|
|
86
88
|
lines.push(`${L('Task')}${(session.task ?? '—').padEnd(COL1)}${R('branch')}${session.branch}`);
|