@rdmind/rdmind 0.2.2-alpha.2 → 0.2.2-alpha.3

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/cli.js CHANGED
@@ -157359,7 +157359,7 @@ __export(geminiContentGenerator_exports2, {
157359
157359
  createGeminiContentGenerator: () => createGeminiContentGenerator
157360
157360
  });
157361
157361
  function createGeminiContentGenerator(config2, gcConfig) {
157362
- const version2 = "0.2.2-alpha.2";
157362
+ const version2 = "0.2.2-alpha.3";
157363
157363
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
157364
157364
  const baseHeaders = {
157365
157365
  "User-Agent": userAgent2
@@ -247729,7 +247729,7 @@ var init_config3 = __esm({
247729
247729
  this.getDebugMode(),
247730
247730
  this.getFileService(),
247731
247731
  this.getExtensionContextFilePaths(),
247732
- this.getFolderTrust(),
247732
+ this.isTrustedFolder(),
247733
247733
  this.getImportFormat()
247734
247734
  );
247735
247735
  this.setUserMemory(memoryContent);
@@ -254755,8 +254755,8 @@ var init_git_commit = __esm({
254755
254755
  "packages/core/src/generated/git-commit.ts"() {
254756
254756
  "use strict";
254757
254757
  init_esbuild_shims();
254758
- GIT_COMMIT_INFO = "0d9e721ec";
254759
- CLI_VERSION = "0.2.2-alpha.2";
254758
+ GIT_COMMIT_INFO = "ebe48cf8a";
254759
+ CLI_VERSION = "0.2.2-alpha.3";
254760
254760
  }
254761
254761
  });
254762
254762
 
@@ -294850,7 +294850,7 @@ var init_settingsSchema = __esm({
294850
294850
  showInDialog: false,
294851
294851
  mergeStrategy: "concat" /* CONCAT */
294852
294852
  },
294853
- loadMemoryFromIncludeDirectories: {
294853
+ loadFromIncludeDirectories: {
294854
294854
  type: "boolean",
294855
294855
  label: "Load Memory From Include Directories",
294856
294856
  category: "Context",
@@ -304481,7 +304481,9 @@ var init_en3 = __esm({
304481
304481
  "Enable User Feedback": "Enable User Feedback",
304482
304482
  "How is Qwen doing this session? (optional)": "How is Qwen doing this session? (optional)",
304483
304483
  Bad: "Bad",
304484
+ Fine: "Fine",
304484
304485
  Good: "Good",
304486
+ Dismiss: "Dismiss",
304485
304487
  "Not Sure Yet": "Not Sure Yet",
304486
304488
  "Any other key": "Any other key",
304487
304489
  "Disable Loading Phrases": "Disable Loading Phrases",
@@ -305552,7 +305554,9 @@ var init_zh = __esm({
305552
305554
  "Enable User Feedback": "\u542F\u7528\u7528\u6237\u53CD\u9988",
305553
305555
  "How is Qwen doing this session? (optional)": "Qwen \u8FD9\u6B21\u8868\u73B0\u5982\u4F55\uFF1F\uFF08\u53EF\u9009\uFF09",
305554
305556
  Bad: "\u4E0D\u6EE1\u610F",
305557
+ Fine: "\u8FD8\u884C",
305555
305558
  Good: "\u6EE1\u610F",
305559
+ Dismiss: "\u5FFD\u7565",
305556
305560
  "Not Sure Yet": "\u6682\u4E0D\u8BC4\u4EF7",
305557
305561
  "Any other key": "\u4EFB\u610F\u5176\u4ED6\u952E",
305558
305562
  "Disable Loading Phrases": "\u7981\u7528\u52A0\u8F7D\u77ED\u8BED",
@@ -355436,7 +355440,7 @@ __name(getPackageJson, "getPackageJson");
355436
355440
  // packages/cli/src/utils/version.ts
355437
355441
  async function getCliVersion() {
355438
355442
  const pkgJson = await getPackageJson();
355439
- return "0.2.2-alpha.2";
355443
+ return "0.2.2-alpha.3";
355440
355444
  }
355441
355445
  __name(getCliVersion, "getCliVersion");
355442
355446
 
@@ -359968,7 +359972,7 @@ async function loadCliConfig(settings, argv, cwd7 = process.cwd(), overrideExten
359968
359972
  sandbox: sandboxConfig,
359969
359973
  targetDir: cwd7,
359970
359974
  includeDirectories,
359971
- loadMemoryFromIncludeDirectories: settings.context?.loadMemoryFromIncludeDirectories || false,
359975
+ loadMemoryFromIncludeDirectories: settings.context?.loadFromIncludeDirectories || false,
359972
359976
  importFormat: settings.context?.importFormat || "tree",
359973
359977
  debugMode,
359974
359978
  question,
@@ -363251,7 +363255,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
363251
363255
 
363252
363256
  // packages/cli/src/generated/git-commit.ts
363253
363257
  init_esbuild_shims();
363254
- var GIT_COMMIT_INFO2 = "0d9e721ec";
363258
+ var GIT_COMMIT_INFO2 = "ebe48cf8a";
363255
363259
 
363256
363260
  // packages/cli/src/utils/systemInfo.ts
363257
363261
  async function getNpmVersion() {
@@ -373547,6 +373551,7 @@ var ControlContext = class {
373547
373551
  permissionMode;
373548
373552
  sdkMcpServers;
373549
373553
  mcpClients;
373554
+ inputClosed;
373550
373555
  onInterrupt;
373551
373556
  constructor(options2) {
373552
373557
  this.config = options2.config;
@@ -373557,6 +373562,7 @@ var ControlContext = class {
373557
373562
  this.permissionMode = options2.permissionMode || "default";
373558
373563
  this.sdkMcpServers = /* @__PURE__ */ new Set();
373559
373564
  this.mcpClients = /* @__PURE__ */ new Map();
373565
+ this.inputClosed = false;
373560
373566
  this.onInterrupt = options2.onInterrupt;
373561
373567
  }
373562
373568
  };
@@ -373622,6 +373628,9 @@ var BaseController = class {
373622
373628
  * Respects the provided AbortSignal for cancellation.
373623
373629
  */
373624
373630
  async sendControlRequest(payload, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS, signal) {
373631
+ if (this.context.inputClosed) {
373632
+ throw new Error("Input closed");
373633
+ }
373625
373634
  if (signal?.aborted) {
373626
373635
  throw new Error("Request aborted");
373627
373636
  }
@@ -374385,16 +374394,19 @@ var PermissionController = class extends BaseController {
374385
374394
  error2
374386
374395
  );
374387
374396
  }
374397
+ const errorMessage = error2 instanceof Error ? error2.message : String(error2);
374388
374398
  const confirmationType = toolCall.confirmationDetails.type;
374389
374399
  if (["edit", "exec", "mcp"].includes(confirmationType)) {
374390
374400
  const execOrMcpDetails = toolCall.confirmationDetails;
374391
- await execOrMcpDetails.onConfirm(
374392
- "cancel" /* Cancel */,
374393
- void 0
374394
- );
374401
+ await execOrMcpDetails.onConfirm("cancel" /* Cancel */, {
374402
+ cancelMessage: `Error: ${errorMessage}`
374403
+ });
374395
374404
  } else {
374396
374405
  await toolCall.confirmationDetails.onConfirm(
374397
- "cancel" /* Cancel */
374406
+ "cancel" /* Cancel */,
374407
+ {
374408
+ cancelMessage: `Error: ${errorMessage}`
374409
+ }
374398
374410
  );
374399
374411
  }
374400
374412
  } finally {
@@ -374606,6 +374618,30 @@ var ControlDispatcher = class {
374606
374618
  }
374607
374619
  }
374608
374620
  }
374621
+ /**
374622
+ * Marks stdin as closed and rejects all pending outgoing requests.
374623
+ * After this is called, new outgoing requests will be rejected immediately.
374624
+ * This should be called when stdin closes to avoid waiting for responses.
374625
+ */
374626
+ markInputClosed() {
374627
+ if (this.context.inputClosed) {
374628
+ return;
374629
+ }
374630
+ this.context.inputClosed = true;
374631
+ const requestIds = Array.from(this.pendingOutgoingRequests.keys());
374632
+ if (this.context.debugMode) {
374633
+ console.error(
374634
+ `[ControlDispatcher] Input closed, rejecting ${requestIds.length} pending outgoing requests`
374635
+ );
374636
+ }
374637
+ for (const id of requestIds) {
374638
+ const pending = this.pendingOutgoingRequests.get(id);
374639
+ if (pending) {
374640
+ this.deregisterOutgoingRequest(id);
374641
+ pending.reject(new Error("Input closed"));
374642
+ }
374643
+ }
374644
+ }
374609
374645
  /**
374610
374646
  * Stops all pending requests and cleans up all controllers
374611
374647
  */
@@ -374634,7 +374670,7 @@ var ControlDispatcher = class {
374634
374670
  this.sdkMcpController.cleanup();
374635
374671
  }
374636
374672
  /**
374637
- * Registers an incoming request in the pending registry
374673
+ * Registers an incoming request in the pending registry.
374638
374674
  */
374639
374675
  registerIncomingRequest(requestId, controller, abortController, timeoutId) {
374640
374676
  this.pendingIncomingRequests.set(requestId, {
@@ -375422,6 +375458,9 @@ var Session2 = class {
375422
375458
  }
375423
375459
  throw streamError;
375424
375460
  }
375461
+ if (this.dispatcher) {
375462
+ this.dispatcher.markInputClosed();
375463
+ }
375425
375464
  await this.waitForAllPendingWork();
375426
375465
  await this.shutdown();
375427
375466
  } catch (error2) {
@@ -405858,27 +405897,32 @@ var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);
405858
405897
  var FEEDBACK_OPTIONS = {
405859
405898
  GOOD: 1,
405860
405899
  BAD: 2,
405861
- NOT_SURE: 3
405900
+ FINE: 3,
405901
+ DISMISS: 0
405862
405902
  };
405863
405903
  var FEEDBACK_OPTION_KEYS = {
405864
405904
  [FEEDBACK_OPTIONS.GOOD]: "1",
405865
405905
  [FEEDBACK_OPTIONS.BAD]: "2",
405866
- [FEEDBACK_OPTIONS.NOT_SURE]: "any"
405906
+ [FEEDBACK_OPTIONS.FINE]: "3",
405907
+ [FEEDBACK_OPTIONS.DISMISS]: "0"
405867
405908
  };
405868
- var FEEDBACK_DIALOG_KEYS = ["1", "2"];
405909
+ var FEEDBACK_DIALOG_KEYS = ["1", "2", "3", "0"];
405869
405910
  var FeedbackDialog = /* @__PURE__ */ __name(() => {
405870
405911
  const uiState = useUIState();
405871
405912
  const uiActions = useUIActions();
405872
405913
  useKeypress(
405873
405914
  (key) => {
405874
- if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.GOOD]) {
405875
- uiActions.submitFeedback(FEEDBACK_OPTIONS.GOOD);
405876
- } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.BAD]) {
405915
+ if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.BAD]) {
405877
405916
  uiActions.submitFeedback(FEEDBACK_OPTIONS.BAD);
405917
+ } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.FINE]) {
405918
+ uiActions.submitFeedback(FEEDBACK_OPTIONS.FINE);
405919
+ } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.GOOD]) {
405920
+ uiActions.submitFeedback(FEEDBACK_OPTIONS.GOOD);
405921
+ } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.DISMISS]) {
405922
+ uiActions.submitFeedback(FEEDBACK_OPTIONS.DISMISS);
405878
405923
  } else {
405879
- uiActions.submitFeedback(FEEDBACK_OPTIONS.NOT_SURE);
405924
+ uiActions.temporaryCloseFeedbackDialog();
405880
405925
  }
405881
- uiActions.closeFeedbackDialog();
405882
405926
  },
405883
405927
  { isActive: uiState.isFeedbackDialogOpen }
405884
405928
  );
@@ -405902,10 +405946,19 @@ var FeedbackDialog = /* @__PURE__ */ __name(() => {
405902
405946
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Bad") }),
405903
405947
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " }),
405904
405948
  /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Text3, { color: "cyan", children: [
405905
- t4("Any other key"),
405906
- ": "
405949
+ FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.FINE],
405950
+ ":",
405951
+ " "
405907
405952
  ] }),
405908
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Not Sure Yet") })
405953
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Fine") }),
405954
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " }),
405955
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Text3, { color: "cyan", children: [
405956
+ FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.DISMISS],
405957
+ ":",
405958
+ " "
405959
+ ] }),
405960
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Dismiss") }),
405961
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " })
405909
405962
  ] })
405910
405963
  ] });
405911
405964
  }, "FeedbackDialog");
@@ -405952,6 +406005,7 @@ var InputPrompt = /* @__PURE__ */ __name(({
405952
406005
  }) => {
405953
406006
  const isShellFocused = useShellFocusState();
405954
406007
  const uiState = useUIState();
406008
+ const uiActions = useUIActions();
405955
406009
  const [justNavigatedHistory, setJustNavigatedHistory] = (0, import_react97.useState)(false);
405956
406010
  const [escPressCount, setEscPressCount] = (0, import_react97.useState)(0);
405957
406011
  const [showEscapePrompt, setShowEscapePrompt] = (0, import_react97.useState)(false);
@@ -406130,8 +406184,12 @@ var InputPrompt = /* @__PURE__ */ __name(({
406130
406184
  if (vimHandleInput && vimHandleInput(key)) {
406131
406185
  return;
406132
406186
  }
406133
- if (uiState.isFeedbackDialogOpen && FEEDBACK_DIALOG_KEYS.includes(key.name)) {
406134
- return;
406187
+ if (uiState.isFeedbackDialogOpen) {
406188
+ if (FEEDBACK_DIALOG_KEYS.includes(key.name)) {
406189
+ return;
406190
+ } else {
406191
+ uiActions.temporaryCloseFeedbackDialog();
406192
+ }
406135
406193
  }
406136
406194
  if (key.name !== "escape") {
406137
406195
  if (escPressCount > 0 || showEscapePrompt) {
@@ -406417,7 +406475,8 @@ var InputPrompt = /* @__PURE__ */ __name(({
406417
406475
  commandSearchCompletion,
406418
406476
  onToggleShortcuts,
406419
406477
  showShortcuts,
406420
- uiState
406478
+ uiState,
406479
+ uiActions
406421
406480
  ]
406422
406481
  );
406423
406482
  useKeypress(handleInput, { isActive: !isEmbeddedShellFocused });
@@ -407381,35 +407440,42 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
407381
407440
  sessionStats
407382
407441
  }) => {
407383
407442
  const [isFeedbackDialogOpen, setIsFeedbackDialogOpen] = (0, import_react102.useState)(false);
407443
+ const [isFeedbackDismissedTemporarily, setIsFeedbackDismissedTemporarily] = (0, import_react102.useState)(false);
407384
407444
  const openFeedbackDialog = (0, import_react102.useCallback)(() => {
407385
407445
  setIsFeedbackDialogOpen(true);
407386
- settings.setValue(
407387
- "User" /* User */,
407388
- "ui.feedbackLastShownTimestamp",
407389
- Date.now()
407390
- );
407391
- }, [settings]);
407446
+ }, []);
407392
407447
  const closeFeedbackDialog = (0, import_react102.useCallback)(
407393
407448
  () => setIsFeedbackDialogOpen(false),
407394
407449
  []
407395
407450
  );
407451
+ const temporaryCloseFeedbackDialog = (0, import_react102.useCallback)(() => {
407452
+ setIsFeedbackDialogOpen(false);
407453
+ setIsFeedbackDismissedTemporarily(true);
407454
+ }, []);
407396
407455
  const submitFeedback = (0, import_react102.useCallback)(
407397
407456
  (rating) => {
407398
- const feedbackEvent = new UserFeedbackEvent(
407399
- sessionStats.sessionId,
407400
- rating,
407401
- config2.getModel(),
407402
- config2.getApprovalMode()
407457
+ if (rating >= FEEDBACK_OPTIONS.GOOD && rating <= FEEDBACK_OPTIONS.FINE) {
407458
+ const feedbackEvent = new UserFeedbackEvent(
407459
+ sessionStats.sessionId,
407460
+ rating,
407461
+ config2.getModel(),
407462
+ config2.getApprovalMode()
407463
+ );
407464
+ logUserFeedback(config2, feedbackEvent);
407465
+ }
407466
+ settings.setValue(
407467
+ "User" /* User */,
407468
+ "ui.feedbackLastShownTimestamp",
407469
+ Date.now()
407403
407470
  );
407404
- logUserFeedback(config2, feedbackEvent);
407405
407471
  closeFeedbackDialog();
407406
407472
  },
407407
- [config2, sessionStats, closeFeedbackDialog]
407473
+ [closeFeedbackDialog, sessionStats.sessionId, config2, settings]
407408
407474
  );
407409
407475
  (0, import_react102.useEffect)(() => {
407410
407476
  const checkAndShowFeedback = /* @__PURE__ */ __name(() => {
407411
407477
  if (streamingState === "idle" /* Idle */ && history.length > 0) {
407412
- if (config2.getAuthType() !== "qwen-oauth" /* QWEN_OAUTH */ || !config2.getUsageStatisticsEnabled() || settings.merged.ui?.enableUserFeedback === false || !lastMessageIsAIResponse(history) || Math.random() > FEEDBACK_SHOW_PROBABILITY || !meetsMinimumSessionRequirements(sessionStats)) {
407478
+ if (config2.getAuthType() !== "qwen-oauth" /* QWEN_OAUTH */ || !config2.getUsageStatisticsEnabled() || settings.merged.ui?.enableUserFeedback === false || !lastMessageIsAIResponse(history) || Math.random() > FEEDBACK_SHOW_PROBABILITY || !meetsMinimumSessionRequirements(sessionStats) || isFeedbackDismissedTemporarily) {
407413
407479
  return;
407414
407480
  }
407415
407481
  if (shouldShowFeedbackBasedOnFatigue()) {
@@ -407423,14 +407489,21 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
407423
407489
  history,
407424
407490
  sessionStats,
407425
407491
  isFeedbackDialogOpen,
407492
+ isFeedbackDismissedTemporarily,
407426
407493
  openFeedbackDialog,
407427
407494
  settings.merged.ui?.enableUserFeedback,
407428
407495
  config2
407429
407496
  ]);
407497
+ (0, import_react102.useEffect)(() => {
407498
+ if (streamingState === "responding" /* Responding */ && isFeedbackDismissedTemporarily) {
407499
+ setIsFeedbackDismissedTemporarily(false);
407500
+ }
407501
+ }, [streamingState, isFeedbackDismissedTemporarily]);
407430
407502
  return {
407431
407503
  isFeedbackDialogOpen,
407432
407504
  openFeedbackDialog,
407433
407505
  closeFeedbackDialog,
407506
+ temporaryCloseFeedbackDialog,
407434
407507
  submitFeedback
407435
407508
  };
407436
407509
  }, "useFeedbackDialog");
@@ -417067,7 +417140,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
417067
417140
  try {
417068
417141
  const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(
417069
417142
  process48.cwd(),
417070
- settings.merged.context?.loadMemoryFromIncludeDirectories ? config2.getWorkspaceContext().getDirectories() : [],
417143
+ settings.merged.context?.loadFromIncludeDirectories ? config2.getWorkspaceContext().getDirectories() : [],
417071
417144
  config2.getDebugMode(),
417072
417145
  config2.getFileService(),
417073
417146
  config2.getExtensionContextFilePaths(),
@@ -417599,6 +417672,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
417599
417672
  isFeedbackDialogOpen,
417600
417673
  openFeedbackDialog,
417601
417674
  closeFeedbackDialog,
417675
+ temporaryCloseFeedbackDialog,
417602
417676
  submitFeedback
417603
417677
  } = useFeedbackDialog({
417604
417678
  config: config2,
@@ -417856,6 +417930,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
417856
417930
  // Feedback dialog
417857
417931
  openFeedbackDialog,
417858
417932
  closeFeedbackDialog,
417933
+ temporaryCloseFeedbackDialog,
417859
417934
  submitFeedback
417860
417935
  }),
417861
417936
  [
@@ -417899,6 +417974,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
417899
417974
  // Feedback dialog
417900
417975
  openFeedbackDialog,
417901
417976
  closeFeedbackDialog,
417977
+ temporaryCloseFeedbackDialog,
417902
417978
  submitFeedback
417903
417979
  ]
417904
417980
  );
@@ -419229,7 +419305,8 @@ var usageSchema = external_exports.object({
419229
419305
  });
419230
419306
  var sessionUpdateMetaSchema = external_exports.object({
419231
419307
  usage: usageSchema.optional().nullable(),
419232
- durationMs: external_exports.number().optional().nullable()
419308
+ durationMs: external_exports.number().optional().nullable(),
419309
+ toolName: external_exports.string().optional().nullable()
419233
419310
  });
419234
419311
  var requestPermissionResponseSchema = external_exports.object({
419235
419312
  outcome: requestPermissionOutcomeSchema
@@ -419403,6 +419480,7 @@ var sessionUpdateSchema = external_exports.union([
419403
419480
  kind: toolKindSchema,
419404
419481
  locations: external_exports.array(toolCallLocationSchema).optional(),
419405
419482
  rawInput: external_exports.unknown().optional(),
419483
+ _meta: sessionUpdateMetaSchema.optional().nullable(),
419406
419484
  sessionUpdate: external_exports.literal("tool_call"),
419407
419485
  status: toolCallStatusSchema,
419408
419486
  title: external_exports.string(),
@@ -419414,6 +419492,7 @@ var sessionUpdateSchema = external_exports.union([
419414
419492
  locations: external_exports.array(toolCallLocationSchema).optional().nullable(),
419415
419493
  rawInput: external_exports.unknown().optional(),
419416
419494
  rawOutput: external_exports.unknown().optional(),
419495
+ _meta: sessionUpdateMetaSchema.optional().nullable(),
419417
419496
  sessionUpdate: external_exports.literal("tool_call_update"),
419418
419497
  status: toolCallStatusSchema.optional().nullable(),
419419
419498
  title: external_exports.string().optional().nullable(),
@@ -420047,7 +420126,8 @@ var ToolCallEmitter = class extends BaseEmitter {
420047
420126
  content: [],
420048
420127
  locations,
420049
420128
  kind: kind2,
420050
- rawInput: params.args ?? {}
420129
+ rawInput: params.args ?? {},
420130
+ _meta: { toolName: params.toolName }
420051
420131
  });
420052
420132
  return true;
420053
420133
  }
@@ -420088,7 +420168,8 @@ var ToolCallEmitter = class extends BaseEmitter {
420088
420168
  sessionUpdate: "tool_call_update",
420089
420169
  toolCallId: params.callId,
420090
420170
  status: params.success ? "completed" : "failed",
420091
- content: contentArray
420171
+ content: contentArray,
420172
+ _meta: { toolName: params.toolName }
420092
420173
  };
420093
420174
  if (params.resultDisplay !== void 0) {
420094
420175
  update2["rawOutput"] = params.resultDisplay;
@@ -420102,14 +420183,15 @@ var ToolCallEmitter = class extends BaseEmitter {
420102
420183
  * @param callId - The tool call ID
420103
420184
  * @param error - The error that occurred
420104
420185
  */
420105
- async emitError(callId, error2) {
420186
+ async emitError(callId, toolName, error2) {
420106
420187
  await this.sendUpdate({
420107
420188
  sessionUpdate: "tool_call_update",
420108
420189
  toolCallId: callId,
420109
420190
  status: "failed",
420110
420191
  content: [
420111
420192
  { type: "content", content: { type: "text", text: error2.message } }
420112
- ]
420193
+ ],
420194
+ _meta: { toolName }
420113
420195
  });
420114
420196
  }
420115
420197
  // ==================== Public Utilities ====================
@@ -421008,7 +421090,11 @@ var Session3 = class {
421008
421090
  } catch (e4) {
421009
421091
  subAgentCleanupFunctions.forEach((cleanup) => cleanup());
421010
421092
  const error2 = e4 instanceof Error ? e4 : new Error(String(e4));
421011
- await this.toolCallEmitter.emitError(callId, error2);
421093
+ await this.toolCallEmitter.emitError(
421094
+ callId,
421095
+ fc.name ?? "unknown_tool",
421096
+ error2
421097
+ );
421012
421098
  const errorParts = [
421013
421099
  {
421014
421100
  functionResponse: {
@@ -421263,7 +421349,7 @@ ${pathList}
421263
421349
  if (pathSpecsToRead.length > 0) {
421264
421350
  const readResult = await readManyFilesTool.buildAndExecute(
421265
421351
  {
421266
- paths_with_line_ranges: pathSpecsToRead
421352
+ paths: pathSpecsToRead
421267
421353
  },
421268
421354
  abortSignal
421269
421355
  );
@@ -421436,7 +421522,7 @@ var GeminiAgent = class {
421436
421522
  name: APPROVAL_MODE_INFO[mode].name,
421437
421523
  description: APPROVAL_MODE_INFO[mode].description
421438
421524
  }));
421439
- const version2 = "0.2.2-alpha.2";
421525
+ const version2 = "0.2.2-alpha.3";
421440
421526
  return {
421441
421527
  protocolVersion: PROTOCOL_VERSION,
421442
421528
  agentInfo: {
package/locales/en.js CHANGED
@@ -322,7 +322,9 @@ export default {
322
322
  'How is Qwen doing this session? (optional)':
323
323
  'How is Qwen doing this session? (optional)',
324
324
  Bad: 'Bad',
325
+ Fine: 'Fine',
325
326
  Good: 'Good',
327
+ Dismiss: 'Dismiss',
326
328
  'Not Sure Yet': 'Not Sure Yet',
327
329
  'Any other key': 'Any other key',
328
330
  'Disable Loading Phrases': 'Disable Loading Phrases',
package/locales/zh.js CHANGED
@@ -312,7 +312,9 @@ export default {
312
312
  'Enable User Feedback': '启用用户反馈',
313
313
  'How is Qwen doing this session? (optional)': 'Qwen 这次表现如何?(可选)',
314
314
  Bad: '不满意',
315
+ Fine: '还行',
315
316
  Good: '满意',
317
+ Dismiss: '忽略',
316
318
  'Not Sure Yet': '暂不评价',
317
319
  'Any other key': '任意其他键',
318
320
  'Disable Loading Phrases': '禁用加载短语',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rdmind/rdmind",
3
- "version": "0.2.2-alpha.2",
3
+ "version": "0.2.2-alpha.3",
4
4
  "description": "RDMind - AI-powered coding assistant",
5
5
  "type": "module",
6
6
  "main": "cli.js",
@@ -20,7 +20,7 @@
20
20
  "locales"
21
21
  ],
22
22
  "config": {
23
- "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.2.2-alpha.2"
23
+ "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.2.2-alpha.3"
24
24
  },
25
25
  "publishConfig": {
26
26
  "access": "public"
@@ -32,8 +32,7 @@
32
32
  "@lydell/node-pty-darwin-x64": "1.1.0",
33
33
  "@lydell/node-pty-linux-x64": "1.1.0",
34
34
  "@lydell/node-pty-win32-arm64": "1.1.0",
35
- "@lydell/node-pty-win32-x64": "1.1.0",
36
- "node-pty": "^1.0.0"
35
+ "@lydell/node-pty-win32-x64": "1.1.0"
37
36
  },
38
37
  "engines": {
39
38
  "node": ">=20.0.0"