paseo-follow-up 1.3.0-beta.0 → 1.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -109,7 +109,7 @@ The Follow-up sidebar row (and ⌘K → **Follow-up: Home**) opens **Home**: eve
109
109
  Install the beta:
110
110
 
111
111
  ```sh
112
- paseo plugin update follow-through --version 1.3.0-beta.0
112
+ paseo plugin update follow-through --version 1.3.0-beta.1
113
113
  # or, for a fresh install:
114
114
  paseo plugin install npm:paseo-follow-up@beta
115
115
  ```
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "paseo-follow-up",
3
3
  "private": false,
4
- "version": "1.3.0-beta.0",
4
+ "version": "1.3.0-beta.1",
5
5
  "description": "Follow every workspace PR stack in Paseo, answer agent questions, batch repairs for the main agent, and see what needs you.",
6
6
  "type": "module",
7
7
  "files": [
package/server/inbox.ts CHANGED
@@ -189,6 +189,11 @@ export class Inbox {
189
189
 
190
190
  /** The current turn per agent, from turn starts, so a needs_you call is matched to the turn it was made in. */
191
191
  private turns = new Map<string, { turnId: string | null; at: number }>();
192
+ private async previousBriefAt(agentId: string): Promise<number | null> {
193
+ const at = (await this.store.snapshot()).entries[agentId]?.brief?.at;
194
+ const ms = at ? Date.parse(at) : NaN;
195
+ return Number.isFinite(ms) ? ms + 1 : null;
196
+ }
192
197
  currentTurn(agentId: string): { turnId: string | null; at: number } | null { return this.turns.get(agentId) ?? null; }
193
198
 
194
199
  /** The sources every brief has: the agent's needs_you for this turn and its PR state. */
@@ -256,7 +261,8 @@ export class Inbox {
256
261
  }
257
262
  return;
258
263
  }
259
- const since = this.turns.get(agent.id)?.at ?? null;
264
+ // After a plugin reload mid-turn the turn start is lost; anything stated since the previous brief belongs to this turn.
265
+ const since = this.turns.get(agent.id)?.at ?? await this.previousBriefAt(root.rootId);
260
266
  this.turns.delete(agent.id);
261
267
  const stated = await this.sources(agent.id, since, turnId);
262
268
  if (outcome.kind === "completed") {