Update completed dotfiles artifacts
This commit is contained in:
4
.obsidian/graph.json
vendored
4
.obsidian/graph.json
vendored
@@ -77,10 +77,10 @@
|
|||||||
"nodeSizeMultiplier": 2.51132136678201,
|
"nodeSizeMultiplier": 2.51132136678201,
|
||||||
"lineSizeMultiplier": 2.03949502595156,
|
"lineSizeMultiplier": 2.03949502595156,
|
||||||
"collapse-forces": false,
|
"collapse-forces": false,
|
||||||
"centerStrength": 0,
|
"centerStrength": 0.350183823529412,
|
||||||
"repelStrength": 20,
|
"repelStrength": 20,
|
||||||
"linkStrength": 1,
|
"linkStrength": 1,
|
||||||
"linkDistance": 500,
|
"linkDistance": 500,
|
||||||
"scale": 0.07174458095508464,
|
"scale": 0.12993773244100013,
|
||||||
"close": false
|
"close": false
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
tags:
|
tags:
|
||||||
- wayfinder/map
|
- wayfinder/map
|
||||||
---
|
---
|
||||||
@@ -20,15 +20,11 @@ Prioritize Pi-native behavior first: runtime model, context modes, status UI, li
|
|||||||
|
|
||||||
## Frontier
|
## Frontier
|
||||||
|
|
||||||
- [[047-pi-subagents-lifecycle-controls-task]]
|
None.
|
||||||
- [[048-pi-subagents-config-agents-tool-profiles-task]]
|
|
||||||
- [[049-pi-subagents-batch-concurrency-task]]
|
|
||||||
- [[050-pi-subagents-fork-context-task]]
|
|
||||||
- [[051-pi-subagents-status-ui-task]]
|
|
||||||
|
|
||||||
## Blocked
|
## Blocked
|
||||||
|
|
||||||
- [[052-pi-subagents-final-deployment-verification-task]]
|
None.
|
||||||
|
|
||||||
## Decisions so far
|
## Decisions so far
|
||||||
|
|
||||||
@@ -75,9 +71,11 @@ The spec should require only stable runtime paths such as `~/.pi/agent/subagents
|
|||||||
|
|
||||||
The implementation-ready specification is complete in [[027-pi-subagents-implementation-spec-task]].
|
The implementation-ready specification is complete in [[027-pi-subagents-implementation-spec-task]].
|
||||||
The minimal subagent extension tracer bullet is complete in [[046-pi-subagents-minimal-tracer-bullet-task]].
|
The minimal subagent extension tracer bullet is complete in [[046-pi-subagents-minimal-tracer-bullet-task]].
|
||||||
|
The subagent lifecycle controls slice is complete in [[047-pi-subagents-lifecycle-controls-task]].
|
||||||
|
The config, named agents, and tool profiles slice is complete in [[048-pi-subagents-config-agents-tool-profiles-task]].
|
||||||
|
The batch spawning, fork context, and status UI slices are complete in [[049-pi-subagents-batch-concurrency-task]], [[050-pi-subagents-fork-context-task]], and [[051-pi-subagents-status-ui-task]].
|
||||||
|
The deployed extension verification is complete in [[052-pi-subagents-final-deployment-verification-task]].
|
||||||
|
|
||||||
## Out of scope
|
## Out of scope
|
||||||
|
|
||||||
Implementing subagent support is outside this map.
|
Herdr-specific adapter implementation is outside the initial Pi-extension focus and can be revisited after the Pi-native subagent behavior is deployed.
|
||||||
The implementation-ready extension specification is now in scope.
|
|
||||||
Herdr-specific adapter implementation is outside the initial Pi-extension focus and can be revisited after the Pi-native subagent behavior is designed.
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
---
|
---
|
||||||
status: claimed
|
status: resolved
|
||||||
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
claimed-at: "2026-08-01T14:05:41-04:00"
|
claimed-at: "2026-08-01T14:05:41-04:00"
|
||||||
|
completed-at: "2026-08-01T14:13:54-04:00"
|
||||||
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
||||||
@@ -23,13 +24,19 @@ Cancellation must be idempotent and should cooperate with Pi RPC before escalati
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] Cancelling a running subagent is idempotent and reaches `cancelled`.
|
- [x] Cancelling a running subagent is idempotent and reaches `cancelled`.
|
||||||
- [ ] Startup and runtime timeout paths reach `timed_out`.
|
- [x] Startup and runtime timeout paths reach `timed_out`.
|
||||||
- [ ] Child process exit before semantic settlement reaches a failure state with diagnostics.
|
- [x] Child process exit before semantic settlement reaches a failure state with diagnostics.
|
||||||
- [ ] Parent session shutdown cancels supervised children.
|
- [x] Parent session shutdown cancels supervised children.
|
||||||
- [ ] Lifecycle tests cover abort, process close, timeout, and repeated cancel calls.
|
- [x] Lifecycle tests cover abort, process close, timeout, and repeated cancel calls.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
Use `agent_settled` as semantic completion.
|
Use `agent_settled` as semantic completion.
|
||||||
Use process close for resource cleanup after settlement.
|
Use process close for resource cleanup after settlement.
|
||||||
|
|
||||||
|
Resolved in branch `pi-subagents-tracer-bullet`, commit `4e6baed`.
|
||||||
|
Cancellation is idempotent, sends RPC `abort` cooperatively with a bounded grace period, then terminates the child process group on Unix.
|
||||||
|
The supervisor now tracks startup and runtime timers, clears timers on terminal states, marks shutdown cancellation as `cancelled`, and ignores later lifecycle events once a terminal state is reached.
|
||||||
|
Lifecycle unit tests cover repeated cancel, startup timeout, runtime timeout, process failure, shutdown cleanup, and cancel-after-completion.
|
||||||
|
Verification: `nix shell nixpkgs#tsx -c tsx --test modules/agents/pi/extensions/subagents/supervisor.test.ts`, managed extension derivation build, Pi RPC command smoke, live repeated cancel smoke, and `nix flake check`.
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
|
claimed-at: "2026-08-01T14:15:15-04:00"
|
||||||
|
completed-at: "2026-08-01T14:28:04-04:00"
|
||||||
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
||||||
@@ -21,14 +24,19 @@ Tool profiles should include the reserved built-ins and user-defined custom prof
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] Missing config files and missing agent directories are accepted as normal.
|
- [x] Missing config files and missing agent directories are accepted as normal.
|
||||||
- [ ] Global config and trusted project config merge in the specified order.
|
- [x] Global config and trusted project config merge in the specified order.
|
||||||
- [ ] Markdown agent definitions load from user and trusted project paths with correct precedence.
|
- [x] Markdown agent definitions load from user and trusted project paths with correct precedence.
|
||||||
- [ ] Duplicate definitions in one tier and invalid frontmatter produce diagnostics without crashing startup.
|
- [x] Duplicate definitions in one tier and invalid frontmatter produce diagnostics without crashing startup.
|
||||||
- [ ] A named spawn resolves prompt, context, model, thinking, and tools from spawn overrides, frontmatter, config, and in-code defaults.
|
- [x] A named spawn resolves prompt, context, model, thinking, and tools from spawn overrides, frontmatter, config, and in-code defaults.
|
||||||
- [ ] Built-in tool profile names cannot be overridden.
|
- [x] Built-in tool profile names cannot be overridden.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
Do not write starter config files.
|
Do not write starter config files.
|
||||||
Do not define named agents inline in `subagents.json`.
|
Do not define named agents inline in `subagents.json`.
|
||||||
|
|
||||||
|
Resolved in branch `pi-subagents-tracer-bullet`, commit `418d9c9`.
|
||||||
|
Added `subagents.json` config loading, trusted-project config merge, Markdown named-agent loading, diagnostics, built-in and custom tool profiles, and named spawn resolution.
|
||||||
|
Tool profiles are projected into child Pi with `--no-tools` or `--tools`; `full-tools` leaves Pi's normal tool surface intact.
|
||||||
|
Verification: config and lifecycle unit tests through `tsx`, managed extension derivation build, Pi RPC command smoke, live named-agent smoke with temporary config, and `nix flake check`.
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
|
claimed-at: "2026-08-01T14:36:01-04:00"
|
||||||
|
completed-at: "2026-08-01T14:44:11-04:00"
|
||||||
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
||||||
@@ -21,13 +24,17 @@ The supervisor should preserve accepted child records, report per-child spawn fa
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] Batch spawn validates every entry with the same rules as single spawn.
|
- [x] Batch spawn validates every entry with the same rules as single spawn.
|
||||||
- [ ] A batch request returns accepted child ids and initial metadata without waiting for completion.
|
- [x] A batch request returns accepted child ids and initial metadata without waiting for completion.
|
||||||
- [ ] `subagent_list` shows active children and a bounded recent terminal history.
|
- [x] `subagent_list` shows active children and a bounded recent terminal history.
|
||||||
- [ ] `maxConcurrent` limits simultaneous running children while preserving queued records.
|
- [x] `maxConcurrent` limits simultaneous running children while preserving queued records.
|
||||||
- [ ] Partial spawn failures are reported per requested child without losing accepted children.
|
- [x] Partial spawn failures are reported per requested child without losing accepted children.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
All spawns remain non-blocking.
|
All spawns remain non-blocking.
|
||||||
Do not add a wait-mode parameter in this slice.
|
Do not add a wait-mode parameter in this slice.
|
||||||
|
|
||||||
|
Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`.
|
||||||
|
Added `subagent_batch`, `/subagent-batch`, queue-backed `maxConcurrent`, bounded recent terminal history in list output, and per-entry batch failure reporting.
|
||||||
|
Verified with supervisor tests, live Pi RPC batch smoke, extension derivation build, and `nix flake check`.
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
|
claimed-at: "2026-08-01T14:36:01-04:00"
|
||||||
|
completed-at: "2026-08-01T14:44:11-04:00"
|
||||||
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
||||||
@@ -22,13 +25,18 @@ Named agents that declare `allowedContexts` should reject disallowed spawn overr
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] `fork` serializes the parent session header and active branch entries into a child-startable session.
|
- [x] `fork` serializes the parent session header and active branch entries into a child-startable session.
|
||||||
- [ ] The forked worker receives the parent active-branch context plus the delegated request wrapper.
|
- [x] The forked worker receives the parent active-branch context plus the delegated request wrapper.
|
||||||
- [ ] `independent` workers still do not receive parent transcript context.
|
- [x] `independent` workers still do not receive parent transcript context.
|
||||||
- [ ] `allowedContexts` rejects disallowed context overrides.
|
- [x] `allowedContexts` rejects disallowed context overrides.
|
||||||
- [ ] Tests or manual checks distinguish forked and independent context visibility.
|
- [x] Tests or manual checks distinguish forked and independent context visibility.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
Do not summarize, strip tool output, or compact before spawning.
|
Do not summarize, strip tool output, or compact before spawning.
|
||||||
Let child Pi handle normal compaction.
|
Let child Pi handle normal compaction.
|
||||||
|
|
||||||
|
Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`.
|
||||||
|
Fork mode passes the parent session file to child Pi with `--fork` and uses a delegated fork-context wrapper; independent mode keeps its transcript-clean wrapper.
|
||||||
|
`allowedContexts` rejection is covered by spawn resolution.
|
||||||
|
Verified with live Pi RPC fork smoke where a forked child recovered parent marker `fork-visible-123`, plus tests and `nix flake check`.
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
|
claimed-at: "2026-08-01T14:36:01-04:00"
|
||||||
|
completed-at: "2026-08-01T14:44:11-04:00"
|
||||||
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
- "[[046-pi-subagents-minimal-tracer-bullet-task]]"
|
||||||
@@ -21,13 +24,18 @@ Disabling the bundled UI should not disable status records, status events, or to
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] Spawn accepted, completed, failed, cancelled, and timed-out milestones are appended as durable entries.
|
- [x] Spawn accepted, completed, failed, cancelled, and timed-out milestones are appended as durable entries.
|
||||||
- [ ] Milestone entries do not inject child transcripts into normal LLM context.
|
- [x] Milestone entries do not inject child transcripts into normal LLM context.
|
||||||
- [ ] The collapsed UI summary shows live counts.
|
- [x] The collapsed UI summary shows live counts.
|
||||||
- [ ] The expanded inspector shows child id, label, context, state, elapsed time, model, tools, last event, and result availability.
|
- [x] The expanded inspector shows child id, label, context, state, elapsed time, model, tools, last event, and result availability.
|
||||||
- [ ] Disabling `ui` hides bundled UI components but leaves list, status, result, and cancel tools working.
|
- [x] Disabling `ui` hides bundled UI components but leaves list, status, result, and cancel tools working.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
Use the status data model as the source of truth.
|
Use the status data model as the source of truth.
|
||||||
Do not stream every child event into the parent transcript.
|
Do not stream every child event into the parent transcript.
|
||||||
|
|
||||||
|
Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`.
|
||||||
|
Added durable `subagent_milestone` custom entries for accepted, completed, failed, cancelled, and timed-out states, a replaceable widget-based collapsed summary, and `/subagent-ui` expanded inspector toggle.
|
||||||
|
The widget is gated by config `ui.enabled`, while tools remain available regardless.
|
||||||
|
Verified milestone entries in live Pi RPC batch/fork smoke, command registration, tests, and `nix flake check`.
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
parent: "[[027-pi-subagents-implementation-spec-task]]"
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
|
claimed-at: "2026-08-01T14:46:24-04:00"
|
||||||
|
completed-at: "2026-08-01T14:49:31-04:00"
|
||||||
|
parent: "[[027-pi-subagents-implementation-spec-task]]"},{
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[047-pi-subagents-lifecycle-controls-task]]"
|
- "[[047-pi-subagents-lifecycle-controls-task]]"
|
||||||
- "[[048-pi-subagents-config-agents-tool-profiles-task]]"
|
- "[[048-pi-subagents-config-agents-tool-profiles-task]]"
|
||||||
@@ -25,13 +28,19 @@ Any intentionally deferred choices should be written down as follow-up scope.
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] The managed Pi extensions source includes the subagent extension.
|
- [x] The managed Pi extensions source includes the subagent extension.
|
||||||
- [ ] `nix flake check` passes.
|
- [x] `nix flake check` passes.
|
||||||
- [ ] Targeted `nix eval` confirms Pi is enabled and the managed extensions path is present.
|
- [x] Targeted `nix eval` confirms Pi is enabled and the managed extensions path is present.
|
||||||
- [ ] Manual Pi checks from the spec are recorded in the task notes.
|
- [x] Manual Pi checks from the spec are recorded in the task notes.
|
||||||
- [ ] Any intentionally deferred implementation choices are documented as follow-up scope, not hidden TODOs.
|
- [x] Any intentionally deferred implementation choices are documented as follow-up scope, not hidden TODOs.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
This is the final integration slice.
|
This is the final integration slice.
|
||||||
Do not start it until the prerequisite behavior slices are complete.
|
Do not start it until the prerequisite behavior slices are complete.
|
||||||
|
|
||||||
|
Resolved in branch `pi-subagents-tracer-bullet`, commits `fdf0f89`, `4e6baed`, `418d9c9`, and `e7a700f`.
|
||||||
|
Managed extension source contains `modules/agents/pi/extensions/subagents/` and Nix builds it into the Home Manager `~/.pi/agent/extensions` source.
|
||||||
|
Verification run: `nix eval .#nixosConfigurations.neogaia.config.modules.agents.pi.enable`, `nix eval .#nixosConfigurations.neogaia.config.home-manager.users.alexion.home.file.'"/home/alexion/.pi/agent/extensions"'.source`, managed extension derivation build, `tsx` extension tests, and `nix flake check`.
|
||||||
|
Manual Pi checks recorded: managed auto-discovery, `/reload`, single spawn, batch spawn, list, status, result before and after completion, repeated cancel, named-agent spawn, fork context visibility, independent-context behavior from the prompt wrapper, durable milestone entries, UI toggle, and UI-disabled tools.
|
||||||
|
Follow-up scope: integrate the extension tests into a flake check, add a Herdr adapter or pane strategy if desired, and add typed dotfiles options for `subagents.json` or managed agents if the current plain-file seam becomes insufficient.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: complete
|
||||||
tags:
|
tags:
|
||||||
- wayfinder/map
|
- wayfinder/map
|
||||||
---
|
---
|
||||||
@@ -21,8 +21,7 @@ Quota display must rely on an explicit API, local account source, or documented
|
|||||||
|
|
||||||
## Frontier
|
## Frontier
|
||||||
|
|
||||||
- [[068-pi-ui-compact-status-extension-task]]
|
None.
|
||||||
- [[070-pi-ui-flex-spacer-pi-patch-task]]
|
|
||||||
|
|
||||||
## Decisions so far
|
## Decisions so far
|
||||||
|
|
||||||
@@ -34,13 +33,13 @@ The remaining prompt dead space is specifically an underfilled-stack issue: when
|
|||||||
The prototype target is therefore a flexible spacer above the prompt/status/editor area, not a wholesale editor relocation.
|
The prototype target is therefore a flexible spacer above the prompt/status/editor area, not a wholesale editor relocation.
|
||||||
The flex-spacer prototype received a positive HITL verdict and should be the preferred permanent layout direction.
|
The flex-spacer prototype received a positive HITL verdict and should be the preferred permanent layout direction.
|
||||||
Existing public prior art supports the patch direction: `pi-powerline-footer` shows the best extension-only compact status pattern, while `pi-local-mods` implements a private `FixedBottomScrollLayout` patch close to the desired bottom-pinned editor behavior.
|
Existing public prior art supports the patch direction: `pi-powerline-footer` shows the best extension-only compact status pattern, while `pi-local-mods` implements a private `FixedBottomScrollLayout` patch close to the desired bottom-pinned editor behavior.
|
||||||
|
The compact status extension is implemented as a managed Pi extension with an above-editor status widget, hidden footer, context/quota bars, and `/codex-quota`.
|
||||||
|
The flex-spacer Pi patch is implemented as a dotfiles-managed package override in commit `5fd8de0`, with manual visual verification left for the final deployment verification ticket.
|
||||||
|
The deployed ordinary Pi command now combines the compact status extension and patched bottom-anchored prompt layout, with autocomplete closing back to bottom alignment and no unmanaged prototype extension loaded.
|
||||||
|
|
||||||
## Not yet specified
|
## Not yet specified
|
||||||
|
|
||||||
The quota display prototype received a positive HITL verdict.
|
None.
|
||||||
The permanent specification is complete in [[063-pi-ui-customization-spec-task]].
|
|
||||||
The implementation frontier includes [[068-pi-ui-compact-status-extension-task]].
|
|
||||||
The Pi patch implementation packaging was validated by [[073-pi-ui-community-pi-packaging-research]], which supports the package-override plan in [[072-pi-ui-patched-pi-packaging-research]].
|
|
||||||
|
|
||||||
## Out of scope
|
## Out of scope
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
|
claimed-by: "019fbf55-ae07-7bfe-a774-77f41b55b724"
|
||||||
|
claimed-at: "2026-08-01T17:58:46-04:00"
|
||||||
|
completed-at: "2026-08-01T18:03:07-04:00"
|
||||||
parent: "[[063-pi-ui-customization-spec-task]]"
|
parent: "[[063-pi-ui-customization-spec-task]]"
|
||||||
blocked-by: []
|
blocked-by: []
|
||||||
tags:
|
tags:
|
||||||
- ticket/task/afk
|
- ticket/implementation
|
||||||
---
|
---
|
||||||
|
|
||||||
# Implement compact Pi status extension
|
# Implement compact Pi status extension
|
||||||
@@ -22,16 +25,21 @@ It should cache only normalized non-secret quota percentages in memory and degra
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] The extension lives under the dotfiles Pi module's managed extension source tree, not only under `~/.pi/agent/extensions`.
|
- [x] The extension lives under the dotfiles Pi module's managed extension source tree, not only under `~/.pi/agent/extensions`.
|
||||||
- [ ] The built-in footer is hidden by default.
|
- [x] The built-in footer is hidden by default.
|
||||||
- [ ] The status widget shows cwd/branch on the left and model/thinking on the right.
|
- [x] The status widget shows cwd/branch on the left and model/thinking on the right.
|
||||||
- [ ] The context bar uses `▃`, fills from `ctx.getContextUsage().percent`, and uses success/warning/error thresholds 70% and 90%.
|
- [x] The context bar uses `▃`, fills from `ctx.getContextUsage().percent`, and uses success/warning/error thresholds 70% and 90%.
|
||||||
- [ ] The Codex quota bar uses `▔`, fills by consumed weekly quota, uses border blue below 50%, warning at 50%, and error at 80%.
|
- [x] The Codex quota bar uses `▔`, fills by consumed weekly quota, uses border blue below 50%, warning at 50%, and error at 80%.
|
||||||
- [ ] `/codex-quota` forces a refresh and displays only normalized non-secret details.
|
- [x] `/codex-quota` forces a refresh and displays only normalized non-secret details.
|
||||||
- [ ] Missing or expired credentials, network errors, and unrecognized quota responses do not break extension loading.
|
- [x] Missing or expired credentials, network errors, and unrecognized quota responses do not break extension loading.
|
||||||
- [ ] No default config file is generated.
|
- [x] No default config file is generated.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
Use `[[063-pi-ui-customization-spec-task]]` as the source of truth for row shape, colors, quota endpoints, and out-of-scope behavior.
|
Use `[[063-pi-ui-customization-spec-task]]` as the source of truth for row shape, colors, quota endpoints, and out-of-scope behavior.
|
||||||
The throwaway prototype at `~/.pi/agent/extensions/compact-status-prototype.ts` is useful reference code, but the finished implementation should be promoted into the repo-managed Pi extension source.
|
The throwaway prototype at `~/.pi/agent/extensions/compact-status-prototype.ts` is useful reference code, but the finished implementation should be promoted into the repo-managed Pi extension source.
|
||||||
|
|
||||||
|
Resolved on branch `pi-ui-customization` in commit `a7ee800`.
|
||||||
|
Implemented `modules/agents/pi/extensions/compact-status.ts` as a managed Pi extension with an above-editor status widget, hidden footer, context/quota bars, and `/codex-quota`.
|
||||||
|
Verification: Pi RPC command registration smoke, managed extension derivation build, and `nix flake check`.
|
||||||
|
Manual post-switch verification remains useful for exact visual placement and live quota endpoint shape.
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
parent: "[[063-pi-ui-customization-spec-task]]"
|
parent: "[[063-pi-ui-customization-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[073-pi-ui-community-pi-packaging-research]]"
|
- "[[073-pi-ui-community-pi-packaging-research]]"
|
||||||
|
claimed-by: "019fbf7c-142c-7ccf-8a15-47774af57943"
|
||||||
|
claimed-at: "2026-08-01T18:40:19-04:00"
|
||||||
|
resolved-at: "2026-08-01T18:47:52-04:00"
|
||||||
tags:
|
tags:
|
||||||
- ticket/task/afk
|
- ticket/implementation
|
||||||
---
|
---
|
||||||
|
|
||||||
# Patch Pi prompt-area layout
|
# Patch Pi prompt-area layout
|
||||||
@@ -24,14 +27,14 @@ A local tool should count as available only when `<tool> --version` exits succes
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] The ordinary flake-managed `pi` command uses the patched layout after rebuild.
|
- [x] The ordinary flake-managed `pi` command uses the patched layout after rebuild.
|
||||||
- [ ] Short conversations leave spare vertical space above the status/editor area, not below the editor.
|
- [ ] Short conversations leave spare vertical space above the status/editor area, not below the editor.
|
||||||
- [ ] Long conversations preserve stock Pi scrolling behavior.
|
- [ ] Long conversations preserve stock Pi scrolling behavior.
|
||||||
- [ ] Terminal resize recomputes spacer rows without accumulating stale blank lines.
|
- [x] Terminal resize recomputes spacer rows without accumulating stale blank lines.
|
||||||
- [ ] `/` autocomplete still works.
|
- [ ] `/` autocomplete still works.
|
||||||
- [ ] `@` autocomplete still works even when `~/.pi/agent/bin/fd` is an unusable generic Linux binary.
|
- [x] `@` autocomplete still works even when `~/.pi/agent/bin/fd` is an unusable generic Linux binary.
|
||||||
- [ ] Closing autocomplete leaves the editor visually bottom-aligned.
|
- [ ] Closing autocomplete leaves the editor visually bottom-aligned.
|
||||||
- [ ] The patch is delivered through dotfiles, not by an unmanaged copy under `~/.local/share`.
|
- [x] The patch is delivered through dotfiles, not by an unmanaged copy under `~/.local/share`.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
@@ -40,3 +43,11 @@ Patch `pkgs.pi-coding-agent` at the TypeScript source level with `overrideAttrs`
|
|||||||
|
|
||||||
The prototype at `/home/alexion/.local/share/pi-flex-spacer-prototype/pi-monorepo` added `FlexSpacerBottomLayout` in Pi's `dist/modes/interactive/interactive-mode.js` and patched tool lookup in `dist/utils/tools-manager.js`.
|
The prototype at `/home/alexion/.local/share/pi-flex-spacer-prototype/pi-monorepo` added `FlexSpacerBottomLayout` in Pi's `dist/modes/interactive/interactive-mode.js` and patched tool lookup in `dist/utils/tools-manager.js`.
|
||||||
Use it as behavior reference, but implement through the flake-managed Pi package path.
|
Use it as behavior reference, but implement through the flake-managed Pi package path.
|
||||||
|
|
||||||
|
Resolved in commit `5fd8de0` on branch `pi-ui-customization`.
|
||||||
|
The Pi module now overrides `pkgs.pi-coding-agent` with `modules/agents/pi/patches/pi-flex-spacer.patch` and `modules/agents/pi/patches/pi-tool-lookup-validation.patch`, assigning the patched package to `programs.pi-coding-agent.package`.
|
||||||
|
The patch adds a source-level flex-spacer layout wrapper around flow and pinned prompt-area components, preserving extension footer replacement through a pinned footer container.
|
||||||
|
It also enables TUI shrink clearing by default so closing autocomplete clears the temporary menu rows and returns the editor group to the bottom.
|
||||||
|
The tool lookup patch makes local `fd`/`rg` binaries count only when `--version` exits successfully.
|
||||||
|
Verified with focused package build, built-output inspection, unusable-local-`fd` fallback check, independent review remediation, deployed human visual checks, and `nix flake check`.
|
||||||
|
Manual visual checks after switching to the new generation remain useful for final deployed layout confirmation.
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
---
|
---
|
||||||
status: open
|
status: resolved
|
||||||
parent: "[[063-pi-ui-customization-spec-task]]"
|
parent: "[[063-pi-ui-customization-spec-task]]"
|
||||||
blocked-by:
|
blocked-by:
|
||||||
- "[[068-pi-ui-compact-status-extension-task]]"
|
- "[[068-pi-ui-compact-status-extension-task]]"
|
||||||
- "[[070-pi-ui-flex-spacer-pi-patch-task]]"
|
- "[[070-pi-ui-flex-spacer-pi-patch-task]]"
|
||||||
|
claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8"
|
||||||
|
claimed-at: "2026-08-01T19:43:42-04:00"
|
||||||
|
resolved-at: "2026-08-01T20:37:16-04:00"
|
||||||
tags:
|
tags:
|
||||||
- ticket/task/afk
|
- ticket/task/afk
|
||||||
---
|
---
|
||||||
@@ -21,17 +24,45 @@ Confirm the ordinary `pi` command has the accepted visual behavior after rebuild
|
|||||||
|
|
||||||
## Acceptance criteria
|
## Acceptance criteria
|
||||||
|
|
||||||
- [ ] `nix flake check` passes.
|
- [x] `nix flake check` passes.
|
||||||
- [ ] Normal `pi` launches with no extension load errors after `/reload`.
|
- [x] Normal `pi` launches with no extension load errors after `/reload`.
|
||||||
- [ ] The compact status shows cwd/branch, model/thinking, a `▃` context bar, and a `▔` consumed-weekly-Codex quota bar.
|
- [x] The compact status shows cwd/branch, model/thinking, a `▃` context bar, and a `▔` consumed-weekly-Codex quota bar.
|
||||||
- [ ] The footer is hidden by default.
|
- [x] The footer is hidden by default.
|
||||||
- [ ] `/codex-quota` refreshes quota and reports only non-secret normalized details.
|
- [x] `/codex-quota` refreshes quota and reports only non-secret normalized details.
|
||||||
- [ ] A short conversation keeps the prompt/status/editor area at the bottom.
|
- [x] A short conversation keeps the prompt/status/editor area at the bottom.
|
||||||
- [ ] A long conversation preserves normal transcript scrolling.
|
- [x] A long conversation preserves normal transcript scrolling.
|
||||||
- [ ] `/` and `@` autocomplete work in the deployed `pi` command.
|
- [x] `/` and `@` autocomplete work in the deployed `pi` command.
|
||||||
- [ ] The final notes identify any remaining throwaway prototype files as non-deployment artifacts.
|
- [x] Closing autocomplete leaves the editor visually bottom-aligned.
|
||||||
|
- [x] The final notes identify any remaining throwaway prototype files as non-deployment artifacts.
|
||||||
|
|
||||||
## Implementation Notes
|
## Implementation Notes
|
||||||
|
|
||||||
This is a verification and cleanup ticket, not a place to redesign the UI.
|
This is a verification and cleanup ticket, not a place to redesign the UI.
|
||||||
If the implementation diverges from `[[063-pi-ui-customization-spec-task]]`, record the reason in the ticket before closing it.
|
If the implementation diverges from `[[063-pi-ui-customization-spec-task]]`, record the reason in the ticket before closing it.
|
||||||
|
|
||||||
|
Progress on 2026-08-01:
|
||||||
|
|
||||||
|
- Rebased `pi-ui-customization` onto `main` so the UI branch includes the nested subagent tool fix.
|
||||||
|
- Verified the managed extension source builds and contains `compact-status.ts` plus the subagents extension.
|
||||||
|
- Verified the patched Pi package builds and its output contains `FlexSpacerBottomLayout` plus NixOS-safe local tool lookup.
|
||||||
|
- Verified `/codex-quota` command registration through RPC using the built compact status extension.
|
||||||
|
- Ran `nix flake check` successfully.
|
||||||
|
- Final deployed checks remain pending because switching the system generation and manual visual checks require explicit consent.
|
||||||
|
|
||||||
|
After the system switch:
|
||||||
|
|
||||||
|
- Confirmed ordinary `pi` resolves to `/nix/store/ba36x8jb9gr7slx4yq4pz64l5i7sih6h-pi-coding-agent-0.82.1/bin/pi`, whose built output contains `FlexSpacerBottomLayout` and NixOS-safe local tool lookup.
|
||||||
|
- Confirmed `~/.pi/agent/extensions/compact-status.ts` is deployed and contains the permanent status widget, hidden footer, context bar, quota bar, and `/codex-quota` command.
|
||||||
|
- Confirmed normal RPC launch loads extensions without stderr and exposes the compact status and subagent command surfaces.
|
||||||
|
- Confirmed `/codex-quota` returns only normalized non-secret quota details: `Codex quota remaining: weekly 75%, short 75%`.
|
||||||
|
- Confirmed deployed tool lookup ignores an unusable local `fd` and falls back to `fd` on `PATH`.
|
||||||
|
- The remaining `~/.pi/agent/extensions/compact-status-prototype.ts` is an unmanaged prototype artifact, not part of deployment, and should be removed separately only if the user wants to clean local experiments.
|
||||||
|
- Removed the unmanaged prototype extension from `~/.pi/agent/extensions/compact-status-prototype.ts`; a fresh RPC launch now exposes only the permanent `codex-quota` command.
|
||||||
|
- Human visual check confirmed the compact status, cwd/branch, model/thinking, context bar, quota bar, hidden footer, bottom-staying prompt during the checked short interaction, normal long-conversation scrolling, and `@` autocomplete.
|
||||||
|
- `/codex-quota` was not visually checked by the human in the TUI, but RPC verification confirmed normalized non-secret output.
|
||||||
|
- Human visual check confirmed `/` autocomplete works.
|
||||||
|
- Closing autocomplete still left space under the editor after switching commit `1d88503`; verification showed the patched TUI default was present, but interactive mode overrides it through `SettingsManager.getClearOnShrink()`, which still defaulted to false.
|
||||||
|
- Remediation was updated in commit `5fd8de0` by enabling shrink clearing by default in both the TUI and settings manager, while preserving `PI_CLEAR_ON_SHRINK=0` and explicit settings as opt-outs.
|
||||||
|
- Verified the remediation with the patched Pi package build, built-output inspection for both defaults, independent review, `nix flake check`, and deployed human visual confirmation.
|
||||||
|
- After switching and relaunching Pi again, human visual confirmation found closing autocomplete now leaves the editor bottom-aligned.
|
||||||
|
- Final deployed verification is complete on ordinary `pi`, which resolves to `/nix/store/p2xh13r9f890af4b8jdp60rnld1kbwsl-pi-coding-agent-0.82.1/bin/pi`.
|
||||||
|
|||||||
Reference in New Issue
Block a user