@rdmind/rdmind 0.2.8-alpha.12 → 0.2.8-alpha.14

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 (2) hide show
  1. package/cli.js +208 -140
  2. package/package.json +2 -2
package/cli.js CHANGED
@@ -134348,7 +134348,8 @@ var init_loggingContentGenerator = __esm({
134348
134348
  combinedParts.push({
134349
134349
  text: part.text,
134350
134350
  ...part.thought ? { thought: true } : {},
134351
- ...part.thoughtSignature ? { thoughtSignature: part.thoughtSignature } : {}
134351
+ ...part.thoughtSignature ? { thoughtSignature: part.thoughtSignature } : {},
134352
+ ..."codexReasoningItem" in part && part.codexReasoningItem ? { codexReasoningItem: part.codexReasoningItem } : {}
134352
134353
  });
134353
134354
  }
134354
134355
  continue;
@@ -148831,7 +148832,6 @@ var init_vertexAnthropicContentGenerator = __esm({
148831
148832
  // packages/core/src/core/codexContentGenerator.ts
148832
148833
  var codexContentGenerator_exports = {};
148833
148834
  __export(codexContentGenerator_exports, {
148834
- CodexApiError: () => CodexApiError,
148835
148835
  CodexContentGenerator: () => CodexContentGenerator
148836
148836
  });
148837
148837
  function extractBaseModel(model) {
@@ -148870,6 +148870,45 @@ function buildCodexInput(contents, systemInstruction, modalities) {
148870
148870
  }
148871
148871
  function convertContentToCodexMessages(content, modalities) {
148872
148872
  const messages = [];
148873
+ const convertCodexReasoningItem = /* @__PURE__ */ __name((rawItem, fallbackText, fallbackSignature) => {
148874
+ if (!rawItem || typeof rawItem !== "object") {
148875
+ if (!fallbackSignature) {
148876
+ return null;
148877
+ }
148878
+ return {
148879
+ type: "reasoning",
148880
+ summary: [{ type: "summary_text", text: fallbackText }],
148881
+ encrypted_content: fallbackSignature
148882
+ };
148883
+ }
148884
+ const raw2 = rawItem;
148885
+ const type = raw2["type"];
148886
+ if (type !== "reasoning") {
148887
+ return null;
148888
+ }
148889
+ const normalized2 = {
148890
+ type: "reasoning",
148891
+ id: typeof raw2["id"] === "string" ? raw2["id"] : void 0,
148892
+ status: typeof raw2["status"] === "string" || raw2["status"] === null ? raw2["status"] : void 0,
148893
+ encrypted_content: typeof raw2["encrypted_content"] === "string" || raw2["encrypted_content"] === null ? raw2["encrypted_content"] : fallbackSignature
148894
+ };
148895
+ if (Array.isArray(raw2["summary"])) {
148896
+ normalized2.summary = raw2["summary"].filter(
148897
+ (summaryItem) => typeof summaryItem === "object" && summaryItem !== null
148898
+ ).map((summaryItem) => ({
148899
+ ...summaryItem,
148900
+ type: summaryItem["type"] === "summary_text" ? "summary_text" : "summary_text",
148901
+ text: typeof summaryItem["text"] === "string" ? summaryItem["text"] : ""
148902
+ }));
148903
+ }
148904
+ if (Array.isArray(raw2["content"])) {
148905
+ normalized2.content = raw2["content"].filter((contentItem) => typeof contentItem === "object" && contentItem).map((contentItem) => ({ ...contentItem }));
148906
+ }
148907
+ if (!normalized2.summary || normalized2.summary.length === 0) {
148908
+ normalized2.summary = [{ type: "summary_text", text: fallbackText }];
148909
+ }
148910
+ return normalized2;
148911
+ }, "convertCodexReasoningItem");
148873
148912
  if (!content) return messages;
148874
148913
  if (typeof content === "string") {
148875
148914
  if (content.trim()) {
@@ -148887,7 +148926,21 @@ function convertContentToCodexMessages(content, modalities) {
148887
148926
  const partObj = part;
148888
148927
  if ("text" in partObj && typeof partObj["text"] === "string") {
148889
148928
  const text = partObj["text"];
148890
- if (!partObj["thought"]) {
148929
+ const isThought = Boolean(partObj["thought"]);
148930
+ const thoughtSignature = typeof partObj["thoughtSignature"] === "string" ? partObj["thoughtSignature"] : void 0;
148931
+ const codexReasoningItem = "codexReasoningItem" in partObj ? partObj["codexReasoningItem"] : void 0;
148932
+ if (isThought) {
148933
+ if (role === "assistant") {
148934
+ const reasoningMessage = convertCodexReasoningItem(
148935
+ codexReasoningItem,
148936
+ text,
148937
+ thoughtSignature
148938
+ );
148939
+ if (reasoningMessage) {
148940
+ messages.push(reasoningMessage);
148941
+ }
148942
+ }
148943
+ } else {
148891
148944
  messages.push({ role, content: text });
148892
148945
  }
148893
148946
  }
@@ -149143,11 +149196,66 @@ function mapCodexStatusToFinishReason(status) {
149143
149196
  return FinishReason.STOP;
149144
149197
  }
149145
149198
  }
149199
+ function finalizeStreamResponse(response, streamState) {
149200
+ const finalResponse = convertCodexResponseToGemini(response);
149201
+ const shouldKeepThoughtPartsOnly = streamState.sawOutputTextDelta || streamState.sawFunctionCallChunk;
149202
+ if (!finalResponse.candidates?.length) {
149203
+ return finalResponse;
149204
+ }
149205
+ finalResponse.candidates = [
149206
+ {
149207
+ ...finalResponse.candidates[0] || {
149208
+ index: 0,
149209
+ content: { role: "model", parts: [] },
149210
+ safetyRatings: []
149211
+ },
149212
+ content: {
149213
+ role: "model",
149214
+ parts: finalResponse.candidates[0]?.content?.parts?.flatMap((part) => {
149215
+ if (shouldKeepThoughtPartsOnly && !part.thought) {
149216
+ return [];
149217
+ }
149218
+ if (streamState.sawReasoningSummaryTextDelta && part.thought) {
149219
+ return [
149220
+ {
149221
+ ...part,
149222
+ text: ""
149223
+ }
149224
+ ];
149225
+ }
149226
+ return [part];
149227
+ }) || []
149228
+ }
149229
+ }
149230
+ ];
149231
+ return finalResponse;
149232
+ }
149146
149233
  function convertCodexResponseToGemini(response) {
149147
149234
  const parts = [];
149148
149235
  if (response.output && Array.isArray(response.output)) {
149149
149236
  for (const item of response.output) {
149150
149237
  if (item.type === "reasoning") {
149238
+ const summaryText = item.summary?.map((summaryItem) => summaryItem.text).filter(Boolean).join("") || "";
149239
+ if (summaryText || item.encrypted_content) {
149240
+ const thoughtPart = {
149241
+ text: summaryText,
149242
+ thought: true
149243
+ };
149244
+ if (item.encrypted_content) {
149245
+ thoughtPart.thoughtSignature = item.encrypted_content;
149246
+ }
149247
+ thoughtPart.codexReasoningItem = {
149248
+ type: "reasoning",
149249
+ id: item.id,
149250
+ status: item.status,
149251
+ content: Array.isArray(item.content) ? item.content.map((contentItem) => ({
149252
+ ...contentItem
149253
+ })) : void 0,
149254
+ summary: item.summary?.map((summaryItem) => ({ ...summaryItem })),
149255
+ encrypted_content: item.encrypted_content
149256
+ };
149257
+ parts.push(thoughtPart);
149258
+ }
149151
149259
  continue;
149152
149260
  }
149153
149261
  if (item.type === "message" && item.content) {
@@ -149200,7 +149308,7 @@ function createGeminiResponse(responseId, parts, finishReason = FinishReason.STO
149200
149308
  }
149201
149309
  return response;
149202
149310
  }
149203
- var CodexApiError, CodexContentGenerator;
149311
+ var CodexContentGenerator;
149204
149312
  var init_codexContentGenerator = __esm({
149205
149313
  "packages/core/src/core/codexContentGenerator.ts"() {
149206
149314
  "use strict";
@@ -149211,17 +149319,6 @@ var init_codexContentGenerator = __esm({
149211
149319
  init_loggers();
149212
149320
  init_types();
149213
149321
  init_openaiLogger();
149214
- CodexApiError = class extends Error {
149215
- constructor(code2, message, status) {
149216
- super(message);
149217
- this.code = code2;
149218
- this.status = status;
149219
- this.name = "CodexApiError";
149220
- }
149221
- static {
149222
- __name(this, "CodexApiError");
149223
- }
149224
- };
149225
149322
  CodexContentGenerator = class {
149226
149323
  static {
149227
149324
  __name(this, "CodexContentGenerator");
@@ -149313,30 +149410,29 @@ var init_codexContentGenerator = __esm({
149313
149410
  };
149314
149411
  }
149315
149412
  async fetchApi(request4) {
149316
- const response = await fetch(this.baseUrl, {
149317
- method: "POST",
149318
- headers: {
149319
- "Content-Type": "application/json",
149320
- "api-key": this.apiKey
149321
- },
149322
- body: JSON.stringify(request4)
149323
- });
149413
+ let response;
149414
+ try {
149415
+ response = await fetch(this.baseUrl, {
149416
+ method: "POST",
149417
+ headers: {
149418
+ "Content-Type": "application/json",
149419
+ "api-key": this.apiKey
149420
+ },
149421
+ body: JSON.stringify(request4)
149422
+ });
149423
+ } catch (err) {
149424
+ const cause = err instanceof Error ? err.cause : void 0;
149425
+ const code2 = cause && typeof cause === "object" && "code" in cause ? cause.code : void 0;
149426
+ const msg = cause instanceof Error ? cause.message : String(cause ?? err);
149427
+ throw new Error(
149428
+ `Codex API network error: fetch failed (${code2 ?? "unknown"}). ${msg}`,
149429
+ { cause: err }
149430
+ );
149431
+ }
149324
149432
  if (!response.ok) {
149325
149433
  const errorText = await response.text();
149326
- let errorCode = "unknown";
149327
- let errorMessage = errorText;
149328
- try {
149329
- const errorJson = JSON.parse(errorText);
149330
- if (errorJson.error) {
149331
- errorCode = errorJson.error.code || errorJson.error.type || "unknown";
149332
- errorMessage = errorJson.error.message || errorText;
149333
- }
149334
- } catch {
149335
- }
149336
- throw new CodexApiError(
149337
- errorCode,
149338
- `[Codex API Error] ${response.status} ${errorCode}: ${errorMessage}`,
149339
- response.status
149434
+ throw new Error(
149435
+ `Codex API request failed: ${response.status} - ${errorText}`
149340
149436
  );
149341
149437
  }
149342
149438
  return response;
@@ -149353,7 +149449,8 @@ var init_codexContentGenerator = __esm({
149353
149449
  model,
149354
149450
  input,
149355
149451
  stream: stream2,
149356
- store: true,
149452
+ store: false,
149453
+ include: ["reasoning.encrypted_content"],
149357
149454
  truncation: "auto",
149358
149455
  temperature: this.samplingParams?.temperature ?? 1,
149359
149456
  top_p: this.samplingParams?.top_p,
@@ -149377,10 +149474,8 @@ var init_codexContentGenerator = __esm({
149377
149474
  const decoder = new TextDecoder();
149378
149475
  let buffer = "";
149379
149476
  let currentEvent = "";
149380
- const yieldState = { hasYieldedText: false, hasYieldedFunctionCall: false };
149381
149477
  const streamDiag = {
149382
149478
  eventTypes: [],
149383
- yieldCount: 0,
149384
149479
  totalLines: 0,
149385
149480
  skippedLines: 0,
149386
149481
  firstRawChunk: "",
@@ -149389,13 +149484,17 @@ var init_codexContentGenerator = __esm({
149389
149484
  finalStatus: "",
149390
149485
  finalOutputTypes: [],
149391
149486
  finalOutputSummary: [],
149392
- finalExtractedTextLength: 0,
149393
- finalExtractedFunctionCallCount: 0
149487
+ streamErrors: []
149394
149488
  };
149489
+ let streamFinished = false;
149395
149490
  const toolCallArgs = /* @__PURE__ */ new Map();
149491
+ const streamState = {
149492
+ sawReasoningSummaryTextDelta: false,
149493
+ sawOutputTextDelta: false,
149494
+ sawFunctionCallChunk: false
149495
+ };
149396
149496
  try {
149397
149497
  let isFirstChunk = true;
149398
- let streamFinished = false;
149399
149498
  while (!streamFinished) {
149400
149499
  const { done, value } = await reader.read();
149401
149500
  if (done) break;
@@ -149431,31 +149530,32 @@ var init_codexContentGenerator = __esm({
149431
149530
  if (eventType === "response.completed" || eventType === "response.incomplete" || eventType === "response.failed") {
149432
149531
  const finalResponse = data.response;
149433
149532
  streamDiag.finalEventType = eventType;
149434
- streamDiag.finalStatus = finalResponse?.status || "";
149435
- streamDiag.finalOutputTypes = finalResponse?.output?.map((item) => item.type) || [];
149533
+ streamDiag.finalStatus = finalResponse?.status ?? "";
149534
+ streamDiag.finalOutputTypes = finalResponse?.output?.map((item) => item.type) ?? [];
149436
149535
  streamDiag.finalOutputSummary = finalResponse?.output?.map((item) => ({
149437
149536
  type: item.type,
149438
- contentTypes: item.content?.map((content) => content.type)
149439
- })) || [];
149537
+ contentTypes: item.content?.map(
149538
+ (c4) => typeof c4 === "object" && c4 && "type" in c4 ? c4.type : void 0
149539
+ ).filter((type) => typeof type === "string")
149540
+ })) ?? [];
149541
+ }
149542
+ if (eventType === "error") {
149543
+ const errPayload = data;
149544
+ const nested = errPayload["error"];
149545
+ const code2 = errPayload["code"] || nested?.code || nested?.type || "unknown";
149546
+ const message = errPayload["message"] || nested?.message || JSON.stringify(data);
149547
+ streamDiag.streamErrors.push({ code: code2, message });
149440
149548
  }
149441
149549
  const response = this.handleStreamEvent(
149442
- eventType,
149550
+ currentEvent,
149443
149551
  data,
149444
149552
  toolCallArgs,
149445
- yieldState,
149446
- streamDiag
149553
+ streamState
149447
149554
  );
149448
149555
  if (response) {
149449
- streamDiag.yieldCount++;
149450
- const parts = response.candidates?.[0]?.content?.parts;
149451
- if (parts?.some((p2) => p2.text))
149452
- yieldState.hasYieldedText = true;
149453
- if (parts?.some((p2) => p2.functionCall))
149454
- yieldState.hasYieldedFunctionCall = true;
149455
149556
  yield response;
149456
149557
  }
149457
- } catch (e4) {
149458
- if (e4 instanceof CodexApiError) throw e4;
149558
+ } catch {
149459
149559
  }
149460
149560
  } else {
149461
149561
  streamDiag.skippedLines++;
@@ -149463,10 +149563,7 @@ var init_codexContentGenerator = __esm({
149463
149563
  }
149464
149564
  }
149465
149565
  context2.duration = Date.now() - context2.startTime;
149466
- await this.logStreamingSuccess(context2, request4, {
149467
- yieldState,
149468
- ...streamDiag
149469
- });
149566
+ await this.logStreamingSuccess(context2, request4, streamDiag);
149470
149567
  } catch (error40) {
149471
149568
  context2.duration = Date.now() - context2.startTime;
149472
149569
  await this.logError(context2, error40, request4);
@@ -149475,14 +149572,23 @@ var init_codexContentGenerator = __esm({
149475
149572
  reader.releaseLock();
149476
149573
  }
149477
149574
  }
149478
- handleStreamEvent(event, data, toolCallArgs, yieldState, streamDiag) {
149575
+ handleStreamEvent(event, data, toolCallArgs, streamState) {
149479
149576
  switch (event) {
149480
149577
  case "response.reasoning_summary_text.delta": {
149481
- return null;
149578
+ const text = data.delta;
149579
+ if (!text) return null;
149580
+ streamState.sawReasoningSummaryTextDelta = true;
149581
+ return createGeminiResponse(data.item_id || "unknown", [
149582
+ {
149583
+ text,
149584
+ thought: true
149585
+ }
149586
+ ]);
149482
149587
  }
149483
149588
  case "response.output_text.delta": {
149484
149589
  const text = data.delta;
149485
149590
  if (!text) return null;
149591
+ streamState.sawOutputTextDelta = true;
149486
149592
  return createGeminiResponse(data.item_id || "unknown", [{ text }]);
149487
149593
  }
149488
149594
  case "response.function_call_arguments.delta": {
@@ -149506,6 +149612,7 @@ var init_codexContentGenerator = __esm({
149506
149612
  const callId = item.call_id || item.id || accumulated?.id || `call_${Date.now()}`;
149507
149613
  const name3 = item.name || accumulated?.name || "unknown";
149508
149614
  toolCallArgs.delete(index);
149615
+ streamState.sawFunctionCallChunk = true;
149509
149616
  return createGeminiResponse(data.item_id || "unknown", [
149510
149617
  {
149511
149618
  functionCall: { id: callId, name: name3, args }
@@ -149517,68 +149624,29 @@ var init_codexContentGenerator = __esm({
149517
149624
  }
149518
149625
  return null;
149519
149626
  }
149520
- case "error": {
149521
- const errData = data;
149522
- const code2 = errData["code"] || "unknown";
149523
- const message = errData["message"] || "Unknown API error";
149524
- throw new CodexApiError(code2, `[Codex API Error] ${code2}: ${message}`);
149627
+ case "response.completed": {
149628
+ const response = data.response;
149629
+ if (response) {
149630
+ return finalizeStreamResponse(response, streamState);
149631
+ }
149632
+ return createGeminiResponse("final", []);
149525
149633
  }
149526
- case "response.completed":
149527
- case "response.incomplete":
149528
- case "response.failed": {
149634
+ case "response.incomplete": {
149529
149635
  const response = data.response;
149530
- if (event === "response.failed") {
149531
- const respRecord = response;
149532
- const err = respRecord?.["error"];
149533
- const failCode = err?.code || "unknown";
149534
- const failMsg = err?.message || "Response failed without details";
149535
- throw new CodexApiError(
149536
- failCode,
149537
- `[Codex API Error] ${failCode}: ${failMsg}`
149538
- );
149636
+ if (response) {
149637
+ return finalizeStreamResponse(response, streamState);
149539
149638
  }
149540
- const finishReason = event === "response.incomplete" ? FinishReason.MAX_TOKENS : mapCodexStatusToFinishReason(response?.status);
149541
- const usage2 = response?.usage;
149542
- const parts = [];
149543
- if (response?.output) {
149544
- for (const item of response.output) {
149545
- if (!yieldState.hasYieldedText && item.type === "message" && item.content) {
149546
- const text = item.content.map((c4) => c4.text).filter(Boolean).join("");
149547
- if (text) {
149548
- parts.push({ text });
149549
- if (streamDiag) {
149550
- streamDiag.finalExtractedTextLength += text.length;
149551
- }
149552
- }
149553
- } else if (!yieldState.hasYieldedFunctionCall && item.type === "function_call" && item.arguments) {
149554
- try {
149555
- const args = JSON.parse(item.arguments);
149556
- parts.push({
149557
- functionCall: {
149558
- id: item.call_id || item.id || `call_${Date.now()}`,
149559
- name: item.name || "unknown",
149560
- args
149561
- }
149562
- });
149563
- if (streamDiag) {
149564
- streamDiag.finalExtractedFunctionCallCount += 1;
149565
- }
149566
- } catch {
149567
- }
149568
- }
149569
- }
149639
+ return createGeminiResponse("final", [], FinishReason.MAX_TOKENS);
149640
+ }
149641
+ case "response.failed": {
149642
+ const response = data.response;
149643
+ if (response) {
149644
+ return finalizeStreamResponse(response, streamState);
149570
149645
  }
149571
149646
  return createGeminiResponse(
149572
- response?.id || "final",
149573
- parts,
149574
- finishReason,
149575
- usage2 ? {
149576
- promptTokenCount: usage2.input_tokens,
149577
- candidatesTokenCount: usage2.output_tokens,
149578
- totalTokenCount: usage2.total_tokens,
149579
- cachedContentTokenCount: usage2.input_tokens_details?.cached_tokens,
149580
- thoughtsTokenCount: usage2.output_tokens_details?.reasoning_tokens
149581
- } : void 0
149647
+ "final",
149648
+ [],
149649
+ FinishReason.FINISH_REASON_UNSPECIFIED
149582
149650
  );
149583
149651
  }
149584
149652
  default:
@@ -149636,7 +149704,7 @@ var init_codexContentGenerator = __esm({
149636
149704
  if (this.enableOpenAILogging && this.logger) {
149637
149705
  await this.logger.logInteraction(request4, {
149638
149706
  streamed: true,
149639
- ...diagnostics || {}
149707
+ ...diagnostics ?? {}
149640
149708
  });
149641
149709
  }
149642
149710
  }
@@ -149652,6 +149720,7 @@ var init_codexContentGenerator = __esm({
149652
149720
  __name(convertTools, "convertTools");
149653
149721
  __name(convertGeminiSchemaToOpenAI, "convertGeminiSchemaToOpenAI");
149654
149722
  __name(mapCodexStatusToFinishReason, "mapCodexStatusToFinishReason");
149723
+ __name(finalizeStreamResponse, "finalizeStreamResponse");
149655
149724
  __name(convertCodexResponseToGemini, "convertCodexResponseToGemini");
149656
149725
  __name(createGeminiResponse, "createGeminiResponse");
149657
149726
  }
@@ -161243,7 +161312,7 @@ __export(geminiContentGenerator_exports2, {
161243
161312
  createGeminiContentGenerator: () => createGeminiContentGenerator
161244
161313
  });
161245
161314
  function createGeminiContentGenerator(config2, gcConfig) {
161246
- const version2 = "0.2.8-alpha.12";
161315
+ const version2 = "0.2.8-alpha.14";
161247
161316
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
161248
161317
  const baseHeaders = {
161249
161318
  "User-Agent": userAgent2
@@ -163193,6 +163262,12 @@ This error was probably caused by cyclic schema references in one of the followi
163193
163262
  if (thoughtContentPart && thoughtSignature) {
163194
163263
  thoughtContentPart.thoughtSignature = thoughtSignature;
163195
163264
  }
163265
+ const codexReasoningItem = allModelParts.find(
163266
+ (part) => part && typeof part === "object" && "thought" in part && part.thought && "codexReasoningItem" in part
163267
+ );
163268
+ if (thoughtContentPart && codexReasoningItem?.codexReasoningItem) {
163269
+ thoughtContentPart.codexReasoningItem = codexReasoningItem.codexReasoningItem;
163270
+ }
163196
163271
  }
163197
163272
  const contentParts = allModelParts.filter((part) => !part.thought);
163198
163273
  const consolidatedHistoryParts = [];
@@ -377223,7 +377298,7 @@ __name(getPackageJson, "getPackageJson");
377223
377298
  // packages/cli/src/utils/version.ts
377224
377299
  async function getCliVersion() {
377225
377300
  const pkgJson = await getPackageJson();
377226
- return "0.2.8-alpha.12";
377301
+ return "0.2.8-alpha.14";
377227
377302
  }
377228
377303
  __name(getCliVersion, "getCliVersion");
377229
377304
 
@@ -384946,7 +385021,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
384946
385021
 
384947
385022
  // packages/cli/src/generated/git-commit.ts
384948
385023
  init_esbuild_shims();
384949
- var GIT_COMMIT_INFO = "32931e816";
385024
+ var GIT_COMMIT_INFO = "4ebf619b1";
384950
385025
 
384951
385026
  // packages/cli/src/utils/systemInfo.ts
384952
385027
  async function getNpmVersion() {
@@ -426321,13 +426396,6 @@ var XHS_SSO_MODELS = [
426321
426396
  contextWindow: "272K",
426322
426397
  description: "\u7528\u4E8E\u5904\u7406\u590D\u6742\u4E13\u4E1A\u5DE5\u4F5C\u7684\u524D\u6CBF\u6A21\u578B (\u63A8\u7406\u5F3A\u5EA6\u4E2D)"
426323
426398
  },
426324
- {
426325
- id: "gpt-5.4(xhigh)",
426326
- displayName: "gpt-5.4(xhigh)",
426327
- baseUrl: "https://runway.devops.rednote.life/openai/v1/responses?api-version=v1",
426328
- contextWindow: "272K",
426329
- description: "\u7528\u4E8E\u5904\u7406\u590D\u6742\u4E13\u4E1A\u5DE5\u4F5C\u7684\u524D\u6CBF\u6A21\u578B (\u63A8\u7406\u5F3A\u5EA6\u6781\u9AD8)"
426330
- },
426331
426399
  {
426332
426400
  id: "gpt-5.3-codex(medium)",
426333
426401
  displayName: "gpt-5.3-codex(medium)",
@@ -426391,13 +426459,13 @@ var XHS_SSO_MODELS = [
426391
426459
  contextWindow: "200K",
426392
426460
  description: "\u667A\u8C31\u65B0\u4E00\u4EE3\u7684\u65D7\u8230\u57FA\u5EA7\u6A21\u578B\uFF0C\u9762\u5411 Agentic Engineering \u6253\u9020\uFF0C\u5BF9\u9F50 Claude Opus 4.5"
426393
426461
  },
426394
- {
426395
- id: "claude-opus-4-5@20251101",
426396
- displayName: "Claude Opus 4.5",
426397
- baseUrl: "https://runway.devops.rednote.life/openai/google/anthropic/v1",
426398
- contextWindow: "200K",
426399
- description: "Anthropic \u6700\u5F3A\u5927\u7684\u6A21\u578B\uFF0C\u64C5\u957F\u590D\u6742\u63A8\u7406\u548C\u4EE3\u7801\u751F\u6210"
426400
- },
426462
+ // {
426463
+ // id: 'claude-opus-4-5@20251101',
426464
+ // displayName: 'Claude Opus 4.5',
426465
+ // baseUrl: 'https://runway.devops.rednote.life/openai/google/anthropic/v1',
426466
+ // contextWindow: '200K',
426467
+ // description: 'Anthropic 最强大的模型,擅长复杂推理和代码生成',
426468
+ // },
426401
426469
  {
426402
426470
  id: "Kimi-K2.5",
426403
426471
  displayName: "Kimi-K2.5",
@@ -447322,7 +447390,7 @@ var QwenAgent = class {
447322
447390
  async initialize(args) {
447323
447391
  this.clientCapabilities = args.clientCapabilities;
447324
447392
  const authMethods = buildAuthMethods();
447325
- const version2 = "0.2.8-alpha.12";
447393
+ const version2 = "0.2.8-alpha.14";
447326
447394
  return {
447327
447395
  protocolVersion: PROTOCOL_VERSION,
447328
447396
  agentInfo: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rdmind/rdmind",
3
- "version": "0.2.8-alpha.12",
3
+ "version": "0.2.8-alpha.14",
4
4
  "description": "RDMind - AI-powered coding assistant",
5
5
  "type": "module",
6
6
  "main": "cli.js",
@@ -19,7 +19,7 @@
19
19
  "locales"
20
20
  ],
21
21
  "config": {
22
- "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.2.8-alpha.12"
22
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.2.8-alpha.14"
23
23
  },
24
24
  "publishConfig": {
25
25
  "access": "public"