@rdmind/rdmind 0.2.2-alpha.1 → 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 +146 -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.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.
|
|
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.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
|
-
|
|
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.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?.
|
|
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() {
|
|
@@ -371081,7 +371085,7 @@ var MarkdownCommandDefSchema2 = external_exports.object({
|
|
|
371081
371085
|
name: external_exports.string(),
|
|
371082
371086
|
id: external_exports.string().optional(),
|
|
371083
371087
|
category: external_exports.string().optional(),
|
|
371084
|
-
description: external_exports.string()
|
|
371088
|
+
description: external_exports.string().optional()
|
|
371085
371089
|
});
|
|
371086
371090
|
var MarkdownCommandLoader = class {
|
|
371087
371091
|
static {
|
|
@@ -371097,6 +371101,8 @@ var MarkdownCommandLoader = class {
|
|
|
371097
371101
|
}
|
|
371098
371102
|
/**
|
|
371099
371103
|
* Loads all markdown commands from OpenSpec directories.
|
|
371104
|
+
* Only loads commands that are specifically marked as OpenSpec commands
|
|
371105
|
+
* (either by category: OpenSpec in frontmatter or filename starting with 'openspec-').
|
|
371100
371106
|
*/
|
|
371101
371107
|
async loadCommands(signal) {
|
|
371102
371108
|
if (this.folderTrustEnabled && !this.folderTrust) {
|
|
@@ -371112,7 +371118,7 @@ var MarkdownCommandLoader = class {
|
|
|
371112
371118
|
const commandDirs = this.getOpenSpecCommandDirectories();
|
|
371113
371119
|
for (const dirPath of commandDirs) {
|
|
371114
371120
|
try {
|
|
371115
|
-
const files = await glob("
|
|
371121
|
+
const files = await glob("**/openspec-*.md", {
|
|
371116
371122
|
...globOptions,
|
|
371117
371123
|
cwd: dirPath
|
|
371118
371124
|
});
|
|
@@ -371175,8 +371181,12 @@ var MarkdownCommandLoader = class {
|
|
|
371175
371181
|
return null;
|
|
371176
371182
|
}
|
|
371177
371183
|
const validDef = validationResult.data;
|
|
371184
|
+
const isOpenSpecCommand = validDef.category === "OpenSpec" || typeof validDef.id === "string" && validDef.id.startsWith("openspec-") || path105.basename(filePath, ".md").startsWith("openspec-");
|
|
371185
|
+
if (!isOpenSpecCommand) {
|
|
371186
|
+
return null;
|
|
371187
|
+
}
|
|
371178
371188
|
const commandName = validDef.name.startsWith("/") ? validDef.name.substring(1) : validDef.name;
|
|
371179
|
-
let description = validDef.description;
|
|
371189
|
+
let description = validDef.description || "";
|
|
371180
371190
|
if (commandName === "openspec-proposal") {
|
|
371181
371191
|
description = t4("Scaffold a new OpenSpec change and validate strictly.");
|
|
371182
371192
|
} else if (commandName === "openspec-apply") {
|
|
@@ -373541,6 +373551,7 @@ var ControlContext = class {
|
|
|
373541
373551
|
permissionMode;
|
|
373542
373552
|
sdkMcpServers;
|
|
373543
373553
|
mcpClients;
|
|
373554
|
+
inputClosed;
|
|
373544
373555
|
onInterrupt;
|
|
373545
373556
|
constructor(options2) {
|
|
373546
373557
|
this.config = options2.config;
|
|
@@ -373551,6 +373562,7 @@ var ControlContext = class {
|
|
|
373551
373562
|
this.permissionMode = options2.permissionMode || "default";
|
|
373552
373563
|
this.sdkMcpServers = /* @__PURE__ */ new Set();
|
|
373553
373564
|
this.mcpClients = /* @__PURE__ */ new Map();
|
|
373565
|
+
this.inputClosed = false;
|
|
373554
373566
|
this.onInterrupt = options2.onInterrupt;
|
|
373555
373567
|
}
|
|
373556
373568
|
};
|
|
@@ -373616,6 +373628,9 @@ var BaseController = class {
|
|
|
373616
373628
|
* Respects the provided AbortSignal for cancellation.
|
|
373617
373629
|
*/
|
|
373618
373630
|
async sendControlRequest(payload, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS, signal) {
|
|
373631
|
+
if (this.context.inputClosed) {
|
|
373632
|
+
throw new Error("Input closed");
|
|
373633
|
+
}
|
|
373619
373634
|
if (signal?.aborted) {
|
|
373620
373635
|
throw new Error("Request aborted");
|
|
373621
373636
|
}
|
|
@@ -374379,16 +374394,19 @@ var PermissionController = class extends BaseController {
|
|
|
374379
374394
|
error2
|
|
374380
374395
|
);
|
|
374381
374396
|
}
|
|
374397
|
+
const errorMessage = error2 instanceof Error ? error2.message : String(error2);
|
|
374382
374398
|
const confirmationType = toolCall.confirmationDetails.type;
|
|
374383
374399
|
if (["edit", "exec", "mcp"].includes(confirmationType)) {
|
|
374384
374400
|
const execOrMcpDetails = toolCall.confirmationDetails;
|
|
374385
|
-
await execOrMcpDetails.onConfirm(
|
|
374386
|
-
|
|
374387
|
-
|
|
374388
|
-
);
|
|
374401
|
+
await execOrMcpDetails.onConfirm("cancel" /* Cancel */, {
|
|
374402
|
+
cancelMessage: `Error: ${errorMessage}`
|
|
374403
|
+
});
|
|
374389
374404
|
} else {
|
|
374390
374405
|
await toolCall.confirmationDetails.onConfirm(
|
|
374391
|
-
"cancel" /* Cancel
|
|
374406
|
+
"cancel" /* Cancel */,
|
|
374407
|
+
{
|
|
374408
|
+
cancelMessage: `Error: ${errorMessage}`
|
|
374409
|
+
}
|
|
374392
374410
|
);
|
|
374393
374411
|
}
|
|
374394
374412
|
} finally {
|
|
@@ -374600,6 +374618,30 @@ var ControlDispatcher = class {
|
|
|
374600
374618
|
}
|
|
374601
374619
|
}
|
|
374602
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
|
+
}
|
|
374603
374645
|
/**
|
|
374604
374646
|
* Stops all pending requests and cleans up all controllers
|
|
374605
374647
|
*/
|
|
@@ -374628,7 +374670,7 @@ var ControlDispatcher = class {
|
|
|
374628
374670
|
this.sdkMcpController.cleanup();
|
|
374629
374671
|
}
|
|
374630
374672
|
/**
|
|
374631
|
-
* Registers an incoming request in the pending registry
|
|
374673
|
+
* Registers an incoming request in the pending registry.
|
|
374632
374674
|
*/
|
|
374633
374675
|
registerIncomingRequest(requestId, controller, abortController, timeoutId) {
|
|
374634
374676
|
this.pendingIncomingRequests.set(requestId, {
|
|
@@ -375416,6 +375458,9 @@ var Session2 = class {
|
|
|
375416
375458
|
}
|
|
375417
375459
|
throw streamError;
|
|
375418
375460
|
}
|
|
375461
|
+
if (this.dispatcher) {
|
|
375462
|
+
this.dispatcher.markInputClosed();
|
|
375463
|
+
}
|
|
375419
375464
|
await this.waitForAllPendingWork();
|
|
375420
375465
|
await this.shutdown();
|
|
375421
375466
|
} catch (error2) {
|
|
@@ -405852,27 +405897,32 @@ var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);
|
|
|
405852
405897
|
var FEEDBACK_OPTIONS = {
|
|
405853
405898
|
GOOD: 1,
|
|
405854
405899
|
BAD: 2,
|
|
405855
|
-
|
|
405900
|
+
FINE: 3,
|
|
405901
|
+
DISMISS: 0
|
|
405856
405902
|
};
|
|
405857
405903
|
var FEEDBACK_OPTION_KEYS = {
|
|
405858
405904
|
[FEEDBACK_OPTIONS.GOOD]: "1",
|
|
405859
405905
|
[FEEDBACK_OPTIONS.BAD]: "2",
|
|
405860
|
-
[FEEDBACK_OPTIONS.
|
|
405906
|
+
[FEEDBACK_OPTIONS.FINE]: "3",
|
|
405907
|
+
[FEEDBACK_OPTIONS.DISMISS]: "0"
|
|
405861
405908
|
};
|
|
405862
|
-
var FEEDBACK_DIALOG_KEYS = ["1", "2"];
|
|
405909
|
+
var FEEDBACK_DIALOG_KEYS = ["1", "2", "3", "0"];
|
|
405863
405910
|
var FeedbackDialog = /* @__PURE__ */ __name(() => {
|
|
405864
405911
|
const uiState = useUIState();
|
|
405865
405912
|
const uiActions = useUIActions();
|
|
405866
405913
|
useKeypress(
|
|
405867
405914
|
(key) => {
|
|
405868
|
-
if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.
|
|
405869
|
-
uiActions.submitFeedback(FEEDBACK_OPTIONS.GOOD);
|
|
405870
|
-
} else if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.BAD]) {
|
|
405915
|
+
if (key.name === FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.BAD]) {
|
|
405871
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);
|
|
405872
405923
|
} else {
|
|
405873
|
-
uiActions.
|
|
405924
|
+
uiActions.temporaryCloseFeedbackDialog();
|
|
405874
405925
|
}
|
|
405875
|
-
uiActions.closeFeedbackDialog();
|
|
405876
405926
|
},
|
|
405877
405927
|
{ isActive: uiState.isFeedbackDialogOpen }
|
|
405878
405928
|
);
|
|
@@ -405896,10 +405946,19 @@ var FeedbackDialog = /* @__PURE__ */ __name(() => {
|
|
|
405896
405946
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Bad") }),
|
|
405897
405947
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " }),
|
|
405898
405948
|
/* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(Text3, { color: "cyan", children: [
|
|
405899
|
-
|
|
405900
|
-
":
|
|
405949
|
+
FEEDBACK_OPTION_KEYS[FEEDBACK_OPTIONS.FINE],
|
|
405950
|
+
":",
|
|
405951
|
+
" "
|
|
405952
|
+
] }),
|
|
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
|
+
" "
|
|
405901
405959
|
] }),
|
|
405902
|
-
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("
|
|
405960
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: t4("Dismiss") }),
|
|
405961
|
+
/* @__PURE__ */ (0, import_jsx_runtime95.jsx)(Text3, { children: " " })
|
|
405903
405962
|
] })
|
|
405904
405963
|
] });
|
|
405905
405964
|
}, "FeedbackDialog");
|
|
@@ -405946,6 +406005,7 @@ var InputPrompt = /* @__PURE__ */ __name(({
|
|
|
405946
406005
|
}) => {
|
|
405947
406006
|
const isShellFocused = useShellFocusState();
|
|
405948
406007
|
const uiState = useUIState();
|
|
406008
|
+
const uiActions = useUIActions();
|
|
405949
406009
|
const [justNavigatedHistory, setJustNavigatedHistory] = (0, import_react97.useState)(false);
|
|
405950
406010
|
const [escPressCount, setEscPressCount] = (0, import_react97.useState)(0);
|
|
405951
406011
|
const [showEscapePrompt, setShowEscapePrompt] = (0, import_react97.useState)(false);
|
|
@@ -406124,8 +406184,12 @@ var InputPrompt = /* @__PURE__ */ __name(({
|
|
|
406124
406184
|
if (vimHandleInput && vimHandleInput(key)) {
|
|
406125
406185
|
return;
|
|
406126
406186
|
}
|
|
406127
|
-
if (uiState.isFeedbackDialogOpen
|
|
406128
|
-
|
|
406187
|
+
if (uiState.isFeedbackDialogOpen) {
|
|
406188
|
+
if (FEEDBACK_DIALOG_KEYS.includes(key.name)) {
|
|
406189
|
+
return;
|
|
406190
|
+
} else {
|
|
406191
|
+
uiActions.temporaryCloseFeedbackDialog();
|
|
406192
|
+
}
|
|
406129
406193
|
}
|
|
406130
406194
|
if (key.name !== "escape") {
|
|
406131
406195
|
if (escPressCount > 0 || showEscapePrompt) {
|
|
@@ -406411,7 +406475,8 @@ var InputPrompt = /* @__PURE__ */ __name(({
|
|
|
406411
406475
|
commandSearchCompletion,
|
|
406412
406476
|
onToggleShortcuts,
|
|
406413
406477
|
showShortcuts,
|
|
406414
|
-
uiState
|
|
406478
|
+
uiState,
|
|
406479
|
+
uiActions
|
|
406415
406480
|
]
|
|
406416
406481
|
);
|
|
406417
406482
|
useKeypress(handleInput, { isActive: !isEmbeddedShellFocused });
|
|
@@ -407375,35 +407440,42 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
|
|
|
407375
407440
|
sessionStats
|
|
407376
407441
|
}) => {
|
|
407377
407442
|
const [isFeedbackDialogOpen, setIsFeedbackDialogOpen] = (0, import_react102.useState)(false);
|
|
407443
|
+
const [isFeedbackDismissedTemporarily, setIsFeedbackDismissedTemporarily] = (0, import_react102.useState)(false);
|
|
407378
407444
|
const openFeedbackDialog = (0, import_react102.useCallback)(() => {
|
|
407379
407445
|
setIsFeedbackDialogOpen(true);
|
|
407380
|
-
|
|
407381
|
-
"User" /* User */,
|
|
407382
|
-
"ui.feedbackLastShownTimestamp",
|
|
407383
|
-
Date.now()
|
|
407384
|
-
);
|
|
407385
|
-
}, [settings]);
|
|
407446
|
+
}, []);
|
|
407386
407447
|
const closeFeedbackDialog = (0, import_react102.useCallback)(
|
|
407387
407448
|
() => setIsFeedbackDialogOpen(false),
|
|
407388
407449
|
[]
|
|
407389
407450
|
);
|
|
407451
|
+
const temporaryCloseFeedbackDialog = (0, import_react102.useCallback)(() => {
|
|
407452
|
+
setIsFeedbackDialogOpen(false);
|
|
407453
|
+
setIsFeedbackDismissedTemporarily(true);
|
|
407454
|
+
}, []);
|
|
407390
407455
|
const submitFeedback = (0, import_react102.useCallback)(
|
|
407391
407456
|
(rating) => {
|
|
407392
|
-
|
|
407393
|
-
|
|
407394
|
-
|
|
407395
|
-
|
|
407396
|
-
|
|
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()
|
|
407397
407470
|
);
|
|
407398
|
-
logUserFeedback(config2, feedbackEvent);
|
|
407399
407471
|
closeFeedbackDialog();
|
|
407400
407472
|
},
|
|
407401
|
-
[
|
|
407473
|
+
[closeFeedbackDialog, sessionStats.sessionId, config2, settings]
|
|
407402
407474
|
);
|
|
407403
407475
|
(0, import_react102.useEffect)(() => {
|
|
407404
407476
|
const checkAndShowFeedback = /* @__PURE__ */ __name(() => {
|
|
407405
407477
|
if (streamingState === "idle" /* Idle */ && history.length > 0) {
|
|
407406
|
-
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) {
|
|
407407
407479
|
return;
|
|
407408
407480
|
}
|
|
407409
407481
|
if (shouldShowFeedbackBasedOnFatigue()) {
|
|
@@ -407417,14 +407489,21 @@ var useFeedbackDialog = /* @__PURE__ */ __name(({
|
|
|
407417
407489
|
history,
|
|
407418
407490
|
sessionStats,
|
|
407419
407491
|
isFeedbackDialogOpen,
|
|
407492
|
+
isFeedbackDismissedTemporarily,
|
|
407420
407493
|
openFeedbackDialog,
|
|
407421
407494
|
settings.merged.ui?.enableUserFeedback,
|
|
407422
407495
|
config2
|
|
407423
407496
|
]);
|
|
407497
|
+
(0, import_react102.useEffect)(() => {
|
|
407498
|
+
if (streamingState === "responding" /* Responding */ && isFeedbackDismissedTemporarily) {
|
|
407499
|
+
setIsFeedbackDismissedTemporarily(false);
|
|
407500
|
+
}
|
|
407501
|
+
}, [streamingState, isFeedbackDismissedTemporarily]);
|
|
407424
407502
|
return {
|
|
407425
407503
|
isFeedbackDialogOpen,
|
|
407426
407504
|
openFeedbackDialog,
|
|
407427
407505
|
closeFeedbackDialog,
|
|
407506
|
+
temporaryCloseFeedbackDialog,
|
|
407428
407507
|
submitFeedback
|
|
407429
407508
|
};
|
|
407430
407509
|
}, "useFeedbackDialog");
|
|
@@ -417061,7 +417140,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
|
|
|
417061
417140
|
try {
|
|
417062
417141
|
const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(
|
|
417063
417142
|
process48.cwd(),
|
|
417064
|
-
settings.merged.context?.
|
|
417143
|
+
settings.merged.context?.loadFromIncludeDirectories ? config2.getWorkspaceContext().getDirectories() : [],
|
|
417065
417144
|
config2.getDebugMode(),
|
|
417066
417145
|
config2.getFileService(),
|
|
417067
417146
|
config2.getExtensionContextFilePaths(),
|
|
@@ -417593,6 +417672,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
|
|
|
417593
417672
|
isFeedbackDialogOpen,
|
|
417594
417673
|
openFeedbackDialog,
|
|
417595
417674
|
closeFeedbackDialog,
|
|
417675
|
+
temporaryCloseFeedbackDialog,
|
|
417596
417676
|
submitFeedback
|
|
417597
417677
|
} = useFeedbackDialog({
|
|
417598
417678
|
config: config2,
|
|
@@ -417850,6 +417930,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
|
|
|
417850
417930
|
// Feedback dialog
|
|
417851
417931
|
openFeedbackDialog,
|
|
417852
417932
|
closeFeedbackDialog,
|
|
417933
|
+
temporaryCloseFeedbackDialog,
|
|
417853
417934
|
submitFeedback
|
|
417854
417935
|
}),
|
|
417855
417936
|
[
|
|
@@ -417893,6 +417974,7 @@ ${migrationResult.failedFiles.map((f5) => ` \u2022 ${f5.file}: ${f5.error}`).jo
|
|
|
417893
417974
|
// Feedback dialog
|
|
417894
417975
|
openFeedbackDialog,
|
|
417895
417976
|
closeFeedbackDialog,
|
|
417977
|
+
temporaryCloseFeedbackDialog,
|
|
417896
417978
|
submitFeedback
|
|
417897
417979
|
]
|
|
417898
417980
|
);
|
|
@@ -419223,7 +419305,8 @@ var usageSchema = external_exports.object({
|
|
|
419223
419305
|
});
|
|
419224
419306
|
var sessionUpdateMetaSchema = external_exports.object({
|
|
419225
419307
|
usage: usageSchema.optional().nullable(),
|
|
419226
|
-
durationMs: external_exports.number().optional().nullable()
|
|
419308
|
+
durationMs: external_exports.number().optional().nullable(),
|
|
419309
|
+
toolName: external_exports.string().optional().nullable()
|
|
419227
419310
|
});
|
|
419228
419311
|
var requestPermissionResponseSchema = external_exports.object({
|
|
419229
419312
|
outcome: requestPermissionOutcomeSchema
|
|
@@ -419397,6 +419480,7 @@ var sessionUpdateSchema = external_exports.union([
|
|
|
419397
419480
|
kind: toolKindSchema,
|
|
419398
419481
|
locations: external_exports.array(toolCallLocationSchema).optional(),
|
|
419399
419482
|
rawInput: external_exports.unknown().optional(),
|
|
419483
|
+
_meta: sessionUpdateMetaSchema.optional().nullable(),
|
|
419400
419484
|
sessionUpdate: external_exports.literal("tool_call"),
|
|
419401
419485
|
status: toolCallStatusSchema,
|
|
419402
419486
|
title: external_exports.string(),
|
|
@@ -419408,6 +419492,7 @@ var sessionUpdateSchema = external_exports.union([
|
|
|
419408
419492
|
locations: external_exports.array(toolCallLocationSchema).optional().nullable(),
|
|
419409
419493
|
rawInput: external_exports.unknown().optional(),
|
|
419410
419494
|
rawOutput: external_exports.unknown().optional(),
|
|
419495
|
+
_meta: sessionUpdateMetaSchema.optional().nullable(),
|
|
419411
419496
|
sessionUpdate: external_exports.literal("tool_call_update"),
|
|
419412
419497
|
status: toolCallStatusSchema.optional().nullable(),
|
|
419413
419498
|
title: external_exports.string().optional().nullable(),
|
|
@@ -420041,7 +420126,8 @@ var ToolCallEmitter = class extends BaseEmitter {
|
|
|
420041
420126
|
content: [],
|
|
420042
420127
|
locations,
|
|
420043
420128
|
kind: kind2,
|
|
420044
|
-
rawInput: params.args ?? {}
|
|
420129
|
+
rawInput: params.args ?? {},
|
|
420130
|
+
_meta: { toolName: params.toolName }
|
|
420045
420131
|
});
|
|
420046
420132
|
return true;
|
|
420047
420133
|
}
|
|
@@ -420082,7 +420168,8 @@ var ToolCallEmitter = class extends BaseEmitter {
|
|
|
420082
420168
|
sessionUpdate: "tool_call_update",
|
|
420083
420169
|
toolCallId: params.callId,
|
|
420084
420170
|
status: params.success ? "completed" : "failed",
|
|
420085
|
-
content: contentArray
|
|
420171
|
+
content: contentArray,
|
|
420172
|
+
_meta: { toolName: params.toolName }
|
|
420086
420173
|
};
|
|
420087
420174
|
if (params.resultDisplay !== void 0) {
|
|
420088
420175
|
update2["rawOutput"] = params.resultDisplay;
|
|
@@ -420096,14 +420183,15 @@ var ToolCallEmitter = class extends BaseEmitter {
|
|
|
420096
420183
|
* @param callId - The tool call ID
|
|
420097
420184
|
* @param error - The error that occurred
|
|
420098
420185
|
*/
|
|
420099
|
-
async emitError(callId, error2) {
|
|
420186
|
+
async emitError(callId, toolName, error2) {
|
|
420100
420187
|
await this.sendUpdate({
|
|
420101
420188
|
sessionUpdate: "tool_call_update",
|
|
420102
420189
|
toolCallId: callId,
|
|
420103
420190
|
status: "failed",
|
|
420104
420191
|
content: [
|
|
420105
420192
|
{ type: "content", content: { type: "text", text: error2.message } }
|
|
420106
|
-
]
|
|
420193
|
+
],
|
|
420194
|
+
_meta: { toolName }
|
|
420107
420195
|
});
|
|
420108
420196
|
}
|
|
420109
420197
|
// ==================== Public Utilities ====================
|
|
@@ -421002,7 +421090,11 @@ var Session3 = class {
|
|
|
421002
421090
|
} catch (e4) {
|
|
421003
421091
|
subAgentCleanupFunctions.forEach((cleanup) => cleanup());
|
|
421004
421092
|
const error2 = e4 instanceof Error ? e4 : new Error(String(e4));
|
|
421005
|
-
await this.toolCallEmitter.emitError(
|
|
421093
|
+
await this.toolCallEmitter.emitError(
|
|
421094
|
+
callId,
|
|
421095
|
+
fc.name ?? "unknown_tool",
|
|
421096
|
+
error2
|
|
421097
|
+
);
|
|
421006
421098
|
const errorParts = [
|
|
421007
421099
|
{
|
|
421008
421100
|
functionResponse: {
|
|
@@ -421257,7 +421349,7 @@ ${pathList}
|
|
|
421257
421349
|
if (pathSpecsToRead.length > 0) {
|
|
421258
421350
|
const readResult = await readManyFilesTool.buildAndExecute(
|
|
421259
421351
|
{
|
|
421260
|
-
|
|
421352
|
+
paths: pathSpecsToRead
|
|
421261
421353
|
},
|
|
421262
421354
|
abortSignal
|
|
421263
421355
|
);
|
|
@@ -421430,7 +421522,7 @@ var GeminiAgent = class {
|
|
|
421430
421522
|
name: APPROVAL_MODE_INFO[mode].name,
|
|
421431
421523
|
description: APPROVAL_MODE_INFO[mode].description
|
|
421432
421524
|
}));
|
|
421433
|
-
const version2 = "0.2.2-alpha.
|
|
421525
|
+
const version2 = "0.2.2-alpha.3";
|
|
421434
421526
|
return {
|
|
421435
421527
|
protocolVersion: PROTOCOL_VERSION,
|
|
421436
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.
|
|
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.
|
|
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"
|