@kenkaiiii/ggcoder 5.51.4 → 5.53.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 (101) hide show
  1. package/dist/app-sidecar.js +25 -62
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/chat-agents/research.d.ts +1 -1
  4. package/dist/chat-agents/research.d.ts.map +1 -1
  5. package/dist/chat-agents/research.js +1 -1
  6. package/dist/chat-agents/research.js.map +1 -1
  7. package/dist/core/agent-session.d.ts +4 -4
  8. package/dist/core/agent-session.d.ts.map +1 -1
  9. package/dist/core/agent-session.js +3 -4
  10. package/dist/core/agent-session.js.map +1 -1
  11. package/dist/core/agents.d.ts +2 -3
  12. package/dist/core/agents.d.ts.map +1 -1
  13. package/dist/core/agents.js +2 -3
  14. package/dist/core/agents.js.map +1 -1
  15. package/dist/core/auth-providers.d.ts +6 -0
  16. package/dist/core/auth-providers.d.ts.map +1 -1
  17. package/dist/core/auth-providers.js +9 -3
  18. package/dist/core/auth-providers.js.map +1 -1
  19. package/dist/core/bundled-agents.d.ts.map +1 -1
  20. package/dist/core/bundled-agents.js +13 -4
  21. package/dist/core/bundled-agents.js.map +1 -1
  22. package/dist/core/ken-prompt.d.ts +1 -1
  23. package/dist/core/ken-prompt.js +6 -6
  24. package/dist/core/ken-prompt.js.map +1 -1
  25. package/dist/core/mcp/client.js +1 -1
  26. package/dist/core/mcp/client.js.map +1 -1
  27. package/dist/core/mcp/defaults.d.ts +4 -2
  28. package/dist/core/mcp/defaults.d.ts.map +1 -1
  29. package/dist/core/mcp/defaults.js +5 -10
  30. package/dist/core/mcp/defaults.js.map +1 -1
  31. package/dist/core/mcp/shared-pool.d.ts +2 -2
  32. package/dist/core/mcp/shared-pool.js +2 -2
  33. package/dist/core/platform-clis.d.ts +16 -0
  34. package/dist/core/platform-clis.d.ts.map +1 -0
  35. package/dist/core/platform-clis.js +299 -0
  36. package/dist/core/platform-clis.js.map +1 -0
  37. package/dist/core/prompt-commands.d.ts.map +1 -1
  38. package/dist/core/prompt-commands.js +50 -15
  39. package/dist/core/prompt-commands.js.map +1 -1
  40. package/dist/core/steroids.d.ts +59 -0
  41. package/dist/core/steroids.d.ts.map +1 -0
  42. package/dist/core/steroids.js +227 -0
  43. package/dist/core/steroids.js.map +1 -0
  44. package/dist/modes/json-mode.d.ts +2 -2
  45. package/dist/modes/json-mode.d.ts.map +1 -1
  46. package/dist/modes/json-mode.js +2 -8
  47. package/dist/modes/json-mode.js.map +1 -1
  48. package/dist/modes/subagent-worker-mode.d.ts.map +1 -1
  49. package/dist/modes/subagent-worker-mode.js +0 -10
  50. package/dist/modes/subagent-worker-mode.js.map +1 -1
  51. package/dist/system-prompt.d.ts.map +1 -1
  52. package/dist/system-prompt.js +16 -8
  53. package/dist/system-prompt.js.map +1 -1
  54. package/dist/tools/index.d.ts +6 -0
  55. package/dist/tools/index.d.ts.map +1 -1
  56. package/dist/tools/index.js +6 -0
  57. package/dist/tools/index.js.map +1 -1
  58. package/dist/tools/prompt-hints.d.ts.map +1 -1
  59. package/dist/tools/prompt-hints.js +3 -6
  60. package/dist/tools/prompt-hints.js.map +1 -1
  61. package/dist/tools/steroids.d.ts +46 -0
  62. package/dist/tools/steroids.d.ts.map +1 -0
  63. package/dist/tools/steroids.js +233 -0
  64. package/dist/tools/steroids.js.map +1 -0
  65. package/dist/tools/subagent-shared.d.ts +1 -1
  66. package/dist/tools/subagent-shared.d.ts.map +1 -1
  67. package/dist/tools/subagent-shared.js +1 -4
  68. package/dist/tools/subagent-shared.js.map +1 -1
  69. package/dist/tools/subagent.js +1 -1
  70. package/dist/tools/subagent.js.map +1 -1
  71. package/dist/tools/tool-tiers.d.ts.map +1 -1
  72. package/dist/tools/tool-tiers.js +1 -0
  73. package/dist/tools/tool-tiers.js.map +1 -1
  74. package/dist/ui/App.d.ts.map +1 -1
  75. package/dist/ui/App.js +3 -11
  76. package/dist/ui/App.js.map +1 -1
  77. package/dist/ui/components/Footer.js +1 -1
  78. package/dist/ui/components/Footer.js.map +1 -1
  79. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  80. package/dist/ui/components/ToolExecution.js +10 -3
  81. package/dist/ui/components/ToolExecution.js.map +1 -1
  82. package/dist/ui/login.d.ts.map +1 -1
  83. package/dist/ui/login.js +5 -38
  84. package/dist/ui/login.js.map +1 -1
  85. package/dist/ui/terminal-history.js +4 -2
  86. package/dist/ui/terminal-history.js.map +1 -1
  87. package/dist/ui/tool-group-summary.d.ts +2 -0
  88. package/dist/ui/tool-group-summary.d.ts.map +1 -1
  89. package/dist/ui/tool-group-summary.js +11 -25
  90. package/dist/ui/tool-group-summary.js.map +1 -1
  91. package/dist/ui/tool-line-summary.d.ts.map +1 -1
  92. package/dist/ui/tool-line-summary.js +12 -9
  93. package/dist/ui/tool-line-summary.js.map +1 -1
  94. package/dist/ui/transcript/tool-presentation.d.ts.map +1 -1
  95. package/dist/ui/transcript/tool-presentation.js +2 -7
  96. package/dist/ui/transcript/tool-presentation.js.map +1 -1
  97. package/package.json +4 -5
  98. package/dist/core/sidecar-error-reporter.d.ts +0 -12
  99. package/dist/core/sidecar-error-reporter.d.ts.map +0 -1
  100. package/dist/core/sidecar-error-reporter.js +0 -57
  101. package/dist/core/sidecar-error-reporter.js.map +0 -1
@@ -0,0 +1,299 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ const REGISTRY = [
4
+ {
5
+ binary: "railway",
6
+ signals: ["railway.json", "railway.toml"],
7
+ use: "logs, deploys, variables, services",
8
+ login: "railway login",
9
+ install: "npm i -g @railway/cli",
10
+ },
11
+ {
12
+ binary: "vercel",
13
+ signals: ["vercel.json", ".vercel"],
14
+ use: "deploys, logs, env vars, domains",
15
+ login: "vercel login",
16
+ install: "npm i -g vercel",
17
+ },
18
+ {
19
+ binary: "netlify",
20
+ signals: ["netlify.toml"],
21
+ use: "deploys, logs, env vars, functions",
22
+ login: "netlify login",
23
+ install: "npm i -g netlify-cli",
24
+ },
25
+ {
26
+ binary: "flyctl",
27
+ signals: ["fly.toml"],
28
+ use: "deploys, logs, machines, secrets",
29
+ login: "flyctl auth login",
30
+ install: "https://fly.io/docs/flyctl/install/",
31
+ },
32
+ {
33
+ binary: "wrangler",
34
+ signals: ["wrangler.toml", "wrangler.json", "wrangler.jsonc"],
35
+ use: "Cloudflare Workers deploys, tail logs, KV/D1/R2",
36
+ login: "wrangler login",
37
+ install: "npm i -g wrangler",
38
+ },
39
+ {
40
+ binary: "supabase",
41
+ signals: ["supabase/config.toml"],
42
+ use: "migrations, db push/pull, functions, project status",
43
+ login: "supabase login",
44
+ install: "npm i -g supabase",
45
+ },
46
+ {
47
+ binary: "firebase",
48
+ signals: ["firebase.json"],
49
+ use: "deploys, functions logs, emulators",
50
+ login: "firebase login",
51
+ install: "npm i -g firebase-tools",
52
+ },
53
+ {
54
+ binary: "gh",
55
+ signals: [".github"],
56
+ use: "PRs, issues, CI run logs, releases",
57
+ login: "gh auth login",
58
+ install: "https://cli.github.com",
59
+ },
60
+ {
61
+ binary: "docker",
62
+ signals: [
63
+ "Dockerfile",
64
+ "compose.yaml",
65
+ "compose.yml",
66
+ "docker-compose.yml",
67
+ "docker-compose.yaml",
68
+ ],
69
+ use: "build images, run containers, compose logs",
70
+ login: "",
71
+ install: "https://docs.docker.com/get-docker/",
72
+ },
73
+ {
74
+ binary: "aws",
75
+ signals: ["samconfig.toml", "cdk.json", "serverless.yml", "serverless.yaml"],
76
+ use: "CloudWatch logs, Lambda, S3, stack status",
77
+ login: "aws sso login (or aws configure)",
78
+ install: "https://aws.amazon.com/cli/",
79
+ },
80
+ {
81
+ binary: "sam",
82
+ signals: ["samconfig.toml"],
83
+ use: "SAM build/deploy, local Lambda invoke, stack logs",
84
+ login: "",
85
+ install: "https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html",
86
+ },
87
+ {
88
+ binary: "serverless",
89
+ signals: ["serverless.yml", "serverless.yaml"],
90
+ use: "Serverless Framework deploys, function logs, invoke",
91
+ login: "serverless login",
92
+ install: "npm i -g serverless",
93
+ },
94
+ {
95
+ binary: "heroku",
96
+ signals: ["heroku.yml", "app.json", "Procfile"],
97
+ use: "logs, releases, config vars, dynos, add-ons",
98
+ login: "heroku login",
99
+ install: "brew install heroku/brew/heroku (or npm i -g heroku)",
100
+ },
101
+ {
102
+ binary: "render",
103
+ signals: ["render.yaml"],
104
+ use: "services, deploys, logs, env vars",
105
+ login: "render login",
106
+ install: "brew install render",
107
+ },
108
+ {
109
+ binary: "doctl",
110
+ signals: [".do/app.yaml", ".do/deploy.template.yaml"],
111
+ use: "App Platform deploys/logs, droplets, databases",
112
+ login: "doctl auth init",
113
+ install: "brew install doctl",
114
+ },
115
+ {
116
+ binary: "gcloud",
117
+ signals: ["app.yaml", "cloudbuild.yaml", ".gcloudignore"],
118
+ use: "App Engine/Cloud Run deploys, Cloud Build, logs, IAM",
119
+ login: "gcloud auth login",
120
+ install: "https://cloud.google.com/sdk/docs/install",
121
+ },
122
+ {
123
+ binary: "az",
124
+ signals: ["host.json", "staticwebapp.config.json"],
125
+ use: "Azure Functions/Static Web Apps, resources, logs",
126
+ login: "az login",
127
+ install: "https://learn.microsoft.com/cli/azure/install-azure-cli",
128
+ },
129
+ {
130
+ binary: "azd",
131
+ signals: ["azure.yaml"],
132
+ use: "azd up/deploy, provision, env, monitor",
133
+ login: "azd auth login",
134
+ install: "https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd",
135
+ },
136
+ {
137
+ binary: "terraform",
138
+ signals: [".terraform.lock.hcl", "main.tf"],
139
+ use: "plan, apply, state, outputs",
140
+ login: "",
141
+ install: "https://developer.hashicorp.com/terraform/install",
142
+ },
143
+ {
144
+ binary: "pulumi",
145
+ signals: ["Pulumi.yaml"],
146
+ use: "preview, up, stack outputs, config",
147
+ login: "pulumi login",
148
+ install: "brew install pulumi/tap/pulumi (or curl -fsSL https://get.pulumi.com | sh)",
149
+ },
150
+ {
151
+ binary: "kubectl",
152
+ signals: ["kustomization.yaml", "skaffold.yaml", "Chart.yaml"],
153
+ use: "pods, logs, apply, rollouts, port-forward",
154
+ login: "",
155
+ install: "https://kubernetes.io/docs/tasks/tools/",
156
+ },
157
+ {
158
+ binary: "helm",
159
+ signals: ["Chart.yaml"],
160
+ use: "chart install/upgrade, releases, values",
161
+ login: "",
162
+ install: "https://helm.sh/docs/intro/install/",
163
+ },
164
+ {
165
+ binary: "eas",
166
+ signals: ["eas.json"],
167
+ use: "Expo builds, submit, updates, build logs",
168
+ login: "eas login",
169
+ install: "npm i -g eas-cli",
170
+ },
171
+ {
172
+ binary: "fastlane",
173
+ signals: ["fastlane/Fastfile"],
174
+ use: "iOS/Android build lanes, signing, store upload",
175
+ login: "",
176
+ install: "brew install fastlane",
177
+ },
178
+ {
179
+ binary: "sentry-cli",
180
+ signals: [".sentryclirc", "sentry.properties"],
181
+ use: "releases, source maps, debug symbols",
182
+ login: "sentry-cli login",
183
+ install: "brew install getsentry/tools/sentry-cli (or curl -sL https://sentry.io/get-cli/ | sh)",
184
+ },
185
+ {
186
+ binary: "glab",
187
+ signals: [".gitlab-ci.yml"],
188
+ use: "MRs, issues, pipeline logs, releases",
189
+ login: "glab auth login",
190
+ install: "brew install glab",
191
+ },
192
+ {
193
+ binary: "shopify",
194
+ signals: ["shopify.app.toml", "shopify.theme.toml"],
195
+ use: "app/theme dev, deploy, push, logs",
196
+ login: "shopify auth login",
197
+ install: "npm i -g @shopify/cli@latest",
198
+ },
199
+ {
200
+ binary: "kamal",
201
+ signals: ["config/deploy.yml", ".kamal"],
202
+ use: "deploy, app logs, rollback, accessories",
203
+ login: "",
204
+ install: "gem install kamal",
205
+ },
206
+ {
207
+ binary: "convex",
208
+ signals: ["convex.json", "convex"],
209
+ use: "dev, deploy, function logs, dashboard data, env",
210
+ login: "convex login",
211
+ install: "npm i convex",
212
+ },
213
+ {
214
+ binary: "sanity",
215
+ signals: ["sanity.cli.ts", "sanity.cli.js", "sanity.config.ts", "sanity.config.js"],
216
+ use: "deploy studio, datasets, documents, schema",
217
+ login: "sanity login",
218
+ install: "npm i sanity",
219
+ },
220
+ {
221
+ binary: "sst",
222
+ signals: ["sst.config.ts"],
223
+ use: "deploy, dev, resource outputs, secrets",
224
+ login: "",
225
+ install: "npm i sst",
226
+ },
227
+ ];
228
+ /**
229
+ * Platforms `cwd` uses, each flagged installed/missing. Order follows the
230
+ * registry so the rendered section is stable across sessions (cached prefix).
231
+ */
232
+ export function detectPlatformClis(cwd, pathEnv = process.env.PATH ?? "") {
233
+ const out = [];
234
+ const localBin = path.join(cwd, "node_modules", ".bin");
235
+ for (const cli of REGISTRY) {
236
+ if (!cli.signals.some((s) => exists(path.join(cwd, s))))
237
+ continue;
238
+ const global = onPath(cli.binary, pathEnv);
239
+ const local = !global && onPath(cli.binary, localBin);
240
+ out.push({
241
+ binary: cli.binary,
242
+ use: cli.use,
243
+ login: cli.login,
244
+ install: cli.install,
245
+ installed: global || local,
246
+ local,
247
+ });
248
+ }
249
+ return out;
250
+ }
251
+ export function renderPlatformClisSection(clis) {
252
+ if (clis.length === 0)
253
+ return "";
254
+ const ready = clis.filter((c) => c.installed);
255
+ const missing = clis.filter((c) => !c.installed);
256
+ const parts = [];
257
+ if (ready.length > 0) {
258
+ parts.push("Installed and yours to run — use them directly; never send the user to a dashboard for something these answer:\n" +
259
+ ready
260
+ .map((c) => {
261
+ const prefix = c.local ? "npx " : "";
262
+ return (`- \`${prefix}${c.binary}\` — ${c.use}.` +
263
+ (c.login
264
+ ? ` Auth failure → ask the user to run \`${prefix}${c.login}\`, then retry.`
265
+ : ""));
266
+ })
267
+ .join("\n"));
268
+ }
269
+ if (missing.length > 0) {
270
+ parts.push("Project uses these but the CLI is not installed — when it would help, offer ONCE to install, then drop it:\n" +
271
+ missing.map((c) => `- \`${c.binary}\` — ${c.use}. Install: ${c.install}`).join("\n"));
272
+ }
273
+ return `## Platform CLIs\n\n${parts.join("\n\n")}`;
274
+ }
275
+ // ── helpers ──────────────────────────────────────────────────────────────
276
+ function exists(p) {
277
+ try {
278
+ fs.statSync(p);
279
+ return true;
280
+ }
281
+ catch {
282
+ return false;
283
+ }
284
+ }
285
+ function onPath(binary, pathEnv) {
286
+ const exts = process.platform === "win32"
287
+ ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT").split(";").filter(Boolean)
288
+ : [""];
289
+ for (const dir of pathEnv.split(path.delimiter)) {
290
+ if (!dir)
291
+ continue;
292
+ for (const ext of exts) {
293
+ if (exists(path.join(dir, binary + ext)))
294
+ return true;
295
+ }
296
+ }
297
+ return false;
298
+ }
299
+ //# sourceMappingURL=platform-clis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-clis.js","sourceRoot":"","sources":["../../src/core/platform-clis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AA2BD,eAAO,MAAM,eAAe,EAAE,aAAa,EA8b1C,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
1
+ {"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAkBD,eAAO,MAAM,eAAe,EAAE,aAAa,EAwe1C,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
@@ -15,13 +15,6 @@ const CLAUDE_MD_RESTART_NOTICE = IS_GG_APP
15
15
  * in a single response" wording can't drift between command prompts.
16
16
  */
17
17
  const spawnParallel = (count) => `in parallel using the subagent tool (call the subagent tool ${count} times in a single response)`;
18
- /**
19
- * Kencode-search ships behind deferred MCP loading (`deferredMcpTools` defaults
20
- * to true), so its tools sit in the `tool_search` catalog until promoted. Any
21
- * command that names an `mcp__kencode-search__*` tool must say how to unlock it,
22
- * or the call fails on a default install.
23
- */
24
- const KENCODE_UNLOCK_NOTE = 'If the `mcp__kencode-search__*` tools aren\'t active yet, call `tool_search` (e.g. "search public code") first to unlock them.';
25
18
  export const PROMPT_COMMANDS = [
26
19
  {
27
20
  name: "expand",
@@ -72,7 +65,7 @@ For every candidate from the sub-agents, validate it yourself before reporting:
72
65
  1. Confirm the external source is relevant to this project and fresh enough (normally within 6 months).
73
66
  2. Search this repo with grep/find and language-aware anchors to confirm the feature is not already present under another name.
74
67
  3. Check routes, CLI commands, UI surfaces, package exports, config, docs, and examples before calling a feature missing.
75
- 4. Use mcp__kencode-search__searchCode when a code-level look clarifies how peers actually ship the feature. Use literal imports, functions, config keys, CLI flags, route names, or package names — not conceptual phrases. ${KENCODE_UNLOCK_NOTE}
68
+ 4. Use the \`steroids\` tool (\`search\`, then \`show\` to read the full file) when a code-level look clarifies how peers actually ship the feature. Use literal imports, functions, config keys, CLI flags, route names, or package names — not conceptual phrases.
76
69
  5. Drop anything already present, irrelevant, too vague, too stale, or that is not a real user-facing feature.
77
70
  6. Merge duplicates and keep only the most exciting 5–10 features.
78
71
 
@@ -101,7 +94,7 @@ Leave the free-text escape on so they can pick specific ranks or re-scope. The c
101
94
 
102
95
  Do not start implementing until the user chooses.
103
96
 
104
- If they choose all or the top ones, do not implement directly. First call the enter_plan tool, then research and design an implementation plan for the selected features (all of them, or the top 3 most exciting — ranks 1-3). The plan must cover, per feature: the user-facing behavior, the local files/anchors it touches, the implementation approach (compared against real-world examples via kencode search using literal code tokens), and how it will be verified. Write the plan to .gg/plans/<name>.md, then call exit_plan with the plan path so the user can review and approve it. Do not begin implementing until the user approves the plan.
97
+ If they choose all or the top ones, do not implement directly. First call the enter_plan tool, then research and design an implementation plan for the selected features (all of them, or the top 3 most exciting — ranks 1-3). The plan must cover, per feature: the user-facing behavior, the local files/anchors it touches, the implementation approach (compared against real-world examples via the steroids tool using literal code tokens), and how it will be verified. Write the plan to .gg/plans/<name>.md, then call exit_plan with the plan path so the user can review and approve it. Do not begin implementing until the user approves the plan.
105
98
 
106
99
  If they answer with anything else, follow what they asked — specific features by rank, a refined or re-scoped list, or skipping — and do not implement anything until they say so.`,
107
100
  },
@@ -350,11 +343,9 @@ For EVERY file in \`.github/workflows/\`, apply and report one line per change:
350
343
  name: "compare",
351
344
  aliases: [],
352
345
  description: "Compare real-world code",
353
- prompt: `Compare the code you just created or modified in this conversation against real-world implementations using the \`mcp__kencode-search__searchCode\` tool.
354
-
355
- ${KENCODE_UNLOCK_NOTE}
346
+ prompt: `Compare the code you just created or modified in this conversation against real-world implementations using the \`steroids\` tool (\`search\`, then \`show\` to read the full file).
356
347
 
357
- You already know what you just built. For each file you created or modified, use \`mcp__kencode-search__searchCode\` to search for how real projects implement the same patterns. Look at the specific APIs, hooks, functions, and architecture you used.
348
+ You already know what you just built. For each file you created or modified, use \`steroids\` \`search\` to find how real projects implement the same patterns. Look at the specific APIs, hooks, functions, and architecture you used.
358
349
 
359
350
  If you find something consistently done differently across real codebases, or something commonly included that you left out, report it:
360
351
 
@@ -362,12 +353,56 @@ If you find something consistently done differently across real codebases, or so
362
353
  [MISSING/DIVERGENT/INCOMPLETE] file:line - What it is
363
354
  Wrote: What was implemented
364
355
  Real-world: What real projects do instead/additionally
365
- Evidence: kencode-search - pattern seen in X out of Y repos searched
356
+ Evidence: steroids pattern seen in X of Y repos
366
357
  \`\`\`
367
358
 
368
- Style preferences and subjective improvements are not valid findings. Only report things backed by clear kencode-search evidence across multiple repos.
359
+ Style preferences and subjective improvements are not valid findings. Only report things backed by clear steroids evidence across multiple repos.
369
360
 
370
361
  If the code aligns well with real-world patterns, say so. That's a good outcome.`,
362
+ },
363
+ {
364
+ name: "steroids",
365
+ aliases: [],
366
+ description: "Index real repos like this project",
367
+ prompt: `# Steroids: build a code corpus that matches THIS project
368
+
369
+ Goal: fill the local \`steroids\` corpus with real, current, well-maintained repos that do what this project does, in the same stack, so later work can read proven code instead of guessing.
370
+
371
+ If the \`steroids\` tool is not available, stop and tell the user to install Agent Steroids first (Home screen, Steroids button). Do not improvise with bash.
372
+
373
+ ## Phase 0: Profile the project
374
+
375
+ Inspect the local project (manifests, top-level layout, README, main entry points) and write a short private profile:
376
+
377
+ - What it is and does, and who uses it.
378
+ - Primary language(s) and the frameworks/libraries that define it (not every dependency, the ones that shape the code).
379
+ - Its shape: CLI, web app, desktop app, API, library, game, firmware, pipeline, etc.
380
+ - The 3-5 hardest or most central technical topics (e.g. "Tauri sidecar lifecycle", "streaming LLM tool calls", "trigram search index").
381
+
382
+ If the user passed arguments to /steroids, treat them as the focus and let them override the profile.
383
+
384
+ ## Phase 1: Discover candidates
385
+
386
+ Call \`steroids\` \`repos\` once so you know what is already indexed. Then run 3-6 \`steroids\` \`discover\` queries WITHOUT \`add\`, each targeting a different angle from the profile: the framework (\`topic:<framework> language:<lang>\`), the product category (peer projects), and the central technical topics. Queries are GitHub repo searches, so keep each one SHORT: one \`topic:\` plus \`language:\`, or 2-3 keywords. A sentence like "llm streaming tool calls sdk" returns nothing. \`limit\` 10-15 per query. Never pass \`add\`.
387
+
388
+ Merge the results, drop anything already indexed, and rank by fit with this project first, then stars and recent \`pushed_at\`. Keep at most 20.
389
+
390
+ ## Phase 2: Present and ask
391
+
392
+ FIRST print ONE markdown table of the ranked candidates: rank, repo, stars, last push, and a one-line "why it fits" tied to the profile. The user decides from this table, so it is never optional and never summarised away. ONLY THEN ask with the \`ask_user\` tool: one \`choice\` question (\`id: "count"\`, question "How many of these should I index?") with these options, each with a one-line hint on disk/time cost:
393
+
394
+ - All of them
395
+ - Top 10
396
+ - Top 5
397
+ - None
398
+
399
+ Mark Top 10 as recommended. Leave the free-text escape on so they can name specific ranks. The card is the ONLY ask: do not also list the options as text, and do not end with an asking line. Only if \`ask_user\` is unavailable, ask the same question in prose as a lettered list.
400
+
401
+ Do not index anything until the user answers.
402
+
403
+ ## Phase 3: Index
404
+
405
+ Tell the user indexing is starting and can take a few minutes (each repo is a full download). Then index exactly the chosen repos with \`steroids\` \`add\` (\`repos\` = owner/name list, \`tag\` = a short slug for this project, e.g. its directory name), 2-3 repos per call so progress is visible and a cancel loses little. Then confirm with \`steroids\` \`repos\` filtered by that tag and report what was added, what failed, and the new corpus size. Suggest one concrete \`steroids\` \`search\` the user could run next against the new repos.`,
371
406
  },
372
407
  {
373
408
  name: "setup-skills",
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS5C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;AAE5B,8EAA8E;AAC9E,wEAAwE;AACxE,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,SAAS;IACxC,CAAC,CAAC,0MAA0M;IAC5M,CAAC,CAAC,uNAAuN,CAAC;AAE5N;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAU,EAAE,CACvD,+DAA+D,KAAK,8BAA8B,CAAC;AAErG;;;;;GAKG;AACH,MAAM,mBAAmB,GACvB,gIAAgI,CAAC;AAEnI,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;6BAkBiB,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;+NA2BkL,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mLA+B/D;KAChL;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyCS,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCnC,wBAAwB,EAAE;KACzB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mLA2DuK;KAChL;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAyF4D;KACrE;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;;EAEV,mBAAmB;;;;;;;;;;;;;;;iFAe4D;KAC9E;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAqCgC,aAAa,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gLAwDkH;KAC7K;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS5C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;AAE5B,8EAA8E;AAC9E,wEAAwE;AACxE,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,SAAS;IACxC,CAAC,CAAC,0MAA0M;IAC5M,CAAC,CAAC,uNAAuN,CAAC;AAE5N;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAU,EAAE,CACvD,+DAA+D,KAAK,8BAA8B,CAAC;AAErG,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;6BAkBiB,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mLA0DsI;KAChL;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyCS,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCnC,wBAAwB,EAAE;KACzB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mLA2DuK;KAChL;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAyF4D;KACrE;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;;;;;;;;;;;;;;;iFAeqE;KAC9E;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,oCAAoC;QACjD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6hBAsCihB;KAC1hB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAqCgC,aAAa,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gLAwDkH;KAC7K;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,59 @@
1
+ export interface SteroidsStatus {
2
+ /** A `steroids` binary was found. */
3
+ installed: boolean;
4
+ /** Installed, runs, and the corpus holds at least one repo. */
5
+ connected: boolean;
6
+ version?: string;
7
+ repos?: number;
8
+ documents?: number;
9
+ path?: string;
10
+ /** Why the binary could not be probed (stderr line), if it was found. */
11
+ error?: string;
12
+ }
13
+ /** Same cap as upgrade.rs: applied to the download AND the inflated binary. */
14
+ export declare const MAX_ASSET_BYTES: number;
15
+ /** Opts the CLI out of its own self-upgrade check on every invocation. Read
16
+ per call so the PATH enrichment done at startup is picked up. */
17
+ export declare function steroidsEnv(): NodeJS.ProcessEnv;
18
+ /** Where the desktop install lands; also the last place detection looks. */
19
+ export declare function defaultInstallDir(): string;
20
+ /**
21
+ * Locate the `steroids` binary: every PATH entry first (Cargo installs land
22
+ * in ~/.cargo/bin, already on the enriched PATH), then ~/.gg/bin. `null` when
23
+ * absent — callers hide the tool and drop the prompt sentence, never guess.
24
+ */
25
+ export declare function findSteroidsBinary(opts?: {
26
+ pathEnv?: string;
27
+ installDir?: string;
28
+ }): string | null;
29
+ /** Run `--version` and `stats`; cached 30s per binary path. */
30
+ export declare function probeSteroids(opts?: {
31
+ bin?: string | null;
32
+ force?: boolean;
33
+ }): Promise<SteroidsStatus>;
34
+ /** Rust target triple for the release asset, or null when there is no build. */
35
+ export declare function releaseTarget(platform?: NodeJS.Platform, arch?: string): string | null;
36
+ export declare const CARGO_FALLBACK = "No prebuilt Steroids binary for this platform. Install with: cargo install --git https://github.com/KenKaiii/agent-steroids";
37
+ /** Check `archive` against the SHA256SUMS line for `name`. */
38
+ export declare function verifySha256(archive: Uint8Array, sums: string, name: string): void;
39
+ /**
40
+ * The one executable inside a release tarball. Minimal ustar walk (512-byte
41
+ * headers, octal size); the archive must hold exactly one regular file named
42
+ * `steroids`/`steroids.exe` — anything else is rejected outright.
43
+ */
44
+ export declare function extractBinary(archive: Uint8Array): Buffer;
45
+ export interface InstallOptions {
46
+ fetchFn?: typeof fetch;
47
+ installDir?: string;
48
+ platform?: NodeJS.Platform;
49
+ arch?: string;
50
+ /** Smoke test of the staged binary; tests inject one since fixtures can't run. */
51
+ probe?: (bin: string) => Promise<SteroidsStatus>;
52
+ }
53
+ /**
54
+ * Download the latest release for this platform into `installDir`, verifying
55
+ * it against the release's own SHA256SUMS before a single byte is written.
56
+ * Resolves to a fresh probe of the installed binary.
57
+ */
58
+ export declare function installSteroids(opts?: InstallOptions): Promise<SteroidsStatus>;
59
+ //# sourceMappingURL=steroids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steroids.d.ts","sourceRoot":"","sources":["../../src/core/steroids.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,+EAA+E;AAC/E,eAAO,MAAM,eAAe,QAAoB,CAAC;AAGjD;oEACoE;AACpE,wBAAgB,WAAW,IAAI,MAAM,CAAC,UAAU,CAE/C;AAID,4EAA4E;AAC5E,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAUD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,MAAM,GAAG,IAAI,CASf;AA8BD,+DAA+D;AAC/D,wBAAsB,aAAa,CACjC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAqB,GAC1B,MAAM,GAAG,IAAI,CAOf;AAED,eAAO,MAAM,cAAc,gIACoG,CAAC;AAEhI,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAUlF;AAQD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CA2BzD;AAiBD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyCxF"}