@telora/daemon 0.21.196 → 0.22.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 (40) hide show
  1. package/build-info.json +5 -3
  2. package/dist/completion/team-lifecycle.d.ts.map +1 -1
  3. package/dist/completion/team-lifecycle.js +3 -0
  4. package/dist/completion/team-lifecycle.js.map +1 -1
  5. package/dist/focus/focus-team-state.d.ts +15 -0
  6. package/dist/focus/focus-team-state.d.ts.map +1 -1
  7. package/dist/focus/focus-team-state.js +22 -0
  8. package/dist/focus/focus-team-state.js.map +1 -1
  9. package/dist/queries/linear-linked.d.ts +53 -0
  10. package/dist/queries/linear-linked.d.ts.map +1 -0
  11. package/dist/queries/linear-linked.js +120 -0
  12. package/dist/queries/linear-linked.js.map +1 -0
  13. package/dist/resolvers/assembly-engine.d.ts.map +1 -1
  14. package/dist/resolvers/assembly-engine.js +1 -0
  15. package/dist/resolvers/assembly-engine.js.map +1 -1
  16. package/dist/resolvers/index.d.ts.map +1 -1
  17. package/dist/resolvers/index.js +2 -0
  18. package/dist/resolvers/index.js.map +1 -1
  19. package/dist/resolvers/linear-linked-issues.d.ts +40 -0
  20. package/dist/resolvers/linear-linked-issues.d.ts.map +1 -0
  21. package/dist/resolvers/linear-linked-issues.js +164 -0
  22. package/dist/resolvers/linear-linked-issues.js.map +1 -0
  23. package/dist/shell/activity-clock-registry.d.ts +71 -0
  24. package/dist/shell/activity-clock-registry.d.ts.map +1 -0
  25. package/dist/shell/activity-clock-registry.js +171 -0
  26. package/dist/shell/activity-clock-registry.js.map +1 -0
  27. package/dist/shell/activity-tracker.d.ts +9 -1
  28. package/dist/shell/activity-tracker.d.ts.map +1 -1
  29. package/dist/shell/activity-tracker.js +18 -2
  30. package/dist/shell/activity-tracker.js.map +1 -1
  31. package/dist/shell/heartbeat.d.ts.map +1 -1
  32. package/dist/shell/heartbeat.js +20 -6
  33. package/dist/shell/heartbeat.js.map +1 -1
  34. package/dist/spawn/helpers.js +1 -1
  35. package/dist/spawn/helpers.js.map +1 -1
  36. package/dist/templates/claude-md.d.ts +1 -1
  37. package/dist/templates/claude-md.d.ts.map +1 -1
  38. package/dist/templates/claude-md.js +20 -0
  39. package/dist/templates/claude-md.js.map +1 -1
  40. package/package.json +3 -3
@@ -0,0 +1,164 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: none -- no test imports this module directly (baselined; see lint:pinned-by)
3
+ // PINNED-BY-END
4
+ import { registerSourceResolver } from './assembly-engine.js';
5
+ import { getFocusDeliveries } from '../queries/focuses.js';
6
+ import { resolveLinearSourceId, listInformedByReferences, fetchLinkedLinearIssues, } from '../queries/linear-linked.js';
7
+ import { createLogger } from '../shell/log.js';
8
+ const log = createLogger({ module: 'assembly-engine' });
9
+ /**
10
+ * linear.linked_issues
11
+ *
12
+ * Composes into an executing team's prompt ONLY the Linear issues a
13
+ * human-and-agent session already linked (relation `informed_by`) to the focus
14
+ * being executed OR its deliveries -- fetched VERBATIM through the Server-Side
15
+ * Linear Read Model over product-api. This is the source material the agreed
16
+ * intent was distilled from (e.g. TIN-5's full description), so nuance lost in
17
+ * distillation is available to the work.
18
+ *
19
+ * It is deliberately NOT a general Linear source. Linear is a source for
20
+ * DETERMINING intent, not intent itself; the daemon never reads the backlog on
21
+ * its own initiative. The resolver fetches EXACTLY the referenced identifiers
22
+ * and nothing else, so no code path can surface an issue that was not chosen by
23
+ * a human-and-agent session.
24
+ *
25
+ * The daemon never holds the Linear API key: every fetch is a product-api call
26
+ * that resolves the unit-scoped connection and dereferences the key
27
+ * server-side. The daemon passes only ids/identifiers.
28
+ *
29
+ * SCOPING TO LINEAR (decision): external_references is a generic table, open to
30
+ * future adapter types. This resolver resolves the product's Linear
31
+ * external_data_source id once and keeps only references whose
32
+ * external_data_source_id matches it -- a reference to any non-Linear source is
33
+ * dropped rather than mis-fetched through the Linear read model.
34
+ *
35
+ * Degrades to an explicit empty-state section when the product has no resolved
36
+ * Linear connection or the focus/deliveries carry no informed_by Linear
37
+ * references. On any error it contributes nothing (returns '') -- a resolver
38
+ * never throws into assembly.
39
+ */
40
+ /** Explicit empty-state section: no linked Linear issues to surface. */
41
+ export const LINKED_LINEAR_EMPTY_STATE = '## Linked Linear Issues\n\n_No Linear issues are linked (informed_by) to this focus or its deliveries._';
42
+ /** Max issues rendered -- prompt-assembly size bound (issue count). */
43
+ export const MAX_LINKED_LINEAR_ISSUES = 20;
44
+ /** Char budget for the rendered section -- prompt-assembly size bound. */
45
+ export const LINKED_LINEAR_BUDGET_CHARS = 12000;
46
+ /**
47
+ * Collect informed_by references from the focus and each of its deliveries,
48
+ * keep only Linear-sourced ones, and dedupe by identifier (aggregating the
49
+ * human-authored notes that cite each issue). Order is stable: focus-level
50
+ * references first, then deliveries in rank order.
51
+ */
52
+ function collectLinkedRefs(refGroups, linearSourceId) {
53
+ const byIdentifier = new Map();
54
+ const order = [];
55
+ for (const group of refGroups) {
56
+ for (const ref of group) {
57
+ if (ref.externalDataSourceId !== linearSourceId)
58
+ continue; // non-Linear -> drop
59
+ const id = ref.externalIdentifier;
60
+ let entry = byIdentifier.get(id);
61
+ if (!entry) {
62
+ entry = { identifier: id, url: ref.externalUrl, notes: [] };
63
+ byIdentifier.set(id, entry);
64
+ order.push(id);
65
+ }
66
+ if (!entry.url && ref.externalUrl)
67
+ entry.url = ref.externalUrl;
68
+ const note = (ref.note ?? '').trim();
69
+ if (note && !entry.notes.includes(note))
70
+ entry.notes.push(note);
71
+ }
72
+ }
73
+ return order.map((id) => byIdentifier.get(id));
74
+ }
75
+ /** Render one issue as markdown, given the notes that cited it. */
76
+ function renderIssue(issue, notes) {
77
+ const lines = [];
78
+ lines.push(`### ${issue.identifier}: ${issue.title}`);
79
+ const meta = [];
80
+ if (issue.state)
81
+ meta.push(`State: ${issue.state.name} (${issue.state.type})`);
82
+ if (issue.teamName)
83
+ meta.push(`Team: ${issue.teamName}`);
84
+ if (issue.projectName)
85
+ meta.push(`Project: ${issue.projectName}`);
86
+ if (issue.url)
87
+ meta.push(`URL: ${issue.url}`);
88
+ if (meta.length > 0)
89
+ lines.push(meta.join(' | '));
90
+ if (issue.projectDescription)
91
+ lines.push(`Project description: ${issue.projectDescription}`);
92
+ if (issue.labels.length > 0)
93
+ lines.push(`Labels: ${issue.labels.join(', ')}`);
94
+ if (notes.length > 0) {
95
+ lines.push('');
96
+ lines.push('Why it was linked:');
97
+ for (const note of notes)
98
+ lines.push(`- ${note}`);
99
+ }
100
+ lines.push('');
101
+ lines.push('Description (verbatim):');
102
+ lines.push(issue.description.length > 0 ? issue.description : '_(no description)_');
103
+ if (issue.comments.length > 0) {
104
+ lines.push('');
105
+ lines.push(`Comments (${issue.comments.length}):`);
106
+ for (const c of issue.comments) {
107
+ const who = c.author ?? 'unknown';
108
+ lines.push(`- ${who} (${c.createdAt}): ${c.body}`);
109
+ }
110
+ }
111
+ return lines.join('\n');
112
+ }
113
+ /** Register this module's resolver(s). Called from initResolvers() -- not an import side effect. */
114
+ export function registerLinearLinkedIssuesResolver() {
115
+ registerSourceResolver('linear.linked_issues', async (context) => {
116
+ try {
117
+ const linearSourceId = await resolveLinearSourceId(context.productId);
118
+ if (!linearSourceId)
119
+ return LINKED_LINEAR_EMPTY_STATE;
120
+ const deliveries = await getFocusDeliveries(context.focusId);
121
+ const orderedDeliveries = [...deliveries].sort((a, b) => a.priorityRank - b.priorityRank);
122
+ const refGroups = await Promise.all([
123
+ listInformedByReferences('focus', context.focusId),
124
+ ...orderedDeliveries.map((d) => listInformedByReferences('delivery', d.id)),
125
+ ]);
126
+ const linkedRefs = collectLinkedRefs(refGroups, linearSourceId);
127
+ if (linkedRefs.length === 0)
128
+ return LINKED_LINEAR_EMPTY_STATE;
129
+ const capped = linkedRefs.slice(0, MAX_LINKED_LINEAR_ISSUES);
130
+ const identifiers = capped.map((r) => r.identifier);
131
+ const notesByIdentifier = new Map(capped.map((r) => [r.identifier, r.notes]));
132
+ const issues = await fetchLinkedLinearIssues(context.productId, identifiers);
133
+ if (issues.length === 0)
134
+ return LINKED_LINEAR_EMPTY_STATE;
135
+ const sections = [];
136
+ let used = 0;
137
+ let truncated = false;
138
+ for (const issue of issues) {
139
+ const rendered = renderIssue(issue, notesByIdentifier.get(issue.identifier) ?? []);
140
+ if (used + rendered.length > LINKED_LINEAR_BUDGET_CHARS && sections.length > 0) {
141
+ truncated = true;
142
+ break;
143
+ }
144
+ sections.push(rendered);
145
+ used += rendered.length;
146
+ }
147
+ const omitted = linkedRefs.length - sections.length;
148
+ const header = '## Linked Linear Issues';
149
+ const preamble = 'Source material the agreed intent was distilled from. Linear is a SOURCE ' +
150
+ 'for determining intent, not intent itself -- read-only, and only issues a ' +
151
+ 'human-and-agent session chose are shown.';
152
+ const parts = [header, preamble, sections.join('\n\n')];
153
+ if (truncated || omitted > 0) {
154
+ parts.push(`_(${omitted > 0 ? omitted : 0} further linked issue(s) omitted for prompt size.)_`);
155
+ }
156
+ return parts.join('\n\n');
157
+ }
158
+ catch (err) {
159
+ log.warn(`linear.linked_issues: failed: ${err.message}`);
160
+ return '';
161
+ }
162
+ });
163
+ }
164
+ //# sourceMappingURL=linear-linked-issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-linked-issues.js","sourceRoot":"","sources":["../../src/resolvers/linear-linked-issues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Activity-clock observability registry.
3
+ *
4
+ * The daemon acts on an in-memory per-team activity clock (focus-team-state's
5
+ * `lastActivityAt`, advanced on every agent event) while the product surface
6
+ * reads a SEPARATELY flushed clock (`agent_sessions.activity_summary.updatedAt`,
7
+ * written by ActivityTracker.flush). When those two clocks disagree an operator
8
+ * cannot tell WHICH one stalled, because every daemon-API projection strips
9
+ * activity_summary. This module makes the write chain state a fact the daemon
10
+ * states in its OWN output (the heartbeat healthEvents channel), distinguishable
11
+ * from a healthy advancing clock:
12
+ *
13
+ * - activity.write_failed a flush write errored or timed out
14
+ * - activity.write_skipped a flush short-circuited (re-entry / dirty-check)
15
+ * persistently past a bounded window
16
+ * - activity.clock_divergence the in-memory clock advanced while the last
17
+ * successfully-published clock stayed frozen
18
+ * (i.e. the write chain stalled)
19
+ *
20
+ * daemon-core stays env-free and behaviorless: ActivityTracker only REPORTS what
21
+ * its flush loop did (onFlushError / onFlushSkip / getLastPublishedClockMs); all
22
+ * logging, thresholding, and health-event emission live here. The thresholds are
23
+ * module constants (they govern only WHEN an already-observable fact surfaces,
24
+ * never correctness), so no new env knob is introduced.
25
+ *
26
+ * A single successful/quiet flush emits nothing; only a failure, a persistent
27
+ * skip, or a sustained divergence surfaces -- never per-tick noise.
28
+ */
29
+ import { type FlushErrorContext, type FlushSkipContext } from '@telora/daemon-core';
30
+ export declare const ACTIVITY_WRITE_FAILED_CODE = "activity.write_failed";
31
+ export declare const ACTIVITY_WRITE_SKIPPED_CODE = "activity.write_skipped";
32
+ export declare const ACTIVITY_CLOCK_DIVERGENCE_CODE = "activity.clock_divergence";
33
+ /**
34
+ * Record a SUCCESSFUL publish of the focus's activity clock. Advances the last
35
+ * published value and resets the skip streak (a real write ends any skip run).
36
+ */
37
+ export declare function recordPublishedClock(focusId: string, sessionId: string, clockMs: number): void;
38
+ /**
39
+ * A flush write FAILED or TIMED OUT. Surfaces the failure as a log line + a
40
+ * healthEvents entry naming the session, whether it timed out, and the error.
41
+ * Quiet on success by construction -- only the failure path calls this.
42
+ */
43
+ export declare function recordFlushFailure(focusId: string, ctx: FlushErrorContext): void;
44
+ /**
45
+ * A flush was SKIPPED (re-entry guard or dirty-check). Tracks the streak and
46
+ * surfaces a persistent-skip health fact only when the streak outlasts the
47
+ * bounded window -- a one-off skip or a healthy quiet chain stays quiet.
48
+ */
49
+ export declare function recordFlushSkip(focusId: string, ctx: FlushSkipContext, now?: number): void;
50
+ /**
51
+ * Compare the daemon's in-memory activity clock (per focus) against the last
52
+ * successfully-published clock and surface a divergence health fact when the
53
+ * in-memory clock leads the published one past the threshold -- i.e. the team is
54
+ * producing events but the write chain has stalled. Called at the heartbeat,
55
+ * where the in-memory clocks are assembled.
56
+ *
57
+ * Edge-triggered: emits once when a focus crosses into divergence and clears
58
+ * (silently) when it reconciles, so a sustained stall is not re-emitted per beat
59
+ * and a healthy chain within the threshold stays quiet.
60
+ *
61
+ * @param inMemoryByFocus focusId -> epoch ms of the in-memory activity clock.
62
+ */
63
+ export declare function checkClockDivergence(inMemoryByFocus: Record<string, number>): void;
64
+ /**
65
+ * Drop a focus's clock state on team reap (called beside clearTeamActivity), so
66
+ * a respawn of the same focus starts clean and no stale published clock lingers.
67
+ */
68
+ export declare function clearFocusClock(focusId: string): void;
69
+ /** Test hatch: clear all registry state. */
70
+ export declare function __resetActivityClockRegistryForTesting(): void;
71
+ //# sourceMappingURL=activity-clock-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-clock-registry.d.ts","sourceRoot":"","sources":["../../src/shell/activity-clock-registry.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAgB,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOlG,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AACpE,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AA2C1E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK9F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAUhF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,gBAAgB,EACrB,GAAG,GAAE,MAAmB,GACvB,IAAI,CAoBN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CA4BlF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,4CAA4C;AAC5C,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D"}
@@ -0,0 +1,171 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/shell/activity-clock-registry.test.ts,
3
+ // packages/daemon/src/shell/heartbeat-team-phases.test.ts
4
+ // PINNED-BY-END
5
+ /**
6
+ * Activity-clock observability registry.
7
+ *
8
+ * The daemon acts on an in-memory per-team activity clock (focus-team-state's
9
+ * `lastActivityAt`, advanced on every agent event) while the product surface
10
+ * reads a SEPARATELY flushed clock (`agent_sessions.activity_summary.updatedAt`,
11
+ * written by ActivityTracker.flush). When those two clocks disagree an operator
12
+ * cannot tell WHICH one stalled, because every daemon-API projection strips
13
+ * activity_summary. This module makes the write chain state a fact the daemon
14
+ * states in its OWN output (the heartbeat healthEvents channel), distinguishable
15
+ * from a healthy advancing clock:
16
+ *
17
+ * - activity.write_failed a flush write errored or timed out
18
+ * - activity.write_skipped a flush short-circuited (re-entry / dirty-check)
19
+ * persistently past a bounded window
20
+ * - activity.clock_divergence the in-memory clock advanced while the last
21
+ * successfully-published clock stayed frozen
22
+ * (i.e. the write chain stalled)
23
+ *
24
+ * daemon-core stays env-free and behaviorless: ActivityTracker only REPORTS what
25
+ * its flush loop did (onFlushError / onFlushSkip / getLastPublishedClockMs); all
26
+ * logging, thresholding, and health-event emission live here. The thresholds are
27
+ * module constants (they govern only WHEN an already-observable fact surfaces,
28
+ * never correctness), so no new env knob is introduced.
29
+ *
30
+ * A single successful/quiet flush emits nothing; only a failure, a persistent
31
+ * skip, or a sustained divergence surfaces -- never per-tick noise.
32
+ */
33
+ import { healthEvents } from '@telora/daemon-core';
34
+ import { createLogger } from './log.js';
35
+ const log = createLogger({ module: 'activity-clock' });
36
+ const SOURCE = 'activity-clock';
37
+ export const ACTIVITY_WRITE_FAILED_CODE = 'activity.write_failed';
38
+ export const ACTIVITY_WRITE_SKIPPED_CODE = 'activity.write_skipped';
39
+ export const ACTIVITY_CLOCK_DIVERGENCE_CODE = 'activity.clock_divergence';
40
+ /**
41
+ * A skip streak (consecutive flushes that short-circuited without writing)
42
+ * lasting longer than this surfaces as a persistent-skip health fact. Below it,
43
+ * a one-off skip / healthy quiet chain stays quiet. A successful publish resets
44
+ * the streak.
45
+ */
46
+ const SKIP_PERSIST_THRESHOLD_MS = 90_000;
47
+ /**
48
+ * The in-memory clock leading the last-published clock by more than this is a
49
+ * stalled write chain and surfaces as a divergence health fact. Within it the
50
+ * two clocks are considered reconciled (normal flush lag) and stay quiet.
51
+ */
52
+ const CLOCK_DIVERGENCE_THRESHOLD_MS = 90_000;
53
+ const byFocus = new Map();
54
+ function ensure(focusId, sessionId) {
55
+ const existing = byFocus.get(focusId);
56
+ if (existing) {
57
+ existing.sessionId = sessionId;
58
+ return existing;
59
+ }
60
+ const created = { sessionId, skipEmitted: false, divergenceActive: false };
61
+ byFocus.set(focusId, created);
62
+ return created;
63
+ }
64
+ /**
65
+ * Record a SUCCESSFUL publish of the focus's activity clock. Advances the last
66
+ * published value and resets the skip streak (a real write ends any skip run).
67
+ */
68
+ export function recordPublishedClock(focusId, sessionId, clockMs) {
69
+ const state = ensure(focusId, sessionId);
70
+ state.lastPublishedClockMs = clockMs;
71
+ state.skipStreakStartMs = undefined;
72
+ state.skipEmitted = false;
73
+ }
74
+ /**
75
+ * A flush write FAILED or TIMED OUT. Surfaces the failure as a log line + a
76
+ * healthEvents entry naming the session, whether it timed out, and the error.
77
+ * Quiet on success by construction -- only the failure path calls this.
78
+ */
79
+ export function recordFlushFailure(focusId, ctx) {
80
+ const kind = ctx.timedOut ? 'timed out' : 'failed';
81
+ const message = `activity-clock write ${kind} for session ${ctx.sessionId}: ${ctx.error.message}`;
82
+ log.warn(`[activity-clock] ${message} (focus ${focusId})`);
83
+ healthEvents.emit({
84
+ severity: 'warn',
85
+ source: SOURCE,
86
+ code: ACTIVITY_WRITE_FAILED_CODE,
87
+ message,
88
+ });
89
+ }
90
+ /**
91
+ * A flush was SKIPPED (re-entry guard or dirty-check). Tracks the streak and
92
+ * surfaces a persistent-skip health fact only when the streak outlasts the
93
+ * bounded window -- a one-off skip or a healthy quiet chain stays quiet.
94
+ */
95
+ export function recordFlushSkip(focusId, ctx, now = Date.now()) {
96
+ const state = ensure(focusId, ctx.sessionId);
97
+ if (state.skipStreakStartMs === undefined) {
98
+ state.skipStreakStartMs = now;
99
+ return;
100
+ }
101
+ const streakMs = now - state.skipStreakStartMs;
102
+ if (streakMs <= SKIP_PERSIST_THRESHOLD_MS || state.skipEmitted)
103
+ return;
104
+ state.skipEmitted = true;
105
+ const message = `activity-clock write persistently skipped (${ctx.reason}) for ` +
106
+ `session ${ctx.sessionId} for ${streakMs}ms -- the published liveness clock ` +
107
+ `is not advancing though the session has not failed`;
108
+ log.warn(`[activity-clock] ${message} (focus ${focusId})`);
109
+ healthEvents.emit({
110
+ severity: 'warn',
111
+ source: SOURCE,
112
+ code: ACTIVITY_WRITE_SKIPPED_CODE,
113
+ message,
114
+ });
115
+ }
116
+ /**
117
+ * Compare the daemon's in-memory activity clock (per focus) against the last
118
+ * successfully-published clock and surface a divergence health fact when the
119
+ * in-memory clock leads the published one past the threshold -- i.e. the team is
120
+ * producing events but the write chain has stalled. Called at the heartbeat,
121
+ * where the in-memory clocks are assembled.
122
+ *
123
+ * Edge-triggered: emits once when a focus crosses into divergence and clears
124
+ * (silently) when it reconciles, so a sustained stall is not re-emitted per beat
125
+ * and a healthy chain within the threshold stays quiet.
126
+ *
127
+ * @param inMemoryByFocus focusId -> epoch ms of the in-memory activity clock.
128
+ */
129
+ export function checkClockDivergence(inMemoryByFocus) {
130
+ for (const [focusId, state] of byFocus) {
131
+ const inMemory = inMemoryByFocus[focusId];
132
+ const published = state.lastPublishedClockMs;
133
+ if (inMemory === undefined || published === undefined)
134
+ continue;
135
+ const gapMs = inMemory - published;
136
+ if (gapMs > CLOCK_DIVERGENCE_THRESHOLD_MS) {
137
+ if (state.divergenceActive)
138
+ continue;
139
+ state.divergenceActive = true;
140
+ const message = `activity-clock divergence for session ${state.sessionId}: the in-memory ` +
141
+ `clock leads the last published clock by ${gapMs}ms -- the write chain has ` +
142
+ `stalled (the team is active but its published liveness clock is frozen)`;
143
+ log.warn(`[activity-clock] ${message} (focus ${focusId})`);
144
+ healthEvents.emit({
145
+ // 'warn', not 'error': the daemon is still functioning -- only the
146
+ // liveness surface has gone stale -- so this surfaces the stall without
147
+ // falsely flipping the whole daemon health badge to red.
148
+ severity: 'warn',
149
+ source: SOURCE,
150
+ code: ACTIVITY_CLOCK_DIVERGENCE_CODE,
151
+ message,
152
+ });
153
+ }
154
+ else if (state.divergenceActive) {
155
+ // Reconciled: clear the episode so a later divergence surfaces afresh.
156
+ state.divergenceActive = false;
157
+ }
158
+ }
159
+ }
160
+ /**
161
+ * Drop a focus's clock state on team reap (called beside clearTeamActivity), so
162
+ * a respawn of the same focus starts clean and no stale published clock lingers.
163
+ */
164
+ export function clearFocusClock(focusId) {
165
+ byFocus.delete(focusId);
166
+ }
167
+ /** Test hatch: clear all registry state. */
168
+ export function __resetActivityClockRegistryForTesting() {
169
+ byFocus.clear();
170
+ }
171
+ //# sourceMappingURL=activity-clock-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-clock-registry.js","sourceRoot":"","sources":["../../src/shell/activity-clock-registry.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,18 @@
4
4
  * Re-exports the shared ActivitySnapshot type and provides a daemon-specific
5
5
  * ActivityTracker subclass that flushes snapshots to agent_sessions via
6
6
  * updateSession().
7
+ *
8
+ * It also wires the daemon-core reporting seam (onFlushError / onFlushSkip) plus
9
+ * the successful-publish signal into the activity-clock registry, so a failed,
10
+ * timed-out, or persistently-skipped write -- and any divergence between the
11
+ * daemon's in-memory clock and the last published clock -- becomes a health fact
12
+ * the daemon states in its own output rather than a silently swallowed error.
13
+ * daemon-core stays env-free: the emit/threshold logic lives in the registry,
14
+ * reached only through the injected callbacks.
7
15
  */
8
16
  import { ActivityTracker as CoreActivityTracker, type ActivitySnapshot } from '@telora/daemon-core';
9
17
  export type { ActivitySnapshot };
10
18
  export declare class ActivityTracker extends CoreActivityTracker {
11
- constructor(sessionId: string);
19
+ constructor(sessionId: string, focusId: string);
12
20
  }
13
21
  //# sourceMappingURL=activity-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAiB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGnH,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,qBAAa,eAAgB,SAAQ,mBAAmB;gBAC1C,SAAS,EAAE,MAAM;CAa9B"}
1
+ {"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAiB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAInH,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,qBAAa,eAAgB,SAAQ,mBAAmB;gBAC1C,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAqB/C"}
@@ -7,19 +7,35 @@
7
7
  * Re-exports the shared ActivitySnapshot type and provides a daemon-specific
8
8
  * ActivityTracker subclass that flushes snapshots to agent_sessions via
9
9
  * updateSession().
10
+ *
11
+ * It also wires the daemon-core reporting seam (onFlushError / onFlushSkip) plus
12
+ * the successful-publish signal into the activity-clock registry, so a failed,
13
+ * timed-out, or persistently-skipped write -- and any divergence between the
14
+ * daemon's in-memory clock and the last published clock -- becomes a health fact
15
+ * the daemon states in its own output rather than a silently swallowed error.
16
+ * daemon-core stays env-free: the emit/threshold logic lives in the registry,
17
+ * reached only through the injected callbacks.
10
18
  */
11
19
  import { ActivityTracker as CoreActivityTracker, loadEnvConfig } from '@telora/daemon-core';
12
20
  import { updateSession } from '../queries/sessions.js';
21
+ import { recordPublishedClock, recordFlushFailure, recordFlushSkip } from './activity-clock-registry.js';
13
22
  export class ActivityTracker extends CoreActivityTracker {
14
- constructor(sessionId) {
23
+ constructor(sessionId, focusId) {
15
24
  super(sessionId, async (snapshot) => {
16
25
  await updateSession(sessionId, {
17
26
  activity_summary: snapshot,
18
27
  });
28
+ // The write resolved -> record the published clock so the heartbeat can
29
+ // detect an in-memory-vs-published divergence. A rejected/timed-out write
30
+ // never reaches here; it lands on onFlushError below instead.
31
+ recordPublishedClock(focusId, sessionId, Date.parse(snapshot.updatedAt));
19
32
  },
20
33
  // Bound the session-activity write so a stalled updateSession can neither
21
34
  // hang the flush nor latch its re-entry guard (validated env knob).
22
- loadEnvConfig().TELORA_ACTIVITY_WRITE_TIMEOUT_MS);
35
+ loadEnvConfig().TELORA_ACTIVITY_WRITE_TIMEOUT_MS, {
36
+ onFlushError: (ctx) => recordFlushFailure(focusId, ctx),
37
+ onFlushSkip: (ctx) => recordFlushSkip(focusId, ctx),
38
+ });
23
39
  }
24
40
  }
25
41
  //# sourceMappingURL=activity-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,MAAM,OAAO,eAAgB,SAAQ,mBAAmB;IACtD,YAAY,SAAiB;QAC3B,KAAK,CACH,SAAS,EACT,KAAK,EAAE,QAA0B,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,SAAS,EAAE;gBAC7B,gBAAgB,EAAE,QAA8C;aACjE,CAAC,CAAC;QACL,CAAC;QACD,0EAA0E;QAC1E,oEAAoE;QACpE,aAAa,EAAE,CAAC,gCAAgC,CACjD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/shell/activity-tracker.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uEAAuE;AACvE,gBAAgB;AAEhB;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIzG,MAAM,OAAO,eAAgB,SAAQ,mBAAmB;IACtD,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CACH,SAAS,EACT,KAAK,EAAE,QAA0B,EAAE,EAAE;YACnC,MAAM,aAAa,CAAC,SAAS,EAAE;gBAC7B,gBAAgB,EAAE,QAA8C;aACjE,CAAC,CAAC;YACH,wEAAwE;YACxE,0EAA0E;YAC1E,8DAA8D;YAC9D,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,0EAA0E;QAC1E,oEAAoE;QACpE,aAAa,EAAE,CAAC,gCAAgC,EAChD;YACE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC;YACvD,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC;SACpD,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,8 @@ import { sendHeartbeat, sendDisconnect } from '../queries/daemon-connection.js';
31
31
  import { getCompletedSessionAggregates } from '../queries/sessions.js';
32
32
  import { observeRetentionBeat, recordRetentionObservation, evaluateRetirementPrecondition, } from '../drift/retention-observation.js';
33
33
  import { getSessionCounters, setSessionCounters, recordSessionCompleted, recordActivity, getLastActivityAt } from './agent-state.js';
34
- import { getActiveTeamCount } from '../focus/focus-team-state.js';
34
+ import { getActiveTeamCount, buildTeamClockMap } from '../focus/focus-team-state.js';
35
+ import { checkClockDivergence } from './activity-clock-registry.js';
35
36
  import { buildTeamPhaseMap } from '../completion/team-phase.js';
36
37
  import { safeInterval, healthEvents, getReadOnlyModeState } from '@telora/daemon-core';
37
38
  import { isIntakeDraining } from './intake-control.js';
@@ -300,13 +301,15 @@ export function readOnlyMetadataField() {
300
301
  }
301
302
  /**
302
303
  * Apply the focusId-SCOPED metadata fields (see the classification block
303
- * below): `narrations` (latest team-lead text) and `teamPhases` (each active
304
+ * below): `narrations` (latest team-lead text), `teamPhases` (each active
304
305
  * team's lifecycle phase -- executing / idle_complete / directive_pending /
305
306
  * cooldown -- so the dashboard's liveness badge can tell a parked team from a
306
- * wedged one). Both are pull-model: recomputed from live in-memory state each
307
- * beat, so a change surfaces within one interval and a torn-down focus drops
308
- * out on its own. Each key is set only when non-empty, so an idle daemon
309
- * publishes neither.
307
+ * wedged one), and `teamClocks` (the per-team last-activity clock the daemon
308
+ * itself acts on, so every liveness surface classifies from the one clock the
309
+ * daemon trusts rather than the separately-flushed activity_summary). All three
310
+ * are pull-model: recomputed from live in-memory state each beat, so a change
311
+ * surfaces within one interval and a torn-down focus drops out on its own. Each
312
+ * key is set only when non-empty, so an idle daemon publishes none.
310
313
  */
311
314
  function applyFocusScopedMetadata(metadata) {
312
315
  if (narrations.size > 0) {
@@ -316,6 +319,17 @@ function applyFocusScopedMetadata(metadata) {
316
319
  if (Object.keys(teamPhases).length > 0) {
317
320
  metadata.teamPhases = teamPhases;
318
321
  }
322
+ const teamClocks = buildTeamClockMap();
323
+ if (Object.keys(teamClocks).length > 0) {
324
+ metadata.teamClocks = teamClocks;
325
+ }
326
+ // Compare the in-memory activity clock (teamClocks, the clock the daemon acts
327
+ // on) against the last SUCCESSFULLY-published clock per focus; a focus whose
328
+ // in-memory clock has led the published one past the threshold surfaces an
329
+ // activity.clock_divergence health fact (the write chain stalled). Emits into
330
+ // healthEvents -- already published as metadata.healthEvents below -- so no new
331
+ // metadata key is added here. Edge-triggered + quiet within threshold.
332
+ checkClockDivergence(teamClocks);
319
333
  }
320
334
  /**
321
335
  * Publish branch status per product ({ [productId]: BranchStatusPayload }),
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/shell/heartbeat.ts"],"names":[],"mappings":"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"}