@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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.mjs +48 -27
  3. 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 @gitlawb/xclaude
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
- const isTargetModel = options.request.resolvedModel?.toLowerCase().includes("gpt") || options.request.resolvedModel?.toLowerCase().includes("codex");
109959
- if (!isTargetModel) {
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
- while (true) {
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
- if (!hasEmittedContentStart) {
110682
- yield {
110683
- type: "content_block_start",
110684
- index: contentBlockIndex,
110685
- content_block: { type: "text", text: "" }
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.7"}${RESET}`);
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
- console.error(`[agentRouting] Warning: routing key "${key}" collides with an existing key after normalization (both map to "${nk}"). First entry wins.`);
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-06T17:30:31.280Z").getTime();
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.7"
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-06T17:30:31.280Z"})`
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.7",
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.7",
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.7",
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.7",
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.7 (Xclaude)", "-v, --version", "Output the version number");
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.7"} (Xclaude)`);
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=C584EF2E88AC9D2D64756E2164756E21
557022
+ //# debugId=97B5108AA4BD867D64756E2164756E21
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@amirtechai/xclaude",
3
- "version": "0.1.7",
4
- "description": "Claude Code opened to any LLM \u2014 OpenAI, Gemini, DeepSeek, Groq, Ollama, and 200+ models",
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"