workday-daemon 0.4.5 → 0.6.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.
Files changed (39) hide show
  1. package/dist/cli.js +20 -33
  2. package/dist/cli.js.map +1 -1
  3. package/dist/collectors/churn-scanner.d.ts +19 -0
  4. package/dist/collectors/churn-scanner.js +80 -0
  5. package/dist/collectors/churn-scanner.js.map +1 -0
  6. package/dist/collectors/git-client.d.ts +12 -5
  7. package/dist/collectors/git-client.js +32 -16
  8. package/dist/collectors/git-client.js.map +1 -1
  9. package/dist/collectors/git-tracker.js +29 -10
  10. package/dist/collectors/git-tracker.js.map +1 -1
  11. package/dist/collectors/snapshot-parser.d.ts +30 -10
  12. package/dist/collectors/snapshot-parser.js +80 -19
  13. package/dist/collectors/snapshot-parser.js.map +1 -1
  14. package/dist/core/activity-evaluator.d.ts +46 -8
  15. package/dist/core/activity-evaluator.js +118 -32
  16. package/dist/core/activity-evaluator.js.map +1 -1
  17. package/dist/core/config.d.ts +1 -2
  18. package/dist/core/config.js +2 -4
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/core/constants.d.ts +54 -22
  21. package/dist/core/constants.js +64 -12
  22. package/dist/core/constants.js.map +1 -1
  23. package/dist/core/session-tracker.d.ts +25 -27
  24. package/dist/core/session-tracker.js +86 -54
  25. package/dist/core/session-tracker.js.map +1 -1
  26. package/dist/core/status-renderer.js +8 -3
  27. package/dist/core/status-renderer.js.map +1 -1
  28. package/dist/core/types.d.ts +35 -5
  29. package/dist/core/types.js.map +1 -1
  30. package/dist/core/update-manager.d.ts +42 -0
  31. package/dist/core/update-manager.js +86 -0
  32. package/dist/core/update-manager.js.map +1 -0
  33. package/dist/daemon.d.ts +27 -1
  34. package/dist/daemon.js +120 -1
  35. package/dist/daemon.js.map +1 -1
  36. package/dist/http-server.d.ts +7 -1
  37. package/dist/http-server.js +23 -1
  38. package/dist/http-server.js.map +1 -1
  39. package/package.json +2 -1
@@ -8,6 +8,16 @@ export declare const DAEMON_SCRIPT_TS = "daemon.ts";
8
8
  export declare const DAEMON_SCRIPT_JS = "daemon.js";
9
9
  export declare const DEFAULT_API_PORT = 9213;
10
10
  export declare const API_VERSION = 6;
11
+ export declare const NPM_PACKAGE_NAME = "workday-daemon";
12
+ export declare const NPM_REGISTRY_LATEST_URL = "https://registry.npmjs.org/workday-daemon/latest";
13
+ /** Registry check timeout — fail fast, the next scheduled check will retry */
14
+ export declare const UPDATE_CHECK_TIMEOUT_MS = 5000;
15
+ /** npm install -g can be slow on cold cache / slow network — be generous */
16
+ export declare const NPM_INSTALL_TIMEOUT_MS = 180000;
17
+ /** Daemon checks the registry this often (~2-4 times per working day) */
18
+ export declare const UPDATE_CHECK_INTERVAL_HOURS = 6;
19
+ /** Random startup delay before the first scheduled check (thundering-herd hygiene) */
20
+ export declare const UPDATE_CHECK_JITTER_MINUTES = 10;
11
21
  export declare const LOCK_EXTENSION = ".lock";
12
22
  export declare const LOCK_STALE_MS = 10000;
13
23
  export declare const GIT_BATCH_SEPARATOR = "---WORKDAY-SEP---";
@@ -26,32 +36,54 @@ export declare const DAEMON_START_POLL_MS = 200;
26
36
  export declare const MS_PER_MINUTE = 60000;
27
37
  /** Smoothing window for activity frequency */
28
38
  export declare const EMA_WINDOW_MINUTES = 10;
29
- /** Fraction of max score awarded per active tick */
30
- export declare const ACTIVITY_RATIO = 0.5;
31
- /** log2 divisor; ~128 changed lines = full bonus */
32
- export declare const MAGNITUDE_SCALE = 7;
33
- /** Max extra multiplier on dynamics contribution */
34
- export declare const MAGNITUDE_BONUS_MAX = 0.5;
39
+ /**
40
+ * Smoothing window for the attention EMA that drives cross-repo leadership.
41
+ * Short on purpose: leadership must follow the developer within ~2 minutes
42
+ * of switching repos, independent of how full the stamina bars are.
43
+ */
44
+ export declare const ATTENTION_WINDOW_MINUTES = 2;
45
+ /**
46
+ * Touch floor: any active tick lifts score to at least this fraction of the
47
+ * sensitivity max timeout (Low: 2.5 min, Normal: 7.5 min, Patient: 15 min).
48
+ * Guards against pause noise from single keystrokes without jumping the bar.
49
+ */
50
+ export declare const STAMINA_FLOOR_RATIO: number;
51
+ /** Score per active tick at full activity frequency (EMA = 1) */
52
+ export declare const FREQUENCY_GAIN_MAX = 2;
53
+ /**
54
+ * Lines changed per minute worth +1 score per tick (5 lines per 30s tick).
55
+ * Converted to a per-tick divisor at evaluator construction so the
56
+ * lines-per-minute intensity needed to fill the bar doesn't depend on
57
+ * diffPollSeconds.
58
+ */
59
+ export declare const STAMINA_LINES_PER_MINUTE = 10;
60
+ /** Cap on the volume contribution per tick (reached at 20 changed lines at 30s ticks) */
61
+ export declare const VOLUME_GAIN_MAX = 4;
62
+ /**
63
+ * Line-equivalent granted per file whose content changed while its diff
64
+ * numbers stayed flat (rewrite-in-place: lines already differed from the
65
+ * base, so numstat can't see the churn). Detected via content hashing.
66
+ */
67
+ export declare const IN_PLACE_CHURN_LINES = 8;
68
+ /** Churn scanner caps: don't read/hash absurd working sets */
69
+ export declare const CHURN_MAX_FILES = 100;
70
+ export declare const CHURN_MAX_FILE_BYTES: number;
35
71
  /** "Free" score on commit (in seconds, converted to ticks) */
36
72
  export declare const COMMIT_BONUS_SECONDS = 150;
37
73
  /** Constant per-tick score drain */
38
74
  export declare const BASE_DECAY = 1;
75
+ /**
76
+ * Extra drain per idle tick, scaled by the frequency EMA: decay = BASE_DECAY +
77
+ * DECAY_BOOST × EMA. A dense coder who stops abruptly cools down fast (full
78
+ * Normal bar → pause in ~15 min instead of 45), while sporadic workers keep
79
+ * the plain 1/tick fade. Restores the v1 "sudden stop after intense work is
80
+ * a pause" detection philosophy on top of the v2 fill model.
81
+ */
82
+ export declare const DECAY_BOOST = 4;
39
83
  export declare const SENSITIVITY_TIMEOUTS: {
40
- readonly low: {
41
- readonly min: 10;
42
- readonly max: 15;
43
- };
44
- readonly normal: {
45
- readonly min: 15;
46
- readonly max: 45;
47
- };
48
- readonly patient: {
49
- readonly min: 30;
50
- readonly max: 90;
51
- };
52
- readonly always_on: {
53
- readonly min: 15;
54
- readonly max: 45;
55
- };
84
+ readonly low: 15;
85
+ readonly normal: 45;
86
+ readonly patient: 90;
87
+ readonly always_on: 45;
56
88
  };
57
89
  export declare const DEFAULT_SENSITIVITY = "normal";
@@ -10,7 +10,23 @@ export const DAEMON_SCRIPT_TS = 'daemon.ts';
10
10
  export const DAEMON_SCRIPT_JS = 'daemon.js';
11
11
  // ─── HTTP API ──────────────────────────────────────────────────────────
12
12
  export const DEFAULT_API_PORT = 9213;
13
+ // Bump ONLY on breaking API changes (additive endpoints/fields don't count).
14
+ // Release ritual for a bump: ship the tray release first, let live trays
15
+ // pick it up (they re-check every 6h), THEN npm-publish the daemon —
16
+ // a tray with the old exact-match check meeting a newer apiVersion would
17
+ // reinstall-loop the daemon.
13
18
  export const API_VERSION = 6;
19
+ // ─── Auto-update ────────────────────────────────────────────────────────
20
+ export const NPM_PACKAGE_NAME = 'workday-daemon';
21
+ export const NPM_REGISTRY_LATEST_URL = `https://registry.npmjs.org/${NPM_PACKAGE_NAME}/latest`;
22
+ /** Registry check timeout — fail fast, the next scheduled check will retry */
23
+ export const UPDATE_CHECK_TIMEOUT_MS = 5_000;
24
+ /** npm install -g can be slow on cold cache / slow network — be generous */
25
+ export const NPM_INSTALL_TIMEOUT_MS = 180_000;
26
+ /** Daemon checks the registry this often (~2-4 times per working day) */
27
+ export const UPDATE_CHECK_INTERVAL_HOURS = 6;
28
+ /** Random startup delay before the first scheduled check (thundering-herd hygiene) */
29
+ export const UPDATE_CHECK_JITTER_MINUTES = 10;
14
30
  // ─── File locking ──────────────────────────────────────────────────────
15
31
  export const LOCK_EXTENSION = '.lock';
16
32
  export const LOCK_STALE_MS = 10_000;
@@ -38,23 +54,59 @@ export const MS_PER_MINUTE = 60_000;
38
54
  // ─── Activity Evaluator algorithm constants ─────────────────────────────
39
55
  /** Smoothing window for activity frequency */
40
56
  export const EMA_WINDOW_MINUTES = 10;
41
- /** Fraction of max score awarded per active tick */
42
- export const ACTIVITY_RATIO = 0.5;
43
- /** log2 divisor; ~128 changed lines = full bonus */
44
- export const MAGNITUDE_SCALE = 7;
45
- /** Max extra multiplier on dynamics contribution */
46
- export const MAGNITUDE_BONUS_MAX = 0.5;
57
+ /**
58
+ * Smoothing window for the attention EMA that drives cross-repo leadership.
59
+ * Short on purpose: leadership must follow the developer within ~2 minutes
60
+ * of switching repos, independent of how full the stamina bars are.
61
+ */
62
+ export const ATTENTION_WINDOW_MINUTES = 2;
63
+ /**
64
+ * Touch floor: any active tick lifts score to at least this fraction of the
65
+ * sensitivity max timeout (Low: 2.5 min, Normal: 7.5 min, Patient: 15 min).
66
+ * Guards against pause noise from single keystrokes without jumping the bar.
67
+ */
68
+ export const STAMINA_FLOOR_RATIO = 1 / 6;
69
+ /** Score per active tick at full activity frequency (EMA = 1) */
70
+ export const FREQUENCY_GAIN_MAX = 2;
71
+ /**
72
+ * Lines changed per minute worth +1 score per tick (5 lines per 30s tick).
73
+ * Converted to a per-tick divisor at evaluator construction so the
74
+ * lines-per-minute intensity needed to fill the bar doesn't depend on
75
+ * diffPollSeconds.
76
+ */
77
+ export const STAMINA_LINES_PER_MINUTE = 10;
78
+ /** Cap on the volume contribution per tick (reached at 20 changed lines at 30s ticks) */
79
+ export const VOLUME_GAIN_MAX = 4;
80
+ /**
81
+ * Line-equivalent granted per file whose content changed while its diff
82
+ * numbers stayed flat (rewrite-in-place: lines already differed from the
83
+ * base, so numstat can't see the churn). Detected via content hashing.
84
+ */
85
+ export const IN_PLACE_CHURN_LINES = 8;
86
+ /** Churn scanner caps: don't read/hash absurd working sets */
87
+ export const CHURN_MAX_FILES = 100;
88
+ export const CHURN_MAX_FILE_BYTES = 2 * 1024 * 1024;
47
89
  /** "Free" score on commit (in seconds, converted to ticks) */
48
90
  export const COMMIT_BONUS_SECONDS = 150;
49
91
  /** Constant per-tick score drain */
50
92
  export const BASE_DECAY = 1;
51
- // ─── Sensitivity → (min, max) timeout in minutes ─────────────────────────
52
- // AlwaysOn uses Normal numbers but isIdleTimeout is ignored at apply stage.
93
+ /**
94
+ * Extra drain per idle tick, scaled by the frequency EMA: decay = BASE_DECAY +
95
+ * DECAY_BOOST × EMA. A dense coder who stops abruptly cools down fast (full
96
+ * Normal bar → pause in ~15 min instead of 45), while sporadic workers keep
97
+ * the plain 1/tick fade. Restores the v1 "sudden stop after intense work is
98
+ * a pause" detection philosophy on top of the v2 fill model.
99
+ */
100
+ export const DECAY_BOOST = 4;
101
+ // ─── Sensitivity → max timeout (stamina ceiling) in minutes ──────────────
102
+ // The single knob per level: the score ceiling. The touch floor is derived
103
+ // from it via STAMINA_FLOOR_RATIO — no separate min constant.
104
+ // AlwaysOn uses the Normal number but isIdleTimeout is ignored at apply stage.
53
105
  export const SENSITIVITY_TIMEOUTS = {
54
- low: { min: 10, max: 15 },
55
- normal: { min: 15, max: 45 },
56
- patient: { min: 30, max: 90 },
57
- always_on: { min: 15, max: 45 },
106
+ low: 15,
107
+ normal: 45,
108
+ patient: 90,
109
+ always_on: 45,
58
110
  };
59
111
  export const DEFAULT_SENSITIVITY = 'normal';
60
112
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,2EAA2E;AAC3E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,oDAAoD;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,oDAAoD;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,oCAAoC;AACpC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAE5B,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/B,MAAM,EAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/B,OAAO,EAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/B,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;CACvB,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"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"}
@@ -113,10 +113,15 @@ export declare class SessionTracker {
113
113
  resumeAllSessions(): void;
114
114
  /** Check if a session is currently paused */
115
115
  hasOpenPause(session: Session): boolean;
116
+ /**
117
+ * True when someone is plausibly mid-work: at least one open, unpaused
118
+ * session. Used as the quiet-window gate for self-update restarts.
119
+ */
120
+ hasActiveWork(): boolean;
116
121
  private findOpenSession;
117
122
  private openSession;
118
- /** Most-recent baseSha among today's sessions on the same (repo, task). */
119
- private findPriorBaseSha;
123
+ /** Most-recent session today on the same (repo, task) with a captured evidence base. */
124
+ private findPriorTaskSession;
120
125
  private closeSession;
121
126
  private closeOpenPause;
122
127
  private getOpenPauseSource;
@@ -127,35 +132,28 @@ export declare class SessionTracker {
127
132
  /**
128
133
  * Apply one poll tick.
129
134
  *
130
- * First tick: anchor baseSha at currentHead evidence measures what changed
131
- * inside this session, not the whole feature branch vs master. For continued
132
- * work on the same task today, findPriorBaseSha already carried the original
133
- * anchor over, so we don't overwrite it here. mergeBaseSha is captured for
134
- * advance detection on later ticks.
135
- *
136
- * Re-anchor on rebase/upstream merge: when the default-branch merge-base
137
- * advances or a rebase reflog entry appears, baseSha is reset to currentHead
138
- * so the inrush of upstream commits isn't counted as today's work. Note:
139
- * evidenceSnapshot for this tick was computed against the stale baseSha and
140
- * is intentionally discarded.
135
+ * Merge-base mode (default branch resolved): evidenceSnapshot holds branch
136
+ * totals vs the *fresh* merge-base rebase-stable by construction. Lines
137
+ * and files are the delta vs the baseline captured at session open; commits
138
+ * accumulate only positive jumps of the branch commit count, so squash /
139
+ * drop / amend / rebase never erase already-counted work. No re-anchoring,
140
+ * no zeroing.
141
141
  *
142
- * Subsequent ticks: overwrite evidence from the snapshot.
143
- *
144
- * Bad-revision fallback (baseSha became unreachable after force-push /
145
- * hard reset / rebase that dropped the anchor commit): snapshot is null
146
- * even though baseSha was passed. Zero evidence and re-anchor at currentHead
147
- * so the next tick starts fresh from here.
142
+ * Fallback mode (no default branch): sticky baseSha anchored at session
143
+ * start, evidence overwritten from the snapshot each tick, re-anchor +
144
+ * zero on rebase reflog entries or when baseSha becomes unreachable
145
+ * (force-push / hard reset) the pre-merge-base behavior.
148
146
  */
149
147
  private updateSessionTick;
150
148
  /**
151
- * True when this tick should re-anchor baseSha to currentHead.
152
- * Two triggers:
153
- * - Merge-base advanced — develop got pulled into the branch (rebase,
154
- * pull --rebase, merge from upstream). Authoritative snapshot test.
155
- * - New rebase reflog entry backup signal for cases where merge-base
156
- * isn't resolved (no default branch configured / detected). Captures
157
- * `rebase (start|pick|finish)` entries the parser now classifies.
149
+ * Merge-base evidence: baseline-delta for lines/files, positive-jump
150
+ * accumulator for commits.
151
+ *
152
+ * The baseline ratchets down when branch totals drop below it (own work
153
+ * merged upstream, dropped commits) so evidence never goes negative and
154
+ * subsequent work is counted from the new, lower base.
158
155
  */
159
- private shouldReAnchor;
156
+ private applyMergeBaseEvidence;
157
+ private zeroLineEvidence;
160
158
  private logSignals;
161
159
  }
@@ -55,6 +55,10 @@ export class SessionTracker {
55
55
  session.baseSha = null;
56
56
  if (session.mergeBaseSha === undefined)
57
57
  session.mergeBaseSha = null;
58
+ if (session.evidenceBaseline === undefined)
59
+ session.evidenceBaseline = null;
60
+ if (session.lastBranchCommits === undefined)
61
+ session.lastBranchCommits = null;
58
62
  }
59
63
  }
60
64
  getDailyLog() {
@@ -274,15 +278,14 @@ export class SessionTracker {
274
278
  ? {
275
279
  hasDynamics: poll.delta.hasDynamics,
276
280
  hasCommit: poll.newReflogEntries.some(e => e.type === 'commit'),
277
- deltaMagnitude: Math.abs(poll.delta.addedDelta) + Math.abs(poll.delta.removedDelta),
281
+ deltaMagnitude: poll.delta.magnitude,
278
282
  }
279
283
  : { hasDynamics: false, hasCommit: false, deltaMagnitude: 0 };
280
284
  const level = getSensitivityForRepo(this.config, session.repo);
281
- const { minTicks, maxTicks, ignoreIdleTimeout } = resolveSensitivityTicks(level, pollSeconds);
285
+ const { maxTicks, ignoreIdleTimeout } = resolveSensitivityTicks(level, pollSeconds);
282
286
  ticks.push({
283
287
  sessionId: session.id,
284
288
  signals,
285
- minTicks,
286
289
  maxTicks,
287
290
  ignoreIdleTimeout,
288
291
  });
@@ -389,11 +392,23 @@ export class SessionTracker {
389
392
  hasOpenPause(session) {
390
393
  return getOpenPause(session) !== null;
391
394
  }
395
+ /**
396
+ * True when someone is plausibly mid-work: at least one open, unpaused
397
+ * session. Used as the quiet-window gate for self-update restarts.
398
+ */
399
+ hasActiveWork() {
400
+ return this.getOpenSessions().some(s => !this.hasOpenPause(s));
401
+ }
392
402
  // ─── Private: session lifecycle ────────────────────────────────────────
393
403
  findOpenSession(repo) {
394
404
  return this.dailyLog.sessions.find(s => s.repo === repo && !s.closedBy) ?? null;
395
405
  }
396
406
  openSession(repo, task, branch, now) {
407
+ // Continued work on the same repo+task today inherits the evidence
408
+ // baseline and counters, so the day's numbers keep accumulating across
409
+ // close/reopen. If no prior session is found, the first poll captures
410
+ // a fresh baseline — see updateSessionTick.
411
+ const prior = this.findPriorTaskSession(repo, task);
397
412
  const session = {
398
413
  id: generateSessionId(),
399
414
  repo,
@@ -407,25 +422,26 @@ export class SessionTracker {
407
422
  evidence: createEmptyEvidence(),
408
423
  pauses: [],
409
424
  manualAdjustments: [],
410
- // Continued work on the same repo+task today should keep the PR-equivalent
411
- // baseline. If no prior session is found, the first poll will fill it from
412
- // currentHead — see updateSessionTick.
413
- baseSha: this.findPriorBaseSha(repo, task),
414
- // Filled on the first poll from result.mergeBaseSha; advancement on a
415
- // later tick triggers a re-anchor (see updateSessionTick).
425
+ baseSha: prior?.baseSha ?? null,
416
426
  mergeBaseSha: null,
427
+ evidenceBaseline: prior?.evidenceBaseline ? { ...prior.evidenceBaseline } : null,
428
+ lastBranchCommits: prior?.lastBranchCommits ?? null,
417
429
  };
430
+ if (prior) {
431
+ // Commit accumulator continues from where the prior session stopped.
432
+ session.evidence.commits = prior.evidence.commits;
433
+ }
418
434
  this.dailyLog.sessions.push(session);
419
435
  return session;
420
436
  }
421
- /** Most-recent baseSha among today's sessions on the same (repo, task). */
422
- findPriorBaseSha(repo, task) {
437
+ /** Most-recent session today on the same (repo, task) with a captured evidence base. */
438
+ findPriorTaskSession(repo, task) {
423
439
  if (!task)
424
440
  return null;
425
441
  for (let i = this.dailyLog.sessions.length - 1; i >= 0; i--) {
426
442
  const s = this.dailyLog.sessions[i];
427
- if (s.repo === repo && s.task === task && s.baseSha)
428
- return s.baseSha;
443
+ if (s.repo === repo && s.task === task && (s.baseSha || s.evidenceBaseline))
444
+ return s;
429
445
  }
430
446
  return null;
431
447
  }
@@ -472,39 +488,34 @@ export class SessionTracker {
472
488
  /**
473
489
  * Apply one poll tick.
474
490
  *
475
- * First tick: anchor baseSha at currentHead evidence measures what changed
476
- * inside this session, not the whole feature branch vs master. For continued
477
- * work on the same task today, findPriorBaseSha already carried the original
478
- * anchor over, so we don't overwrite it here. mergeBaseSha is captured for
479
- * advance detection on later ticks.
491
+ * Merge-base mode (default branch resolved): evidenceSnapshot holds branch
492
+ * totals vs the *fresh* merge-base rebase-stable by construction. Lines
493
+ * and files are the delta vs the baseline captured at session open; commits
494
+ * accumulate only positive jumps of the branch commit count, so squash /
495
+ * drop / amend / rebase never erase already-counted work. No re-anchoring,
496
+ * no zeroing.
480
497
  *
481
- * Re-anchor on rebase/upstream merge: when the default-branch merge-base
482
- * advances or a rebase reflog entry appears, baseSha is reset to currentHead
483
- * so the inrush of upstream commits isn't counted as today's work. Note:
484
- * evidenceSnapshot for this tick was computed against the stale baseSha and
485
- * is intentionally discarded.
486
- *
487
- * Subsequent ticks: overwrite evidence from the snapshot.
488
- *
489
- * Bad-revision fallback (baseSha became unreachable after force-push /
490
- * hard reset / rebase that dropped the anchor commit): snapshot is null
491
- * even though baseSha was passed. Zero evidence and re-anchor at currentHead
492
- * so the next tick starts fresh from here.
498
+ * Fallback mode (no default branch): sticky baseSha anchored at session
499
+ * start, evidence overwritten from the snapshot each tick, re-anchor +
500
+ * zero on rebase reflog entries or when baseSha becomes unreachable
501
+ * (force-push / hard reset) the pre-merge-base behavior.
493
502
  */
494
503
  updateSessionTick(session, result, now) {
495
504
  session.lastSeenAt = now;
505
+ if (result.evidenceBasis === 'merge_base' && result.evidenceSnapshot !== null) {
506
+ this.applyMergeBaseEvidence(session, result.evidenceSnapshot, result);
507
+ return;
508
+ }
496
509
  if (session.baseSha === null) {
497
510
  session.baseSha = result.currentHead;
498
- session.mergeBaseSha = result.mergeBaseSha;
499
511
  return;
500
512
  }
501
- if (this.shouldReAnchor(session, result)) {
513
+ if (result.newReflogEntries.some(e => e.type === 'rebase')) {
514
+ // Rebase without a resolvable merge-base — the stale anchor would count
515
+ // upstream commits as today's work. Re-anchor and start over.
502
516
  session.baseSha = result.currentHead;
503
- session.mergeBaseSha = result.mergeBaseSha;
517
+ this.zeroLineEvidence(session);
504
518
  session.evidence.commits = 0;
505
- session.evidence.linesAdded = 0;
506
- session.evidence.linesRemoved = 0;
507
- session.evidence.filesChanged = 0;
508
519
  return;
509
520
  }
510
521
  if (result.evidenceSnapshot !== null) {
@@ -515,29 +526,50 @@ export class SessionTracker {
515
526
  return;
516
527
  }
517
528
  // baseSha invalidated — zero out and re-anchor at HEAD.
529
+ this.zeroLineEvidence(session);
518
530
  session.evidence.commits = 0;
519
- session.evidence.linesAdded = 0;
520
- session.evidence.linesRemoved = 0;
521
- session.evidence.filesChanged = 0;
522
531
  session.baseSha = result.currentHead;
523
- session.mergeBaseSha = result.mergeBaseSha;
524
532
  }
525
533
  /**
526
- * True when this tick should re-anchor baseSha to currentHead.
527
- * Two triggers:
528
- * - Merge-base advanced — develop got pulled into the branch (rebase,
529
- * pull --rebase, merge from upstream). Authoritative snapshot test.
530
- * - New rebase reflog entry backup signal for cases where merge-base
531
- * isn't resolved (no default branch configured / detected). Captures
532
- * `rebase (start|pick|finish)` entries the parser now classifies.
534
+ * Merge-base evidence: baseline-delta for lines/files, positive-jump
535
+ * accumulator for commits.
536
+ *
537
+ * The baseline ratchets down when branch totals drop below it (own work
538
+ * merged upstream, dropped commits) so evidence never goes negative and
539
+ * subsequent work is counted from the new, lower base.
533
540
  */
534
- shouldReAnchor(session, result) {
535
- const mergeBaseAdvanced = result.mergeBaseSha !== null &&
536
- session.mergeBaseSha !== null &&
537
- result.mergeBaseSha !== session.mergeBaseSha;
538
- if (mergeBaseAdvanced)
539
- return true;
540
- return result.newReflogEntries.some(e => e.type === 'rebase');
541
+ applyMergeBaseEvidence(session, snap, result) {
542
+ let base = session.evidenceBaseline;
543
+ if (base === null) {
544
+ base = {
545
+ linesAdded: snap.linesAdded,
546
+ linesRemoved: snap.linesRemoved,
547
+ filesChanged: snap.filesChanged,
548
+ };
549
+ session.evidenceBaseline = base;
550
+ }
551
+ else {
552
+ base.linesAdded = Math.min(base.linesAdded, snap.linesAdded);
553
+ base.linesRemoved = Math.min(base.linesRemoved, snap.linesRemoved);
554
+ base.filesChanged = Math.min(base.filesChanged, snap.filesChanged);
555
+ }
556
+ session.evidence.linesAdded = snap.linesAdded - base.linesAdded;
557
+ session.evidence.linesRemoved = snap.linesRemoved - base.linesRemoved;
558
+ session.evidence.filesChanged = snap.filesChanged - base.filesChanged;
559
+ if (session.lastBranchCommits !== null && snap.commits > session.lastBranchCommits) {
560
+ session.evidence.commits += snap.commits - session.lastBranchCommits;
561
+ }
562
+ session.lastBranchCommits = snap.commits;
563
+ session.mergeBaseSha = result.mergeBaseSha;
564
+ // Sticky anchor kept for ticks where merge-base resolution fails.
565
+ if (session.baseSha === null) {
566
+ session.baseSha = result.currentHead;
567
+ }
568
+ }
569
+ zeroLineEvidence(session) {
570
+ session.evidence.linesAdded = 0;
571
+ session.evidence.linesRemoved = 0;
572
+ session.evidence.filesChanged = 0;
541
573
  }
542
574
  // ─── Private: signals ──────────────────────────────────────────────────
543
575
  logSignals(repoName, result) {
@@ -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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"}
@@ -66,6 +66,7 @@ export class StatusRenderer {
66
66
  const manualMin = computeManualMinutes(session);
67
67
  const manualStr = manualMin > 0 ? ` ${MAGENTA}+ ${manualMin}m manual${RESET}` : '';
68
68
  const ema = sessionScore?.ema ?? 0;
69
+ const normalizedScore = sessionScore?.normalizedScore ?? 0;
69
70
  // Status badge + dot indicator
70
71
  let badge;
71
72
  if (isPaused && openPause) {
@@ -87,13 +88,17 @@ export class StatusRenderer {
87
88
  const sinceTs = session.activatedAt ?? session.startedAt;
88
89
  const sinceTime = formatTime(new Date(sinceTs).getTime(), this.ctx.timezone);
89
90
  lines.push(`${L('Time')}${dur}${manualStr}${''.padEnd(Math.max(0, COL1 - dur.length))}${R('since')}${sinceTime}`);
90
- // Intensity bar (EMA) with autopause countdown
91
+ // Stamina bar (normalizedScore — same value as the tray app) with
92
+ // activity frequency (EMA) and autopause countdown alongside.
93
+ // Countdown uses etaTicks: with asymmetric decay the raw score no
94
+ // longer equals ticks-to-pause.
91
95
  const rawScore = sessionScore?.score ?? 0;
96
+ const etaTicks = sessionScore?.etaTicks ?? 0;
92
97
  const showAutopause = !isPaused && session.state === 'active' && rawScore > 0;
93
98
  const autoPauseStr = showAutopause
94
- ? ` ${DIM}auto-pause${RESET} ${formatDuration(rawScore * this.ctx.pollSeconds * 1000)}`
99
+ ? ` ${DIM}auto-pause${RESET} ${formatDuration(etaTicks * this.ctx.pollSeconds * 1000)}`
95
100
  : '';
96
- lines.push(`${L('Stamina')}${renderBar(ema, BAR_WIDTH)}${autoPauseStr}`);
101
+ lines.push(`${L('Stamina')}${renderBar(normalizedScore, BAR_WIDTH)} ${DIM}freq ${ema.toFixed(2)}${RESET}${autoPauseStr}`);
97
102
  // Evidence: GitHub-style stats
98
103
  const ev = session.evidence;
99
104
  const filesStr = ev.filesChanged > 0 ? `${ev.filesChanged} files ` : '';