@kenkaiiii/ggcoder 5.75.0 → 5.76.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/README.md +56 -40
- package/dist/app-sidecar/auth-routes.js +4 -1
- package/dist/app-sidecar/auth-routes.js.map +1 -1
- package/dist/app-sidecar/repo-polls.d.ts +18 -0
- package/dist/app-sidecar/repo-polls.js +45 -0
- package/dist/app-sidecar/repo-polls.js.map +1 -0
- package/dist/app-sidecar/route-context.d.ts +2 -0
- package/dist/app-sidecar.js +65 -63
- package/dist/app-sidecar.js.map +1 -1
- package/dist/chat-agents/jiwa.js +2 -0
- package/dist/chat-agents/jiwa.js.map +1 -1
- package/dist/chat-agents/memory.js +2 -0
- package/dist/chat-agents/memory.js.map +1 -1
- package/dist/cli/auth.js +13 -9
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli.js +8 -9
- package/dist/cli.js.map +1 -1
- package/dist/core/checklist-prompt.d.ts +9 -2
- package/dist/core/checklist-prompt.js +26 -7
- package/dist/core/checklist-prompt.js.map +1 -1
- package/dist/core/checklist-snapshot.js +1 -1
- package/dist/core/checklist-snapshot.js.map +1 -1
- package/dist/core/checklist-store.d.ts +5 -1
- package/dist/core/checklist-store.js +35 -4
- package/dist/core/checklist-store.js.map +1 -1
- package/dist/core/event-bus.d.ts +1 -1
- package/dist/core/event-bus.js +39 -13
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/extensions/plugin-bundles.js +4 -2
- package/dist/core/extensions/plugin-bundles.js.map +1 -1
- package/dist/core/hashline.d.ts +10 -8
- package/dist/core/hashline.js.map +1 -1
- package/dist/core/mcp/client.js +2 -0
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/loopback.d.ts +2 -2
- package/dist/core/mcp/loopback.js +2 -2
- package/dist/core/mcp/shared-pool.js +4 -3
- package/dist/core/mcp/shared-pool.js.map +1 -1
- package/dist/core/persistent-shell.js +2 -1
- package/dist/core/persistent-shell.js.map +1 -1
- package/dist/core/process-manager.js +9 -1
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/project-health-scan.d.ts +109 -0
- package/dist/core/project-health-scan.js +673 -0
- package/dist/core/project-health-scan.js.map +1 -0
- package/dist/core/project-health-score.d.ts +41 -0
- package/dist/core/project-health-score.js +257 -0
- package/dist/core/project-health-score.js.map +1 -0
- package/dist/core/prompt-commands.js +15 -2
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-storage.d.ts +1 -0
- package/dist/core/session-storage.js +1 -1
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/subagent-manager.js +11 -6
- package/dist/core/subagent-manager.js.map +1 -1
- package/dist/core/subagent-receipt.js +3 -4
- package/dist/core/subagent-receipt.js.map +1 -1
- package/dist/core/ui-adoption.js +2 -0
- package/dist/core/ui-adoption.js.map +1 -1
- package/dist/core/ui-registry.js +5 -4
- package/dist/core/ui-registry.js.map +1 -1
- package/dist/core/verification-gate.js +4 -2
- package/dist/core/verification-gate.js.map +1 -1
- package/dist/core/verify-commands.js +2 -3
- package/dist/core/verify-commands.js.map +1 -1
- package/dist/modes/agent-home-mode.js +1 -4
- package/dist/modes/agent-home-mode.js.map +1 -1
- package/dist/modes/subagent-worker-mode.js +13 -8
- package/dist/modes/subagent-worker-mode.js.map +1 -1
- package/dist/tools/checklist.d.ts +5 -4
- package/dist/tools/checklist.js +17 -4
- package/dist/tools/checklist.js.map +1 -1
- package/dist/tools/edit.js +27 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/grep.js +3 -2
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.js +7 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/ui/App.js +20 -26
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/InputArea.js +0 -2
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/ToolExecution.js +4 -3
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +7 -6
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/sessions.js +1 -5
- package/dist/ui/sessions.js.map +1 -1
- package/dist/ui/utils/highlight.d.ts +0 -5
- package/dist/ui/utils/highlight.js +3 -49
- package/dist/ui/utils/highlight.js.map +1 -1
- package/dist/ui/utils/markdown-renderer.d.ts +6 -0
- package/dist/ui/utils/markdown-renderer.js +21 -5
- package/dist/ui/utils/markdown-renderer.js.map +1 -1
- package/dist/utils/process.js +3 -3
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/shared-poll.d.ts +37 -0
- package/dist/utils/shared-poll.js +104 -0
- package/dist/utils/shared-poll.js.map +1 -0
- package/package.json +5 -8
- package/dist/core/file-lock.d.ts +0 -1
- package/dist/core/file-lock.js +0 -3
- package/dist/core/file-lock.js.map +0 -1
- package/dist/core/oauth/pkce.d.ts +0 -1
- package/dist/core/oauth/pkce.js +0 -3
- package/dist/core/oauth/pkce.js.map +0 -1
- package/dist/ui/activity-phrases.d.ts +0 -10
- package/dist/ui/activity-phrases.js +0 -184
- package/dist/ui/activity-phrases.js.map +0 -1
- package/dist/ui/components/PlanApproval.d.ts +0 -8
- package/dist/ui/components/PlanApproval.js +0 -60
- package/dist/ui/components/PlanApproval.js.map +0 -1
- package/dist/ui/components/PlanBanner.d.ts +0 -6
- package/dist/ui/components/PlanBanner.js +0 -31
- package/dist/ui/components/PlanBanner.js.map +0 -1
- package/dist/ui/components/PlanProgress.d.ts +0 -7
- package/dist/ui/components/PlanProgress.js +0 -30
- package/dist/ui/components/PlanProgress.js.map +0 -1
- package/dist/ui/hooks/useMinDisplayTime.d.ts +0 -10
- package/dist/ui/hooks/useMinDisplayTime.js +0 -34
- package/dist/ui/hooks/useMinDisplayTime.js.map +0 -1
- package/dist/ui/hooks/useSessionManager.d.ts +0 -12
- package/dist/ui/hooks/useSessionManager.js +0 -43
- package/dist/ui/hooks/useSessionManager.js.map +0 -1
- package/dist/ui/hooks/useSlashCommands.d.ts +0 -6
- package/dist/ui/hooks/useSlashCommands.js +0 -11
- package/dist/ui/hooks/useSlashCommands.js.map +0 -1
- package/dist/ui/terminal-history-spacing.d.ts +0 -1
- package/dist/ui/terminal-history-spacing.js +0 -2
- package/dist/ui/terminal-history-spacing.js.map +0 -1
- package/dist/ui/utils/markdown-cache.d.ts +0 -10
- package/dist/ui/utils/markdown-cache.js +0 -58
- package/dist/ui/utils/markdown-cache.js.map +0 -1
- package/dist/ui/utils/token-to-ansi.d.ts +0 -8
- package/dist/ui/utils/token-to-ansi.js +0 -323
- package/dist/ui/utils/token-to-ansi.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|

|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<strong>The fast, lean coding agent.
|
|
4
|
+
<strong>The fast, lean coding agent. Twelve providers plus local models. Zero bloat.</strong>
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
<a href="https://github.com/KenKaiii"><img src="https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github&logoColor=white" alt="GitHub"></a>
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
A coding agent that ships only what the model needs to work — a tiny system prompt,
|
|
15
|
+
A coding agent that ships only what the model needs to work — a tiny system prompt, no bundled MCPs, and a focused tool set. Switch between Anthropic, OpenAI, Gemini, xAI, Moonshot, GLM, MiniMax, Xiaomi, DeepSeek, Sakana, OpenRouter, Hugging Face, and your own local models mid-conversation. Run it in the terminal, or use the same engine in the [GG Coder desktop app](../../README.md).
|
|
16
16
|
|
|
17
17
|
Built on [`@kenkaiiii/gg-ai`](../gg-ai/README.md), [`@kenkaiiii/gg-agent`](../gg-agent/README.md), and `@kenkaiiii/gg-core`. Part of the [GG Framework](../../README.md) monorepo.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Run It
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
npm i -g @kenkaiiii/ggcoder
|
|
@@ -27,11 +27,11 @@ ggcoder login # Pick provider, authenticate
|
|
|
27
27
|
ggcoder # Start coding
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
OAuth for Anthropic and
|
|
30
|
+
OAuth for Anthropic, OpenAI, and Gemini; OAuth or an API key for xAI and Moonshot (log in once, auto-refresh, no key to leak). API keys for the rest. Up and running in seconds either way. Auth lives in `~/.gg/auth.json` and is shared with the GG Coder desktop app.
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
##
|
|
34
|
+
## The system prompt problem
|
|
35
35
|
|
|
36
36
|
Every token in the system prompt gets processed on **every single turn**. It's not a one-time cost. It's a tax on every request.
|
|
37
37
|
|
|
@@ -51,41 +51,47 @@ GG Coder sends only what the model needs: how to work, what tools it has, and yo
|
|
|
51
51
|
|
|
52
52
|
---
|
|
53
53
|
|
|
54
|
-
##
|
|
54
|
+
## The MCP problem
|
|
55
55
|
|
|
56
56
|
Same philosophy applies to tools. People collect MCPs like Pokemon. Slack MCP, GitHub MCP, Notion MCP, five different file system MCPs. Every single one injects its tool descriptions into the context. The model now has to figure out which of 40+ tools to use for any given task.
|
|
57
57
|
|
|
58
58
|
This doesn't help. It confuses the agent. More tool descriptions = more noise = worse tool selection. The model spends tokens reasoning about tools it will never call.
|
|
59
59
|
|
|
60
|
-
GG Coder ships with
|
|
60
|
+
GG Coder ships with no MCPs by default. Checking work against real-world code is a native tool instead: `steroids` finds production repos similar to yours so the agent can confirm API usage, library idioms, and patterns. It loads only when the agent asks for it, so it costs nothing until it's used. (On GLM, the Z.AI MCP servers that come with your key are connected automatically.)
|
|
61
61
|
|
|
62
|
-
You can still add your own MCPs
|
|
62
|
+
You can still add your own MCPs in `~/.gg/mcp.json` or `.gg/mcp.json`. But start with less. You'll get better results.
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
|
-
##
|
|
66
|
+
## Twelve providers, one agent
|
|
67
67
|
|
|
68
68
|
Switch mid-conversation with `/model`. Not locked to anyone.
|
|
69
69
|
|
|
70
|
-
| Provider | Models
|
|
71
|
-
| ----------------- |
|
|
72
|
-
| **Anthropic** | Claude Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5
|
|
73
|
-
| **OpenAI** | GPT-6 Astra, GPT-6.1 Sol, GPT-6 Luna
|
|
74
|
-
| **
|
|
75
|
-
| **
|
|
76
|
-
| **
|
|
77
|
-
| **
|
|
78
|
-
| **
|
|
79
|
-
| **
|
|
80
|
-
| **
|
|
70
|
+
| Provider | Models | Auth |
|
|
71
|
+
| ----------------- | ------------------------------------------------------------------------------------------- | ---------------- |
|
|
72
|
+
| **Anthropic** | Claude Fable 5.1, Opus 5.5, Sonnet 5.5, Haiku 5.5 | OAuth |
|
|
73
|
+
| **OpenAI** | GPT-6 Astra, GPT-6.1 Sol, GPT-6 Luna | OAuth |
|
|
74
|
+
| **Gemini** | Gemini 3.1 Pro (Preview), 3.8 Flash, 3.7 Flash, 3.5 Flash, 3.5 Flash Lite, 3.1 Flash Lite | OAuth |
|
|
75
|
+
| **xAI (Grok)** | Grok 4.7 | OAuth or API key |
|
|
76
|
+
| **Moonshot** | Kimi K3, K2.8 Preview (Kimi sign-in), K2.7 Code, K2.7 Code HighSpeed | OAuth or API key |
|
|
77
|
+
| **Z.AI (GLM)** | GLM-5.3, GLM-5.3-Flash | API key |
|
|
78
|
+
| **MiniMax** | MiniMax M3 | API key |
|
|
79
|
+
| **Xiaomi (MiMo)** | MiMo-V2.6-Pro, MiMo-V2.6-Flash, MiMo-V2.6-Pro-UltraSpeed | API key |
|
|
80
|
+
| **DeepSeek** | DeepSeek V4 Pro, V4.1 Flash | API key |
|
|
81
|
+
| **Sakana (Fugu)** | Fugu, Fugu Max, Fugu Ultra | API key |
|
|
82
|
+
| **OpenRouter** | Qwen3.8 Max | API key |
|
|
83
|
+
| **Hugging Face** | Kimi K2.7 Code, DeepSeek V4.1 Flash, GPT-OSS 120B (Inference Providers router) | API key |
|
|
84
|
+
| **Local** | Any model on an OpenAI-compatible server: Ollama, LM Studio, llama.cpp, vLLM | None |
|
|
85
|
+
|
|
86
|
+
Every hosted model above except GLM-5.3, DeepSeek V4 Pro, and GPT-OSS 120B accepts images.
|
|
81
87
|
|
|
82
88
|
The same conversation, the same tools, the same project context — only the model changes. Use a strong reasoning model when you need it, swap to a fast cheap one for grunt work, never restart your session.
|
|
83
89
|
|
|
84
|
-
**Attachments.** Drag, paste, or type a path to attach images and video in the chat input. Video is sent natively to models that support it (Gemini 3.x,
|
|
90
|
+
**Attachments.** Drag, paste, or type a path to attach images and video in the chat input. Video is sent natively to models that support it (Gemini 3.x, every Moonshot Kimi model, MiniMax M3, MiMo-V2.6, Qwen3.8 Max); for other models the video is saved to a temp file and the model is told to inspect it with ffmpeg or its own tools.
|
|
85
91
|
|
|
86
92
|
---
|
|
87
93
|
|
|
88
|
-
##
|
|
94
|
+
## Keybindings
|
|
89
95
|
|
|
90
96
|
| Key | What it does |
|
|
91
97
|
| --------------------------- | ---------------------------------------------------------------- |
|
|
@@ -99,7 +105,7 @@ The same conversation, the same tools, the same project context — only the mod
|
|
|
99
105
|
|
|
100
106
|
---
|
|
101
107
|
|
|
102
|
-
##
|
|
108
|
+
## Slash commands
|
|
103
109
|
|
|
104
110
|
Everything runs through slash commands inside the session. Not CLI flags.
|
|
105
111
|
|
|
@@ -112,7 +118,8 @@ Everything runs through slash commands inside the session. Not CLI flags.
|
|
|
112
118
|
| `/branch` (`/b`) | Branch the current conversation |
|
|
113
119
|
| `/branches` | List branches of the current session |
|
|
114
120
|
| `/rewind` | Restore files and/or conversation to an earlier checkpoint |
|
|
115
|
-
| `/
|
|
121
|
+
| `/add-dir` | Add another project folder to this workspace |
|
|
122
|
+
| `/remove-dir` | Remove an added project folder from this workspace |
|
|
116
123
|
| `/settings` (`/config`) | Open settings |
|
|
117
124
|
| `/help` (`/h`, `/?`) | Show all commands |
|
|
118
125
|
| `/quit` (`/q`, `/exit`) | Exit |
|
|
@@ -120,29 +127,38 @@ Everything runs through slash commands inside the session. Not CLI flags.
|
|
|
120
127
|
Plus built-in workflows that ship with the binary:
|
|
121
128
|
|
|
122
129
|
```bash
|
|
123
|
-
/expand #
|
|
124
|
-
/init # Generate CLAUDE.md for your project
|
|
130
|
+
/expand # Find exciting new features to add
|
|
131
|
+
/init # Generate or update AGENTS.md / CLAUDE.md for your project
|
|
125
132
|
/setup-commit # Generate a /commit command with quality checks
|
|
133
|
+
/setup-ci # Set up or harden CI for any stack
|
|
126
134
|
/setup-skills # Audit and recommend reusable skills
|
|
135
|
+
/compare # Compare your code against real-world code
|
|
136
|
+
/steroids # Index real repos like this project
|
|
127
137
|
```
|
|
128
138
|
|
|
129
139
|
---
|
|
130
140
|
|
|
131
|
-
##
|
|
141
|
+
## Tools
|
|
132
142
|
|
|
133
|
-
GG Coder comes with a focused set of tools.
|
|
143
|
+
GG Coder comes with a focused set of tools. Only six core tools — `read`, `write`, `edit`, `bash`, `grep`, and `skill` — plus `tool_search` send their full schemas on every request. Everything else is listed as a one-line hint and loads the first time the agent needs it, so rarely used tools cost almost nothing.
|
|
134
144
|
|
|
135
145
|
| Tool | What it does |
|
|
136
146
|
| --------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
137
|
-
| `bash` | Run shell commands
|
|
147
|
+
| `bash` | Run shell commands, in the foreground or background (`task_output` / `task_send` / `task_stop`) |
|
|
138
148
|
| `read` | Read file contents |
|
|
139
149
|
| `write` | Write files |
|
|
140
150
|
| `edit` | Surgical string replacements |
|
|
141
151
|
| `grep` | Search file contents (regex) |
|
|
142
|
-
| `
|
|
143
|
-
| `
|
|
144
|
-
| `
|
|
152
|
+
| `skill` | Load a skill's instructions |
|
|
153
|
+
| `tool_search` | Load an on-demand tool by capability |
|
|
154
|
+
| `find` / `ls` | Find files by glob pattern / list a directory |
|
|
155
|
+
| `code_search` / `code_nav` | Find code by meaning / jump to exact definitions and callers |
|
|
156
|
+
| `web_fetch` / `web_search` | Fetch a URL / search the web |
|
|
157
|
+
| `steroids` | Find real production repos similar to yours and read how they do it |
|
|
158
|
+
| `source_path` | Locate an installed dependency's source |
|
|
145
159
|
| `screenshot` | Open a URL / dev server in a headless browser and capture a PNG so the agent can see the rendered page |
|
|
160
|
+
| `debug` | Drive the Node debugger |
|
|
161
|
+
| `enter_plan` / `exit_plan` | Plan before editing, then hand the plan back for approval |
|
|
146
162
|
| `subagent` | Run one blocking, isolated child task (backward-compatible) |
|
|
147
163
|
| `spawn_agent` / `wait_agent` | Launch persistent child turns concurrently and collect results |
|
|
148
164
|
| `send_message` / `followup_task` | Steer a running child or reuse an idle child's context |
|
|
@@ -150,7 +166,7 @@ GG Coder comes with a focused set of tools. Each one is small, well-described, a
|
|
|
150
166
|
|
|
151
167
|
The `screenshot` tool needs the optional `playwright` dependency plus a one-time `npx playwright install chromium`. Without it the tool returns an install hint instead of failing the turn. Captured images render inline in graphics-capable terminals (kitty, Ghostty, WezTerm, iTerm2); other terminals show a text line.
|
|
152
168
|
|
|
153
|
-
|
|
169
|
+
Add your own MCPs in `~/.gg/mcp.json` or `.gg/mcp.json` if you need more — but start lean.
|
|
154
170
|
|
|
155
171
|
### Async subagent lifecycle
|
|
156
172
|
|
|
@@ -164,13 +180,13 @@ Parent cancellation interrupts active children. Session disposal shuts down ever
|
|
|
164
180
|
|
|
165
181
|
---
|
|
166
182
|
|
|
167
|
-
##
|
|
183
|
+
## Custom commands
|
|
168
184
|
|
|
169
185
|
Drop a markdown file in `.gg/commands/` and it becomes a slash command. Your React app gets `/deploy` and `/storybook`. Your API gets `/migrate` and `/seed`. Different projects, different commands.
|
|
170
186
|
|
|
171
187
|
---
|
|
172
188
|
|
|
173
|
-
##
|
|
189
|
+
## Checkpoints & `/rewind`
|
|
174
190
|
|
|
175
191
|
Before every file the agent writes or edits, GG Coder snapshots the prior on-disk content into a per-session checkpoint (stored under `~/.gg/checkpoints/`, never in your repo). Run `/rewind` to pick an earlier checkpoint and restore **code only**, **conversation only**, or **both**.
|
|
176
192
|
|
|
@@ -178,7 +194,7 @@ Only edits made through ggcoder's `write`/`edit` tools are tracked — changes m
|
|
|
178
194
|
|
|
179
195
|
---
|
|
180
196
|
|
|
181
|
-
##
|
|
197
|
+
## Skills
|
|
182
198
|
|
|
183
199
|
Reusable behaviors across projects. Drop `.md` files in:
|
|
184
200
|
|
|
@@ -205,15 +221,15 @@ Eleven ship built in, and route themselves when the work matches:
|
|
|
205
221
|
|
|
206
222
|
---
|
|
207
223
|
|
|
208
|
-
##
|
|
224
|
+
## Project guidelines
|
|
209
225
|
|
|
210
|
-
Drop
|
|
226
|
+
Drop an `AGENTS.md` or `CLAUDE.md` in your repo root (or any parent directory). GG Coder picks it up automatically. One file per directory is loaded, first match wins: `AGENTS.override.md` > `AGENTS.md` > `CLAUDE.md` > `.cursorrules` > `CONVENTIONS.md`.
|
|
211
227
|
|
|
212
228
|
Your rules. Your conventions. The agent follows them.
|
|
213
229
|
|
|
214
230
|
---
|
|
215
231
|
|
|
216
|
-
##
|
|
232
|
+
## Community
|
|
217
233
|
|
|
218
234
|
- [YouTube @kenkaidoesai](https://youtube.com/@kenkaidoesai) — tutorials and demos
|
|
219
235
|
- [Skool community](https://skool.com/kenkai) — come hang out
|
|
@@ -221,7 +237,7 @@ Your rules. Your conventions. The agent follows them.
|
|
|
221
237
|
|
|
222
238
|
---
|
|
223
239
|
|
|
224
|
-
##
|
|
240
|
+
## License
|
|
225
241
|
|
|
226
242
|
MIT
|
|
227
243
|
|
|
@@ -115,8 +115,11 @@ export function handleAuthRoutes(ctx, req, res, url, method) {
|
|
|
115
115
|
else if (provider === "moonshot" || provider === "xai") {
|
|
116
116
|
// Subscription OAuth (Kimi plan / SuperGrok-X Premium) stores under
|
|
117
117
|
// a distinct key so it can coexist with the provider's API key.
|
|
118
|
+
const dual = dualAuthProvider(provider);
|
|
119
|
+
if (!dual)
|
|
120
|
+
throw new Error(`No subscription storage key for ${provider}`);
|
|
118
121
|
creds = provider === "moonshot" ? await loginKimi(cb) : await loginXai(cb);
|
|
119
|
-
storageKey =
|
|
122
|
+
storageKey = dual.oauthKey;
|
|
120
123
|
}
|
|
121
124
|
else {
|
|
122
125
|
throw new Error(`OAuth not implemented for ${provider}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/app-sidecar/auth-routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/app-sidecar/auth-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ProjectHealthScan } from "../core/project-health-scan.js";
|
|
2
|
+
import { type GitHubOpenCounts } from "../utils/github.js";
|
|
3
|
+
import { type GitHubCI } from "../utils/github-ci.js";
|
|
4
|
+
import { type SharedPolls } from "../utils/shared-poll.js";
|
|
5
|
+
/**
|
|
6
|
+
* Daemon-wide repo pollers, shared by every window on the same repo so
|
|
7
|
+
* opening a project twice doesn't double the git/`gh` processes.
|
|
8
|
+
* Keys: `dirtyFiles`, `gitHubCI` and `projectHealth` by resolved cwd (a
|
|
9
|
+
* worktree has its own files and HEAD); `gitHubCounts` by `owner/repo`
|
|
10
|
+
* (counts are repo-wide).
|
|
11
|
+
*/
|
|
12
|
+
export interface RepoPolls {
|
|
13
|
+
readonly dirtyFiles: SharedPolls<number>;
|
|
14
|
+
readonly gitHubCounts: SharedPolls<GitHubOpenCounts>;
|
|
15
|
+
readonly gitHubCI: SharedPolls<GitHubCI | null>;
|
|
16
|
+
readonly projectHealth: SharedPolls<ProjectHealthScan>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createRepoPolls(): RepoPolls;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createProjectHealthScanner } from "../core/project-health-scan.js";
|
|
2
|
+
import { getGitDirtyFileCount } from "../utils/git.js";
|
|
3
|
+
import { getGitHubOpenCounts } from "../utils/github.js";
|
|
4
|
+
import { startGitHubCIPoll } from "../utils/github-ci.js";
|
|
5
|
+
import { createSharedPolls, startIntervalPoll } from "../utils/shared-poll.js";
|
|
6
|
+
export function createRepoPolls() {
|
|
7
|
+
return {
|
|
8
|
+
// Files change outside the agent (editor saves, terminal commits).
|
|
9
|
+
dirtyFiles: createSharedPolls((cwd, publish) => startIntervalPoll({
|
|
10
|
+
fetch: () => getGitDirtyFileCount(cwd),
|
|
11
|
+
publish,
|
|
12
|
+
firstDelayMs: 5000,
|
|
13
|
+
intervalMs: 5000,
|
|
14
|
+
})),
|
|
15
|
+
// Issues/PRs change outside the app; network-bound, so a slow cadence well
|
|
16
|
+
// under the search API's rate budget (2 calls per tick).
|
|
17
|
+
gitHubCounts: createSharedPolls((slug, publish) => startIntervalPoll({
|
|
18
|
+
fetch: () => getGitHubOpenCounts(slug),
|
|
19
|
+
publish,
|
|
20
|
+
firstDelayMs: 2000,
|
|
21
|
+
intervalMs: 60_000,
|
|
22
|
+
})),
|
|
23
|
+
gitHubCI: createSharedPolls((cwd, publish) => startGitHubCIPoll(cwd, publish)),
|
|
24
|
+
// Reads every source file on the first pass; later passes only stat
|
|
25
|
+
// unchanged files (the scanner caches by mtime + size). Runs also refresh it.
|
|
26
|
+
projectHealth: createSharedPolls((cwd, publish) => {
|
|
27
|
+
const scanner = createProjectHealthScanner();
|
|
28
|
+
const controller = new AbortController();
|
|
29
|
+
const poller = startIntervalPoll({
|
|
30
|
+
fetch: () => scanner.scan(cwd, new Date(), controller.signal),
|
|
31
|
+
publish,
|
|
32
|
+
firstDelayMs: 3000,
|
|
33
|
+
intervalMs: 120_000,
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
refresh: poller.refresh,
|
|
37
|
+
stop() {
|
|
38
|
+
controller.abort();
|
|
39
|
+
poller.stop();
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=repo-polls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-polls.js","sourceRoot":"","sources":["../../src/app-sidecar/repo-polls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAA0B,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAiB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,yBAAyB,CAAC;AAgBjG,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,mEAAmE;QACnE,UAAU,EAAE,iBAAiB,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAC7C,iBAAiB,CAAC;YAChB,KAAK,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC;YACtC,OAAO;YACP,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;SACjB,CAAC,CACH;QACD,2EAA2E;QAC3E,yDAAyD;QACzD,YAAY,EAAE,iBAAiB,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAChD,iBAAiB,CAAC;YAChB,KAAK,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACtC,OAAO;YACP,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,MAAM;SACnB,CAAC,CACH;QACD,QAAQ,EAAE,iBAAiB,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9E,oEAAoE;QACpE,8EAA8E;QAC9E,aAAa,EAAE,iBAAiB,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC;gBAC/B,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC;gBAC7D,OAAO;gBACP,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,OAAO;aACpB,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI;oBACF,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -12,6 +12,7 @@ import type { RunLifecycle } from "../core/run-lifecycle.js";
|
|
|
12
12
|
import type { HfSearchRow } from "../hf-pull.js";
|
|
13
13
|
import type { ServeController } from "../modes/serve-mode.js";
|
|
14
14
|
import type { GitHubCI } from "../utils/github-ci.js";
|
|
15
|
+
import type { ProjectHealth } from "../core/project-health-score.js";
|
|
15
16
|
import type { ProgressManager } from "./progress-manager.js";
|
|
16
17
|
import type { HfPullState, SseClient, WorkspaceMode } from "./session-types.js";
|
|
17
18
|
import type { Provider } from "@kenkaiiii/gg-ai";
|
|
@@ -36,6 +37,7 @@ export interface SessionRouteContext {
|
|
|
36
37
|
gitHubPRs: number | null;
|
|
37
38
|
gitHubRepoUrl: string | null;
|
|
38
39
|
gitHubCI: GitHubCI | null;
|
|
40
|
+
projectHealth: ProjectHealth | null;
|
|
39
41
|
tasks: BackgroundProcess[];
|
|
40
42
|
additionalRoots: string[];
|
|
41
43
|
};
|
package/dist/app-sidecar.js
CHANGED
|
@@ -42,8 +42,9 @@ import { SettingsManager } from "./core/settings-manager.js";
|
|
|
42
42
|
import { getModel, getDefaultThinkingLevel, getContextWindow, clearRuntimeModels, registerRuntimeModels, } from "./core/model-registry.js";
|
|
43
43
|
import { resolveStartOrFallback } from "./core/resolve-start.js";
|
|
44
44
|
import { getGitBranch, getGitDirtyFileCount, isGitRepo } from "./utils/git.js";
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
45
|
+
import { getGitHubRepoSlug } from "./utils/github.js";
|
|
46
|
+
import { scoreProjectHealth } from "./core/project-health-score.js";
|
|
47
|
+
import { createRepoPolls } from "./app-sidecar/repo-polls.js";
|
|
47
48
|
import { extractPlanSteps } from "./utils/plan-steps.js";
|
|
48
49
|
import { getSupportedThinkingLevels, isThinkingLevelSupported } from "./core/thinking-level.js";
|
|
49
50
|
import { PROMPT_COMMANDS } from "./core/prompt-commands.js";
|
|
@@ -201,6 +202,9 @@ async function main() {
|
|
|
201
202
|
ctx.broadcast("progress", { ...snapshot, origin: ctx.id === originId });
|
|
202
203
|
});
|
|
203
204
|
const { subscriptionUsage } = createUsageService(auth);
|
|
205
|
+
// git status / GitHub counts / CI pollers, one per repo however many windows
|
|
206
|
+
// have it open (each window used to run its own).
|
|
207
|
+
const repoPolls = createRepoPolls();
|
|
204
208
|
/** Resolve the target session id: the `x-gg-session` header, else a
|
|
205
209
|
* `?session=` query param (used by the SSE /events connection). */
|
|
206
210
|
function sessionIdFromReq(req, url) {
|
|
@@ -266,6 +270,7 @@ async function main() {
|
|
|
266
270
|
jiwaStore,
|
|
267
271
|
broadcastAll,
|
|
268
272
|
oauthInFlightProviders,
|
|
273
|
+
repoPolls,
|
|
269
274
|
}, { id, mode, chatAgent, cwd: sessionCwd, sessionPath });
|
|
270
275
|
sessions.set(id, ctx);
|
|
271
276
|
log("INFO", "app-sidecar", "session created", {
|
|
@@ -431,7 +436,7 @@ async function main() {
|
|
|
431
436
|
* logger, PATH, shared auth file, and radio live at the daemon level.
|
|
432
437
|
*/
|
|
433
438
|
async function createSession(deps, opts) {
|
|
434
|
-
const { auth, progress, memoryStore, jiwaStore, broadcastAll, oauthInFlightProviders } = deps;
|
|
439
|
+
const { auth, progress, memoryStore, jiwaStore, broadcastAll, oauthInFlightProviders, repoPolls, } = deps;
|
|
435
440
|
const paths = deps.paths;
|
|
436
441
|
const mode = opts.mode;
|
|
437
442
|
let chatAgent = opts.chatAgent;
|
|
@@ -806,6 +811,23 @@ async function createSession(deps, opts) {
|
|
|
806
811
|
let gitHubIssues = null;
|
|
807
812
|
let gitHubPRs = null;
|
|
808
813
|
let gitHubCI = null;
|
|
814
|
+
// Latest Project Health scan (code mode only); scored with the live CI result.
|
|
815
|
+
let projectHealthScan = null;
|
|
816
|
+
// Footer extras go out on every git/CI/task change; score only when the scan
|
|
817
|
+
// or CI result actually changed.
|
|
818
|
+
let scoredHealth = null;
|
|
819
|
+
function currentProjectHealth() {
|
|
820
|
+
if (!projectHealthScan)
|
|
821
|
+
return null;
|
|
822
|
+
if (scoredHealth?.scan !== projectHealthScan || scoredHealth.ci !== gitHubCI) {
|
|
823
|
+
scoredHealth = {
|
|
824
|
+
scan: projectHealthScan,
|
|
825
|
+
ci: gitHubCI,
|
|
826
|
+
health: scoreProjectHealth(projectHealthScan, gitHubCI),
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
return scoredHealth.health;
|
|
830
|
+
}
|
|
809
831
|
function currentContextWindow() {
|
|
810
832
|
const st = session.getState();
|
|
811
833
|
return getContextWindow(st.model, { provider: st.provider, accountId: st.accountId });
|
|
@@ -822,6 +844,7 @@ async function createSession(deps, opts) {
|
|
|
822
844
|
gitHubPRs,
|
|
823
845
|
gitHubCI,
|
|
824
846
|
gitHubRepoUrl: gitHubSlug ? `https://github.com/${gitHubSlug}` : null,
|
|
847
|
+
projectHealth: currentProjectHealth(),
|
|
825
848
|
tasks: session.listBackgroundProcesses(),
|
|
826
849
|
// Roots added with /add-dir — the header shows a badge when non-empty.
|
|
827
850
|
additionalRoots: session.getAdditionalRoots(),
|
|
@@ -840,20 +863,6 @@ async function createSession(deps, opts) {
|
|
|
840
863
|
error: err instanceof Error ? err.message : String(err),
|
|
841
864
|
});
|
|
842
865
|
});
|
|
843
|
-
// Refresh the GitHub counts and broadcast only on change. Transient failures
|
|
844
|
-
// keep the last-known numbers so the chips don't flicker off on a timeout.
|
|
845
|
-
async function refreshGitHubCounts() {
|
|
846
|
-
if (!gitHubSlug)
|
|
847
|
-
return;
|
|
848
|
-
const counts = await getGitHubOpenCounts(gitHubSlug);
|
|
849
|
-
if (!counts)
|
|
850
|
-
return;
|
|
851
|
-
if (counts.issues !== gitHubIssues || counts.prs !== gitHubPRs) {
|
|
852
|
-
gitHubIssues = counts.issues;
|
|
853
|
-
gitHubPRs = counts.prs;
|
|
854
|
-
broadcast("extras", footerExtras());
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
866
|
// tool_call_end carries no tool name (only the id), so remember each call's
|
|
858
867
|
// name from tool_call_start to log a useful line on completion. Mirrors the
|
|
859
868
|
// CLI's logging so the app sidecar's ~/.gg/gg-app-sidecar.log records tool
|
|
@@ -1432,8 +1441,9 @@ async function createSession(deps, opts) {
|
|
|
1432
1441
|
]);
|
|
1433
1442
|
// A run may have opened/closed issues or PRs — refresh fire-and-forget so
|
|
1434
1443
|
// teardown isn't delayed by the network. Broadcasts itself on change.
|
|
1435
|
-
|
|
1436
|
-
|
|
1444
|
+
gitHubCountsPoll?.refresh();
|
|
1445
|
+
ciPoll.refresh();
|
|
1446
|
+
healthPoll?.refresh();
|
|
1437
1447
|
// Serialize behind any marker/tool-triggered refresh so the terminal
|
|
1438
1448
|
// progress snapshot uses the live plan file. Once every canonical step
|
|
1439
1449
|
// is complete, remove the approved plan from future system prompts and
|
|
@@ -1755,48 +1765,43 @@ async function createSession(deps, opts) {
|
|
|
1755
1765
|
tasksPoll.unref?.();
|
|
1756
1766
|
};
|
|
1757
1767
|
scheduleTasksPoll(1500);
|
|
1758
|
-
//
|
|
1759
|
-
// the
|
|
1760
|
-
//
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
const
|
|
1764
|
-
if (
|
|
1768
|
+
// Keep the dirty count, GitHub issue/PR counts and CI current while idle
|
|
1769
|
+
// (they change outside the agent: editor saves, commits, teammates). Branch/
|
|
1770
|
+
// repo state already refreshes after agent runs. The pollers are shared with
|
|
1771
|
+
// every other window on the same repo; each window broadcasts only changes.
|
|
1772
|
+
const repoKey = path.resolve(cwd);
|
|
1773
|
+
const dirtyFilesPoll = repoPolls.dirtyFiles.subscribe(repoKey, (next) => {
|
|
1774
|
+
if (next === gitDirtyFileCount)
|
|
1765
1775
|
return;
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
}
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
// GitHub issue/PR counts change outside the app (web UI, teammates), so poll
|
|
1783
|
-
// on a slow cadence. Network-bound, so keep it well under the search API's
|
|
1784
|
-
// rate budget (2 calls per tick). No-op when the origin isn't a GitHub repo.
|
|
1785
|
-
let gitHubPoll;
|
|
1786
|
-
let gitHubPollStopped = false;
|
|
1787
|
-
const scheduleGitHubPoll = (delay) => {
|
|
1788
|
-
if (gitHubPollStopped)
|
|
1776
|
+
gitDirtyFileCount = next;
|
|
1777
|
+
broadcast("extras", footerExtras());
|
|
1778
|
+
});
|
|
1779
|
+
// Failed checks publish nothing, so the chips keep their last-known numbers
|
|
1780
|
+
// instead of flickering off on a timeout. None when origin isn't GitHub.
|
|
1781
|
+
const gitHubCountsPoll = gitHubSlug
|
|
1782
|
+
? repoPolls.gitHubCounts.subscribe(gitHubSlug, (counts) => {
|
|
1783
|
+
if (counts.issues === gitHubIssues && counts.prs === gitHubPRs)
|
|
1784
|
+
return;
|
|
1785
|
+
gitHubIssues = counts.issues;
|
|
1786
|
+
gitHubPRs = counts.prs;
|
|
1787
|
+
broadcast("extras", footerExtras());
|
|
1788
|
+
})
|
|
1789
|
+
: null;
|
|
1790
|
+
const ciPoll = repoPolls.gitHubCI.subscribe(repoKey, (next) => {
|
|
1791
|
+
if (JSON.stringify(next) === JSON.stringify(gitHubCI))
|
|
1789
1792
|
return;
|
|
1790
|
-
gitHubPoll = setTimeout(() => {
|
|
1791
|
-
void refreshGitHubCounts().finally(() => scheduleGitHubPoll(60_000));
|
|
1792
|
-
}, delay);
|
|
1793
|
-
gitHubPoll.unref?.();
|
|
1794
|
-
};
|
|
1795
|
-
scheduleGitHubPoll(2000);
|
|
1796
|
-
const ciPoll = startGitHubCIPoll(cwd, (next) => {
|
|
1797
1793
|
gitHubCI = next;
|
|
1798
1794
|
broadcast("extras", footerExtras());
|
|
1799
1795
|
});
|
|
1796
|
+
// Project Health is a code-workspace signal; chat and motion windows skip the scan.
|
|
1797
|
+
const healthPoll = mode === "code"
|
|
1798
|
+
? repoPolls.projectHealth.subscribe(repoKey, (next) => {
|
|
1799
|
+
if (JSON.stringify(next) === JSON.stringify(projectHealthScan))
|
|
1800
|
+
return;
|
|
1801
|
+
projectHealthScan = next;
|
|
1802
|
+
broadcast("extras", footerExtras());
|
|
1803
|
+
})
|
|
1804
|
+
: null;
|
|
1800
1805
|
const routeCtx = {
|
|
1801
1806
|
get session() {
|
|
1802
1807
|
return session;
|
|
@@ -2031,13 +2036,10 @@ async function createSession(deps, opts) {
|
|
|
2031
2036
|
tasksPollStopped = true;
|
|
2032
2037
|
if (tasksPoll)
|
|
2033
2038
|
clearTimeout(tasksPoll);
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
if (gitHubPoll)
|
|
2039
|
-
clearTimeout(gitHubPoll);
|
|
2040
|
-
ciPoll.stop();
|
|
2039
|
+
dirtyFilesPoll.unsubscribe();
|
|
2040
|
+
gitHubCountsPoll?.unsubscribe();
|
|
2041
|
+
ciPoll.unsubscribe();
|
|
2042
|
+
healthPoll?.unsubscribe();
|
|
2041
2043
|
// Stop the Telegram serve loop + dispose its per-chat sessions.
|
|
2042
2044
|
if (serveController)
|
|
2043
2045
|
await serveController.stop().catch(() => { });
|