()
| 83 | |
| 84 | |
| 85 | def build_specs() -> dict[str, ToolSpec]: |
| 86 | jcode = shutil.which("jcode") or str(Path.home() / ".local/bin/jcode") |
| 87 | codex = shutil.which("codex") or "/usr/bin/codex" |
| 88 | opencode = shutil.which("opencode") or "/usr/bin/opencode" |
| 89 | copilot = shutil.which("copilot") or str(Path.home() / ".local/bin/copilot") |
| 90 | cursor_agent = shutil.which("cursor-agent") or str(Path.home() / ".local/bin/cursor-agent") |
| 91 | claude = shutil.which("claude") or str(Path.home() / ".local/bin/claude") |
| 92 | agy = shutil.which("agy") or str(Path.home() / ".local/bin/agy") |
| 93 | specs = { |
| 94 | "jcode_memory_off": ToolSpec( |
| 95 | name="jcode_memory_off", |
| 96 | argv=[jcode, "--no-update", "--no-selfdev"], |
| 97 | version_argv=[jcode, "version"], |
| 98 | env={"JCODE_NO_TELEMETRY": "1", "JCODE_MEMORY_ENABLED": "0"}, |
| 99 | jcode=True, |
| 100 | ), |
| 101 | "jcode_memory_on": ToolSpec( |
| 102 | name="jcode_memory_on", |
| 103 | argv=[jcode, "--no-update", "--no-selfdev"], |
| 104 | version_argv=[jcode, "version"], |
| 105 | env={"JCODE_NO_TELEMETRY": "1", "JCODE_MEMORY_ENABLED": "1"}, |
| 106 | jcode=True, |
| 107 | ), |
| 108 | "pi": ToolSpec( |
| 109 | name="pi", |
| 110 | argv=[detect_pi_bin()], |
| 111 | version_argv=[detect_pi_bin(), "--version"], |
| 112 | ), |
| 113 | "codex": ToolSpec( |
| 114 | name="codex", |
| 115 | argv=[codex], |
| 116 | version_argv=[codex, "--version"], |
| 117 | ), |
| 118 | "opencode": ToolSpec( |
| 119 | name="opencode", |
| 120 | argv=[opencode], |
| 121 | version_argv=[opencode, "--version"], |
| 122 | ), |
| 123 | "copilot_cli": ToolSpec( |
| 124 | name="copilot_cli", |
| 125 | argv=[copilot], |
| 126 | version_argv=[copilot, "--version"], |
| 127 | ), |
| 128 | "cursor_agent": ToolSpec( |
| 129 | name="cursor_agent", |
| 130 | argv=[cursor_agent], |
| 131 | version_argv=[cursor_agent, "--version"], |
| 132 | ), |
| 133 | "claude_code": ToolSpec( |
| 134 | name="claude_code", |
| 135 | argv=[claude], |
| 136 | version_argv=[claude, "--version"], |
| 137 | ), |
| 138 | "antigravity_cli": ToolSpec( |
| 139 | name="antigravity_cli", |
| 140 | argv=[agy], |
| 141 | version_argv=[agy, "--version"], |
| 142 | ), |
no test coverage detected