@amirtechai/xclaude 0.1.7 → 0.1.9
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 +1 -1
- package/dist/cli.mjs +48 -27
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ file for details.
|
|
|
34
34
|
### Install
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npm install -g @
|
|
37
|
+
npm install -g @amirtechai/xclaude
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
If the npm install path later reports `ripgrep not found`, install ripgrep system-wide and confirm `rg --version` works in the same terminal before starting Xclaude.
|
package/dist/cli.mjs
CHANGED
|
@@ -109955,8 +109955,11 @@ async function performCodexRequest(options) {
|
|
|
109955
109955
|
if (options.request.reasoning) {
|
|
109956
109956
|
body.reasoning = options.request.reasoning;
|
|
109957
109957
|
}
|
|
109958
|
-
|
|
109959
|
-
|
|
109958
|
+
if (typeof options.params.max_tokens === "number" && options.params.max_tokens > 0) {
|
|
109959
|
+
body.max_output_tokens = options.params.max_tokens;
|
|
109960
|
+
}
|
|
109961
|
+
const isGptOrCodexModel = options.request.resolvedModel?.toLowerCase().includes("gpt") || options.request.resolvedModel?.toLowerCase().includes("codex");
|
|
109962
|
+
if (!isGptOrCodexModel) {
|
|
109960
109963
|
if (options.params.temperature !== undefined) {
|
|
109961
109964
|
body.temperature = options.params.temperature;
|
|
109962
109965
|
}
|
|
@@ -109995,11 +109998,7 @@ async function* readSseEvents(response) {
|
|
|
109995
109998
|
return;
|
|
109996
109999
|
const decoder = new TextDecoder;
|
|
109997
110000
|
let buffer = "";
|
|
109998
|
-
|
|
109999
|
-
const { done, value } = await reader.read();
|
|
110000
|
-
if (done)
|
|
110001
|
-
break;
|
|
110002
|
-
buffer += decoder.decode(value, { stream: true });
|
|
110001
|
+
function* processBuffer() {
|
|
110003
110002
|
const chunks = buffer.split(`
|
|
110004
110003
|
|
|
110005
110004
|
`);
|
|
@@ -110030,6 +110029,20 @@ async function* readSseEvents(response) {
|
|
|
110030
110029
|
yield { event, data };
|
|
110031
110030
|
}
|
|
110032
110031
|
}
|
|
110032
|
+
try {
|
|
110033
|
+
while (true) {
|
|
110034
|
+
const { done, value } = await reader.read();
|
|
110035
|
+
if (done) {
|
|
110036
|
+
buffer += decoder.decode();
|
|
110037
|
+
yield* processBuffer();
|
|
110038
|
+
break;
|
|
110039
|
+
}
|
|
110040
|
+
buffer += decoder.decode(value, { stream: true });
|
|
110041
|
+
yield* processBuffer();
|
|
110042
|
+
}
|
|
110043
|
+
} finally {
|
|
110044
|
+
reader.releaseLock();
|
|
110045
|
+
}
|
|
110033
110046
|
}
|
|
110034
110047
|
function determineStopReason(response, sawToolUse) {
|
|
110035
110048
|
const output = Array.isArray(response?.output) ? response.output : [];
|
|
@@ -110635,6 +110648,8 @@ async function* openaiStreamToAnthropic(response, model) {
|
|
|
110635
110648
|
type: "content_block_stop",
|
|
110636
110649
|
index: contentBlockIndex
|
|
110637
110650
|
};
|
|
110651
|
+
contentBlockIndex++;
|
|
110652
|
+
hasEmittedContentStart = false;
|
|
110638
110653
|
}
|
|
110639
110654
|
for (const [, tc] of activeToolCalls) {
|
|
110640
110655
|
let suffixToAdd = "";
|
|
@@ -110678,14 +110693,11 @@ async function* openaiStreamToAnthropic(response, model) {
|
|
|
110678
110693
|
}
|
|
110679
110694
|
const stopReason = choice.finish_reason === "tool_calls" ? "tool_use" : choice.finish_reason === "length" ? "max_tokens" : "end_turn";
|
|
110680
110695
|
if (choice.finish_reason === "content_filter" || choice.finish_reason === "safety") {
|
|
110681
|
-
|
|
110682
|
-
|
|
110683
|
-
|
|
110684
|
-
|
|
110685
|
-
|
|
110686
|
-
};
|
|
110687
|
-
hasEmittedContentStart = true;
|
|
110688
|
-
}
|
|
110696
|
+
yield {
|
|
110697
|
+
type: "content_block_start",
|
|
110698
|
+
index: contentBlockIndex,
|
|
110699
|
+
content_block: { type: "text", text: "" }
|
|
110700
|
+
};
|
|
110689
110701
|
yield {
|
|
110690
110702
|
type: "content_block_delta",
|
|
110691
110703
|
index: contentBlockIndex,
|
|
@@ -110693,6 +110705,7 @@ async function* openaiStreamToAnthropic(response, model) {
|
|
|
110693
110705
|
|
|
110694
110706
|
[Content blocked by provider safety filter]` }
|
|
110695
110707
|
};
|
|
110708
|
+
yield { type: "content_block_stop", index: contentBlockIndex };
|
|
110696
110709
|
}
|
|
110697
110710
|
lastStopReason = stopReason;
|
|
110698
110711
|
yield {
|
|
@@ -110828,6 +110841,10 @@ class OpenAIShimMessages {
|
|
|
110828
110841
|
}
|
|
110829
110842
|
}
|
|
110830
110843
|
}
|
|
110844
|
+
const reasoningEffort = request.reasoning?.effort ?? this.reasoningEffort;
|
|
110845
|
+
if (reasoningEffort) {
|
|
110846
|
+
body.reasoning_effort = reasoningEffort;
|
|
110847
|
+
}
|
|
110831
110848
|
const headers = {
|
|
110832
110849
|
"Content-Type": "application/json",
|
|
110833
110850
|
...this.defaultHeaders,
|
|
@@ -120071,7 +120088,7 @@ function printStartupScreen() {
|
|
|
120071
120088
|
const sLen = ` ● ${sL} Ready — type /help to begin`.length;
|
|
120072
120089
|
out.push(boxRow(sRow, W2, sLen));
|
|
120073
120090
|
out.push(`${rgb(...BORDER)}╚${"═".repeat(W2 - 2)}╝${RESET}`);
|
|
120074
|
-
out.push(` ${DIM}${rgb(...DIMCOL)}xclaude ${RESET}${rgb(...ACCENT)}v${"0.1.
|
|
120091
|
+
out.push(` ${DIM}${rgb(...DIMCOL)}xclaude ${RESET}${rgb(...ACCENT)}v${"0.1.9"}${RESET}`);
|
|
120075
120092
|
out.push("");
|
|
120076
120093
|
process.stdout.write(out.join(`
|
|
120077
120094
|
`) + `
|
|
@@ -262882,7 +262899,7 @@ function resolveAgentProvider(name, subagentType, settings) {
|
|
|
262882
262899
|
for (const [key, value] of Object.entries(routing)) {
|
|
262883
262900
|
const nk = normalize9(key);
|
|
262884
262901
|
if (normalizedRouting.has(nk)) {
|
|
262885
|
-
|
|
262902
|
+
logForDebugging2(`[agentRouting] Warning: routing key "${key}" collides with an existing key after normalization (both map to "${nk}"). First entry wins.`, { level: "warn" });
|
|
262886
262903
|
}
|
|
262887
262904
|
if (!normalizedRouting.has(nk)) {
|
|
262888
262905
|
normalizedRouting.set(nk, value);
|
|
@@ -262908,6 +262925,9 @@ function resolveAgentProvider(name, subagentType, settings) {
|
|
|
262908
262925
|
apiKey: modelConfig.api_key
|
|
262909
262926
|
};
|
|
262910
262927
|
}
|
|
262928
|
+
var init_agentRouting = __esm(() => {
|
|
262929
|
+
init_debug();
|
|
262930
|
+
});
|
|
262911
262931
|
|
|
262912
262932
|
// src/utils/telemetry/perfettoTracing.ts
|
|
262913
262933
|
function initializePerfettoTracing() {}
|
|
@@ -296243,6 +296263,7 @@ var init_runAgent = __esm(() => {
|
|
|
296243
296263
|
init_hooks5();
|
|
296244
296264
|
init_messages3();
|
|
296245
296265
|
init_agent();
|
|
296266
|
+
init_agentRouting();
|
|
296246
296267
|
init_settings2();
|
|
296247
296268
|
init_sessionStorage();
|
|
296248
296269
|
init_pluginOnlyPolicy();
|
|
@@ -370254,7 +370275,7 @@ function getAnthropicEnvMetadata() {
|
|
|
370254
370275
|
function getBuildAgeMinutes() {
|
|
370255
370276
|
if (false)
|
|
370256
370277
|
;
|
|
370257
|
-
const buildTime = new Date("2026-04-
|
|
370278
|
+
const buildTime = new Date("2026-04-06T19:24:30.342Z").getTime();
|
|
370258
370279
|
if (isNaN(buildTime))
|
|
370259
370280
|
return;
|
|
370260
370281
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -397012,7 +397033,7 @@ function buildPrimarySection() {
|
|
|
397012
397033
|
}, undefined, false, undefined, this);
|
|
397013
397034
|
return [{
|
|
397014
397035
|
label: "Version",
|
|
397015
|
-
value: "0.1.
|
|
397036
|
+
value: "0.1.9"
|
|
397016
397037
|
}, {
|
|
397017
397038
|
label: "Session name",
|
|
397018
397039
|
value: nameValue
|
|
@@ -462119,7 +462140,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
462119
462140
|
var call58 = async () => {
|
|
462120
462141
|
return {
|
|
462121
462142
|
type: "text",
|
|
462122
|
-
value: `${"99.0.0"} (built ${"2026-04-
|
|
462143
|
+
value: `${"99.0.0"} (built ${"2026-04-06T19:24:30.342Z"})`
|
|
462123
462144
|
};
|
|
462124
462145
|
}, version2, version_default;
|
|
462125
462146
|
var init_version = __esm(() => {
|
|
@@ -535065,7 +535086,7 @@ function WelcomeV2() {
|
|
|
535065
535086
|
dimColor: true,
|
|
535066
535087
|
children: [
|
|
535067
535088
|
"v",
|
|
535068
|
-
"0.1.
|
|
535089
|
+
"0.1.9",
|
|
535069
535090
|
" "
|
|
535070
535091
|
]
|
|
535071
535092
|
}, undefined, true, undefined, this)
|
|
@@ -535265,7 +535286,7 @@ function WelcomeV2() {
|
|
|
535265
535286
|
dimColor: true,
|
|
535266
535287
|
children: [
|
|
535267
535288
|
"v",
|
|
535268
|
-
"0.1.
|
|
535289
|
+
"0.1.9",
|
|
535269
535290
|
" "
|
|
535270
535291
|
]
|
|
535271
535292
|
}, undefined, true, undefined, this)
|
|
@@ -535491,7 +535512,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
535491
535512
|
dimColor: true,
|
|
535492
535513
|
children: [
|
|
535493
535514
|
"v",
|
|
535494
|
-
"0.1.
|
|
535515
|
+
"0.1.9",
|
|
535495
535516
|
" "
|
|
535496
535517
|
]
|
|
535497
535518
|
}, undefined, true, undefined, this);
|
|
@@ -535745,7 +535766,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
535745
535766
|
dimColor: true,
|
|
535746
535767
|
children: [
|
|
535747
535768
|
"v",
|
|
535748
|
-
"0.1.
|
|
535769
|
+
"0.1.9",
|
|
535749
535770
|
" "
|
|
535750
535771
|
]
|
|
535751
535772
|
}, undefined, true, undefined, this);
|
|
@@ -556312,7 +556333,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
556312
556333
|
pendingHookMessages
|
|
556313
556334
|
}, renderAndRun);
|
|
556314
556335
|
}
|
|
556315
|
-
}).version("0.1.
|
|
556336
|
+
}).version("0.1.9 (Xclaude)", "-v, --version", "Output the version number");
|
|
556316
556337
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
556317
556338
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
556318
556339
|
if (canUserConfigureAdvisor()) {
|
|
@@ -556882,7 +556903,7 @@ function validateProviderEnvOrExit() {
|
|
|
556882
556903
|
async function main2() {
|
|
556883
556904
|
const args = process.argv.slice(2);
|
|
556884
556905
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
556885
|
-
console.log(`${"0.1.
|
|
556906
|
+
console.log(`${"0.1.9"} (Xclaude)`);
|
|
556886
556907
|
return;
|
|
556887
556908
|
}
|
|
556888
556909
|
if (args.includes("--provider")) {
|
|
@@ -556998,4 +557019,4 @@ async function main2() {
|
|
|
556998
557019
|
}
|
|
556999
557020
|
main2();
|
|
557000
557021
|
|
|
557001
|
-
//# debugId=
|
|
557022
|
+
//# debugId=97B5108AA4BD867D64756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amirtechai/xclaude",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Claude Code opened to any LLM
|
|
3
|
+
"version": "0.1.9",
|
|
4
|
+
"description": "Claude Code opened to any LLM — OpenAI, Gemini, DeepSeek, Groq, Ollama, and 200+ models",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"xclaude": "./bin/xclaude"
|