@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 +152 -54
- package/locales/en.js +2 -0
- package/locales/zh.js +2 -0
- package/package.json +3 -4
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.
|
|
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.
|
|
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 = "
|
|
254759
|
-
CLI_VERSION = "0.2.2-alpha.
|
|
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
|
-
|
|
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.
|
|
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?.
|
|
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 = "
|
|
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
|
-
|
|
374393
|
-
|
|
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
|
-
[
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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("
|
|
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
|
|
406134
|
-
|
|
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
|
-
|
|
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
|
-
|
|
407399
|
-
|
|
407400
|
-
|
|
407401
|
-
|
|
407402
|
-
|
|
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
|
-
[
|
|
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?.
|
|
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(
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|