Skip to content

feat: add git-status extension with live footer#8

Open
m-marinucci wants to merge 2 commits intodisler:mainfrom
m-marinucci:main
Open

feat: add git-status extension with live footer#8
m-marinucci wants to merge 2 commits intodisler:mainfrom
m-marinucci:main

Conversation

@m-marinucci
Copy link

Summary

  • Adds extensions/git-status.ts — a new extension that shows live git status in the footer bar
  • Registers "git-status": "nord" in themeMap.ts
  • Adds ext-git-status recipe to justfile (renumbers Session Replay → 16, Theme Cycler → 17)

What the footer looks like

 my-project  ⎇ main  ↑2  ✚ 3  ✎ 2  ? 1  [##--------] 20%
Symbol Meaning Colour
⎇ branch Current branch accent
↑N Commits ahead of upstream success (green)
↓N Commits behind upstream warning (yellow)
✚ N Staged files success (green)
✎ N Unstaged modified files warning (yellow)
? N Untracked files dim
✗ N Merge conflicts error (red)
✓ clean Working tree pristine success (green)
[##----] N% Context window usage right-aligned

How it works

  • Polls git status --porcelain=v1 -b every 5 seconds in the background
  • Re-fetches immediately after every tool call (tool_execution_end hook)
  • Subscribes to Pi's footerData.onBranchChange() for instant re-render on checkout
  • /gitstatus command force-refreshes and shows a full summary notification
  • Nord theme auto-applied (cool-toned blues complement VCS UI)
  • Gracefully shows no git when run outside a repo

Usage

# Explicit
just ext-git-status
pi -e extensions/git-status.ts

# Global auto-load (loads in every pi session)
cp extensions/git-status.ts ~/.pi/agent/extensions/

🤖 Generated with Claude Code

m-marinucci and others added 2 commits February 25, 2026 23:25
Shows live git branch + change summary in the footer bar:
  ⎇ main  ↑2  ✚ 3  ✎ 2  ? 1  [##--------] 20%

Polls every 5s, re-fetches after tool calls, subscribes to
Pi's branch-change event. /gitstatus command for manual refresh.
Nord theme. Drop into ~/.pi/agent/extensions/ for global auto-load.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add three features to agent-team.ts:

1. Per-agent model/thinking override via frontmatter fields:
   Agents can now declare `model: provider/model-id` and
   `thinking: level` in their .md definition. Falls back to
   the dispatcher's model when not set.

2. Live Ollama model capability audit:
   On team activation, queries Ollama /api/show for each agent
   using a local model. Checks the `capabilities` array for
   tool-calling support, warns on sub-30B parameter models,
   and compares local digests against registry.ollama.com for
   available updates.

   Three severity levels:
   - BLOCK: model lacks "tools" capability — dispatch is blocked
   - WARN: has tools but < 30B params — unreliable for agentic use
   - UPDATE: newer version available on ollama.com

3. Dispatch-time gate:
   Before spawning a sub-agent with a local model, checks the
   capability cache (or runs a live check if cache is cold).
   Blocks dispatch with a clear error if the model cannot do
   tool calling.

New command: /agents-check — clears cache and re-audits.

Security hardening from adversarial review:
- Registry URL sanitized via SAFE_REGISTRY_NAME regex
- Inverted to LOCAL_PROVIDERS allowlist (forward-compatible)
- Failed Ollama checks not cached (transient failures don't poison)
- dispatchAgent is now async for live capability checks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant