pi-herdr-agents 2.0.3 → 2.0.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.
- package/CHANGELOG.md +8 -1
- package/package.json +1 -1
- package/pi-extension/subagents/index.ts +34 -15
package/CHANGELOG.md
CHANGED
|
@@ -7,11 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
9
9
|
|
|
10
|
-
## [v2.0.
|
|
10
|
+
## [v2.0.4](https://github.com/giuseppecrj/pi-herdr-agents/compare/v2.0.3...v2.0.4)
|
|
11
|
+
|
|
12
|
+
### Merged
|
|
13
|
+
|
|
14
|
+
- perf: batch persistent delivery ledger reads [`#58`](https://github.com/giuseppecrj/pi-herdr-agents/pull/58)
|
|
15
|
+
|
|
16
|
+
## [v2.0.3](https://github.com/giuseppecrj/pi-herdr-agents/compare/v2.0.2...v2.0.3) - 2026-09-21
|
|
11
17
|
|
|
12
18
|
### Commits
|
|
13
19
|
|
|
14
20
|
- fix: skip startup worktree inventory outside Herdr [`34800d7`](https://github.com/giuseppecrj/pi-herdr-agents/commit/34800d79464575063a61ad6f240cd49cc8acd730)
|
|
21
|
+
- chore: release v2.0.3 [`60888f2`](https://github.com/giuseppecrj/pi-herdr-agents/commit/60888f2dea48317257909abbcd0dd374ed861d77)
|
|
15
22
|
|
|
16
23
|
## [v2.0.2](https://github.com/giuseppecrj/pi-herdr-agents/compare/v2.0.1...v2.0.2) - 2026-09-19
|
|
17
24
|
|
package/package.json
CHANGED
|
@@ -2422,6 +2422,7 @@ export const __test__ = {
|
|
|
2422
2422
|
resolveUnexpectedErrorPresentation,
|
|
2423
2423
|
shouldAdvanceToFallback,
|
|
2424
2424
|
deliverPersistentTaskEvent,
|
|
2425
|
+
drainPersistentTaskEvents,
|
|
2425
2426
|
notifyPersistentCrash,
|
|
2426
2427
|
sendSubagentResult,
|
|
2427
2428
|
shouldRetainSubagentSurface,
|
|
@@ -2657,11 +2658,13 @@ function deliverPersistentTaskEvent(
|
|
|
2657
2658
|
running: RunningSubagent,
|
|
2658
2659
|
event: ReturnType<typeof readPersistentTaskEvents>[number],
|
|
2659
2660
|
api: Pick<ExtensionAPI, "sendMessage">,
|
|
2661
|
+
ledgerSnapshot?: ReturnType<typeof readPersistentDeliveryLedger>,
|
|
2660
2662
|
): void {
|
|
2661
2663
|
if (!running.persistent || event.generation !== running.generationId) return;
|
|
2662
2664
|
const deliveryKey = `${running.id}:${event.type}:${event.task}`;
|
|
2663
2665
|
if (inFlightPersistentTaskDeliveries.has(deliveryKey)) return;
|
|
2664
|
-
const ledger =
|
|
2666
|
+
const ledger =
|
|
2667
|
+
ledgerSnapshot ?? readPersistentDeliveryLedger(running.sessionFile);
|
|
2665
2668
|
if (event.type === "help-request") {
|
|
2666
2669
|
if (
|
|
2667
2670
|
ledger.some(
|
|
@@ -2685,13 +2688,15 @@ function deliverPersistentTaskEvent(
|
|
|
2685
2688
|
},
|
|
2686
2689
|
{ triggerTurn: true, deliverAs: "steer" },
|
|
2687
2690
|
);
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2691
|
+
ledger.push(
|
|
2692
|
+
appendPersistentDeliveryLedger(running.sessionFile, {
|
|
2693
|
+
task: event.task,
|
|
2694
|
+
outcome: "help-requested",
|
|
2695
|
+
generation: running.generationId!,
|
|
2696
|
+
logicalId: running.logicalId!,
|
|
2697
|
+
policyHash: running.policyHash!,
|
|
2698
|
+
}),
|
|
2699
|
+
);
|
|
2695
2700
|
if (running.taskId === event.task) running.taskId = undefined;
|
|
2696
2701
|
} finally {
|
|
2697
2702
|
inFlightPersistentTaskDeliveries.delete(deliveryKey);
|
|
@@ -2724,13 +2729,15 @@ function deliverPersistentTaskEvent(
|
|
|
2724
2729
|
policyHash: running.policyHash!,
|
|
2725
2730
|
},
|
|
2726
2731
|
);
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2732
|
+
ledger.push(
|
|
2733
|
+
appendPersistentDeliveryLedger(running.sessionFile, {
|
|
2734
|
+
task: event.task,
|
|
2735
|
+
outcome: "delivered",
|
|
2736
|
+
generation: running.generationId!,
|
|
2737
|
+
logicalId: running.logicalId!,
|
|
2738
|
+
policyHash: running.policyHash!,
|
|
2739
|
+
}),
|
|
2740
|
+
);
|
|
2734
2741
|
running.tasksCompleted = completed;
|
|
2735
2742
|
if (running.taskId === event.task) running.taskId = undefined;
|
|
2736
2743
|
if (running.stopState === "pending")
|
|
@@ -2743,13 +2750,25 @@ function deliverPersistentTaskEvent(
|
|
|
2743
2750
|
function drainPersistentTaskEvents(
|
|
2744
2751
|
running: RunningSubagent,
|
|
2745
2752
|
api: Pick<ExtensionAPI, "sendMessage">,
|
|
2753
|
+
readLedger = readPersistentDeliveryLedger,
|
|
2746
2754
|
): void {
|
|
2747
2755
|
const events = readPersistentTaskEvents(running.sessionFile);
|
|
2756
|
+
let ledger: ReturnType<typeof readPersistentDeliveryLedger> | undefined;
|
|
2748
2757
|
for (const event of events.slice(running.observedTaskEvents ?? 0)) {
|
|
2758
|
+
if (!running.persistent || event.generation !== running.generationId)
|
|
2759
|
+
continue;
|
|
2760
|
+
if (
|
|
2761
|
+
inFlightPersistentTaskDeliveries.has(
|
|
2762
|
+
`${running.id}:${event.type}:${event.task}`,
|
|
2763
|
+
)
|
|
2764
|
+
)
|
|
2765
|
+
continue;
|
|
2766
|
+
ledger ??= readLedger(running.sessionFile);
|
|
2749
2767
|
deliverPersistentTaskEvent(
|
|
2750
2768
|
running,
|
|
2751
2769
|
event,
|
|
2752
2770
|
selectCompletionApi(api, runtime.pi),
|
|
2771
|
+
ledger,
|
|
2753
2772
|
);
|
|
2754
2773
|
}
|
|
2755
2774
|
running.observedTaskEvents = events.length;
|