pi-long-task 0.5.0 → 0.7.0
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 +40 -0
- package/README.md +153 -3
- package/package.json +1 -1
- package/src/coordinator.ts +861 -62
- package/src/goal_discovery.ts +2 -0
- package/src/goal_loop.ts +76 -0
- package/src/goal_orchestrator.ts +98 -1
- package/src/goal_review.ts +206 -15
- package/src/goal_todo_execution.ts +7 -0
- package/src/goal_todo_generation.ts +108 -13
- package/src/index.ts +15 -1
- package/src/network_failure.ts +574 -0
- package/src/network_recovery.ts +395 -0
- package/src/network_recovery_config.ts +89 -0
- package/src/planner_config.ts +214 -0
- package/src/planner_progress.ts +156 -0
- package/src/render.ts +38 -0
- package/src/session_guard.ts +120 -7
- package/src/todo_generator.ts +84 -7
- package/src/types.ts +68 -0
- package/src/worker_capabilities.ts +103 -0
- package/src/worker_config.ts +148 -7
- package/src/worker_session.ts +33 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
Notable changes to Pi Long Task are recorded here. This project follows semantic versioning.
|
|
4
4
|
|
|
5
|
+
## 0.7.0 - 2026-09-08
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Expose optional `todoTimeoutMs` and `todoGracefulShutdownMs` settings on both tools and their goal-loop plumbing, with friendly natural-language/global directives and structured-option precedence.
|
|
10
|
+
- Add deterministic adaptive TODO-planner budgets: a 5-minute base for up to four detected items, 30 seconds per additional item, and a 15-minute cap for explicit item counts, enumerated deliverables, or separately planned tasks.
|
|
11
|
+
- Report effective planner budgets, adaptive reasons, bounded elapsed/remaining updates, and grace-period entry consistently across TUI, CLI/headless progress, structured results, and run diagnostics.
|
|
12
|
+
- Warn when requests explicitly require Chrome/browser extensions or direct tools unavailable to isolated workers, constrain generated plans to available alternatives, and require blocked results when the exact capability is mandatory.
|
|
13
|
+
- Record whether partial planner output was observed on timeout or cancellation without exposing its content, and distinguish planner network-recovery lifecycle data from deadline failures.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Use `high` instead of `xhigh` as the planner-only default thinking level, while forwarding every explicit programmatic thinking override unchanged.
|
|
18
|
+
- Make creation and repair prompts concise and planning-only so planners preserve constraints without performing implementation, research, or creative deliverables.
|
|
19
|
+
- Continue observing a stopping planner during the configured grace period and accept only a safe, complete, valid TODO plan that settles there.
|
|
20
|
+
- Keep planner deadlines, grace periods, network outage recovery, and caller cancellation on distinct clocks and diagnostic paths. Network waits do not mutate the configured per-attempt planning budget, and cancellation is never reported as timeout.
|
|
21
|
+
|
|
22
|
+
### Compatibility
|
|
23
|
+
|
|
24
|
+
- Existing `pi_long_task`, `pi_goal_task`, `runCoordinator()`, and direct planner calls remain valid when the new options are omitted; defaults and result/schema additions are backward-compatible.
|
|
25
|
+
- Explicit timeout and grace values remain authoritative, including explicit `xhigh` planner thinking for programmatic callers. Existing worker, goal-discovery, reviewer, attempt, and network-recovery defaults are unchanged.
|
|
26
|
+
|
|
27
|
+
## 0.6.0 - 2026-09-05
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Add opt-in coordinator-level recovery after Pi exhausts its bounded provider retries, with configurable jittered backoff, a bounded five-minute outage window by default, and an indefinite wait-until-cancelled mode.
|
|
32
|
+
- Show `Waiting for connection…` lifecycle status with retry and outage timing across worker, TODO planning, steering, goal planning/discovery, and review operations.
|
|
33
|
+
- Classify transient transport, timeout, stream, overload, rate-limit, and retryable server failures while failing fast for authentication, authorization, billing, quota, invalid request/model, certificate, cancellation, and unknown failures.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- Preserve TODO identity, ordinary attempt counts, durable evidence, accepted steering, working-tree changes, goal-loop state, and cost accounting while network recovery is active.
|
|
38
|
+
- Exclude network-recovery time and retries from worker, planner, reviewer, goal-loop timeout and retry budgets; rotate interrupted sessions before safely resuming the same operation.
|
|
39
|
+
|
|
40
|
+
### Security and reliability
|
|
41
|
+
|
|
42
|
+
- Prevent blind replay of completed side-effectful worker actions by recording interruption evidence and requiring fresh continuation sessions to inspect durable state before acting.
|
|
43
|
+
- Keep cancellation immediate during backoff and retry execution, with exact-once cleanup of recovery timers, listeners, sessions, and status resources.
|
|
44
|
+
|
|
5
45
|
## 0.5.0 - 2026-08-31
|
|
6
46
|
|
|
7
47
|
### Added
|
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ Use it when a coding request is bigger than one focused interaction. Pi Long Tas
|
|
|
15
15
|
- **Take on bigger tasks:** split broad product, refactor, testing, or cleanup requests into smaller TODOs that Pi can complete one at a time.
|
|
16
16
|
- **Track progress visibly:** in Pi TUI, see the active TODO, inferred `**Status:**` subtasks, completed/failed/blocked counts, and remaining work in the Pi Long Task sidebar while the run is active.
|
|
17
17
|
- **Recover with retries:** tasks that do not report completion can be retried with context from previous attempts instead of losing the thread.
|
|
18
|
+
- **Wait through transient outages:** optionally pause after Pi exhausts its bounded provider retries, show connection-wait status, and safely resume the interrupted coordinator phase.
|
|
18
19
|
- **Commit safely when asked:** enable commits for completed task work, while generated run files and pre-existing dirty files are kept out of those commits.
|
|
19
20
|
- **Keep task artifacts:** every run writes a generated `TODO.md`, generated `TASK_RESULT.md`, attempt summaries, and final status under `tmp/pi-long-task/<run-id>/`.
|
|
20
21
|
- **Watch cost visibility:** worker spend is captured and surfaced in progress and final summaries when usage cost data is available.
|
|
@@ -289,6 +290,127 @@ await runCoordinator({
|
|
|
289
290
|
|
|
290
291
|
Explicit, complete `status: partial` results may continue in the same healthy, compatible, below-threshold session on the next attempt. All independent retries—including timeout, abort, cancellation, errors, invalid/incomplete results, and non-partial failures—start fresh. Existing retry limits and delays are unchanged. Setting `workerSessionReuse: false` (or the disabling directive) always isolates assignments.
|
|
291
292
|
|
|
293
|
+
### TODO planner budgets, grace, and thinking
|
|
294
|
+
|
|
295
|
+
TODO planning starts with a **5-minute** budget. When no timeout is configured, Pi Long Task deterministically extends that budget for requests containing an explicit item count, enumerated deliverables, or language requiring items to be planned separately. The first four detected items fit in the base budget; each additional item adds **30 seconds**, up to a **15-minute** maximum. For example, a request for 24 separately planned stories receives the capped 15-minute budget. This calculation uses textual scale signals rather than model judgment.
|
|
296
|
+
|
|
297
|
+
Set an exact budget and grace period in an explicit tool call when needed:
|
|
298
|
+
|
|
299
|
+
```text
|
|
300
|
+
Use pi_long_task with inputText "plan and implement the checkout migration" and commit false and todoTimeoutMs 720000 and todoGracefulShutdownMs 30000.
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
The tool schema uses whole milliseconds. The same settings can be written in `inputText` or pasted TODO global instructions with friendly units:
|
|
304
|
+
|
|
305
|
+
```text
|
|
306
|
+
TODO planner timeout: 12m
|
|
307
|
+
TODO planner graceful shutdown: 30s
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
A positive timeout is required. Grace defaults to **15 seconds**, may be zero to disable it, and starts only after the planner deadline. Both values are bounded by the runtime timer maximum (about 24.9 days). Configuration precedence is:
|
|
311
|
+
|
|
312
|
+
1. structured `todoTimeoutMs` and `todoGracefulShutdownMs` options
|
|
313
|
+
2. recognized natural-language or global directives
|
|
314
|
+
3. adaptive timeout and the default grace period
|
|
315
|
+
|
|
316
|
+
An explicit timeout remains exact and bypasses adaptive scaling. Omitting the new options preserves the previous call shape. The selected budget is returned additively as `plannerBudget`, including its source, detected signals, and extension reason when applicable.
|
|
317
|
+
|
|
318
|
+
The planner-only thinking default is **`high`**, chosen to balance plan quality and latency. This does not change worker, discovery, or reviewer defaults. Programmatic `runCoordinator()` callers may set `todoThinking` explicitly; every supported Pi level is forwarded unchanged, including `xhigh`:
|
|
319
|
+
|
|
320
|
+
```ts
|
|
321
|
+
await runCoordinator({
|
|
322
|
+
commit: false,
|
|
323
|
+
inputText: "Create 24 separately planned tasks for the migration.",
|
|
324
|
+
todoTimeoutMs: 12 * 60_000,
|
|
325
|
+
todoGracefulShutdownMs: 30_000,
|
|
326
|
+
todoThinking: "xhigh",
|
|
327
|
+
});
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Before planning, CLI/TUI and headless progress report the effective budget in friendly units and explain any adaptive extension. Three bounded updates report elapsed and remaining time. If the deadline is reached, progress announces the grace period and its duration rather than appearing frozen.
|
|
331
|
+
|
|
332
|
+
A grace period is not an extra general-purpose planning budget. It asks the active planner to stop and allows a safe, complete TODO plan already finishing to settle. Invalid or truncated output still fails. Timeout and cancellation diagnostics record only whether partial output was observed; they do not expose the partial text.
|
|
333
|
+
|
|
334
|
+
### Isolated workers and browser capabilities
|
|
335
|
+
|
|
336
|
+
Pi Long Task workers are isolated SDK sessions. Extensions loaded in the parent Pi session are deliberately disabled in workers, and workers receive only the direct `read`, `bash`, `edit`, `write`, `grep`, `find`, and `ls` tools. Consequently, a worker cannot silently use a Chrome/browser extension, Chrome DevTools MCP, or an unlisted browser tool merely because it is available in the parent session.
|
|
337
|
+
|
|
338
|
+
When a request explicitly requires one of those unavailable capabilities, Pi Long Task emits an actionable warning, includes an isolated-worker constraint in planning, and returns the additive `capabilityWarnings` details. The run may continue when a safe available alternative is equivalent—for example, fetching public content with a supported command-line mechanism through `bash`, running project-provided browser automation through `bash`, or supplying page/source content for local reading. If the exact extension or browser tool is mandatory, the affected task must report `blocked` instead of claiming it used the tool. Merely asking workers to implement a browser extension does not by itself claim that the extension must be loaded during the run.
|
|
339
|
+
|
|
340
|
+
### Coordinator-level network recovery
|
|
341
|
+
|
|
342
|
+
Network recovery is **disabled by default** for backward compatibility. When enabled, it begins only after Pi has exhausted its own bounded provider-request retries. Pi Long Task then uses jittered exponential backoff starting at **1 second**, capped at **30 seconds**, for a maximum continuous outage of **5 minutes**. During recovery, progress displays `Waiting for connection…` with the retry number, next retry delay, or elapsed outage time. Cancellation interrupts both backoff waits and in-flight recovery calls immediately.
|
|
343
|
+
|
|
344
|
+
Add directives to `inputText` or to the global instructions of a pasted TODO plan. These examples cover every mode:
|
|
345
|
+
|
|
346
|
+
```text
|
|
347
|
+
# Default: recovery is disabled; the timing defaults below are dormant.
|
|
348
|
+
Run a long task without commits to implement @TODO.md.
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
```text
|
|
352
|
+
# Bounded recovery using the default 1s base, 30s cap, and 5m outage window.
|
|
353
|
+
Network recovery: enabled
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
```text
|
|
357
|
+
# Bounded recovery with explicit timing.
|
|
358
|
+
Network recovery: enabled
|
|
359
|
+
Network recovery base delay: 2s
|
|
360
|
+
Network recovery maximum delay: 45s
|
|
361
|
+
Network recovery maximum outage: 10m
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
```text
|
|
365
|
+
# Explicitly retain fail-fast behavior after Pi's own request retries.
|
|
366
|
+
Network recovery: disabled
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
To wait indefinitely while the provider or network remains unavailable, enable recovery and set the maximum outage to `unlimited`, `indefinite`, or `until cancelled`:
|
|
370
|
+
|
|
371
|
+
```text
|
|
372
|
+
Network recovery: enabled
|
|
373
|
+
Network recovery maximum outage: until cancelled
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Indefinite mode has no outage deadline; it always remains cancellable. It does not turn deterministic errors into recoverable ones.
|
|
377
|
+
|
|
378
|
+
Programmatic `runCoordinator()` callers can pass the same policy as structured options; `pi_long_task` and `pi_goal_task` expose the same `networkRecovery` object in their tool parameters:
|
|
379
|
+
|
|
380
|
+
```ts
|
|
381
|
+
await runCoordinator({
|
|
382
|
+
commit: false,
|
|
383
|
+
inputText: "implement the TODO plan",
|
|
384
|
+
networkRecovery: {
|
|
385
|
+
enabled: true,
|
|
386
|
+
baseDelayMs: 2_000,
|
|
387
|
+
maxDelayMs: 45_000,
|
|
388
|
+
maxOutageMs: 10 * 60_000,
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
Use `maxOutageMs: null` for indefinite waiting or `enabled: false` to disable recovery. Durations must be positive finite safe integers, `maxDelayMs` must be at least `baseDelayMs`, and a bounded `maxOutageMs` must be at least `baseDelayMs`.
|
|
394
|
+
|
|
395
|
+
#### Recovery classification boundaries
|
|
396
|
+
|
|
397
|
+
Recovery is deliberately narrow. Recoverable failures include failed fetches; DNS, connection, and socket failures such as `ENOTFOUND`, `ECONNRESET`, or `ETIMEDOUT`; premature HTTP/WebSocket/stream termination; request and gateway timeouts; temporary provider overload; HTTP 408, 425, and overload-style 429 responses; and retryable server responses such as HTTP 500, 502, 503, and 504. Provider errors and nested causes are inspected so useful status, code, request ID, and retry metadata can be retained.
|
|
398
|
+
|
|
399
|
+
Authentication and authorization failures, billing or credit failures, exhausted account/usage quota, invalid models, malformed or unsupported requests, context-length and content-policy failures, most other 4xx responses, non-retryable server responses, certificate/configuration failures, coordinator timeouts, cancellation, and unknown errors fail immediately through the existing error path. Deterministic evidence wins over transient-looking wrapper text—for example, a 429 response that says the account quota is exhausted is not treated as temporary rate limiting.
|
|
400
|
+
|
|
401
|
+
#### Planner deadline, grace, recovery, and cancellation
|
|
402
|
+
|
|
403
|
+
These controls have separate clocks and outcomes:
|
|
404
|
+
|
|
405
|
+
- The **planner deadline** bounds each provider attempt using the effective adaptive or explicit planning budget.
|
|
406
|
+
- The **grace period** begins only when that deadline is reached and only collects a safely completed plan from the stopping attempt.
|
|
407
|
+
- **Network recovery** has its own outage clock and retry counter. Recovery wait does not consume or silently extend the per-attempt planner deadline; each fresh provider attempt receives the same configured planning budget.
|
|
408
|
+
- **Cancellation** takes priority during active planning, grace, or recovery. It stops promptly and is reported as cancellation, not as timeout or network failure.
|
|
409
|
+
|
|
410
|
+
Network retries do not consume TODO attempts, planner repair retries, reviewer retries, or goal-loop iterations. Time attributed to network recovery is excluded from worker, TODO-planner, reviewer, goal-iteration, and overall goal-loop timeout budgets; while connectivity is unavailable, `maxOutageMs` (or cancellation in indefinite mode) is the recovery limit. Once the operation resumes, its ordinary timeout and retry rules still apply. Because retries can add wall-clock time, progress labels them separately as planner network recovery and states that the per-attempt deadline is unchanged. If the outage window expires, the run fails with the last classified network failure retained as evidence.
|
|
411
|
+
|
|
412
|
+
Completed TODOs, current TODO identity and ordinary attempt number, durable attempt evidence, working-tree changes, accepted steering revisions, accumulated costs, and persisted goal/review state remain intact across an outage. An interrupted worker resumes the same TODO in a fresh session: the errored session is rotated, and the continuation is told to inspect the result artifact and current files before acting. This avoids blindly replaying already completed tool calls. The coordinator does not roll back external side effects, so tasks that call non-idempotent external systems should record durable completion/idempotency evidence that a resumed worker can verify.
|
|
413
|
+
|
|
292
414
|
### Reuse diagnostics and accounting
|
|
293
415
|
|
|
294
416
|
Programmatic progress callbacks receive lifecycle updates with `phase: "worker_session"`. The additive fields are:
|
|
@@ -304,7 +426,11 @@ Pi session statistics can be cumulative across reused assignments. `outcomes[].w
|
|
|
304
426
|
|
|
305
427
|
## Feature reference
|
|
306
428
|
|
|
429
|
+
- **Adaptive TODO-planner budgets:** deterministically extend the normal 5-minute budget for explicit large item sets, up to 15 minutes, while preserving exact caller overrides.
|
|
430
|
+
- **Visible planner timing:** report effective budget, extension reason, elapsed/remaining time, grace entry, and safe partial-output diagnostics across CLI/TUI and headless progress.
|
|
431
|
+
- **Capability-aware planning:** warn when isolated workers are explicitly asked to use disabled extensions or unavailable browser tools, then constrain the plan to honest alternatives or a blocked result.
|
|
307
432
|
- **Adaptive worker-session reuse:** reuse healthy compatible sessions below the 62.5% default context threshold, while preserving task boundaries and rotating conservatively.
|
|
433
|
+
- **Optional network recovery:** wait through classified transient provider/transport outages without consuming ordinary attempts, while keeping planner deadlines unchanged, deterministic failures fail-fast, and cancellation immediate.
|
|
308
434
|
- **Real Pi TUI sidebar:** in TUI sessions, every TODO appears in a registered sidebar/widget with past, current, and future statuses so you can distinguish completed, active, upcoming, failed, blocked, and remaining work at a glance.
|
|
309
435
|
- **Main-thread worker activity:** the active worker still streams commands, edits, verification, and its per-task `TASK_RESULT` back into the main Pi conversation; the sidebar does not replace tool-result rendering.
|
|
310
436
|
- **Cost visibility:** worker spend is included in Pi Long Task progress and is added to the main Pi `$ spent` total when cost data is available.
|
|
@@ -415,24 +541,39 @@ Safety controls:
|
|
|
415
541
|
- `iterationTimeoutMs` caps each generation, execution, and review sequence; default is `10800000` ms (3 hours).
|
|
416
542
|
- `reviewerTimeoutMs` caps each reviewer session within the remaining overall and iteration budgets; default is `1800000` ms (30 minutes).
|
|
417
543
|
- tool cancellation is passed through, bounded locally even if an SDK prompt does not settle after abort, and stops the loop with `cancelled` status.
|
|
544
|
+
- `networkRecovery` applies the same coordinator recovery policy to discovery, TODO generation/execution, and review; its wait time is excluded from goal-loop deadlines and iteration counts.
|
|
418
545
|
- `maxAttemptsPerTask` and `maxBashTimeoutMs` are forwarded to worker long-task runs.
|
|
546
|
+
- `todoTimeoutMs` and `todoGracefulShutdownMs` are forwarded to child long-task planning and plan revisions with the same precedence and validation described below.
|
|
419
547
|
- `commit` controls whether implementation workers may commit; goal loops default to `commit true`, so pass `commit false` when you want to review all changes first.
|
|
420
548
|
|
|
421
549
|
## Options
|
|
422
550
|
|
|
423
|
-
`pi_long_task` has one required input and
|
|
551
|
+
`pi_long_task` has one required input and five optional inputs:
|
|
424
552
|
|
|
425
553
|
```ts
|
|
426
554
|
{
|
|
427
555
|
commit: boolean;
|
|
428
556
|
inputText?: string;
|
|
429
557
|
goal?: string;
|
|
558
|
+
todoTimeoutMs?: number;
|
|
559
|
+
todoGracefulShutdownMs?: number;
|
|
560
|
+
networkRecovery?: {
|
|
561
|
+
enabled?: boolean;
|
|
562
|
+
baseDelayMs?: number;
|
|
563
|
+
maxDelayMs?: number;
|
|
564
|
+
maxOutageMs?: number | null;
|
|
565
|
+
};
|
|
430
566
|
}
|
|
431
567
|
```
|
|
432
568
|
|
|
433
569
|
- `commit` controls whether Pi Long Task may create git commits.
|
|
434
570
|
- `inputText` optionally provides the request or TODO markdown to work on.
|
|
435
571
|
- `goal` optionally provides a high-level desired outcome that is passed to TODO planning and worker task prompts. Coverage goals such as `have testing line coverage above 80%` add coverage-specific planning and verification guidance.
|
|
572
|
+
- `todoTimeoutMs` optionally sets the exact positive whole-millisecond planner deadline. When omitted, deterministic adaptive budgeting applies.
|
|
573
|
+
- `todoGracefulShutdownMs` optionally sets the non-negative whole-millisecond grace period after the planner deadline; it defaults to 15 seconds.
|
|
574
|
+
- `networkRecovery` optionally enables and tunes coordinator-level transient network recovery. See [Coordinator-level network recovery](#coordinator-level-network-recovery) for defaults and safety behavior.
|
|
575
|
+
|
|
576
|
+
See [TODO planner budgets, grace, and thinking](#todo-planner-budgets-grace-and-thinking) for precedence, directives, and programmatic thinking overrides.
|
|
436
577
|
|
|
437
578
|
`pi_goal_task` accepts a high-level goal plus safety controls:
|
|
438
579
|
|
|
@@ -447,6 +588,14 @@ Safety controls:
|
|
|
447
588
|
reviewerTimeoutMs?: number;
|
|
448
589
|
maxAttemptsPerTask?: number;
|
|
449
590
|
maxBashTimeoutMs?: number;
|
|
591
|
+
todoTimeoutMs?: number;
|
|
592
|
+
todoGracefulShutdownMs?: number;
|
|
593
|
+
networkRecovery?: {
|
|
594
|
+
enabled?: boolean;
|
|
595
|
+
baseDelayMs?: number;
|
|
596
|
+
maxDelayMs?: number;
|
|
597
|
+
maxOutageMs?: number | null;
|
|
598
|
+
};
|
|
450
599
|
}
|
|
451
600
|
```
|
|
452
601
|
|
|
@@ -528,9 +677,10 @@ That smoke test creates disposable git repos and verifies both `commit: false` a
|
|
|
528
677
|
## Limitations and expectations
|
|
529
678
|
|
|
530
679
|
- Tasks run sequentially, one TODO at a time; Pi Long Task prioritizes task isolation, progress tracking, and safe handoff over parallel execution. Adaptive reuse may share the underlying SDK session only while policy checks remain safe.
|
|
531
|
-
- Natural-language TODO planning has a bounded
|
|
680
|
+
- Natural-language TODO planning has a bounded 5-minute base budget, which can adapt deterministically up to 15 minutes or be overridden explicitly, followed by a 15-second grace period by default. If no valid plan settles, the run fails before worker tasks start and records timeout/cancellation and safe partial-output-presence diagnostics in `TASK_RESULT.md`.
|
|
681
|
+
- Isolated workers cannot load parent-session extensions or unavailable Chrome/browser tools. Explicit requirements produce a warning and planning constraint; exact mandatory capability requirements may leave the affected task blocked.
|
|
532
682
|
- If the planner returns invalid TODO markdown, Pi Long Task makes one repair attempt. A second invalid response fails planning with diagnostics instead of guessing at a plan.
|
|
533
|
-
- Real runs require usable Pi model credentials, such as a working Pi login or API key for the selected model.
|
|
683
|
+
- Real runs require usable Pi model credentials, such as a working Pi login or API key for the selected model. Network recovery does not retry invalid or exhausted credentials, billing failures, or account quota exhaustion.
|
|
534
684
|
- Worker spend is added to the main Pi `$ spent` total as cost-only usage. Token counts are not merged into the main thread because worker sessions have separate context windows, and merging their token usage would corrupt the main conversation's context statistics.
|
|
535
685
|
- Run artifacts are written under `tmp/pi-long-task/<run-id>/`.
|
|
536
686
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-long-task",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Pi coding agent extension that breaks large coding requests into tracked TODOs and runs them in bounded, adaptively reused 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": [
|