@dorokuma/herdsman 0.9.0 → 0.11.4

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 (111) hide show
  1. package/dist/src/agent-history/antigravity-proto.js +1 -1
  2. package/dist/src/agent-history/antigravity-proto.js.map +1 -1
  3. package/dist/src/agent-history/antigravity-reader.d.ts +13 -1
  4. package/dist/src/agent-history/antigravity-reader.d.ts.map +1 -1
  5. package/dist/src/agent-history/antigravity-reader.js +22 -1
  6. package/dist/src/agent-history/antigravity-reader.js.map +1 -1
  7. package/dist/src/agent-history/discovery.d.ts +2 -1
  8. package/dist/src/agent-history/discovery.d.ts.map +1 -1
  9. package/dist/src/agent-history/discovery.js +24 -4
  10. package/dist/src/agent-history/discovery.js.map +1 -1
  11. package/dist/src/agent-history/readers.d.ts +15 -1
  12. package/dist/src/agent-history/readers.d.ts.map +1 -1
  13. package/dist/src/agent-history/readers.js +77 -31
  14. package/dist/src/agent-history/readers.js.map +1 -1
  15. package/dist/src/agent-history/service.d.ts +4 -2
  16. package/dist/src/agent-history/service.d.ts.map +1 -1
  17. package/dist/src/agent-history/service.js +22 -22
  18. package/dist/src/agent-history/service.js.map +1 -1
  19. package/dist/src/agent-history/source-fingerprint.d.ts +7 -0
  20. package/dist/src/agent-history/source-fingerprint.d.ts.map +1 -0
  21. package/dist/src/agent-history/source-fingerprint.js +26 -0
  22. package/dist/src/agent-history/source-fingerprint.js.map +1 -0
  23. package/dist/src/agent-history/text.d.ts.map +1 -1
  24. package/dist/src/agent-history/text.js +5 -0
  25. package/dist/src/agent-history/text.js.map +1 -1
  26. package/dist/src/cli/herdsman.d.ts.map +1 -1
  27. package/dist/src/cli/herdsman.js +31 -9
  28. package/dist/src/cli/herdsman.js.map +1 -1
  29. package/dist/src/daemon/agent-event-reconciler.d.ts +7 -0
  30. package/dist/src/daemon/agent-event-reconciler.d.ts.map +1 -1
  31. package/dist/src/daemon/agent-event-reconciler.js +39 -5
  32. package/dist/src/daemon/agent-event-reconciler.js.map +1 -1
  33. package/dist/src/daemon/herdr-session-watch-manager.d.ts +1 -0
  34. package/dist/src/daemon/herdr-session-watch-manager.d.ts.map +1 -1
  35. package/dist/src/daemon/herdr-session-watch-manager.js +176 -55
  36. package/dist/src/daemon/herdr-session-watch-manager.js.map +1 -1
  37. package/dist/src/daemon/observability-server.d.ts +3 -0
  38. package/dist/src/daemon/observability-server.d.ts.map +1 -1
  39. package/dist/src/daemon/observability-server.js +64 -9
  40. package/dist/src/daemon/observability-server.js.map +1 -1
  41. package/dist/src/daemon/process-manager.d.ts +41 -2
  42. package/dist/src/daemon/process-manager.d.ts.map +1 -1
  43. package/dist/src/daemon/process-manager.js +340 -19
  44. package/dist/src/daemon/process-manager.js.map +1 -1
  45. package/dist/src/daemon/service.d.ts +46 -0
  46. package/dist/src/daemon/service.d.ts.map +1 -1
  47. package/dist/src/daemon/service.js +171 -12
  48. package/dist/src/daemon/service.js.map +1 -1
  49. package/dist/src/db/agent-events.d.ts +27 -0
  50. package/dist/src/db/agent-events.d.ts.map +1 -1
  51. package/dist/src/db/agent-events.js +157 -26
  52. package/dist/src/db/agent-events.js.map +1 -1
  53. package/dist/src/db/agent-orchestrator-scopes.d.ts +8 -0
  54. package/dist/src/db/agent-orchestrator-scopes.d.ts.map +1 -1
  55. package/dist/src/db/agent-orchestrator-scopes.js +13 -0
  56. package/dist/src/db/agent-orchestrator-scopes.js.map +1 -1
  57. package/dist/src/db/agents.d.ts +44 -0
  58. package/dist/src/db/agents.d.ts.map +1 -1
  59. package/dist/src/db/agents.js +71 -0
  60. package/dist/src/db/agents.js.map +1 -1
  61. package/dist/src/db/client.d.ts +1 -0
  62. package/dist/src/db/client.d.ts.map +1 -1
  63. package/dist/src/db/client.js +12 -0
  64. package/dist/src/db/client.js.map +1 -1
  65. package/dist/src/db/schema.d.ts +391 -0
  66. package/dist/src/db/schema.d.ts.map +1 -1
  67. package/dist/src/db/schema.js +34 -0
  68. package/dist/src/db/schema.js.map +1 -1
  69. package/dist/src/db/status-event-plans.d.ts +62 -0
  70. package/dist/src/db/status-event-plans.d.ts.map +1 -0
  71. package/dist/src/db/status-event-plans.js +147 -0
  72. package/dist/src/db/status-event-plans.js.map +1 -0
  73. package/dist/src/herdr/pane-identity-resolver.d.ts +4 -0
  74. package/dist/src/herdr/pane-identity-resolver.d.ts.map +1 -1
  75. package/dist/src/herdr/pane-identity-resolver.js +13 -1
  76. package/dist/src/herdr/pane-identity-resolver.js.map +1 -1
  77. package/dist/src/herdr/socket-client.d.ts +2 -0
  78. package/dist/src/herdr/socket-client.d.ts.map +1 -1
  79. package/dist/src/herdr/socket-client.js +64 -20
  80. package/dist/src/herdr/socket-client.js.map +1 -1
  81. package/dist/src/observability/agent-context-service.d.ts.map +1 -1
  82. package/dist/src/observability/agent-context-service.js +3 -6
  83. package/dist/src/observability/agent-context-service.js.map +1 -1
  84. package/dist/src/observability/agent-index-service.d.ts +47 -2
  85. package/dist/src/observability/agent-index-service.d.ts.map +1 -1
  86. package/dist/src/observability/agent-index-service.js +1075 -103
  87. package/dist/src/observability/agent-index-service.js.map +1 -1
  88. package/dist/src/observability/agent-orchestrator-service.d.ts.map +1 -1
  89. package/dist/src/observability/agent-orchestrator-service.js +34 -12
  90. package/dist/src/observability/agent-orchestrator-service.js.map +1 -1
  91. package/dist/src/observability/contracts.d.ts +1 -1
  92. package/dist/src/observability/contracts.d.ts.map +1 -1
  93. package/dist/src/observability/contracts.js.map +1 -1
  94. package/dist/src/observability/interactive-pi.d.ts +1 -1
  95. package/dist/src/observability/interactive-pi.d.ts.map +1 -1
  96. package/dist/src/observability/interactive-pi.js +1 -1
  97. package/dist/src/observability/interactive-pi.js.map +1 -1
  98. package/dist/src/observability/turn-completion.d.ts +2 -1
  99. package/dist/src/observability/turn-completion.d.ts.map +1 -1
  100. package/dist/src/observability/turn-completion.js +10 -1
  101. package/dist/src/observability/turn-completion.js.map +1 -1
  102. package/dist/src/shared/unix-peercred.d.ts +14 -0
  103. package/dist/src/shared/unix-peercred.d.ts.map +1 -0
  104. package/dist/src/shared/unix-peercred.js +144 -0
  105. package/dist/src/shared/unix-peercred.js.map +1 -0
  106. package/drizzle/0008_pane_tombstones.sql +9 -0
  107. package/drizzle/0009_high_lake.sql +24 -0
  108. package/drizzle/meta/0008_snapshot.json +823 -0
  109. package/drizzle/meta/0009_snapshot.json +975 -0
  110. package/drizzle/meta/_journal.json +14 -0
  111. package/package.json +24 -22
@@ -1,24 +1,51 @@
1
1
  import { isInteractivePiAgent } from "../observability/interactive-pi.js";
2
+ /**
3
+ * A delivered event is re-listed for the same owner terminal only within this
4
+ * freshness window after its last delivery attempt. The window covers the
5
+ * crash/redelivery path (an extension that missed the first delivery re-fetches
6
+ * it right after reconnecting) while preventing an unacked delivered event from
7
+ * being re-returned indefinitely on every orchestrator.get, which would feed
8
+ * duplicate presentations whenever the extension's local dedup state is lost.
9
+ */
10
+ export const REDELIVERY_FRESHNESS_MS = 300_000;
11
+ /**
12
+ * Persist interval for the monotonic logical clock. The clock is written to
13
+ * daemon_meta only when it advances by at least this much since the last
14
+ * persist, so read-only queries do not trigger a write+fsync on every call.
15
+ * The freshness window is 300s, so a 60s persist granularity does not weaken
16
+ * the anti-rollback semantics.
17
+ */
18
+ export const LOGICAL_CLOCK_PERSIST_INTERVAL_MS = 60_000;
19
+ export const LOGICAL_CLOCK_META_KEY = "logical_now_ms";
20
+ export function hasNonEmptyAssistantMessage(compactHistory) {
21
+ const text = compactHistory?.lastAssistantMessage?.text;
22
+ return typeof text === "string" && text.trim().length > 0;
23
+ }
2
24
  /** The single delivery predicate shared by pending discovery and acknowledgement. */
3
25
  export function isDeliverableAgentEvent(event, agent, scope, ownerTerminalId) {
26
+ const failed = event.type === "agent.failed";
4
27
  return ((event.status === "pending" || event.status === "delivered") &&
5
28
  (event.status === "delivered" ||
6
29
  event.nextAttemptAt === null ||
7
30
  event.nextAttemptAt === undefined ||
8
31
  event.nextAttemptAt <= new Date()) &&
9
32
  (event.status === "pending" || event.deliveredToTerminalId === ownerTerminalId) &&
10
- event.agentId !== null &&
11
- agent !== undefined &&
33
+ (failed || event.agentId !== null) &&
12
34
  event.type !== "agent.status.changed" &&
13
35
  !(event.type === "agent.idle" && asRecord(event.payload).from !== "working") &&
14
- !(isInteractivePiAgent(agent) && event.type === "agent.idle") &&
15
- agent.paneId === event.paneId &&
16
- (event.paneGeneration === null || agent.paneGeneration === event.paneGeneration) &&
17
- agent.workspaceId === scope.workspaceId &&
18
36
  event.workspaceId === scope.workspaceId &&
19
37
  event.herdrSessionName === scope.herdrSessionName &&
20
38
  event.terminalId !== null &&
21
- event.terminalId !== ownerTerminalId);
39
+ event.terminalId !== ownerTerminalId &&
40
+ (failed ||
41
+ (agent !== undefined &&
42
+ !(isInteractivePiAgent(agent) && event.type === "agent.idle") &&
43
+ !(agent.agent !== "pi" &&
44
+ (event.type === "agent.idle" || event.type === "agent.done") &&
45
+ !hasNonEmptyAssistantMessage(event.compactHistory)) &&
46
+ agent.paneId === event.paneId &&
47
+ (event.paneGeneration === null || agent.paneGeneration === event.paneGeneration) &&
48
+ agent.workspaceId === scope.workspaceId)));
22
49
  }
23
50
  function asRecord(value) {
24
51
  return value !== null && typeof value === "object" && !Array.isArray(value)
@@ -27,8 +54,39 @@ function asRecord(value) {
27
54
  }
28
55
  export class AgentEventStore {
29
56
  #sqlite;
57
+ #lastPersistedLogicalNowMs;
58
+ #logicalNowMs;
30
59
  constructor(sqlite) {
31
60
  this.#sqlite = sqlite;
61
+ const row = this.#sqlite
62
+ .prepare("select value from daemon_meta where key = ?")
63
+ .get(LOGICAL_CLOCK_META_KEY);
64
+ const persisted = row ? Number(row.value) : 0;
65
+ this.#logicalNowMs = Number.isFinite(persisted) && persisted > 0 ? persisted : 0;
66
+ this.#lastPersistedLogicalNowMs = this.#logicalNowMs;
67
+ }
68
+ /**
69
+ * Monotonic logical clock: never goes backwards, even when the wall clock
70
+ * is rolled back. The in-memory value is seeded from daemon_meta on
71
+ * construction and advanced to the wall clock when the wall clock is ahead.
72
+ * Persistence is throttled so read-only queries do not write+fsync every
73
+ * call; on crash the persisted value is only ever stale (never ahead of the
74
+ * last persisted value), so the anti-rollback invariant holds across
75
+ * restarts.
76
+ */
77
+ #now() {
78
+ const wallClock = Date.now();
79
+ if (wallClock <= this.#logicalNowMs)
80
+ return this.#logicalNowMs;
81
+ this.#logicalNowMs = wallClock;
82
+ if (this.#logicalNowMs - this.#lastPersistedLogicalNowMs >= LOGICAL_CLOCK_PERSIST_INTERVAL_MS) {
83
+ this.#lastPersistedLogicalNowMs = this.#logicalNowMs;
84
+ this.#sqlite
85
+ .prepare(`insert into daemon_meta (key, value) values (?, ?)
86
+ on conflict(key) do update set value = excluded.value`)
87
+ .run(LOGICAL_CLOCK_META_KEY, String(this.#logicalNowMs));
88
+ }
89
+ return this.#logicalNowMs;
32
90
  }
33
91
  append(input) {
34
92
  const existing = input.idempotencyKey
@@ -42,7 +100,7 @@ export class AgentEventStore {
42
100
  .prepare(`insert into agent_events
43
101
  (herdr_session_name, agent_id, pane_id, pane_generation, workspace_id, terminal_id, type, payload_json, compact_history_json, idempotency_key, deliverable, status, delivery_attempts, created_at)
44
102
  values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, 'pending', 0, ?)`)
45
- .run(input.herdrSessionName, input.agentId ?? null, input.paneId ?? null, input.paneGeneration ?? null, input.workspaceId ?? null, input.terminalId ?? null, input.type, JSON.stringify(input.payload), input.compactHistory ? JSON.stringify(input.compactHistory) : null, input.idempotencyKey ?? null, Date.now());
103
+ .run(input.herdrSessionName, input.agentId ?? null, input.paneId ?? null, input.paneGeneration ?? null, input.workspaceId ?? null, input.terminalId ?? null, input.type, JSON.stringify(input.payload), input.compactHistory ? JSON.stringify(input.compactHistory) : null, input.idempotencyKey ?? null, this.#now());
46
104
  return this.get(Number(result.lastInsertRowid));
47
105
  }
48
106
  invalidatePane(input) {
@@ -68,6 +126,16 @@ export class AgentEventStore {
68
126
  deleteInvalidated() {
69
127
  return Number(this.#sqlite.prepare("delete from agent_events where status = 'invalidated'").run().changes);
70
128
  }
129
+ /**
130
+ * Physically removes terminal events (acked/failed) older than the given age.
131
+ * These statuses are never redelivered or reconciled, so a periodic TTL bounds
132
+ * the table's growth without touching pending/delivered/invalidated rows.
133
+ */
134
+ deleteSettledOlderThan(ageMs) {
135
+ return Number(this.#sqlite
136
+ .prepare(`delete from agent_events where status in ('acked', 'failed') and created_at < ?`)
137
+ .run(Date.now() - ageMs).changes);
138
+ }
71
139
  ackSelfOwned(input) {
72
140
  return Number(this.#sqlite
73
141
  .prepare(`update agent_events set status = 'acked', deliverable = 0
@@ -88,16 +156,35 @@ export class AgentEventStore {
88
156
  .get(agentId, herdrSessionName);
89
157
  return row ? mapAgentEvent(row) : undefined;
90
158
  }
159
+ hasTerminalEventAfter(agentId, herdrSessionName, afterId) {
160
+ const row = this.#sqlite
161
+ .prepare(`select 1 from agent_events
162
+ where agent_id = ? and herdr_session_name = ? and id > ?
163
+ and type in ('agent.idle', 'agent.done', 'agent.blocked')
164
+ limit 1`)
165
+ .get(agentId, herdrSessionName, afterId);
166
+ return Boolean(row);
167
+ }
168
+ latestTerminalEvent(agentId, herdrSessionName) {
169
+ const row = this.#sqlite
170
+ .prepare(`select * from agent_events
171
+ where agent_id = ? and herdr_session_name = ?
172
+ and type in ('agent.idle', 'agent.done', 'agent.blocked')
173
+ order by id desc limit 1`)
174
+ .get(agentId, herdrSessionName);
175
+ return row ? mapAgentEvent(row) : undefined;
176
+ }
91
177
  listAfter(input) {
92
178
  const clauses = [
93
179
  "id > ?",
94
- "((status = 'pending' and (next_attempt_at is null or next_attempt_at <= ?)) or (status = 'delivered' and delivered_to_terminal_id = ? and id > ?))",
180
+ "((status = 'pending' and (next_attempt_at is null or next_attempt_at <= ?)) or (status = 'delivered' and delivered_to_terminal_id = ? and id > ? and last_attempt_at >= ?))",
95
181
  ];
96
182
  const params = [
97
183
  input.afterEventId ?? 0,
98
- Date.now(),
184
+ this.#now(),
99
185
  input.ownerTerminalId ?? null,
100
186
  input.afterEventId ?? 0,
187
+ this.#now() - REDELIVERY_FRESHNESS_MS,
101
188
  ];
102
189
  if (input.herdrSessionName) {
103
190
  clauses.push("herdr_session_name = ?");
@@ -128,15 +215,16 @@ export class AgentEventStore {
128
215
  for (let page = 0; page < 50; page += 1) {
129
216
  const params = [
130
217
  afterEventId,
131
- Date.now(),
218
+ this.#now(),
132
219
  input.ownerTerminalId,
220
+ this.#now() - REDELIVERY_FRESHNESS_MS,
133
221
  input.herdrSessionName,
134
222
  input.workspaceId,
135
223
  input.ownerTerminalId,
136
224
  ];
137
225
  const rows = this.#sqlite
138
226
  .prepare(`select * from agent_events
139
- where id > ? and ((status = 'pending' and (next_attempt_at is null or next_attempt_at <= ?)) or (status = 'delivered' and delivered_to_terminal_id = ?)) and herdr_session_name = ? and workspace_id = ?
227
+ where id > ? and ((status = 'pending' and (next_attempt_at is null or next_attempt_at <= ?)) or (status = 'delivered' and delivered_to_terminal_id = ? and last_attempt_at >= ?)) and herdr_session_name = ? and workspace_id = ?
140
228
  and terminal_id is not null and terminal_id != ? and agent_id is not null
141
229
  ${agentFilter}
142
230
  order by id asc limit 1000`)
@@ -158,14 +246,14 @@ export class AgentEventStore {
158
246
  }
159
247
  reservePending(terminalId, limit = 100, ids) {
160
248
  return this.#transaction(() => {
161
- const now = Date.now();
249
+ const now = this.#now();
162
250
  const idClause = ids && ids.length > 0 ? `and id in (${ids.map(() => "?").join(",")})` : "";
163
- const params = [now, terminalId];
251
+ const params = [now, terminalId, now - REDELIVERY_FRESHNESS_MS];
164
252
  if (ids && ids.length > 0)
165
253
  params.push(...ids);
166
254
  params.push(limit);
167
255
  const rows = this.#sqlite
168
- .prepare(`select * from agent_events where ((status = 'pending' and (next_attempt_at is null or next_attempt_at <= ?)) or (status = 'delivered' and delivered_to_terminal_id = ?)) ${idClause} order by id asc limit ?`)
256
+ .prepare(`select * from agent_events where ((status = 'pending' and (next_attempt_at is null or next_attempt_at <= ?)) or (status = 'delivered' and delivered_to_terminal_id = ? and last_attempt_at >= ?)) ${idClause} order by id asc limit ?`)
169
257
  .all(...params);
170
258
  for (const row of rows) {
171
259
  this.#sqlite
@@ -185,18 +273,61 @@ export class AgentEventStore {
185
273
  }
186
274
  reclaimDelivered(timeoutMs) {
187
275
  return this.#transaction(() => {
188
- const result = this.#sqlite
189
- .prepare(`update agent_events set status = case when delivery_attempts >= 10 then 'failed' else 'pending' end, deliverable = case when delivery_attempts >= 10 then 0 else 1 end, last_failure_code = case when delivery_attempts >= 10 then 'DELIVERY_ATTEMPTS_EXCEEDED' else last_failure_code end, delivered_to_terminal_id = null, next_attempt_at = null where status = 'delivered' and last_attempt_at < ?
276
+ const cutoff = this.#now() - timeoutMs;
277
+ // The delivered event's own agent row (matched by pane) is the pane-open
278
+ // guard: it decides whether branch (a) and branch (b) apply.
279
+ const agentPaneOpen = `exists (
280
+ select 1 from agents
281
+ where agents.id = agent_events.agent_id
282
+ and agents.herdr_session_name = agent_events.herdr_session_name
283
+ and agents.workspace_id = agent_events.workspace_id
284
+ and agents.pane_id = agent_events.pane_id
285
+ )`;
286
+ // Branch (b): the agent pane is closed/retired, so the delivered event is
287
+ // invalidated instead of being reclaimed and redelivered.
288
+ const invalidated = this.#sqlite
289
+ .prepare(`update agent_events
290
+ set deliverable = 0, status = 'invalidated', invalidated_reason = 'PANE_CLOSED_RECLAIM'
291
+ where status = 'delivered' and last_attempt_at < ? and not ${agentPaneOpen}`)
292
+ .run(cutoff).changes;
293
+ // Branch (c): the pane is still open but the delivery terminal no longer
294
+ // holds the orchestrator scope (owner_terminal_id != delivered_to_terminal_id
295
+ // or no owner), so reclaim immediately without waiting for last_attempt_at
296
+ // timeout. If the scope is still owned by the delivery terminal (branch a),
297
+ // the event remains in-flight with the owner.
298
+ const reclaimWhere = `status = 'delivered'
299
+ and ${agentPaneOpen}
190
300
  and not exists (
191
- select 1 from agents
192
- inner join herdr_sessions on herdr_sessions.name = agents.herdr_session_name
193
- where herdr_sessions.running = 1
194
- and agents.herdr_session_name = agent_events.herdr_session_name
195
- and agents.terminal_id = agent_events.delivered_to_terminal_id
196
- and agents.agent_status = 'working'
197
- )`)
198
- .run(Date.now() - timeoutMs);
199
- return Number(result.changes);
301
+ select 1 from agent_orchestrator_scopes
302
+ where agent_orchestrator_scopes.herdr_session_name = agent_events.herdr_session_name
303
+ and agent_orchestrator_scopes.workspace_id = agent_events.workspace_id
304
+ and agent_orchestrator_scopes.owner_terminal_id = agent_events.delivered_to_terminal_id
305
+ )`;
306
+ const exceeded = this.#sqlite
307
+ .prepare(`select id, agent_id, herdr_session_name, workspace_id, delivery_attempts
308
+ from agent_events
309
+ where ${reclaimWhere} and delivery_attempts >= 10`)
310
+ .all();
311
+ const reclaimed = this.#sqlite
312
+ .prepare(`update agent_events
313
+ set status = case when delivery_attempts >= 10 then 'failed' else 'pending' end,
314
+ deliverable = case when delivery_attempts >= 10 then 0 else 1 end,
315
+ last_failure_code = case when delivery_attempts >= 10 then 'DELIVERY_ATTEMPTS_EXCEEDED' else last_failure_code end,
316
+ delivered_to_terminal_id = null,
317
+ next_attempt_at = null
318
+ where ${reclaimWhere}`)
319
+ .run().changes;
320
+ for (const row of exceeded) {
321
+ console.error("Herdsman agent event delivery attempts exceeded", {
322
+ eventId: row.id,
323
+ agentId: row.agent_id,
324
+ herdrSessionName: row.herdr_session_name,
325
+ workspaceId: row.workspace_id,
326
+ deliveryAttempts: row.delivery_attempts,
327
+ lastFailureCode: "DELIVERY_ATTEMPTS_EXCEEDED",
328
+ });
329
+ }
330
+ return Number(invalidated) + Number(reclaimed);
200
331
  });
201
332
  }
202
333
  markAcked(id, scope) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-events.js","sourceRoot":"","sources":["../../../src/db/agent-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-events.js","sourceRoot":"","sources":["../../../src/db/agent-events.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,14 @@ export declare class AgentOrchestratorScopeStore {
18
18
  listOwned(): AgentOrchestratorState[];
19
19
  listOwnedForSession(herdrSessionName: string): AgentOrchestratorState[];
20
20
  listOwnedScopes(): AgentOrchestratorState[];
21
+ /**
22
+ * Physically removes released (ownerless) scope rows whose last update is older
23
+ * than the given age. Owner release leaves the row behind with
24
+ * owner_pane_id/owner_terminal_id null, so this bounds the table's growth while
25
+ * never touching rows that still have an owner (active scopes) or rows that
26
+ * were released recently enough to be reclaimed.
27
+ */
28
+ purgeReleasedOlderThan(ageMs: number): number;
21
29
  releaseIfStaleOwner(input: {
22
30
  herdrSessionName: string;
23
31
  workspaceId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-orchestrator-scopes.d.ts","sourceRoot":"","sources":["../../../src/db/agent-orchestrator-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEvF,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAEnD,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,GAAG;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAYF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAEF,qBAAa,2BAA2B;;gBAG1B,MAAM,EAAE,YAAY;IAIhC,GAAG,CAAC,KAAK,EAAE,yBAAyB,GAAG,sBAAsB,GAAG,SAAS;IAKzE,SAAS,IAAI,sBAAsB,EAAE;IAWrC,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAUvE,eAAe,IAAI,sBAAsB,EAAE;IAO3C,mBAAmB,CAAC,KAAK,EAAE;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B,GAAG,OAAO;IAyBX,KAAK,CAAC,KAAK,EAAE,sBAAsB,GAAG,WAAW;IAIjD,sBAAsB,CACpB,KAAK,EAAE,yBAAyB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACxE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAC;KAC9C;IAsBD,cAAc,CAAC,KAAK,EAAE,yBAAyB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG;QACzE,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAC;KAC9C;IAqBD,SAAS,CAAC,KAAK,EAAE;QACf,IAAI,EAAE,yBAAyB,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,yBAAyB,CAAC;KAC/B,GAAG,WAAW,EAAE;IA8BjB,GAAG,CACD,KAAK,EAAE,yBAAyB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACzE,sBAAsB;CA2F1B"}
1
+ {"version":3,"file":"agent-orchestrator-scopes.d.ts","sourceRoot":"","sources":["../../../src/db/agent-orchestrator-scopes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEvF,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAEnD,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,GAAG;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAYF,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,sBAAsB,CAAC;IAChC,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAEF,qBAAa,2BAA2B;;gBAG1B,MAAM,EAAE,YAAY;IAIhC,GAAG,CAAC,KAAK,EAAE,yBAAyB,GAAG,sBAAsB,GAAG,SAAS;IAKzE,SAAS,IAAI,sBAAsB,EAAE;IAWrC,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAUvE,eAAe,IAAI,sBAAsB,EAAE;IAO3C;;;;;;OAMG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAW7C,mBAAmB,CAAC,KAAK,EAAE;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B,GAAG,OAAO;IAyBX,KAAK,CAAC,KAAK,EAAE,sBAAsB,GAAG,WAAW;IAIjD,sBAAsB,CACpB,KAAK,EAAE,yBAAyB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACxE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAC;KAC9C;IAsBD,cAAc,CAAC,KAAK,EAAE,yBAAyB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG;QACzE,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,EAAE,sBAAsB,GAAG,SAAS,CAAC;KAC9C;IAqBD,SAAS,CAAC,KAAK,EAAE;QACf,IAAI,EAAE,yBAAyB,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,yBAAyB,CAAC;KAC/B,GAAG,WAAW,EAAE;IA8BjB,GAAG,CACD,KAAK,EAAE,yBAAyB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GACzE,sBAAsB;CA2F1B"}
@@ -28,6 +28,19 @@ export class AgentOrchestratorScopeStore {
28
28
  .all();
29
29
  return rows.map(mapScope);
30
30
  }
31
+ /**
32
+ * Physically removes released (ownerless) scope rows whose last update is older
33
+ * than the given age. Owner release leaves the row behind with
34
+ * owner_pane_id/owner_terminal_id null, so this bounds the table's growth while
35
+ * never touching rows that still have an owner (active scopes) or rows that
36
+ * were released recently enough to be reclaimed.
37
+ */
38
+ purgeReleasedOlderThan(ageMs) {
39
+ return Number(this.#sqlite
40
+ .prepare(`delete from agent_orchestrator_scopes
41
+ where owner_terminal_id is null and updated_at < ?`)
42
+ .run(Date.now() - ageMs).changes);
43
+ }
31
44
  releaseIfStaleOwner(input) {
32
45
  return this.#transaction(() => {
33
46
  const row = this.#getRow(input);
@@ -1 +1 @@
1
- {"version":3,"file":"agent-orchestrator-scopes.js","sourceRoot":"","sources":["../../../src/db/agent-orchestrator-scopes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-orchestrator-scopes.js","sourceRoot":"","sources":["../../../src/db/agent-orchestrator-scopes.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,50 @@ export declare class AgentStore {
14
14
  paneId: string;
15
15
  paneGeneration?: string | null;
16
16
  }): AgentIndexRecord[];
17
+ /**
18
+ * Records a persistent "pane closed" tombstone so that any later path
19
+ * (stale refresh snapshots, late status events) can tell the pane has been
20
+ * retired and must not be resurrected.
21
+ */
22
+ markPaneClosed(input: {
23
+ herdrSessionName: string;
24
+ paneId: string;
25
+ paneGeneration?: string | null;
26
+ }): void;
27
+ /**
28
+ * True when the pane is recorded as closed. A generation-scoped tombstone
29
+ * matches only the same generation; a legacy tombstone (no generation, i.e.
30
+ * LEGACY_CLOSE_WITHOUT_GENERATION) matches any generation, mirroring
31
+ * AgentEventStore.invalidatePane legacy semantics.
32
+ */
33
+ isPaneClosed(input: {
34
+ herdrSessionName: string;
35
+ paneId: string;
36
+ paneGeneration?: string | null;
37
+ }): boolean;
38
+ /**
39
+ * Drops the legacy (generation-less) tombstone for a pane. A live pane that
40
+ * reports a pane_generation proves the pane is open again, so an earlier
41
+ * LEGACY_CLOSE_WITHOUT_GENERATION tombstone must not keep blocking it
42
+ * (active generation beats a generation-less close). Generation-scoped
43
+ * tombstones are untouched.
44
+ */
45
+ clearLegacyPaneTombstone(input: {
46
+ herdrSessionName: string;
47
+ paneId: string;
48
+ }): void;
49
+ /**
50
+ * True when a generation-scoped tombstone exactly matching paneGeneration
51
+ * exists. Unlike isPaneClosed this ignores legacy (generation-less)
52
+ * tombstones, so callers can tell "closed for this generation" apart from
53
+ * "closed without a generation" (which a live generation-carrying agent
54
+ * overrides).
55
+ */
56
+ hasGenerationScopedTombstone(input: {
57
+ herdrSessionName: string;
58
+ paneId: string;
59
+ paneGeneration: string;
60
+ }): boolean;
17
61
  setSessionRefByTerminal(input: {
18
62
  agentSession: AgentSessionRef;
19
63
  herdrSessionName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/db/agents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EAEjB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAwBrD,qBAAa,UAAU;;gBAIT,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe;IAK9D,iBAAiB,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,GAAG,gBAAgB,EAAE;IAwItB,UAAU,CAAC,KAAK,EAAE;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,GAAG,gBAAgB,EAAE;IAwBtB,uBAAuB,CAAC,KAAK,EAAE;QAC7B,YAAY,EAAE,eAAe,CAAC;QAC9B,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,gBAAgB,GAAG,SAAS;IAkBhC,YAAY,CAAC,KAAK,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,GAAG,gBAAgB,GAAG,SAAS;IAYhC,IAAI,CAAC,KAAK,GAAE,eAAoB,GAAG,gBAAgB,EAAE;IA6BrD,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIjE,UAAU,CAAC,KAAK,EAAE;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,GAAG,gBAAgB,GAAG,SAAS;IAchC,cAAc,CAAC,KAAK,EAAE;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,gBAAgB,GAAG,SAAS;IAOhC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB;IAQjC,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB;CA2BxE;AA6BD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAyBrE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB7D"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/db/agents.ts"],"names":[],"mappings":"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"}
@@ -102,6 +102,17 @@ export class AgentStore {
102
102
  .run(id, input.herdrSessionName, ...values, now);
103
103
  }
104
104
  }
105
+ // A live snapshot that carries a pane_generation proves the pane is open
106
+ // again: drop any generation-less (legacy) close tombstone for that pane
107
+ // so it can no longer block this pane. Generation-scoped tombstones stay.
108
+ for (const { snapshot } of matched) {
109
+ if (paneGeneration(snapshot.agent)) {
110
+ this.clearLegacyPaneTombstone({
111
+ herdrSessionName: input.herdrSessionName,
112
+ paneId: snapshot.paneId,
113
+ });
114
+ }
115
+ }
105
116
  const removedIds = existing
106
117
  .map((agent) => agent.id)
107
118
  .filter((id) => !retainedIds.includes(id));
@@ -134,6 +145,7 @@ export class AgentStore {
134
145
  }
135
146
  retirePane(input) {
136
147
  return this.#transaction(() => {
148
+ this.markPaneClosed(input);
137
149
  const generationClause = input.paneGeneration == null ? "" : " and pane_generation = ?";
138
150
  const generationParams = input.paneGeneration == null ? [] : [input.paneGeneration];
139
151
  const agents = this.#sqlite
@@ -152,6 +164,65 @@ export class AgentStore {
152
164
  return agents.map(mapAgent);
153
165
  });
154
166
  }
167
+ /**
168
+ * Records a persistent "pane closed" tombstone so that any later path
169
+ * (stale refresh snapshots, late status events) can tell the pane has been
170
+ * retired and must not be resurrected.
171
+ */
172
+ markPaneClosed(input) {
173
+ this.#sqlite
174
+ .prepare(`delete from agent_pane_tombstones
175
+ where herdr_session_name = ? and pane_id = ? and pane_generation is ?`)
176
+ .run(input.herdrSessionName, input.paneId, input.paneGeneration ?? null);
177
+ this.#sqlite
178
+ .prepare(`insert into agent_pane_tombstones
179
+ (herdr_session_name, pane_id, pane_generation, closed_at)
180
+ values (?, ?, ?, ?)`)
181
+ .run(input.herdrSessionName, input.paneId, input.paneGeneration ?? null, Date.now());
182
+ }
183
+ /**
184
+ * True when the pane is recorded as closed. A generation-scoped tombstone
185
+ * matches only the same generation; a legacy tombstone (no generation, i.e.
186
+ * LEGACY_CLOSE_WITHOUT_GENERATION) matches any generation, mirroring
187
+ * AgentEventStore.invalidatePane legacy semantics.
188
+ */
189
+ isPaneClosed(input) {
190
+ const row = this.#sqlite
191
+ .prepare(`select 1 from agent_pane_tombstones
192
+ where herdr_session_name = ? and pane_id = ?
193
+ and (pane_generation is ? or pane_generation is null)
194
+ limit 1`)
195
+ .get(input.herdrSessionName, input.paneId, input.paneGeneration ?? null);
196
+ return row !== undefined;
197
+ }
198
+ /**
199
+ * Drops the legacy (generation-less) tombstone for a pane. A live pane that
200
+ * reports a pane_generation proves the pane is open again, so an earlier
201
+ * LEGACY_CLOSE_WITHOUT_GENERATION tombstone must not keep blocking it
202
+ * (active generation beats a generation-less close). Generation-scoped
203
+ * tombstones are untouched.
204
+ */
205
+ clearLegacyPaneTombstone(input) {
206
+ this.#sqlite
207
+ .prepare(`delete from agent_pane_tombstones
208
+ where herdr_session_name = ? and pane_id = ? and pane_generation is null`)
209
+ .run(input.herdrSessionName, input.paneId);
210
+ }
211
+ /**
212
+ * True when a generation-scoped tombstone exactly matching paneGeneration
213
+ * exists. Unlike isPaneClosed this ignores legacy (generation-less)
214
+ * tombstones, so callers can tell "closed for this generation" apart from
215
+ * "closed without a generation" (which a live generation-carrying agent
216
+ * overrides).
217
+ */
218
+ hasGenerationScopedTombstone(input) {
219
+ const row = this.#sqlite
220
+ .prepare(`select 1 from agent_pane_tombstones
221
+ where herdr_session_name = ? and pane_id = ? and pane_generation = ?
222
+ limit 1`)
223
+ .get(input.herdrSessionName, input.paneId, input.paneGeneration);
224
+ return row !== undefined;
225
+ }
155
226
  setSessionRefByTerminal(input) {
156
227
  const current = this.findByTerminal(input);
157
228
  if (!current)