agents-relay 1.0.18 → 1.0.19

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/dist/dashboard.js CHANGED
@@ -354,6 +354,12 @@ export function serveDashboard(store, port = 8787, bus, refreshMs = 300000, jobI
354
354
  throw new Error(`Managed job ${requestedJobId ?? ''} not found`);
355
355
  return { id: jobId, json: JSON.stringify(await store.load(jobId)) };
356
356
  };
357
+ const broadcastSnapshots = async (jobIds = []) => {
358
+ const snapshots = await Promise.all((jobIds.length > 0 ? jobIds : [undefined]).map(requestedJobId => snapshot(requestedJobId)));
359
+ for (const value of snapshots)
360
+ for (const client of clients)
361
+ client.write(`data: ${value.json}\n\n`);
362
+ };
357
363
  const usage = async () => {
358
364
  if (!usageRegistry)
359
365
  throw new Error('Account usage telemetry is unavailable');
@@ -394,7 +400,13 @@ export function serveDashboard(store, port = 8787, bus, refreshMs = 300000, jobI
394
400
  }
395
401
  res.writeHead(202);
396
402
  res.end('Accepted');
397
- queueMicrotask(() => { void webhook.wake(event); });
403
+ queueMicrotask(() => {
404
+ void (webhook.refresh ? webhook.refresh(event) : Promise.resolve([]))
405
+ .then(jobIds => broadcastSnapshots(jobIds))
406
+ .catch(error => process.stderr.write(`warning: webhook dashboard snapshot unavailable: ${error instanceof Error ? error.message : String(error)}\n`))
407
+ .then(() => webhook.wake(event))
408
+ .catch(error => process.stderr.write(`warning: webhook wake unavailable: ${error instanceof Error ? error.message : String(error)}\n`));
409
+ });
398
410
  return;
399
411
  }
400
412
  if (new URL(req.url ?? '/', 'http://127.0.0.1').pathname === '/api/jobs') {
package/dist/relayd.js CHANGED
@@ -121,16 +121,22 @@ export async function runDaemon(argv) {
121
121
  const webhook = secret ? {
122
122
  secret,
123
123
  repositories: new Set(repositories),
124
+ refresh: async (event) => {
125
+ if (!event.repository || !event.pullRequest)
126
+ return [];
127
+ const refreshed = await refreshPullRequest(event.repository, event.pullRequest);
128
+ return refreshed.map(item => item.job.id);
129
+ },
124
130
  wake: async (event) => {
125
131
  if (!event.repository || !event.pullRequest)
126
132
  return;
127
133
  try {
128
- const refreshed = await refreshPullRequest(event.repository, event.pullRequest);
134
+ const refreshed = cachedOverviews.filter(item => item.job.repository === event.repository && item.job.prNumber === event.pullRequest);
129
135
  for (const item of refreshed)
130
136
  await pool.webhookWake(bus, item.job, event.deliveryId, event.event, event.action);
131
137
  }
132
138
  catch (error) {
133
- process.stderr.write(`warning: webhook PR refresh unavailable: ${error instanceof Error ? error.message : String(error)}\n`);
139
+ process.stderr.write(`warning: webhook wake unavailable: ${error instanceof Error ? error.message : String(error)}\n`);
134
140
  }
135
141
  }
136
142
  } : undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agents-relay",
3
- "version": "1.0.18",
3
+ "version": "1.0.19",
4
4
  "description": "Durable async agent jobs coordinated through GitHub pull requests",
5
5
  "type": "module",
6
6
  "bin": {