@kenkaiiii/ggcoder 4.3.150 â 4.3.152
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 +104 -47
- package/dist/ui/App.d.ts +64 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +344 -88
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/AssistantMessage.d.ts +1 -1
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
- package/dist/ui/components/AssistantMessage.js +9 -1
- package/dist/ui/components/AssistantMessage.js.map +1 -1
- package/dist/ui/components/StreamingArea.d.ts.map +1 -1
- package/dist/ui/components/StreamingArea.js +7 -3
- package/dist/ui/components/StreamingArea.js.map +1 -1
- package/dist/ui/render.d.ts +57 -0
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +130 -25
- package/dist/ui/render.js.map +1 -1
- package/dist/utils/plan-steps.d.ts +22 -0
- package/dist/utils/plan-steps.d.ts.map +1 -1
- package/dist/utils/plan-steps.js +32 -0
- package/dist/utils/plan-steps.js.map +1 -1
- package/package.json +3 -3
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. Eight providers. Zero bloat.</strong>
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
@@ -9,32 +9,29 @@
|
|
|
9
9
|
<a href="../../LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="MIT License"></a>
|
|
10
10
|
<a href="https://youtube.com/@kenkaidoesai"><img src="https://img.shields.io/badge/YouTube-FF0000?style=for-the-badge&logo=youtube&logoColor=white" alt="YouTube"></a>
|
|
11
11
|
<a href="https://skool.com/kenkai"><img src="https://img.shields.io/badge/Skool-Community-7C3AED?style=for-the-badge" alt="Skool"></a>
|
|
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>
|
|
12
13
|
</p>
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
A coding agent that ships only what the model needs to work â a tiny system prompt, one carefully-chosen MCP, and a focused tool set. Switch between Anthropic, OpenAI, GLM, Moonshot, MiniMax, Xiaomi, DeepSeek, and OpenRouter mid-conversation. Run it on its own, or let [`@kenkaiiii/gg-boss`](../gg-boss/README.md) drive a fleet of `ggcoder` workers across many projects from a single chat.
|
|
16
|
+
|
|
17
|
+
Built on [`@kenkaiiii/gg-ai`](../gg-ai/README.md) and [`@kenkaiiii/gg-agent`](../gg-agent/README.md). Part of the [GG Framework](../../README.md) monorepo.
|
|
15
18
|
|
|
16
19
|
---
|
|
17
20
|
|
|
18
|
-
##
|
|
21
|
+
## ð Run It
|
|
19
22
|
|
|
20
23
|
```bash
|
|
21
24
|
npm i -g @kenkaiiii/ggcoder
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
25
|
|
|
26
|
-
## Getting started
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
26
|
ggcoder login # Pick provider, authenticate
|
|
30
27
|
ggcoder # Start coding
|
|
31
28
|
```
|
|
32
29
|
|
|
33
|
-
OAuth for Anthropic and OpenAI (log in once, auto-refresh). API keys for
|
|
30
|
+
OAuth for Anthropic and OpenAI (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 `gg-boss`.
|
|
34
31
|
|
|
35
32
|
---
|
|
36
33
|
|
|
37
|
-
## The system prompt problem
|
|
34
|
+
## ðŠķ The system prompt problem
|
|
38
35
|
|
|
39
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.
|
|
40
37
|
|
|
@@ -54,7 +51,7 @@ GG Coder sends only what the model needs: how to work, what tools it has, and yo
|
|
|
54
51
|
|
|
55
52
|
---
|
|
56
53
|
|
|
57
|
-
## The MCP problem
|
|
54
|
+
## ð§Đ The MCP problem
|
|
58
55
|
|
|
59
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.
|
|
60
57
|
|
|
@@ -66,29 +63,78 @@ You can still add your own MCPs if you need them. But start with less. You'll ge
|
|
|
66
63
|
|
|
67
64
|
---
|
|
68
65
|
|
|
69
|
-
##
|
|
66
|
+
## ð Eight providers, one agent
|
|
70
67
|
|
|
71
68
|
Switch mid-conversation with `/model`. Not locked to anyone.
|
|
72
69
|
|
|
73
70
|
| Provider | Models | Auth |
|
|
74
71
|
|---|---|---|
|
|
75
72
|
| **Anthropic** | Claude Opus 4.7, Sonnet 4.6, Haiku 4.5 | OAuth |
|
|
76
|
-
| **OpenAI** | GPT-
|
|
77
|
-
| **Z.AI (GLM)** | GLM-5.1, GLM-4.7 | API key |
|
|
73
|
+
| **OpenAI** | GPT-5.5, GPT-5.5 Pro, GPT-5.4, GPT-5.3 Codex | OAuth |
|
|
78
74
|
| **Moonshot** | Kimi K2.6 | API key |
|
|
75
|
+
| **Z.AI (GLM)** | GLM-5.1, GLM-4.7, GLM-4.7 Flash | API key |
|
|
76
|
+
| **MiniMax** | MiniMax M2.7, M2.7 Highspeed | API key |
|
|
77
|
+
| **Xiaomi (MiMo)** | MiMo-V2-Pro | API key |
|
|
78
|
+
| **DeepSeek** | DeepSeek V4 Pro, V4 Flash | API key |
|
|
79
|
+
| **OpenRouter** | Qwen3.6-Plus + multi-provider gateway | API key |
|
|
80
|
+
|
|
81
|
+
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.
|
|
79
82
|
|
|
80
83
|
---
|
|
81
84
|
|
|
82
|
-
##
|
|
85
|
+
## ðĪ Pair it with gg-boss
|
|
83
86
|
|
|
84
|
-
|
|
87
|
+
`ggcoder` is the unit of work. [`gg-boss`](../gg-boss/README.md) is the orchestrator that drives many of them at once.
|
|
85
88
|
|
|
86
89
|
```bash
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
npm i -g @kenkaiiii/gg-boss
|
|
91
|
+
ggboss link # pick which projects to drive
|
|
92
|
+
ggboss # one chat, N parallel ggcoder workers
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Inside `gg-boss`, every project gets its own `ggcoder` `AgentSession` running in that project's directory. The boss dispatches work â `prompt_worker(project, "...")` â and each worker uses the **same** focused tool set (read, write, edit, bash, grep, find, ls, web fetch, sub-agents) you'd get running `ggcoder` solo. Workers reply with a tight `Changed / Skipped / Verified / Notes / Status` summary the boss reads, cross-checks, and routes off.
|
|
96
|
+
|
|
97
|
+
Why this works: ggcoder's lean prompt and tight tool set keep each worker cheap and predictable, so the boss can run six or more in parallel without context blow-up. Anything you can do in a single `ggcoder` session â slash commands, skills, MCPs, custom commands, project `CLAUDE.md` rules â works inside the boss too.
|
|
98
|
+
|
|
99
|
+
Run `ggcoder` directly when you're heads-down on one project. Switch to `ggboss` when you want a coordinator on top.
|
|
90
100
|
|
|
91
|
-
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## âĻïļ Keybindings
|
|
104
|
+
|
|
105
|
+
| Key | What it does |
|
|
106
|
+
|---|---|
|
|
107
|
+
| <kbd>Ctrl+T</kbd> | Open the Tasks pane |
|
|
108
|
+
| <kbd>Ctrl+S</kbd> | Open the Skills pane |
|
|
109
|
+
| <kbd>Ctrl+P</kbd> | Toggle Plan mode |
|
|
110
|
+
| <kbd>Shift+Tab</kbd> | Cycle extended thinking (off / low / medium / high / max) |
|
|
111
|
+
| <kbd>Esc</kbd> | Interrupt the agent mid-turn |
|
|
112
|
+
| <kbd>Ctrl+C</kbd> Ã2 | Exit |
|
|
113
|
+
| <kbd>â</kbd> / <kbd>â</kbd> | Recall previous prompts (when input is empty) |
|
|
114
|
+
| <kbd>Enter</kbd> | Send · <kbd>Shift+Enter</kbd> newline · `/` opens the slash menu |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## ðŽ Slash commands
|
|
119
|
+
|
|
120
|
+
Everything runs through slash commands inside the session. Not CLI flags.
|
|
121
|
+
|
|
122
|
+
| Command | What it does |
|
|
123
|
+
|---|---|
|
|
124
|
+
| `/model` (`/m`) | Switch model on the fly |
|
|
125
|
+
| `/compact` (`/c`) | Compress context when it gets long |
|
|
126
|
+
| `/new` (`/n`) | Start a fresh session in this project |
|
|
127
|
+
| `/session` (`/s`) | Resume a prior session |
|
|
128
|
+
| `/branch` (`/b`) | Branch the current conversation |
|
|
129
|
+
| `/branches` | List branches of the current session |
|
|
130
|
+
| `/buddy` | Spin up a second model to review the current chat |
|
|
131
|
+
| `/settings` (`/config`) | Open settings |
|
|
132
|
+
| `/help` (`/h`, `/?`) | Show all commands |
|
|
133
|
+
| `/quit` (`/q`, `/exit`) | Exit |
|
|
134
|
+
|
|
135
|
+
Plus built-in workflows that ship with the binary:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
92
138
|
/scan # Dead code, bugs, security issues (5 parallel agents)
|
|
93
139
|
/verify # Verify against docs and best practices (8 parallel agents)
|
|
94
140
|
/research # Research best tools and patterns for your stack
|
|
@@ -101,24 +147,44 @@ Everything runs through slash commands inside the session. Not CLI flags.
|
|
|
101
147
|
|
|
102
148
|
---
|
|
103
149
|
|
|
104
|
-
##
|
|
150
|
+
## ð Tools
|
|
151
|
+
|
|
152
|
+
GG Coder comes with a focused set of tools. Each one is small, well-described, and earns its place in the prompt.
|
|
153
|
+
|
|
154
|
+
| Tool | What it does |
|
|
155
|
+
|---|---|
|
|
156
|
+
| `bash` | Run shell commands |
|
|
157
|
+
| `read` | Read file contents |
|
|
158
|
+
| `write` | Write files |
|
|
159
|
+
| `edit` | Surgical string replacements |
|
|
160
|
+
| `grep` | Search file contents (regex) |
|
|
161
|
+
| `find` | Find files by glob pattern |
|
|
162
|
+
| `ls` | List directory contents |
|
|
163
|
+
| `web_fetch` | Fetch URL content |
|
|
164
|
+
| `subagent` | Spawn parallel sub-agents |
|
|
165
|
+
|
|
166
|
+
Plus the [Grep MCP](https://grep.dev) for searching across 1M+ public GitHub repos. Add your own MCPs in settings if you need more â but start lean.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## ðŠ Custom commands
|
|
105
171
|
|
|
106
172
|
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.
|
|
107
173
|
|
|
108
174
|
---
|
|
109
175
|
|
|
110
|
-
## Skills
|
|
176
|
+
## ð Skills
|
|
111
177
|
|
|
112
178
|
Reusable behaviors across projects. Drop `.md` files in:
|
|
113
179
|
|
|
114
180
|
- `~/.gg/skills/` for global skills (available everywhere)
|
|
115
181
|
- `.gg/skills/` for project-specific skills
|
|
116
182
|
|
|
117
|
-
They get loaded into the system prompt automatically. The agent knows what it can do without you explaining it each session.
|
|
183
|
+
They get loaded into the system prompt automatically. The agent knows what it can do without you explaining it each session. <kbd>Ctrl+S</kbd> opens a pane to browse and toggle them.
|
|
118
184
|
|
|
119
185
|
---
|
|
120
186
|
|
|
121
|
-
## Project guidelines
|
|
187
|
+
## ð Project guidelines
|
|
122
188
|
|
|
123
189
|
Drop a `CLAUDE.md` or `AGENTS.md` in your repo root (or any parent directory). GG Coder picks it up automatically.
|
|
124
190
|
|
|
@@ -126,33 +192,24 @@ Your rules. Your conventions. The agent follows them.
|
|
|
126
192
|
|
|
127
193
|
---
|
|
128
194
|
|
|
129
|
-
##
|
|
130
|
-
|
|
131
|
-
GG Coder comes with a focused set of tools:
|
|
132
|
-
|
|
133
|
-
| Tool | What it does |
|
|
134
|
-
|---|---|
|
|
135
|
-
| `bash` | Run shell commands |
|
|
136
|
-
| `read` | Read file contents |
|
|
137
|
-
| `write` | Write files |
|
|
138
|
-
| `edit` | Surgical string replacements |
|
|
139
|
-
| `grep` | Search file contents (regex) |
|
|
140
|
-
| `find` | Find files by glob pattern |
|
|
141
|
-
| `ls` | List directory contents |
|
|
142
|
-
| `web_fetch` | Fetch URL content |
|
|
143
|
-
| `subagent` | Spawn parallel sub-agents |
|
|
195
|
+
## ðĨ Community
|
|
144
196
|
|
|
145
|
-
|
|
197
|
+
- [YouTube @kenkaidoesai](https://youtube.com/@kenkaidoesai) â tutorials and demos
|
|
198
|
+
- [Skool community](https://skool.com/kenkai) â come hang out
|
|
199
|
+
- [GitHub @KenKaiii](https://github.com/KenKaiii)
|
|
146
200
|
|
|
147
201
|
---
|
|
148
202
|
|
|
149
|
-
##
|
|
203
|
+
## ð License
|
|
150
204
|
|
|
151
|
-
|
|
152
|
-
- [Skool community](https://skool.com/kenkai) - come hang out
|
|
205
|
+
MIT
|
|
153
206
|
|
|
154
207
|
---
|
|
155
208
|
|
|
156
|
-
|
|
209
|
+
<p align="center">
|
|
210
|
+
<strong>Lean prompt. Sharp tools. Real results.</strong>
|
|
211
|
+
</p>
|
|
157
212
|
|
|
158
|
-
|
|
213
|
+
<p align="center">
|
|
214
|
+
<a href="https://www.npmjs.com/package/@kenkaiiii/ggcoder"><img src="https://img.shields.io/badge/Install-npm%20i%20--g%20%40kenkaiiii%2Fggcoder-blue?style=for-the-badge" alt="Install"></a>
|
|
215
|
+
</p>
|
package/dist/ui/App.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { PasteInfo } from "./components/InputArea.js";
|
|
|
4
4
|
import { type SubAgentInfo } from "./components/SubAgentPanel.js";
|
|
5
5
|
import type { ProcessManager } from "../core/process-manager.js";
|
|
6
6
|
import type { Skill } from "../core/skills.js";
|
|
7
|
+
import { type PlanStep } from "../utils/plan-steps.js";
|
|
7
8
|
import type { MCPClientManager } from "../core/mcp/index.js";
|
|
8
9
|
import type { AuthStorage } from "../core/auth-storage.js";
|
|
9
10
|
interface UserItem {
|
|
@@ -122,6 +123,12 @@ interface TombstoneItem {
|
|
|
122
123
|
kind: "tombstone";
|
|
123
124
|
id: string;
|
|
124
125
|
}
|
|
126
|
+
interface StepDoneItem {
|
|
127
|
+
kind: "step_done";
|
|
128
|
+
stepNum: number;
|
|
129
|
+
description: string;
|
|
130
|
+
id: string;
|
|
131
|
+
}
|
|
125
132
|
interface ToolGroupTool {
|
|
126
133
|
toolCallId: string;
|
|
127
134
|
name: string;
|
|
@@ -135,7 +142,7 @@ export interface ToolGroupItem {
|
|
|
135
142
|
tools: ToolGroupTool[];
|
|
136
143
|
id: string;
|
|
137
144
|
}
|
|
138
|
-
export type CompletedItem = UserItem | TaskItem | AssistantItem | ToolStartItem | ToolDoneItem | ServerToolStartItem | ServerToolDoneItem | ErrorItem | InfoItem | UpdateNoticeItem | QueuedItem | CompactingItem | CompactedItem | DurationItem | BannerItem | SubAgentGroupItem | ToolGroupItem | PlanTransitionItem | TombstoneItem;
|
|
145
|
+
export type CompletedItem = UserItem | TaskItem | AssistantItem | ToolStartItem | ToolDoneItem | ServerToolStartItem | ServerToolDoneItem | ErrorItem | InfoItem | UpdateNoticeItem | QueuedItem | CompactingItem | CompactedItem | DurationItem | BannerItem | SubAgentGroupItem | ToolGroupItem | PlanTransitionItem | TombstoneItem | StepDoneItem;
|
|
139
146
|
export interface AppProps {
|
|
140
147
|
provider: Provider;
|
|
141
148
|
model: string;
|
|
@@ -177,6 +184,62 @@ export interface AppProps {
|
|
|
177
184
|
skills?: Skill[];
|
|
178
185
|
initialOverlay?: "pixel";
|
|
179
186
|
rebuildToolsForCwd?: (cwd: string) => AgentTool[];
|
|
187
|
+
/**
|
|
188
|
+
* Wired by `renderApp`. Tears down the current Ink instance and renders
|
|
189
|
+
* a fresh one. Patching Ink's internal frame tracking in place is
|
|
190
|
+
* unreliable (the live area drifts on subsequent streaming responses);
|
|
191
|
+
* a full unmount/remount is the only consistent reset.
|
|
192
|
+
*
|
|
193
|
+
* Used by every path that previously did a bare ANSI screen clear:
|
|
194
|
+
* `/clear`, plan accept/reject, overlay open/close, startTask, pixel fix.
|
|
195
|
+
*
|
|
196
|
+
* Runtime state (model, provider, thinking) survives via
|
|
197
|
+
* `onRuntimeStateChange`; conversation/session state survives via
|
|
198
|
+
* `sessionStore` (which App mirrors React state into).
|
|
199
|
+
*/
|
|
200
|
+
resetUI?: (options?: {
|
|
201
|
+
messages?: Message[];
|
|
202
|
+
wipeSession?: boolean;
|
|
203
|
+
history?: CompletedItem[];
|
|
204
|
+
approvedPlanPath?: string;
|
|
205
|
+
planSteps?: PlanStep[];
|
|
206
|
+
sessionPath?: string;
|
|
207
|
+
pendingAction?: {
|
|
208
|
+
prompt: string;
|
|
209
|
+
infoText?: string;
|
|
210
|
+
};
|
|
211
|
+
}) => void;
|
|
212
|
+
/**
|
|
213
|
+
* Wired by `renderApp`. App calls this when the user changes
|
|
214
|
+
* model/provider/thinking at runtime so those choices survive the
|
|
215
|
+
* unmount/remount triggered by resetUI.
|
|
216
|
+
*/
|
|
217
|
+
onRuntimeStateChange?: (updates: {
|
|
218
|
+
model?: string;
|
|
219
|
+
provider?: Provider;
|
|
220
|
+
thinking?: ThinkingLevel;
|
|
221
|
+
}) => void;
|
|
222
|
+
/**
|
|
223
|
+
* Wired by `renderApp`. App syncs its React state (messages, history,
|
|
224
|
+
* plan steps, session metadata) to this object via useEffects so a
|
|
225
|
+
* subsequent resetUI() can re-seed the conversation. Without this, every
|
|
226
|
+
* overlay close would lose the chat.
|
|
227
|
+
*/
|
|
228
|
+
sessionStore?: {
|
|
229
|
+
messages: Message[];
|
|
230
|
+
history: CompletedItem[];
|
|
231
|
+
approvedPlanPath?: string;
|
|
232
|
+
planSteps: PlanStep[];
|
|
233
|
+
sessionPath?: string;
|
|
234
|
+
sessionTitle?: string;
|
|
235
|
+
sessionTitleGenerated: boolean;
|
|
236
|
+
overlay?: "model" | "tasks" | "skills" | "plan" | "theme" | "eyes" | "pixel" | null;
|
|
237
|
+
planAutoExpand?: boolean;
|
|
238
|
+
pendingAction?: {
|
|
239
|
+
prompt: string;
|
|
240
|
+
infoText?: string;
|
|
241
|
+
};
|
|
242
|
+
};
|
|
180
243
|
}
|
|
181
244
|
export declare function App(props: AppProps): import("react/jsx-runtime").JSX.Element;
|
|
182
245
|
export {};
|
package/dist/ui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAA6B,MAAM,kBAAkB,CAAC;AAEpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAmBjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAwBjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"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"}
|