wip-cli 0.1.0__tar.gz

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.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a bug to help us improve wip
4
+ title: "[Bug] "
5
+ labels: bug
6
+ assignees: ""
7
+ ---
8
+
9
+ ## Description
10
+
11
+ A clear and concise description of the bug.
12
+
13
+ ## Steps to Reproduce
14
+
15
+ 1. Run `...`
16
+ 2. See error
17
+
18
+ ## Expected Behavior
19
+
20
+ What you expected to happen.
21
+
22
+ ## Actual Behavior
23
+
24
+ What actually happened. Include any error messages or output.
25
+
26
+ ## Environment
27
+
28
+ - **OS:** (e.g., macOS 15.2, Ubuntu 24.04)
29
+ - **Python version:** (e.g., 3.12.1)
30
+ - **wip version:** (output of `wip version`)
31
+ - **Installation method:** (pip install -e ., etc.)
32
+
33
+ ## Additional Context
34
+
35
+ Any other context, screenshots, or log output.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest a new feature or improvement for wip
4
+ title: "[Feature] "
5
+ labels: enhancement
6
+ assignees: ""
7
+ ---
8
+
9
+ ## Problem Description
10
+
11
+ A clear description of the problem or limitation you're experiencing.
12
+
13
+ ## Proposed Solution
14
+
15
+ Describe the solution you'd like. How should it work?
16
+
17
+ ## Alternatives Considered
18
+
19
+ Describe any alternative solutions or features you've considered.
20
+
21
+ ## Additional Context
22
+
23
+ Any other context, mockups, or examples that help explain the request.
@@ -0,0 +1,19 @@
1
+ ## Summary
2
+
3
+ Brief description of what this PR does and why.
4
+
5
+ ## Changes
6
+
7
+ -
8
+
9
+ ## Test Plan
10
+
11
+ - [ ] Tested manually with `wip` / `wip --verbose` / `wip --json`
12
+ - [ ] Verified no regressions in existing commands
13
+
14
+ ## Checklist
15
+
16
+ - [ ] All new `.py` files include `from __future__ import annotations`
17
+ - [ ] No new dependencies added without justification
18
+ - [ ] Errors are handled gracefully (no unhandled exceptions)
19
+ - [ ] Docs updated if applicable (`README.md`, `docs/CONTEXT.md`)
@@ -0,0 +1,35 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ *.egg
9
+
10
+ # Virtual environment
11
+ .venv/
12
+ venv/
13
+ env/
14
+
15
+ # IDE
16
+ .vscode/
17
+ .idea/
18
+ *.swp
19
+ *.swo
20
+
21
+ # OS
22
+ .DS_Store
23
+ Thumbs.db
24
+
25
+ # Project
26
+ *.db
27
+ .wip/
28
+
29
+ # Testing / linting
30
+ .pytest_cache/
31
+ .mypy_cache/
32
+ .ruff_cache/
33
+ .coverage
34
+ .coverage.*
35
+ htmlcov/
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] - 2025-02-12
9
+
10
+ ### Added
11
+
12
+ - **Foundation & Scanner (Phase 0+1):** Config management (TOML read/write, interactive init), repo discovery, git status scanning (branch, dirty, stash, ahead/behind, recent branches/commits), Rich terminal display, CLI wiring (`wip`, `wip scan`, `wip config`, `--json`, `--verbose`)
13
+ - **Interactive Worklist (Phase 2):** `wip add/done/list` commands with repo linking, persistent JSON state, worklist shown in briefing and under linked repos
14
+ - **LLM Integration (Phase 4):** Provider abstraction (Anthropic implemented, OpenAI/Gemini stubs), `wip ai briefing`, `wip ai standup`, `wip ai ask` with streaming, prompt assembly from scan data, config-driven provider/model selection
15
+ - **Passive Agent Detection (Phase 5):** Detect coding agent activity from git signals (author names, branch patterns), agent sessions in terminal/JSON/AI output, configurable patterns with sensible defaults, status tracking (active/recent/stale)
16
+ - **Enriched File-Level Context (Phase 6):** Changed files with diff stats, stash descriptions, commit bodies and per-commit file lists in verbose output and LLM prompts
17
+
18
+ [0.1.0]: https://github.com/drmnaik/wip/releases/tag/v0.1.0
@@ -0,0 +1,49 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a friendly, safe, and welcoming experience for everyone.
7
+
8
+ ## Our Standards
9
+
10
+ Examples of behavior that contributes to a positive environment:
11
+
12
+ - Being respectful and considerate
13
+ - Giving and gracefully accepting constructive feedback
14
+ - Focusing on what is best for the community
15
+ - Showing empathy towards other community members
16
+
17
+ Examples of unacceptable behavior:
18
+
19
+ - Trolling, insulting, or derogatory comments
20
+ - Personal or political attacks
21
+ - Public or private forms of intimidation
22
+ - Publishing others' private information without explicit permission
23
+ - Other conduct which could reasonably be considered inappropriate in a professional setting
24
+
25
+ ## Enforcement Responsibilities
26
+
27
+ Project maintainers are responsible for clarifying and enforcing standards of
28
+ acceptable behavior and will take appropriate and fair corrective action in
29
+ response to any behavior that they deem inappropriate.
30
+
31
+ ## Scope
32
+
33
+ This Code of Conduct applies within all project spaces, including issues,
34
+ pull requests, and discussions, as well as public spaces when an individual
35
+ is representing the project.
36
+
37
+ ## Enforcement
38
+
39
+ Instances of unacceptable behavior may be reported to the project maintainer:
40
+
41
+ - **LinkedIn:** [Mahesh Naik](https://www.linkedin.com/in/kamaheshnaik/)
42
+
43
+ All reports will be reviewed and investigated promptly and fairly.
44
+
45
+ ## Attribution
46
+
47
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
48
+ version 2.1, available at
49
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
@@ -0,0 +1,61 @@
1
+ # Contributing to wip
2
+
3
+ Thanks for your interest in contributing to **wip**! This guide will help you get started.
4
+
5
+ ## Prerequisites
6
+
7
+ - Python 3.9+
8
+ - git
9
+
10
+ ## Dev Setup
11
+
12
+ ```bash
13
+ # Fork and clone
14
+ git clone git@github.com:<your-username>/wip.git
15
+ cd wip
16
+
17
+ # Create virtual environment
18
+ python3 -m venv .venv
19
+ source .venv/bin/activate
20
+
21
+ # Install in editable mode (includes all dependencies)
22
+ pip install -e .
23
+ ```
24
+
25
+ ## Code Conventions
26
+
27
+ Please read `docs/CONTEXT.md` — specifically **Section 5 (Code conventions)** and **Section 10 (Guidelines for contributors)** — for the full picture. Key rules:
28
+
29
+ - Every `.py` file **must** start with `from __future__ import annotations`
30
+ - Use **dataclasses** for data models, plain functions for logic
31
+ - No new dependencies without clear justification — prefer stdlib
32
+ - Handle errors gracefully — never crash the whole briefing because one repo is broken
33
+ - Follow existing import order: stdlib, third-party, local (`wip.*`)
34
+ - Keep CLI commands thin — delegate logic to modules
35
+
36
+ ## Submitting a Pull Request
37
+
38
+ 1. **Fork** the repo and create a feature branch from `main`:
39
+ ```bash
40
+ git checkout -b feat/your-feature main
41
+ ```
42
+ 2. Make your changes following the code conventions above.
43
+ 3. **Commit** with a short imperative subject line (e.g., "Add stale branch detection"). Body explains _why_, not _what_.
44
+ 4. **Push** to your fork:
45
+ ```bash
46
+ git push origin feat/your-feature
47
+ ```
48
+ 5. Open a **Pull Request** against `main` on GitHub.
49
+
50
+ ## Good First Issues
51
+
52
+ Looking for a place to start? These are great entry points:
53
+
54
+ - **Implement the OpenAI provider** — `src/wip/llm/openai.py` is scaffolded as a stub
55
+ - **Implement the Gemini provider** — `src/wip/llm/gemini.py` is scaffolded as a stub
56
+ - **Add test coverage** — there are no tests yet; adding tests for any module is valuable
57
+
58
+ ## Contact
59
+
60
+ - **LinkedIn:** [Mahesh Naik](https://www.linkedin.com/in/kamaheshnaik/)
61
+ - **Issues:** [GitHub Issues](https://github.com/drmnaik/wip/issues)
wip_cli-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Mahesh Naik
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,74 @@
1
+ # LLM_CONTEXT.md — Context for coding agents and bots
2
+
3
+ > This file provides the context a coding agent or bot needs to understand and contribute to the `wip` project. For full architecture details, data models, and roadmap, see `docs/CONTEXT.md`.
4
+
5
+ ## Quick reference
6
+
7
+ - **What:** CLI developer briefing tool — scans git repos, shows status, tracks work-in-progress items
8
+ - **Stack:** Python 3.9+, Typer (CLI), GitPython (git), Rich (display), TOML (config), JSON (worklist), Anthropic/OpenAI/Gemini SDK (LLM)
9
+ - **Build:** Hatchling, src-layout (`src/wip/`), entry point `wip = "wip.cli:app"`
10
+ - **Config:** `~/.wip/config.toml`
11
+ - **Worklist:** `~/.wip/worklist.json`
12
+
13
+ ## Rules
14
+
15
+ 1. Every `.py` file MUST start with `from __future__ import annotations`
16
+ 2. Python 3.9 minimum — no match/case, no `TypeAlias`, no 3.10+ features
17
+ 3. Use dataclasses for data models, plain functions for logic — no service classes
18
+ 4. Prefix private helpers with `_` — public API is everything without underscore
19
+ 5. Wrap all GitPython calls in try/except — never crash because one repo is broken
20
+ 6. No new dependencies without clear justification — prefer stdlib
21
+ 7. CLI commands go in `cli.py`, keep them thin, delegate to modules
22
+ 8. Errors use `raise typer.Exit(1)`, user messages use `typer.echo()`
23
+
24
+ ## Module map
25
+
26
+ | Module | Does what | Key exports |
27
+ |------------------|--------------------------------------|----------------------------------------------|
28
+ | `cli.py` | Commands, flags, orchestration | `app` |
29
+ | `config.py` | TOML config read/write | `WipConfig`, `AgentsConfig`, `load_config()`, `save_config()`|
30
+ | `discovery.py` | Find git repos on disk | `discover_repos()` |
31
+ | `scanner.py` | Collect git status + agent detection | `RepoStatus`, `AgentSession`, `FileChange`, `scan_repo()`, `scan_repos()` |
32
+ | `display.py` | Rich terminal output | `render_briefing()`, `render_json()`, `render_worklist()` |
33
+ | `worklist.py` | WIP task tracker, JSON persist | `WorkItem`, `add_item()`, `complete_item()`, `get_items()`, `detect_repo()` |
34
+ | `llm/base.py` | ABC, response type, errors | `LLMProvider`, `LLMResponse`, `LLMError` |
35
+ | `llm/registry.py`| Provider lookup, key resolution | `get_provider()`, `list_providers()` |
36
+ | `llm/prompts.py` | Prompt assembly from scan data | `build_briefing_prompt()`, `build_standup_prompt()`, `build_query_prompt()` |
37
+ | `llm/anthropic.py`| Anthropic Claude (implemented) | `AnthropicProvider` |
38
+ | `llm/openai.py` | OpenAI GPT (implemented) | `OpenAIProvider` |
39
+ | `llm/gemini.py` | Google Gemini (implemented) | `GeminiProvider` |
40
+
41
+ ## How to extend
42
+
43
+ - **New scan data:** Add field to `RepoStatus` → populate in `scan_repo()` → render in `_render_repo()`
44
+ - **New config field:** Add to `WipConfig` with default → update `load_config()`/`save_config()` → optionally add prompt in `config_init()`
45
+ - **New CLI command:** Add `@app.command()` in `cli.py` → delegate to relevant module
46
+
47
+ ### Worklist
48
+
49
+ - **New worklist field:** Add to `WorkItem` dataclass → update `add_item()` → render in `_render_work_item()`
50
+ - **New worklist command:** Add `@app.command()` in `cli.py` → delegate to `worklist.py`
51
+
52
+ ### LLM
53
+
54
+ - **New provider:** Create `llm/<name>.py` extending `LLMProvider` → implement `complete()` + `stream()` → register in `llm/registry.py` PROVIDERS dict. Follow the pattern in `anthropic.py`, `openai.py`, or `gemini.py`: lazy `_get_client()`, error mapping to `LLMAuthError`/`LLMRateLimitError`/`LLMError`, import guard for the SDK package.
55
+ - **New AI command:** Add `@ai_app.command()` in `cli.py` → use `_get_llm_provider()` + `_scan_all()` + `_llm_call()`
56
+ - **New prompt type:** Add `build_*_prompt()` to `llm/prompts.py` returning `(system, user)` tuple
57
+
58
+ ## Commands
59
+
60
+ ```bash
61
+ pip install -e . # Install in dev mode (includes all deps)
62
+ wip # Run briefing
63
+ wip --json # JSON output
64
+ wip --verbose # Full detail
65
+ wip config init # Interactive setup
66
+ wip config show # Show config
67
+ wip add "description" # Add WIP item (auto-links to current repo)
68
+ wip done <id> # Mark item as done
69
+ wip list # Show open items
70
+ wip list --all # Include completed items
71
+ wip ai briefing # AI narrative briefing
72
+ wip ai standup # Generate standup update
73
+ wip ai ask "question" # Ask about your work
74
+ ```
wip_cli-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,258 @@
1
+ Metadata-Version: 2.4
2
+ Name: wip-cli
3
+ Version: 0.1.0
4
+ Summary: Where did I leave off? A developer briefing tool.
5
+ Project-URL: Homepage, https://github.com/drmnaik/wip
6
+ Project-URL: Repository, https://github.com/drmnaik/wip
7
+ Project-URL: Issues, https://github.com/drmnaik/wip/issues
8
+ Author: Mahesh Naik
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: briefing,cli,developer-tools,git,llm
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Version Control :: Git
22
+ Requires-Python: >=3.9
23
+ Requires-Dist: anthropic>=0.79.0
24
+ Requires-Dist: gitpython>=3.1.0
25
+ Requires-Dist: google-genai>=1.0.0
26
+ Requires-Dist: openai>=1.0.0
27
+ Requires-Dist: rich>=13.0.0
28
+ Requires-Dist: tomli>=1.0.0; python_version < '3.11'
29
+ Requires-Dist: typer>=0.9.0
30
+ Description-Content-Type: text/markdown
31
+
32
+ # wip — Where did I leave off?
33
+
34
+ A developer briefing tool. **wip** scans your git repositories and shows you what you were working on, what's dirty, what's stashed, and what needs your attention. With optional AI features, it turns raw git data into narrative briefings, standup drafts, and answers to natural language questions about your work.
35
+
36
+ ## Features
37
+
38
+ - 🔍 **Auto-discover** git repos in configured directories
39
+ - 📊 **Status overview** — dirty files, stashes, ahead/behind tracking
40
+ - 🌿 **Recent branches** — see branches you've touched recently
41
+ - 💬 **Recent commits** — your commits from the last 24 hours
42
+ - 📝 **Work-in-progress tracker** — jot down tasks, link them to repos, see them in your briefing
43
+ - 🎨 **Rich terminal output** — color-coded status with icons
44
+ - 📦 **Multiple output modes** — human-friendly or JSON for scripting
45
+ - 🕵️ **Agent detection** — passively detect coding agent activity (Claude, Copilot, Cursor, Devin) from git signals
46
+ - 📂 **Enriched file-level context** — changed files with diff stats, stash descriptions, commit bodies and file lists in LLM prompts and verbose output
47
+ - 🤖 **AI-powered briefings** — narrative summaries, standup drafts, natural language queries
48
+ - 🧭 **Context-aware git help** — ask how to untangle branches, recover stashes, or fix mistakes — the AI sees your actual repo state
49
+ - 🔌 **Provider abstraction** — Anthropic and OpenAI implemented, Gemini — all implemented
50
+
51
+ ## Installation
52
+
53
+ ```bash
54
+ # Clone the repository
55
+ git clone git@github.com:drmnaik/wip.git
56
+ cd wip
57
+
58
+ # Install in editable mode (includes all dependencies)
59
+ pip install -e .
60
+ ```
61
+
62
+ **Requirements:** Python 3.9+
63
+
64
+ ## Quick Start
65
+
66
+ ```bash
67
+ # First-time setup (interactive)
68
+ wip config init
69
+
70
+ # Show your briefing
71
+ wip
72
+
73
+ # Verbose mode with full details
74
+ wip --verbose
75
+
76
+ # JSON output for scripting
77
+ wip --json
78
+ ```
79
+
80
+ ## Configuration
81
+
82
+ Config is stored at `~/.wip/config.toml`:
83
+
84
+ ```toml
85
+ directories = ["/Users/you/projects", "/Users/you/work"]
86
+ author = "Your Name"
87
+ scan_depth = 3
88
+ recent_days = 14
89
+
90
+ [llm]
91
+ provider = "anthropic"
92
+ model = "claude-haiku-4-5-20251001"
93
+ api_key_env = "ANTHROPIC_API_KEY"
94
+
95
+ # Optional: customize agent detection patterns
96
+ [agents]
97
+ authors = ["claude", "copilot", "cursor", "devin", "codex", "github-actions", "bot"]
98
+ branch_patterns = ["agent/", "claude/", "copilot/", "devin/", "cursor/"]
99
+ ```
100
+
101
+ - **directories** — which directories to scan for git repos
102
+ - **author** — your git author name (filters commits to show only yours)
103
+ - **scan_depth** — how deep to search for repos (default: 3 levels)
104
+ - **recent_days** — how far back to look for recent branches (default: 14 days)
105
+ - **[llm]** — optional LLM configuration for AI features
106
+ - **provider** — `anthropic`, `openai`, or `gemini`
107
+ - **model** — model ID (leave empty for provider default)
108
+ - **api_key_env** — environment variable name holding your API key
109
+ - **[agents]** — optional overrides for agent detection (works out of the box with defaults)
110
+ - **authors** — substrings matched case-insensitively against commit author names
111
+ - **branch_patterns** — branch name prefixes that indicate agent activity
112
+
113
+ ## Commands
114
+
115
+ ### Core
116
+
117
+ ```bash
118
+ wip # Show briefing (default command)
119
+ wip scan # Alias for wip
120
+ wip --json # Output as JSON
121
+ wip --verbose # Show full details
122
+ wip config init # Interactive setup
123
+ wip config show # Display current config
124
+ wip version # Show version
125
+ ```
126
+
127
+ ### Work-in-progress tracker
128
+
129
+ ```bash
130
+ wip add "fix auth bug" # Add item (auto-links to current repo)
131
+ wip add "read docs" --repo /path/to/repo # Add item linked to specific repo
132
+ wip done 1 # Mark item #1 as done
133
+ wip list # Show open items
134
+ wip list --all # Show all items including completed
135
+ ```
136
+
137
+ ### AI-powered commands
138
+
139
+ Requires an LLM provider configured in `~/.wip/config.toml` and the corresponding API key set as an environment variable.
140
+
141
+ ```bash
142
+ wip ai briefing # Narrative briefing
143
+ wip ai standup # Generate a standup update from git activity
144
+ wip ai ask "what was I working on yesterday?"
145
+ wip ai ask "anything I forgot to push?"
146
+ wip ai ask "summarize my week"
147
+
148
+ # Context-aware git help — the AI sees your actual branches, dirty files, and stashes
149
+ wip ai ask "I have diverged branches, how do I cleanly get back to main?"
150
+ wip ai ask "how do I recover what I stashed last week?"
151
+ wip ai ask "what git commands do I need to untangle this mess?"
152
+ ```
153
+
154
+ ## Example Output
155
+
156
+ ### Standard briefing (`wip`)
157
+
158
+ ```
159
+ wip — 3 repos scanned
160
+
161
+ work-in-progress — 2 items
162
+
163
+ #1 fix auth token refresh (auth-service) — 2h ago
164
+ #3 update API docs (api-gateway) — 1d ago
165
+
166
+ auth-service (fix/token-refresh) ⚠
167
+ 3 dirty · 1 stash · last commit 14h ago
168
+ 2 ahead, 0 behind origin
169
+ agents:
170
+ claude on agent/add-tests — 12 commits, 14 files (23m ago) ● active
171
+ copilot on copilot/logout — 4 commits, 3 files (7h ago) ○ stale
172
+ wip:
173
+ #1 fix auth token refresh (2h ago)
174
+ recent: main (3d), feat/oauth (5d)
175
+ commits today:
176
+ a1b2c3 fix retry logic for token refresh (2h ago)
177
+
178
+ frontend (main) ✓
179
+ clean · 2 stashes
180
+ 0 ahead, 0 behind origin
181
+
182
+ api-gateway (main) ↓
183
+ clean · 3 behind origin
184
+ wip:
185
+ #3 update API docs (1d ago)
186
+ ```
187
+
188
+ ### AI briefing (`wip ai briefing`)
189
+
190
+ ```
191
+ ## Briefing
192
+
193
+ You were deep in a token refresh bug in auth-service yesterday evening.
194
+ You changed the retry logic in 3 files but stashed something — probably
195
+ an alternative approach. Your note says the issue is around line 340.
196
+ You might want to start by comparing your stash against your current changes.
197
+
198
+ The frontend is clean but you left a TODO about form validation on Tuesday.
199
+ api-gateway just needs a pull — 3 commits behind, low priority.
200
+
201
+ Suggested focus: finish auth-service first (uncommitted work at risk),
202
+ then circle back to the frontend TODO.
203
+ ```
204
+
205
+ ### Status Icons
206
+
207
+ - ✓ — Clean repo, up to date
208
+ - ⚠ — Dirty files (modified, staged, or untracked)
209
+ - ↓ — Behind remote (needs pull)
210
+
211
+ ## Development
212
+
213
+ ```bash
214
+ # Install dependencies
215
+ pip install -e .
216
+
217
+ # Run from source
218
+ python -m wip.cli
219
+ ```
220
+
221
+ ## Roadmap
222
+
223
+ **Phase 0+1: Foundation + Scanner** ✅
224
+ - Config management, repo discovery, git status scanning, terminal output
225
+
226
+ **Phase 2: Interactive Worklist** ✅
227
+ - `wip add/done/list` commands with repo linking and persistent state
228
+
229
+ **Phase 4: LLM Integration** ✅
230
+ - Provider abstraction (Anthropic, OpenAI, and Gemini all implemented)
231
+ - `wip ai briefing`, `wip ai standup`, `wip ai ask` with streaming
232
+ - Prompt assembly from scan data, config-driven provider/model selection
233
+
234
+ **Phase 5: Passive Agent Detection** ✅
235
+ - Detect coding agent activity from git signals (author names, branch patterns)
236
+ - Agent sessions surface in `wip`, `wip --json`, and all AI commands automatically
237
+ - Configurable author/branch patterns with sensible defaults (zero config required)
238
+ - Status tracking: active (<1h), recent (<24h), stale (>24h)
239
+
240
+ **Phase 6: Enriched File-Level Context** ✅
241
+ - Changed files with diff stats (insertions/deletions), color-coded by stage in verbose output
242
+ - Stash descriptions surfaced in verbose display and LLM prompts
243
+ - Commit bodies (capped at 3 lines) and per-commit file lists (capped at 10 paths) in LLM context
244
+
245
+ Ideas and contributions welcome — see `docs/CONTEXT.md` for architecture details.
246
+
247
+ ## Contact
248
+
249
+ - **LinkedIn:** [Mahesh Naik](https://www.linkedin.com/in/kamaheshnaik/)
250
+ - **Issues:** [GitHub Issues](https://github.com/drmnaik/wip/issues)
251
+
252
+ ## License
253
+
254
+ MIT
255
+
256
+ ## Author
257
+
258
+ Built by Mahesh Naik with Claude