pi-roundtable-coding 0.7.14 → 0.7.16
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 +5 -0
- package/package.json +2 -2
- package/src/coding-desk.ts +8 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.7.16] - 2026-10-04
|
|
6
|
+
|
|
7
|
+
- The worker's shell calls follow pi-roundtable 0.7.16's `shellHoldRule`: an `rm` whose operands all resolve inside the job's workspace, without being it, runs without a hold. Every `git push` stays held.
|
|
8
|
+
- A finished job frees its repository before its report is delivered, so the report turn can run `repo_change_report`, `repo_push` or the next `repo_task` there; `idle()` still waits for the delivery.
|
|
9
|
+
|
|
5
10
|
## [0.7.5] - 2026-10-03
|
|
6
11
|
|
|
7
12
|
- Add `workerBlockText`, `limits` and `diagnosticChars`; git, gh and worker error text and the report and held-action bounds can be raised or lifted by the host.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-roundtable-coding",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.16",
|
|
4
4
|
"description": "Repository shelves and owner-approved Pi coding workers for pi-roundtable",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@earendil-works/pi-ai": ">=1.0.0 <2",
|
|
45
45
|
"@biomejs/biome": "2.5.15",
|
|
46
46
|
"@types/bun": "1.4.2",
|
|
47
|
-
"pi-roundtable": "0.7.
|
|
47
|
+
"pi-roundtable": "0.7.16",
|
|
48
48
|
"typescript": "7.0.2"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/src/coding-desk.ts
CHANGED
|
@@ -99,6 +99,8 @@ function bounded(text: string, max: number): string {
|
|
|
99
99
|
/** One worker per repository, at most three per channel; results and jobs are in memory. */
|
|
100
100
|
export class CodingDesk {
|
|
101
101
|
readonly #options: CodingDeskOptions;
|
|
102
|
+
/** Every run until its report is delivered, for idle(). */
|
|
103
|
+
readonly #pending = new Set<Promise<void>>();
|
|
102
104
|
readonly #running = new Map<
|
|
103
105
|
number,
|
|
104
106
|
{ job: CodingJob; controller: AbortController; done?: Promise<void> }
|
|
@@ -129,7 +131,7 @@ export class CodingDesk {
|
|
|
129
131
|
throw new AgentError(`A coding worker is still using ${repo}.`);
|
|
130
132
|
}
|
|
131
133
|
async idle(): Promise<void> {
|
|
132
|
-
await Promise.all(
|
|
134
|
+
await Promise.all(this.#pending);
|
|
133
135
|
}
|
|
134
136
|
async stop(): Promise<void> {
|
|
135
137
|
this.#stopped = true;
|
|
@@ -183,6 +185,9 @@ export class CodingDesk {
|
|
|
183
185
|
);
|
|
184
186
|
})
|
|
185
187
|
.finally(() => this.#running.delete(job.id));
|
|
188
|
+
const done = run.done;
|
|
189
|
+
this.#pending.add(done);
|
|
190
|
+
void done.finally(() => this.#pending.delete(done));
|
|
186
191
|
return job;
|
|
187
192
|
}
|
|
188
193
|
async #run(
|
|
@@ -332,6 +337,8 @@ export class CodingDesk {
|
|
|
332
337
|
} catch {
|
|
333
338
|
this.#options.logger.warn({ job: job.id }, "Coding thread close failed.");
|
|
334
339
|
}
|
|
340
|
+
// The work is over: free the repository before the report turn, so that turn can ship it.
|
|
341
|
+
this.#running.delete(job.id);
|
|
335
342
|
await deliver(result);
|
|
336
343
|
}
|
|
337
344
|
}
|