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

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.4";
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.4";
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.4";
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) {
@@ -403149,6 +403188,7 @@ __name(ConfigRow, "ConfigRow");
403149
403188
  function ModelDialog({ onClose }) {
403150
403189
  const config2 = (0, import_react85.useContext)(ConfigContext);
403151
403190
  const uiState = (0, import_react85.useContext)(UIStateContext);
403191
+ const uiActions = useUIActions();
403152
403192
  const settings = (0, import_react85.useContext)(SettingsContext);
403153
403193
  const settingsHook = useSettings();
403154
403194
  const [errorMessage, setErrorMessage] = (0, import_react85.useState)(null);
@@ -403181,12 +403221,13 @@ function ModelDialog({ onClose }) {
403181
403221
  settings.setValue("User" /* User */, "model.name", model);
403182
403222
  await config2.refreshAuth("openai" /* USE_OPENAI */);
403183
403223
  await config2.setModel(model);
403224
+ uiActions.refreshStatic();
403184
403225
  const event = new ModelSlashCommandEvent(model);
403185
403226
  logModelSlashCommand(config2, event);
403186
403227
  }
403187
403228
  onClose();
403188
403229
  },
403189
- [config2, settings, onClose]
403230
+ [config2, settings, onClose, uiActions]
403190
403231
  );
403191
403232
  const handleXhsSsoConfigComplete = (0, import_react85.useCallback)(
403192
403233
  async (xhsSsoConfig) => {
@@ -403210,12 +403251,13 @@ function ModelDialog({ onClose }) {
403210
403251
  settings.setValue("User" /* User */, "model.name", xhsSsoConfig.model);
403211
403252
  await config2.refreshAuth("xhs-sso" /* XHS_SSO */);
403212
403253
  await config2.setModel(xhsSsoConfig.model);
403254
+ uiActions.refreshStatic();
403213
403255
  const event = new ModelSlashCommandEvent(xhsSsoConfig.model);
403214
403256
  logModelSlashCommand(config2, event);
403215
403257
  }
403216
403258
  onClose();
403217
403259
  },
403218
- [config2, settings, onClose]
403260
+ [config2, settings, onClose, uiActions]
403219
403261
  );
403220
403262
  if (authType === "openai" /* USE_OPENAI */) {
403221
403263
  return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(OpenAIKeyPrompt, { onSubmit: handleOpenAIConfigSubmit, onCancel: onClose });
@@ -403317,6 +403359,7 @@ ${baseErrorMessage}`
403317
403359
  const effectiveModelId = after?.model ?? modelId;
403318
403360
  persistModelSelection(settingsHook, effectiveModelId);
403319
403361
  persistAuthTypeSelection(settingsHook, effectiveAuthType);
403362
+ uiActions.refreshStatic();
403320
403363
  const baseUrl = after?.baseUrl ?? t4("(default)");
403321
403364
  const maskedKey = maskApiKey(after?.apiKey);
403322
403365
  uiState?.historyManager.addItem(
@@ -403332,7 +403375,15 @@ API key: ${maskedKey}`
403332
403375
  }
403333
403376
  onClose();
403334
403377
  },
403335
- [authType, config2, onClose, settingsHook, uiState, setErrorMessage]
403378
+ [
403379
+ authType,
403380
+ config2,
403381
+ onClose,
403382
+ settingsHook,
403383
+ uiState,
403384
+ setErrorMessage,
403385
+ uiActions
403386
+ ]
403336
403387
  );
403337
403388
  const hasModels = MODEL_OPTIONS.length > 0;
403338
403389
  return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
@@ -405858,27 +405909,32 @@ var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);
405858
405909
  var FEEDBACK_OPTIONS = {
405859
405910
  GOOD: 1,
405860
405911
  BAD: 2,
405861
- NOT_SURE: 3
405912
+ FINE: 3,
405913
+ DISMISS: 0
405862
405914
  };
405863
405915
  var FEEDBACK_OPTION_KEYS = {
405864
405916
  [FEEDBACK_OPTIONS.GOOD]: "1",
405865
405917
  [FEEDBACK_OPTIONS.BAD]: "2",
405866
- [FEEDBACK_OPTIONS.NOT_SURE]: "any"
405918
+ [FEEDBACK_OPTIONS.FINE]: "3",
405919
+ [FEEDBACK_OPTIONS.DISMISS]: "0"
405867
405920
  };
405868
- var FEEDBACK_DIALOG_KEYS = ["1", "2"];
405921
+ var FEEDBACK_DIALOG_KEYS = ["1", "2", "3", "0"];
405869
405922
  var FeedbackDialog = /* @__PURE__ */ __name(() => {
405870
405923
  const uiState = useUIState();
405871
405924
  const uiActions = useUIActions();
405872
405925
  useKeypress(
405873
405926
  (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]) {
405927
+ if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.BAD]) {
405877
405928
  uiActions.submitFeedback(FEEDBACK_OPTIONS.BAD);
405929
+ } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.FINE]) {
405930
+ uiActions.submitFeedback(FEEDBACK_OPTIONS.FINE);
405931
+ } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.GOOD]) {
405932
+ uiActions.submitFeedback(FEEDBACK_OPTIONS.GOOD);
405933
+ } else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.DISMISS]) {
405934
+ uiActions.submitFeedback(FEEDBACK_OPTIONS.DISMISS);
405878
405935
  } else {
405879
- uiActions.submitFeedback(FEEDBACK_OPTIONS.NOT_SURE);
405936
+ uiActions.temporaryCloseFeedbackDialog();
405880
405937
  }
405881
- uiActions.closeFeedbackDialog();
405882
405938
  },
405883
405939
  { isActive: uiState.isFeedbackDialogOpen }
405884
405940
  );
@@ -405902,10 +405958,19 @@ var FeedbackDialog = /* @__PURE__ */ __name(() => {
405902
405958
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Bad") }),
405903
405959
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " }),
405904
405960
  /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Text3, { color: "cyan", children: [
405905
- t4("Any other key"),
405906
- ": "
405961
+ FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.FINE],
405962
+ ":",
405963
+ " "
405964
+ ] }),
405965
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Fine") }),
405966
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " }),
405967
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Text3, { color: "cyan", children: [
405968
+ FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.DISMISS],
405969
+ ":",
405970
+ " "
405907
405971
  ] }),
405908
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Not Sure Yet") })
405972
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Dismiss") }),
405973
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " })
405909
405974
  ] })
405910
405975
  ] });
405911
405976
  }, "FeedbackDialog");
@@ -405952,6 +406017,7 @@ var InputPrompt = /* @__PURE__ */ __name(({
405952
406017
  }) => {
405953
406018
  const isShellFocused = useShellFocusState();
405954
406019
  const uiState = useUIState();
406020
+ const uiActions = useUIActions();
405955
406021
  const [justNavigatedHistory, setJustNavigatedHistory] = (0, import_react97.useState)(false);
405956
406022
  const [escPressCount, setEscPressCount] = (0, import_react97.useState)(0);
405957
406023
  const [showEscapePrompt, setShowEscapePrompt] = (0, import_react97.useState)(false);
@@ -406130,8 +406196,12 @@ var InputPrompt = /* @__PURE__ */ __name(({
406130
406196
  if (vimHandleInput && vimHandleInput(key)) {
406131
406197
  return;
406132
406198
  }
406133
- if (uiState.isFeedbackDialogOpen && FEEDBACK_DIALOG_KEYS.includes(key.name)) {
406134
- return;
406199
+ if (uiState.isFeedbackDialogOpen) {
406200
+ if (FEEDBACK_DIALOG_KEYS.includes(key.name)) {
406201
+ return;
406202
+ } else {
406203
+ uiActions.temporaryCloseFeedbackDialog();
406204
+ }
406135
406205
  }
406136
406206
  if (key.name !== "escape") {
406137
406207
  if (escPressCount > 0 || showEscapePrompt) {
@@ -406417,7 +406487,8 @@ var InputPrompt = /* @__PURE__ */ __name(({
406417
406487
  commandSearchCompletion,
406418
406488
  onToggleShortcuts,
406419
406489
  showShortcuts,
406420
- uiState
406490
+ uiState,
406491
+ uiActions
406421
406492
  ]
406422
406493
  );
406423
406494
  useKeypress(handleInput, { isActive: !isEmbeddedShellFocused });
@@ -407381,35 +407452,42 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
407381
407452
  sessionStats
407382
407453
  }) => {
407383
407454
  const [isFeedbackDialogOpen, setIsFeedbackDialogOpen] = (0, import_react102.useState)(false);
407455
+ const [isFeedbackDismissedTemporarily, setIsFeedbackDismissedTemporarily] = (0, import_react102.useState)(false);
407384
407456
  const openFeedbackDialog = (0, import_react102.useCallback)(() => {
407385
407457
  setIsFeedbackDialogOpen(true);
407386
- settings.setValue(
407387
- "User" /* User */,
407388
- "ui.feedbackLastShownTimestamp",
407389
- Date.now()
407390
- );
407391
- }, [settings]);
407458
+ }, []);
407392
407459
  const closeFeedbackDialog = (0, import_react102.useCallback)(
407393
407460
  () => setIsFeedbackDialogOpen(false),
407394
407461
  []
407395
407462
  );
407463
+ const temporaryCloseFeedbackDialog = (0, import_react102.useCallback)(() => {
407464
+ setIsFeedbackDialogOpen(false);
407465
+ setIsFeedbackDismissedTemporarily(true);
407466
+ }, []);
407396
407467
  const submitFeedback = (0, import_react102.useCallback)(
407397
407468
  (rating) => {
407398
- const feedbackEvent = new UserFeedbackEvent(
407399
- sessionStats.sessionId,
407400
- rating,
407401
- config2.getModel(),
407402
- config2.getApprovalMode()
407469
+ if (rating >= FEEDBACK_OPTIONS.GOOD && rating <= FEEDBACK_OPTIONS.FINE) {
407470
+ const feedbackEvent = new UserFeedbackEvent(
407471
+ sessionStats.sessionId,
407472
+ rating,
407473
+ config2.getModel(),
407474
+ config2.getApprovalMode()
407475
+ );
407476
+ logUserFeedback(config2, feedbackEvent);
407477
+ }
407478
+ settings.setValue(
407479
+ "User" /* User */,
407480
+ "ui.feedbackLastShownTimestamp",
407481
+ Date.now()
407403
407482
  );
407404
- logUserFeedback(config2, feedbackEvent);
407405
407483
  closeFeedbackDialog();
407406
407484
  },
407407
- [config2, sessionStats, closeFeedbackDialog]
407485
+ [closeFeedbackDialog, sessionStats.sessionId, config2, settings]
407408
407486
  );
407409
407487
  (0, import_react102.useEffect)(() => {
407410
407488
  const checkAndShowFeedback = /* @__PURE__ */ __name(() => {
407411
407489
  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)) {
407490
+ 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
407491
  return;
407414
407492
  }
407415
407493
  if (shouldShowFeedbackBasedOnFatigue()) {
@@ -407423,14 +407501,21 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
407423
407501
  history,
407424
407502
  sessionStats,
407425
407503
  isFeedbackDialogOpen,
407504
+ isFeedbackDismissedTemporarily,
407426
407505
  openFeedbackDialog,
407427
407506
  settings.merged.ui?.enableUserFeedback,
407428
407507
  config2
407429
407508
  ]);
407509
+ (0, import_react102.useEffect)(() => {
407510
+ if (streamingState === "responding" /* Responding */ && isFeedbackDismissedTemporarily) {
407511
+ setIsFeedbackDismissedTemporarily(false);
407512
+ }
407513
+ }, [streamingState, isFeedbackDismissedTemporarily]);
407430
407514
  return {
407431
407515
  isFeedbackDialogOpen,
407432
407516
  openFeedbackDialog,
407433
407517
  closeFeedbackDialog,
407518
+ temporaryCloseFeedbackDialog,
407434
407519
  submitFeedback
407435
407520
  };
407436
407521
  }, "useFeedbackDialog");
@@ -417067,7 +417152,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
417067
417152
  try {
417068
417153
  const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(
417069
417154
  process48.cwd(),
417070
- settings.merged.context?.loadMemoryFromIncludeDirectories ? config2.getWorkspaceContext().getDirectories() : [],
417155
+ settings.merged.context?.loadFromIncludeDirectories ? config2.getWorkspaceContext().getDirectories() : [],
417071
417156
  config2.getDebugMode(),
417072
417157
  config2.getFileService(),
417073
417158
  config2.getExtensionContextFilePaths(),
@@ -417599,6 +417684,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
417599
417684
  isFeedbackDialogOpen,
417600
417685
  openFeedbackDialog,
417601
417686
  closeFeedbackDialog,
417687
+ temporaryCloseFeedbackDialog,
417602
417688
  submitFeedback
417603
417689
  } = useFeedbackDialog({
417604
417690
  config: config2,
@@ -417856,6 +417942,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
417856
417942
  // Feedback dialog
417857
417943
  openFeedbackDialog,
417858
417944
  closeFeedbackDialog,
417945
+ temporaryCloseFeedbackDialog,
417859
417946
  submitFeedback
417860
417947
  }),
417861
417948
  [
@@ -417899,6 +417986,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
417899
417986
  // Feedback dialog
417900
417987
  openFeedbackDialog,
417901
417988
  closeFeedbackDialog,
417989
+ temporaryCloseFeedbackDialog,
417902
417990
  submitFeedback
417903
417991
  ]
417904
417992
  );
@@ -419229,7 +419317,8 @@ var usageSchema = external_exports.object({
419229
419317
  });
419230
419318
  var sessionUpdateMetaSchema = external_exports.object({
419231
419319
  usage: usageSchema.optional().nullable(),
419232
- durationMs: external_exports.number().optional().nullable()
419320
+ durationMs: external_exports.number().optional().nullable(),
419321
+ toolName: external_exports.string().optional().nullable()
419233
419322
  });
419234
419323
  var requestPermissionResponseSchema = external_exports.object({
419235
419324
  outcome: requestPermissionOutcomeSchema
@@ -419403,6 +419492,7 @@ var sessionUpdateSchema = external_exports.union([
419403
419492
  kind: toolKindSchema,
419404
419493
  locations: external_exports.array(toolCallLocationSchema).optional(),
419405
419494
  rawInput: external_exports.unknown().optional(),
419495
+ _meta: sessionUpdateMetaSchema.optional().nullable(),
419406
419496
  sessionUpdate: external_exports.literal("tool_call"),
419407
419497
  status: toolCallStatusSchema,
419408
419498
  title: external_exports.string(),
@@ -419414,6 +419504,7 @@ var sessionUpdateSchema = external_exports.union([
419414
419504
  locations: external_exports.array(toolCallLocationSchema).optional().nullable(),
419415
419505
  rawInput: external_exports.unknown().optional(),
419416
419506
  rawOutput: external_exports.unknown().optional(),
419507
+ _meta: sessionUpdateMetaSchema.optional().nullable(),
419417
419508
  sessionUpdate: external_exports.literal("tool_call_update"),
419418
419509
  status: toolCallStatusSchema.optional().nullable(),
419419
419510
  title: external_exports.string().optional().nullable(),
@@ -420047,7 +420138,8 @@ var ToolCallEmitter = class extends BaseEmitter {
420047
420138
  content: [],
420048
420139
  locations,
420049
420140
  kind: kind2,
420050
- rawInput: params.args ?? {}
420141
+ rawInput: params.args ?? {},
420142
+ _meta: { toolName: params.toolName }
420051
420143
  });
420052
420144
  return true;
420053
420145
  }
@@ -420088,7 +420180,8 @@ var ToolCallEmitter = class extends BaseEmitter {
420088
420180
  sessionUpdate: "tool_call_update",
420089
420181
  toolCallId: params.callId,
420090
420182
  status: params.success ? "completed" : "failed",
420091
- content: contentArray
420183
+ content: contentArray,
420184
+ _meta: { toolName: params.toolName }
420092
420185
  };
420093
420186
  if (params.resultDisplay !== void 0) {
420094
420187
  update2["rawOutput"] = params.resultDisplay;
@@ -420102,14 +420195,15 @@ var ToolCallEmitter = class extends BaseEmitter {
420102
420195
  * @param callId - The tool call ID
420103
420196
  * @param error - The error that occurred
420104
420197
  */
420105
- async emitError(callId, error2) {
420198
+ async emitError(callId, toolName, error2) {
420106
420199
  await this.sendUpdate({
420107
420200
  sessionUpdate: "tool_call_update",
420108
420201
  toolCallId: callId,
420109
420202
  status: "failed",
420110
420203
  content: [
420111
420204
  { type: "content", content: { type: "text", text: error2.message } }
420112
- ]
420205
+ ],
420206
+ _meta: { toolName }
420113
420207
  });
420114
420208
  }
420115
420209
  // ==================== Public Utilities ====================
@@ -421008,7 +421102,11 @@ var Session3 = class {
421008
421102
  } catch (e4) {
421009
421103
  subAgentCleanupFunctions.forEach((cleanup) => cleanup());
421010
421104
  const error2 = e4 instanceof Error ? e4 : new Error(String(e4));
421011
- await this.toolCallEmitter.emitError(callId, error2);
421105
+ await this.toolCallEmitter.emitError(
421106
+ callId,
421107
+ fc.name ?? "unknown_tool",
421108
+ error2
421109
+ );
421012
421110
  const errorParts = [
421013
421111
  {
421014
421112
  functionResponse: {
@@ -421263,7 +421361,7 @@ ${pathList}
421263
421361
  if (pathSpecsToRead.length > 0) {
421264
421362
  const readResult = await readManyFilesTool.buildAndExecute(
421265
421363
  {
421266
- paths_with_line_ranges: pathSpecsToRead
421364
+ paths: pathSpecsToRead
421267
421365
  },
421268
421366
  abortSignal
421269
421367
  );
@@ -421436,7 +421534,7 @@ var GeminiAgent = class {
421436
421534
  name: APPROVAL_MODE_INFO[mode].name,
421437
421535
  description: APPROVAL_MODE_INFO[mode].description
421438
421536
  }));
421439
- const version2 = "0.2.2-alpha.2";
421537
+ const version2 = "0.2.2-alpha.4";
421440
421538
  return {
421441
421539
  protocolVersion: PROTOCOL_VERSION,
421442
421540
  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.4",
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.4"
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"