@kenkaiiii/ggcoder 5.75.1 → 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.
Files changed (133) hide show
  1. package/README.md +56 -40
  2. package/dist/app-sidecar/auth-routes.js +4 -1
  3. package/dist/app-sidecar/auth-routes.js.map +1 -1
  4. package/dist/app-sidecar/repo-polls.d.ts +5 -2
  5. package/dist/app-sidecar/repo-polls.js +20 -0
  6. package/dist/app-sidecar/repo-polls.js.map +1 -1
  7. package/dist/app-sidecar/route-context.d.ts +2 -0
  8. package/dist/app-sidecar.js +30 -0
  9. package/dist/app-sidecar.js.map +1 -1
  10. package/dist/chat-agents/jiwa.js +2 -0
  11. package/dist/chat-agents/jiwa.js.map +1 -1
  12. package/dist/chat-agents/memory.js +2 -0
  13. package/dist/chat-agents/memory.js.map +1 -1
  14. package/dist/cli/auth.js +13 -9
  15. package/dist/cli/auth.js.map +1 -1
  16. package/dist/cli.js +8 -9
  17. package/dist/cli.js.map +1 -1
  18. package/dist/core/checklist-prompt.d.ts +9 -2
  19. package/dist/core/checklist-prompt.js +26 -7
  20. package/dist/core/checklist-prompt.js.map +1 -1
  21. package/dist/core/checklist-snapshot.js +1 -1
  22. package/dist/core/checklist-snapshot.js.map +1 -1
  23. package/dist/core/checklist-store.d.ts +5 -1
  24. package/dist/core/checklist-store.js +35 -4
  25. package/dist/core/checklist-store.js.map +1 -1
  26. package/dist/core/event-bus.d.ts +1 -1
  27. package/dist/core/event-bus.js +39 -13
  28. package/dist/core/event-bus.js.map +1 -1
  29. package/dist/core/extensions/plugin-bundles.js +4 -2
  30. package/dist/core/extensions/plugin-bundles.js.map +1 -1
  31. package/dist/core/hashline.d.ts +10 -8
  32. package/dist/core/hashline.js.map +1 -1
  33. package/dist/core/mcp/client.js +2 -0
  34. package/dist/core/mcp/client.js.map +1 -1
  35. package/dist/core/mcp/loopback.d.ts +2 -2
  36. package/dist/core/mcp/loopback.js +2 -2
  37. package/dist/core/mcp/shared-pool.js +4 -3
  38. package/dist/core/mcp/shared-pool.js.map +1 -1
  39. package/dist/core/persistent-shell.js +2 -1
  40. package/dist/core/persistent-shell.js.map +1 -1
  41. package/dist/core/process-manager.js +9 -1
  42. package/dist/core/process-manager.js.map +1 -1
  43. package/dist/core/project-health-scan.d.ts +109 -0
  44. package/dist/core/project-health-scan.js +673 -0
  45. package/dist/core/project-health-scan.js.map +1 -0
  46. package/dist/core/project-health-score.d.ts +41 -0
  47. package/dist/core/project-health-score.js +257 -0
  48. package/dist/core/project-health-score.js.map +1 -0
  49. package/dist/core/prompt-commands.js +15 -2
  50. package/dist/core/prompt-commands.js.map +1 -1
  51. package/dist/core/session-manager.js.map +1 -1
  52. package/dist/core/session-storage.d.ts +1 -0
  53. package/dist/core/session-storage.js +1 -1
  54. package/dist/core/session-storage.js.map +1 -1
  55. package/dist/core/subagent-manager.js +11 -6
  56. package/dist/core/subagent-manager.js.map +1 -1
  57. package/dist/core/subagent-receipt.js +3 -4
  58. package/dist/core/subagent-receipt.js.map +1 -1
  59. package/dist/core/ui-adoption.js +2 -0
  60. package/dist/core/ui-adoption.js.map +1 -1
  61. package/dist/core/ui-registry.js +5 -4
  62. package/dist/core/ui-registry.js.map +1 -1
  63. package/dist/core/verification-gate.js +4 -2
  64. package/dist/core/verification-gate.js.map +1 -1
  65. package/dist/core/verify-commands.js +2 -3
  66. package/dist/core/verify-commands.js.map +1 -1
  67. package/dist/modes/agent-home-mode.js +1 -4
  68. package/dist/modes/agent-home-mode.js.map +1 -1
  69. package/dist/modes/subagent-worker-mode.js +13 -8
  70. package/dist/modes/subagent-worker-mode.js.map +1 -1
  71. package/dist/tools/checklist.d.ts +5 -4
  72. package/dist/tools/checklist.js +17 -4
  73. package/dist/tools/checklist.js.map +1 -1
  74. package/dist/tools/edit.js.map +1 -1
  75. package/dist/tools/grep.js +3 -2
  76. package/dist/tools/grep.js.map +1 -1
  77. package/dist/tools/index.js +7 -5
  78. package/dist/tools/index.js.map +1 -1
  79. package/dist/ui/App.js +20 -26
  80. package/dist/ui/App.js.map +1 -1
  81. package/dist/ui/components/InputArea.js +0 -2
  82. package/dist/ui/components/InputArea.js.map +1 -1
  83. package/dist/ui/components/ToolExecution.js +4 -3
  84. package/dist/ui/components/ToolExecution.js.map +1 -1
  85. package/dist/ui/hooks/useAgentLoop.js +7 -6
  86. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  87. package/dist/ui/sessions.js +1 -5
  88. package/dist/ui/sessions.js.map +1 -1
  89. package/dist/ui/utils/highlight.d.ts +0 -5
  90. package/dist/ui/utils/highlight.js +3 -49
  91. package/dist/ui/utils/highlight.js.map +1 -1
  92. package/dist/ui/utils/markdown-renderer.d.ts +6 -0
  93. package/dist/ui/utils/markdown-renderer.js +21 -5
  94. package/dist/ui/utils/markdown-renderer.js.map +1 -1
  95. package/dist/utils/process.js +3 -3
  96. package/dist/utils/process.js.map +1 -1
  97. package/package.json +5 -8
  98. package/dist/core/file-lock.d.ts +0 -1
  99. package/dist/core/file-lock.js +0 -3
  100. package/dist/core/file-lock.js.map +0 -1
  101. package/dist/core/oauth/pkce.d.ts +0 -1
  102. package/dist/core/oauth/pkce.js +0 -3
  103. package/dist/core/oauth/pkce.js.map +0 -1
  104. package/dist/ui/activity-phrases.d.ts +0 -10
  105. package/dist/ui/activity-phrases.js +0 -184
  106. package/dist/ui/activity-phrases.js.map +0 -1
  107. package/dist/ui/components/PlanApproval.d.ts +0 -8
  108. package/dist/ui/components/PlanApproval.js +0 -60
  109. package/dist/ui/components/PlanApproval.js.map +0 -1
  110. package/dist/ui/components/PlanBanner.d.ts +0 -6
  111. package/dist/ui/components/PlanBanner.js +0 -31
  112. package/dist/ui/components/PlanBanner.js.map +0 -1
  113. package/dist/ui/components/PlanProgress.d.ts +0 -7
  114. package/dist/ui/components/PlanProgress.js +0 -30
  115. package/dist/ui/components/PlanProgress.js.map +0 -1
  116. package/dist/ui/hooks/useMinDisplayTime.d.ts +0 -10
  117. package/dist/ui/hooks/useMinDisplayTime.js +0 -34
  118. package/dist/ui/hooks/useMinDisplayTime.js.map +0 -1
  119. package/dist/ui/hooks/useSessionManager.d.ts +0 -12
  120. package/dist/ui/hooks/useSessionManager.js +0 -43
  121. package/dist/ui/hooks/useSessionManager.js.map +0 -1
  122. package/dist/ui/hooks/useSlashCommands.d.ts +0 -6
  123. package/dist/ui/hooks/useSlashCommands.js +0 -11
  124. package/dist/ui/hooks/useSlashCommands.js.map +0 -1
  125. package/dist/ui/terminal-history-spacing.d.ts +0 -1
  126. package/dist/ui/terminal-history-spacing.js +0 -2
  127. package/dist/ui/terminal-history-spacing.js.map +0 -1
  128. package/dist/ui/utils/markdown-cache.d.ts +0 -10
  129. package/dist/ui/utils/markdown-cache.js +0 -58
  130. package/dist/ui/utils/markdown-cache.js.map +0 -1
  131. package/dist/ui/utils/token-to-ansi.d.ts +0 -8
  132. package/dist/ui/utils/token-to-ansi.js +0 -323
  133. package/dist/ui/utils/token-to-ansi.js.map +0 -1
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ![ggcoder](screenshots/ggcoder.png)
2
2
 
3
3
  <p align="center">
4
- <strong>The fast, lean coding agent. Eight providers. Zero bloat.</strong>
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, one carefully-chosen MCP, and a focused tool set. Switch between Anthropic, OpenAI, GLM, Moonshot, MiniMax, Xiaomi, DeepSeek, and OpenRouter mid-conversation. Run it in the terminal, or use the same engine in the [GG Coder desktop app](../../README.md).
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
- ## 🚀 Run It
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 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 the GG Coder desktop app.
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
- ## 🪶 The system prompt problem
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
- ## 🧩 The MCP problem
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 one MCP: [Grep](https://grep.dev). That's it. It lets the agent search across 1M+ public GitHub repos to verify implementations against real-world code. Correct API usage, library idioms, production patterns. One tool that actually makes the output better.
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 if you need them. But start with less. You'll get better results.
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
- ## 🎛 Eight providers, one agent
66
+ ## Twelve providers, one agent
67
67
 
68
68
  Switch mid-conversation with `/model`. Not locked to anyone.
69
69
 
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
- | **Moonshot** | Kimi K3, K2.8 Preview (Kimi sign-in), K2.7 Code | OAuth or API key |
75
- | **Z.AI (GLM)** | GLM-5.3, GLM-5.3-Flash (image) | API key |
76
- | **MiniMax** | MiniMax M3 (image + video) | API key |
77
- | **Xiaomi (MiMo)** | MiMo-V2.6-Pro, MiMo-V2.6-Flash, MiMo-V2.6-Pro-UltraSpeed | API key |
78
- | **DeepSeek** | DeepSeek V4 Pro, V4.1 Flash (image) | API key |
79
- | **Sakana (Fugu)** | Fugu, Fugu Max, Fugu Ultra (image) | API key |
80
- | **OpenRouter** | Qwen3.8 Max (image + video) + multi-provider gateway | API key |
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, Kimi K3/K2.8 Preview/K2.7 Code, 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.
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
- ## ⌨️ Keybindings
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
- ## 💬 Slash commands
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
- | `/buddy` | Spin up a second model to review the current chat |
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 # Compare against current alternatives and report gaps
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
- ## 🛠 Tools
141
+ ## Tools
132
142
 
133
- GG Coder comes with a focused set of tools. Each one is small, well-described, and earns its place in the prompt.
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
- | `find` | Find files by glob pattern |
143
- | `ls` | List directory contents |
144
- | `web_fetch` | Fetch URL content |
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
- 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.
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
- ## 🪄 Custom commands
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
- ## ⏪ Checkpoints & `/rewind`
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
- ## 🎒 Skills
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
- ## 📋 Project guidelines
224
+ ## Project guidelines
209
225
 
210
- Drop a `CLAUDE.md` or `AGENTS.md` in your repo root (or any parent directory). GG Coder picks it up automatically.
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
- ## 👥 Community
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
- ## 📄 License
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 = dualAuthProvider(provider).oauthKey;
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":"AACA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAmB,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,UAAU,gBAAgB,CAC9B,GAAwB,EACxB,GAAyB,EACzB,GAAwB,EACxB,GAAW,EACX,MAAc;IAEd,2DAA2D;IAC3D,IAAI,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC/C,KAAK,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAChD,KAAK,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,GAAW,CAAC;YAChB,IAAI,OAA2B,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0D,CAAC;gBACtF,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC/B,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,yEAAyE;YACzE,sEAAsE;YACtE,yEAAyE;YACzE,2DAA2D;YAC3D,MAAM,aAAa,GACjB,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,UAAU,GAAG,aAAa,EAAE,GAAG,IAAI,QAAQ,CAAC;YAClD,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC;YAC7D,MAAM,KAAK,GAAqB;gBAC9B,WAAW,EAAE,GAAG;gBAChB,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,QAAQ;gBACjE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChC,CAAC;YACF,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACjD,mEAAmE;YACnE,iEAAiE;YACjE,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5C,8DAA8D;YAC9D,wEAAwE;YACxE,kEAAkE;YAClE,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,sEAAsE;YACtE,oEAAoE;YACpE,kEAAkE;YAClE,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;QACrD,KAAK,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,uEAAuE;YACvE,qEAAqE;YACrE,mEAAmE;YACnE,iDAAiD;YACjD,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;oBACb,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,iDAAiD;iBACxE,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;YACzB,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,IAAI,KAAuB,CAAC;oBAC5B,IAAI,UAAU,GAAG,QAAQ,CAAC;oBAC1B,IAAI,QAAQ,KAAK,WAAW;wBAAE,KAAK,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;yBAC1D,IAAI,QAAQ,KAAK,QAAQ;wBAAE,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;yBACzD,IAAI,QAAQ,KAAK,QAAQ;wBAAE,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;yBACzD,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;wBACvD,oEAAoE;wBACpE,gEAAgE;wBAChE,KAAK,GAAG,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC3E,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;oBAC3D,CAAC;oBACD,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;oBACjD,kEAAkE;oBAClE,+DAA+D;oBAC/D,yBAAyB;oBACzB,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC5C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC9C,iEAAiE;oBACjE,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,mEAAmE;oBACnE,oEAAoE;oBACpE,mEAAmE;oBACnE,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE;wBAC1B,QAAQ;wBACR,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBAC1D,CAAC,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACT,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC1B,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5C,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;QACpD,KAAK,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC,IAAI,IAAI,EAAE,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,KAAK,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,MAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAG5B,CAAC;gBACF,IACE,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAC1B,MAAM,CAAC,MAAM,KAAK,SAAS;oBAC3B,MAAM,CAAC,MAAM,KAAK,QAAQ,EAC1B,CAAC;oBACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAC;oBACvE,OAAO;gBACT,CAAC;gBACD,MAAM;oBACJ,MAAM,CAAC,MAAM,KAAK,QAAQ;wBACxB,CAAC,CAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAmB;wBACvE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,uEAAuE;YACvE,+DAA+D;YAC/D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,qEAAqE;IACrE,kDAAkD;IAClD,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,KAAK,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,MAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAG5B,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC7D,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/B,MAAM,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,iEAAiE;oBACjE,mDAAmD;oBACnD,MAAM,OAAO,GAAsC,EAAE,CAAC;oBACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;wBAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;4BAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;6BAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;4BAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAiB,CAAC;wBACnC,CAAC;oBACH,CAAC;oBACD,MAAM,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACzC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAChD,KAAK,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO;YACzB,IAAI,QAAgB,CAAC;YACrB,IAAI,YAAoC,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2C,CAAC;gBACvE,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC/B,YAAY;oBACV,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACxC,0EAA0E;YAC1E,0EAA0E;YAC1E,mEAAmE;YACnE,wBAAwB;YACxB,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7B,wEAAwE;gBACxE,0DAA0D;gBAC1D,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC1C,wEAAwE;gBACxE,0EAA0E;gBAC1E,IAAI,QAAQ,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YACjF,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"auth-routes.js","sourceRoot":"","sources":["../../src/app-sidecar/auth-routes.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
+ import { type ProjectHealthScan } from "../core/project-health-scan.js";
1
2
  import { type GitHubOpenCounts } from "../utils/github.js";
2
3
  import { type GitHubCI } from "../utils/github-ci.js";
3
4
  import { type SharedPolls } from "../utils/shared-poll.js";
4
5
  /**
5
6
  * Daemon-wide repo pollers, shared by every window on the same repo so
6
7
  * opening a project twice doesn't double the git/`gh` processes.
7
- * Keys: `dirtyFiles` and `gitHubCI` by resolved cwd (a worktree has its own
8
- * files and HEAD); `gitHubCounts` by `owner/repo` (counts are repo-wide).
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).
9
11
  */
10
12
  export interface RepoPolls {
11
13
  readonly dirtyFiles: SharedPolls<number>;
12
14
  readonly gitHubCounts: SharedPolls<GitHubOpenCounts>;
13
15
  readonly gitHubCI: SharedPolls<GitHubCI | null>;
16
+ readonly projectHealth: SharedPolls<ProjectHealthScan>;
14
17
  }
15
18
  export declare function createRepoPolls(): RepoPolls;
@@ -1,3 +1,4 @@
1
+ import { createProjectHealthScanner } from "../core/project-health-scan.js";
1
2
  import { getGitDirtyFileCount } from "../utils/git.js";
2
3
  import { getGitHubOpenCounts } from "../utils/github.js";
3
4
  import { startGitHubCIPoll } from "../utils/github-ci.js";
@@ -20,6 +21,25 @@ export function createRepoPolls() {
20
21
  intervalMs: 60_000,
21
22
  })),
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
+ }),
23
43
  };
24
44
  }
25
45
  //# sourceMappingURL=repo-polls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-polls.js","sourceRoot":"","sources":["../../src/app-sidecar/repo-polls.ts"],"names":[],"mappings":"AAAA,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;AAcjG,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;KAC/E,CAAC;AACJ,CAAC"}
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
  };
@@ -43,6 +43,7 @@ import { getModel, getDefaultThinkingLevel, getContextWindow, clearRuntimeModels
43
43
  import { resolveStartOrFallback } from "./core/resolve-start.js";
44
44
  import { getGitBranch, getGitDirtyFileCount, isGitRepo } from "./utils/git.js";
45
45
  import { getGitHubRepoSlug } from "./utils/github.js";
46
+ import { scoreProjectHealth } from "./core/project-health-score.js";
46
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";
@@ -810,6 +811,23 @@ async function createSession(deps, opts) {
810
811
  let gitHubIssues = null;
811
812
  let gitHubPRs = null;
812
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
+ }
813
831
  function currentContextWindow() {
814
832
  const st = session.getState();
815
833
  return getContextWindow(st.model, { provider: st.provider, accountId: st.accountId });
@@ -826,6 +844,7 @@ async function createSession(deps, opts) {
826
844
  gitHubPRs,
827
845
  gitHubCI,
828
846
  gitHubRepoUrl: gitHubSlug ? `https://github.com/${gitHubSlug}` : null,
847
+ projectHealth: currentProjectHealth(),
829
848
  tasks: session.listBackgroundProcesses(),
830
849
  // Roots added with /add-dir — the header shows a badge when non-empty.
831
850
  additionalRoots: session.getAdditionalRoots(),
@@ -1424,6 +1443,7 @@ async function createSession(deps, opts) {
1424
1443
  // teardown isn't delayed by the network. Broadcasts itself on change.
1425
1444
  gitHubCountsPoll?.refresh();
1426
1445
  ciPoll.refresh();
1446
+ healthPoll?.refresh();
1427
1447
  // Serialize behind any marker/tool-triggered refresh so the terminal
1428
1448
  // progress snapshot uses the live plan file. Once every canonical step
1429
1449
  // is complete, remove the approved plan from future system prompts and
@@ -1773,6 +1793,15 @@ async function createSession(deps, opts) {
1773
1793
  gitHubCI = next;
1774
1794
  broadcast("extras", footerExtras());
1775
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;
1776
1805
  const routeCtx = {
1777
1806
  get session() {
1778
1807
  return session;
@@ -2010,6 +2039,7 @@ async function createSession(deps, opts) {
2010
2039
  dirtyFilesPoll.unsubscribe();
2011
2040
  gitHubCountsPoll?.unsubscribe();
2012
2041
  ciPoll.unsubscribe();
2042
+ healthPoll?.unsubscribe();
2013
2043
  // Stop the Telegram serve loop + dispose its per-chat sessions.
2014
2044
  if (serveController)
2015
2045
  await serveController.stop().catch(() => { });