karajan-code 1.34.3 → 1.34.4

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
@@ -116,7 +116,7 @@ hu-reviewer? → triage → discover? → architect? → planner? → coder →
116
116
  | **Claude** | `claude` | `npm install -g @anthropic-ai/claude-code` |
117
117
  | **Codex** | `codex` | `npm install -g @openai/codex` |
118
118
  | **Gemini** | `gemini` | See [Gemini CLI docs](https://github.com/google-gemini/gemini-cli) |
119
- | **Aider** | `aider` | `pip install aider-chat` |
119
+ | **Aider** | `aider` | `pipx install aider-chat` (or `pip3 install aider-chat`) |
120
120
  | **OpenCode** | `opencode` | See [OpenCode docs](https://github.com/nicepkg/opencode) |
121
121
 
122
122
  Mix and match. Use Claude as coder and Codex as reviewer. Karajan auto-detects installed agents during `kj init`.
package/docs/README.es.md CHANGED
@@ -124,7 +124,7 @@ Guias completas: [`docs/multi-instance.md`](multi-instance.md) | [`docs/install-
124
124
  | **Claude** | `claude` | `npm install -g @anthropic-ai/claude-code` |
125
125
  | **Codex** | `codex` | `npm install -g @openai/codex` |
126
126
  | **Gemini** | `gemini` | Ver [Gemini CLI docs](https://github.com/google-gemini/gemini-cli) |
127
- | **Aider** | `aider` | `pip install aider-chat` |
127
+ | **Aider** | `aider` | `pipx install aider-chat` (o `pip3 install aider-chat`) |
128
128
 
129
129
  `kj init` auto-detecta los agentes instalados. Si solo hay uno disponible, se asigna a todos los roles automaticamente.
130
130
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karajan-code",
3
- "version": "1.34.3",
3
+ "version": "1.34.4",
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",
@@ -8,6 +8,7 @@ import { isSonarReachable } from "../sonar/manager.js";
8
8
  import { resolveRoleMdPath, loadFirstExisting } from "../roles/base-role.js";
9
9
  import { ensureGitRepo } from "../utils/git.js";
10
10
  import { checkBinary, KNOWN_AGENTS } from "../utils/agent-detect.js";
11
+ import { getInstallCommand } from "../utils/os-detect.js";
11
12
 
12
13
  function getPackageVersion() {
13
14
  const pkgPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../package.json");
@@ -205,7 +206,7 @@ async function checkBecariaInfra(config) {
205
206
  }
206
207
 
207
208
  async function checkRtk() {
208
- const NOT_FOUND_DETAIL = "Not found — install for 60-90% token savings: brew install rtk";
209
+ const NOT_FOUND_DETAIL = `Not found — install for 60-90% token savings: ${getInstallCommand("rtk")}`;
209
210
  let detail = NOT_FOUND_DETAIL;
210
211
  try {
211
212
  const res = await runCommand("rtk", ["--version"]);
@@ -8,6 +8,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
10
  import { runCommand } from "../utils/process.js";
11
+ import { getInstallCommand } from "../utils/os-detect.js";
11
12
 
12
13
  async function runWizard(config, logger) {
13
14
  const agents = await detectAvailableAgents();
@@ -292,7 +293,7 @@ export async function initCommand({ logger, flags = {} }) {
292
293
  if (!hasRtk) {
293
294
  logger.info("");
294
295
  logger.info("RTK (Rust Token Killer) can reduce token usage by 60-90%.");
295
- logger.info(" Install: brew install rtk && rtk init --global");
296
+ logger.info(` Install: ${getInstallCommand("rtk")}`);
296
297
  }
297
298
 
298
299
  await setupSonarQube(config, logger);
@@ -1,12 +1,13 @@
1
1
  import { runCommand } from "./process.js";
2
2
  import { resolveBin } from "../agents/resolve-bin.js";
3
+ import { getInstallCommand } from "./os-detect.js";
3
4
 
4
5
  const KNOWN_AGENTS = [
5
- { name: "claude", install: "npm install -g @anthropic-ai/claude-code" },
6
- { name: "codex", install: "npm install -g @openai/codex" },
7
- { name: "gemini", install: "npm install -g @google/gemini-cli (or check https://geminicli.com/docs/get-started/installation/)" },
8
- { name: "aider", install: "pip install aider-chat" },
9
- { name: "opencode", install: "curl -fsSL https://opencode.ai/install | bash (or see https://opencode.ai)" }
6
+ { name: "claude", install: getInstallCommand("claude") },
7
+ { name: "codex", install: getInstallCommand("codex") },
8
+ { name: "gemini", install: getInstallCommand("gemini") },
9
+ { name: "aider", install: getInstallCommand("aider") },
10
+ { name: "opencode", install: getInstallCommand("opencode") }
10
11
  ];
11
12
 
12
13
  export async function checkBinary(name, versionArg = "--version") {
@@ -0,0 +1,45 @@
1
+ import os from "node:os";
2
+
3
+ /**
4
+ * Detect platform and return OS-appropriate install commands.
5
+ */
6
+ export function getPlatform() {
7
+ const platform = os.platform();
8
+ return platform === "darwin" ? "macos" : "linux";
9
+ }
10
+
11
+ const INSTALL_COMMANDS = {
12
+ rtk: {
13
+ macos: "brew install rtk && rtk init --global",
14
+ linux: "curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh && rtk init --global"
15
+ },
16
+ claude: {
17
+ macos: "npm install -g @anthropic-ai/claude-code",
18
+ linux: "npm install -g @anthropic-ai/claude-code"
19
+ },
20
+ codex: {
21
+ macos: "npm install -g @openai/codex",
22
+ linux: "npm install -g @openai/codex"
23
+ },
24
+ gemini: {
25
+ macos: "npm install -g @google/gemini-cli",
26
+ linux: "npm install -g @google/gemini-cli"
27
+ },
28
+ aider: {
29
+ macos: "pipx install aider-chat",
30
+ linux: "pipx install aider-chat || pip3 install aider-chat"
31
+ },
32
+ opencode: {
33
+ macos: "curl -fsSL https://opencode.ai/install | bash",
34
+ linux: "curl -fsSL https://opencode.ai/install | bash"
35
+ },
36
+ docker: {
37
+ macos: "brew install --cask docker",
38
+ linux: "sudo apt install docker.io docker-compose-v2 (or see https://docs.docker.com/engine/install/)"
39
+ }
40
+ };
41
+
42
+ export function getInstallCommand(tool) {
43
+ const platform = getPlatform();
44
+ return INSTALL_COMMANDS[tool]?.[platform] || INSTALL_COMMANDS[tool]?.linux || `Install ${tool} manually`;
45
+ }