karajan-code 1.26.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -459,6 +459,7 @@ Karajan Code works great on its own, but combining it with these MCP servers giv
459
459
  | [**GitHub MCP**](https://github.com/modelcontextprotocol/servers/tree/main/src/github) | Create PRs, manage issues, read repos directly from the agent | Combine with `--auto-push` for end-to-end: code → review → push → PR |
460
460
  | [**Serena**](https://github.com/oramasearch/serena) | Symbol-level code navigation (find references, go-to-definition) for JS/TS projects | Enable with `--enable-serena` to inject symbol context into coder/reviewer prompts |
461
461
  | [**Chrome DevTools MCP**](https://github.com/anthropics/anthropic-quickstarts/tree/main/chrome-devtools-mcp) | Browser automation, screenshots, console/network inspection | Verify UI changes visually after `kj` modifies frontend code |
462
+ | [**RTK**](https://github.com/rtk-ai/rtk) | Reduces LLM token consumption by 60-90% on Bash command outputs (git, test, build) | Install globally with `brew install rtk && rtk init --global` — all KJ agent commands automatically compressed |
462
463
 
463
464
  ## Role Templates
464
465
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karajan-code",
3
- "version": "1.26.0",
3
+ "version": "1.27.0",
4
4
  "description": "Local multi-agent coding orchestrator with TDD, SonarQube, and code review pipeline",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0",
@@ -204,6 +204,36 @@ async function checkBecariaInfra(config) {
204
204
  return checks;
205
205
  }
206
206
 
207
+ async function checkRtk() {
208
+ try {
209
+ const res = await runCommand("rtk", ["--version"]);
210
+ if (res.exitCode === 0) {
211
+ return {
212
+ name: "rtk",
213
+ label: "RTK (Rust Token Killer)",
214
+ ok: true,
215
+ detail: `${res.stdout.trim()} — token savings active`,
216
+ fix: null
217
+ };
218
+ }
219
+ return {
220
+ name: "rtk",
221
+ label: "RTK (Rust Token Killer)",
222
+ ok: true,
223
+ detail: "Not found — install for 60-90% token savings: brew install rtk",
224
+ fix: null
225
+ };
226
+ } catch {
227
+ return {
228
+ name: "rtk",
229
+ label: "RTK (Rust Token Killer)",
230
+ ok: true,
231
+ detail: "Not found — install for 60-90% token savings: brew install rtk",
232
+ fix: null
233
+ };
234
+ }
235
+ }
236
+
207
237
  async function checkRuleFiles(config) {
208
238
  const projectDir = config.projectDir || process.cwd();
209
239
  const reviewRules = await loadFirstExisting(resolveRoleMdPath("reviewer", projectDir));
@@ -248,6 +278,7 @@ export async function runChecks({ config }) {
248
278
  }
249
279
 
250
280
  checks.push(...await checkRuleFiles(config));
281
+ checks.push(await checkRtk());
251
282
 
252
283
  return checks;
253
284
  }
@@ -7,6 +7,7 @@ import { exists, ensureDir } from "../utils/fs.js";
7
7
  import { getKarajanHome } from "../utils/paths.js";
8
8
  import { detectAvailableAgents } from "../utils/agent-detect.js";
9
9
  import { createWizard, isTTY } from "../utils/wizard.js";
10
+ import { runCommand } from "../utils/process.js";
10
11
 
11
12
  async function runWizard(config, logger) {
12
13
  const agents = await detectAvailableAgents();
@@ -270,6 +271,21 @@ export async function initCommand({ logger, flags = {} }) {
270
271
  await ensureReviewRules(reviewRulesPath, logger);
271
272
  await ensureCoderRules(coderRulesPath, logger);
272
273
  await installSkills(logger, interactive);
274
+
275
+ // Check RTK availability and inform user
276
+ let hasRtk = false;
277
+ try {
278
+ const rtkRes = await runCommand("rtk", ["--version"]);
279
+ hasRtk = rtkRes.exitCode === 0;
280
+ } catch {
281
+ hasRtk = false;
282
+ }
283
+ if (!hasRtk) {
284
+ logger.info("");
285
+ logger.info("RTK (Rust Token Killer) can reduce token usage by 60-90%.");
286
+ logger.info(" Install: brew install rtk && rtk init --global");
287
+ }
288
+
273
289
  await setupSonarQube(config, logger);
274
290
  await scaffoldBecariaGateway(config, flags, logger);
275
291
  }