pi-long-task 0.3.16 → 0.3.17
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 +7 -0
- package/package.json +1 -1
- package/src/coordinator.ts +11 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Notable changes to Pi Long Task are recorded here. This project follows semantic versioning.
|
|
4
4
|
|
|
5
|
+
## 0.3.17 - 2026-08-26
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Prevent repeated `Finished:` and `Failed:` prefixes from accumulating in the sidebar's active status across tool events.
|
|
10
|
+
- Reset the active status at every tool start so a completed tool's status cannot leak into the next tool.
|
|
11
|
+
|
|
5
12
|
## 0.3.16 - 2026-08-20
|
|
6
13
|
|
|
7
14
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-long-task",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Pi coding agent extension that breaks large coding requests into tracked TODOs and runs them in isolated AI worker sessions. A long-running task runner and subagent orchestrator for Pi, with a live TUI progress sidebar, retries, goal loops, and optional per-task git commits.",
|
|
6
6
|
"keywords": [
|
package/src/coordinator.ts
CHANGED
|
@@ -1053,11 +1053,15 @@ function emitWorkerEventProgress(
|
|
|
1053
1053
|
|
|
1054
1054
|
const action = event.type === "tool_execution_start" ? "started" : event.isError ? "failed" : "finished";
|
|
1055
1055
|
if (event.type === "tool_execution_end") {
|
|
1056
|
-
const previousActivity =
|
|
1056
|
+
const previousActivity = stripToolOutcomePrefix(
|
|
1057
|
+
runtime.workerActivityByWorker.get(worker) ?? `Running ${event.toolName}`,
|
|
1058
|
+
);
|
|
1057
1059
|
activeStatus = event.isError ? `Failed: ${previousActivity}` : `Finished: ${previousActivity}`;
|
|
1058
1060
|
runtime.workerActivityByWorker.set(worker, activeStatus);
|
|
1059
|
-
} else
|
|
1060
|
-
|
|
1061
|
+
} else {
|
|
1062
|
+
// Every tool start begins a new activity. Keeping the previous tool's completed
|
|
1063
|
+
// status here causes each later tool end to prepend another "Finished:" label.
|
|
1064
|
+
activeStatus = event.activity ?? `Running ${event.toolName}`;
|
|
1061
1065
|
runtime.workerActivityByWorker.set(worker, activeStatus);
|
|
1062
1066
|
}
|
|
1063
1067
|
|
|
@@ -1080,6 +1084,10 @@ function emitWorkerEventProgress(
|
|
|
1080
1084
|
emitProgress(runtime, activeStatus, update);
|
|
1081
1085
|
}
|
|
1082
1086
|
|
|
1087
|
+
function stripToolOutcomePrefix(activity: string): string {
|
|
1088
|
+
return activity.replace(/^(?:(?:Finished|Failed):\s*)+/i, "");
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1083
1091
|
function activeStatusFromWorkerText(text: string): string {
|
|
1084
1092
|
const taskResultIndex = text.indexOf("TASK_RESULT:");
|
|
1085
1093
|
return (taskResultIndex >= 0 ? text.slice(0, taskResultIndex) : text).replace(/\s+/g, " ").trim();
|