@rdmind/rdmind 0.0.24-alpha.1 → 0.0.25
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 +207 -111
- package/package.json +2 -2
package/cli.js
CHANGED
|
@@ -120646,7 +120646,6 @@ var init_qwen_logger = __esm({
|
|
|
120646
120646
|
import_https_proxy_agent = __toESM(require_dist2(), 1);
|
|
120647
120647
|
init_types3();
|
|
120648
120648
|
init_safeJsonStringify();
|
|
120649
|
-
init_retry();
|
|
120650
120649
|
init_installationManager();
|
|
120651
120650
|
init_mnemonist();
|
|
120652
120651
|
init_contentGenerator();
|
|
@@ -120807,55 +120806,44 @@ var init_qwen_logger = __esm({
|
|
|
120807
120806
|
this.events.clear();
|
|
120808
120807
|
const rumPayload = await this.createRumPayload();
|
|
120809
120808
|
rumPayload.events = eventsToSend;
|
|
120810
|
-
const flushFn = /* @__PURE__ */ __name(() => new Promise((resolve26, reject) => {
|
|
120811
|
-
const body = safeJsonStringify(rumPayload);
|
|
120812
|
-
const options2 = {
|
|
120813
|
-
hostname: USAGE_STATS_HOSTNAME,
|
|
120814
|
-
path: USAGE_STATS_PATH,
|
|
120815
|
-
method: "POST",
|
|
120816
|
-
headers: {
|
|
120817
|
-
"Content-Length": Buffer3.byteLength(body),
|
|
120818
|
-
"Content-Type": "text/plain;charset=UTF-8"
|
|
120819
|
-
}
|
|
120820
|
-
};
|
|
120821
|
-
const bufs = [];
|
|
120822
|
-
const req = https.request(
|
|
120823
|
-
{
|
|
120824
|
-
...options2,
|
|
120825
|
-
agent: this.getProxyAgent()
|
|
120826
|
-
},
|
|
120827
|
-
(res) => {
|
|
120828
|
-
if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
|
|
120829
|
-
const err = new Error(
|
|
120830
|
-
`Request failed with status ${res.statusCode}`
|
|
120831
|
-
);
|
|
120832
|
-
err.status = res.statusCode;
|
|
120833
|
-
res.resume();
|
|
120834
|
-
return reject(err);
|
|
120835
|
-
}
|
|
120836
|
-
res.on("data", (buf) => bufs.push(buf));
|
|
120837
|
-
res.on("end", () => resolve26(Buffer3.concat(bufs)));
|
|
120838
|
-
}
|
|
120839
|
-
);
|
|
120840
|
-
req.on("error", reject);
|
|
120841
|
-
req.end(body);
|
|
120842
|
-
}), "flushFn");
|
|
120843
120809
|
try {
|
|
120844
|
-
await
|
|
120845
|
-
|
|
120846
|
-
|
|
120847
|
-
|
|
120848
|
-
|
|
120849
|
-
|
|
120850
|
-
|
|
120851
|
-
|
|
120852
|
-
|
|
120810
|
+
await new Promise((resolve26, reject) => {
|
|
120811
|
+
const body = safeJsonStringify(rumPayload);
|
|
120812
|
+
const options2 = {
|
|
120813
|
+
hostname: USAGE_STATS_HOSTNAME,
|
|
120814
|
+
path: USAGE_STATS_PATH,
|
|
120815
|
+
method: "POST",
|
|
120816
|
+
headers: {
|
|
120817
|
+
"Content-Length": Buffer3.byteLength(body),
|
|
120818
|
+
"Content-Type": "text/plain;charset=UTF-8"
|
|
120819
|
+
}
|
|
120820
|
+
};
|
|
120821
|
+
const bufs = [];
|
|
120822
|
+
const req = https.request(
|
|
120823
|
+
{
|
|
120824
|
+
...options2,
|
|
120825
|
+
agent: this.getProxyAgent()
|
|
120826
|
+
},
|
|
120827
|
+
(res) => {
|
|
120828
|
+
if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
|
|
120829
|
+
const err = new Error(
|
|
120830
|
+
`Request failed with status ${res.statusCode}`
|
|
120831
|
+
);
|
|
120832
|
+
res.resume();
|
|
120833
|
+
return reject(err);
|
|
120834
|
+
}
|
|
120835
|
+
res.on("data", (buf) => bufs.push(buf));
|
|
120836
|
+
res.on("end", () => resolve26(Buffer3.concat(bufs)));
|
|
120837
|
+
}
|
|
120838
|
+
);
|
|
120839
|
+
req.on("error", reject);
|
|
120840
|
+
req.end(body);
|
|
120853
120841
|
});
|
|
120854
120842
|
this.lastFlushTime = Date.now();
|
|
120855
120843
|
return {};
|
|
120856
120844
|
} catch (error) {
|
|
120857
120845
|
if (this.config?.getDebugMode()) {
|
|
120858
|
-
console.error("RUM flush failed
|
|
120846
|
+
console.error("RUM flush failed.", error);
|
|
120859
120847
|
}
|
|
120860
120848
|
this.requeueFailedEvents(eventsToSend);
|
|
120861
120849
|
return {};
|
|
@@ -183764,7 +183752,7 @@ function createContentGeneratorConfig(config, authType, generationConfig) {
|
|
|
183764
183752
|
};
|
|
183765
183753
|
}
|
|
183766
183754
|
async function createContentGenerator(config, gcConfig, sessionId2) {
|
|
183767
|
-
const version2 = "0.0.
|
|
183755
|
+
const version2 = "0.0.25";
|
|
183768
183756
|
const userAgent2 = `QwenCode/${version2} (${process.platform}; ${process.arch})`;
|
|
183769
183757
|
const baseHeaders = {
|
|
183770
183758
|
"User-Agent": userAgent2
|
|
@@ -185508,7 +185496,79 @@ var init_modifiable_tool = __esm({
|
|
|
185508
185496
|
}
|
|
185509
185497
|
});
|
|
185510
185498
|
|
|
185499
|
+
// packages/core/src/tools/tool-names.ts
|
|
185500
|
+
var ToolNames, ToolDisplayNames, ToolNamesMigration, ToolDisplayNamesMigration;
|
|
185501
|
+
var init_tool_names = __esm({
|
|
185502
|
+
"packages/core/src/tools/tool-names.ts"() {
|
|
185503
|
+
"use strict";
|
|
185504
|
+
init_esbuild_shims();
|
|
185505
|
+
ToolNames = {
|
|
185506
|
+
EDIT: "edit",
|
|
185507
|
+
WRITE_FILE: "write_file",
|
|
185508
|
+
READ_FILE: "read_file",
|
|
185509
|
+
READ_MANY_FILES: "read_many_files",
|
|
185510
|
+
GREP: "grep_search",
|
|
185511
|
+
GLOB: "glob",
|
|
185512
|
+
SHELL: "run_shell_command",
|
|
185513
|
+
TODO_WRITE: "todo_write",
|
|
185514
|
+
MEMORY: "save_memory",
|
|
185515
|
+
TASK: "task",
|
|
185516
|
+
EXIT_PLAN_MODE: "exit_plan_mode",
|
|
185517
|
+
WEB_FETCH: "web_fetch",
|
|
185518
|
+
WEB_SEARCH: "web_search",
|
|
185519
|
+
LS: "list_directory"
|
|
185520
|
+
};
|
|
185521
|
+
ToolDisplayNames = {
|
|
185522
|
+
EDIT: "Edit",
|
|
185523
|
+
WRITE_FILE: "WriteFile",
|
|
185524
|
+
READ_FILE: "ReadFile",
|
|
185525
|
+
READ_MANY_FILES: "ReadManyFiles",
|
|
185526
|
+
GREP: "Grep",
|
|
185527
|
+
GLOB: "Glob",
|
|
185528
|
+
SHELL: "Shell",
|
|
185529
|
+
TODO_WRITE: "TodoWrite",
|
|
185530
|
+
MEMORY: "SaveMemory",
|
|
185531
|
+
TASK: "Task",
|
|
185532
|
+
EXIT_PLAN_MODE: "ExitPlanMode",
|
|
185533
|
+
WEB_FETCH: "WebFetch",
|
|
185534
|
+
WEB_SEARCH: "WebSearch",
|
|
185535
|
+
LS: "ListFiles"
|
|
185536
|
+
};
|
|
185537
|
+
ToolNamesMigration = {
|
|
185538
|
+
search_file_content: ToolNames.GREP,
|
|
185539
|
+
// Legacy name from grep tool
|
|
185540
|
+
replace: ToolNames.EDIT
|
|
185541
|
+
// Legacy name from edit tool
|
|
185542
|
+
};
|
|
185543
|
+
ToolDisplayNamesMigration = {
|
|
185544
|
+
SearchFiles: ToolDisplayNames.GREP,
|
|
185545
|
+
// Old display name for Grep
|
|
185546
|
+
FindFiles: ToolDisplayNames.GLOB,
|
|
185547
|
+
// Old display name for Glob
|
|
185548
|
+
ReadFolder: ToolDisplayNames.LS
|
|
185549
|
+
// Old display name for ListFiles
|
|
185550
|
+
};
|
|
185551
|
+
}
|
|
185552
|
+
});
|
|
185553
|
+
|
|
185511
185554
|
// packages/core/src/utils/tool-utils.ts
|
|
185555
|
+
function isToolEnabled(toolName, coreTools, excludeTools) {
|
|
185556
|
+
const aliasSet = getAliasSetForTool(toolName);
|
|
185557
|
+
const matchesIdentifier = /* @__PURE__ */ __name((value) => aliasSet.has(sanitizeExactIdentifier(value)), "matchesIdentifier");
|
|
185558
|
+
const matchesIdentifierWithArgs = /* @__PURE__ */ __name((value) => aliasSet.has(sanitizePatternIdentifier(value)), "matchesIdentifierWithArgs");
|
|
185559
|
+
const filteredCore = filterList(coreTools);
|
|
185560
|
+
const filteredExclude = filterList(excludeTools);
|
|
185561
|
+
if (filteredCore.length === 0) {
|
|
185562
|
+
return !filteredExclude.some((entry) => matchesIdentifier(entry));
|
|
185563
|
+
}
|
|
185564
|
+
const isExplicitlyEnabled = filteredCore.some(
|
|
185565
|
+
(entry) => matchesIdentifier(entry) || matchesIdentifierWithArgs(entry)
|
|
185566
|
+
);
|
|
185567
|
+
if (!isExplicitlyEnabled) {
|
|
185568
|
+
return false;
|
|
185569
|
+
}
|
|
185570
|
+
return !filteredExclude.some((entry) => matchesIdentifier(entry));
|
|
185571
|
+
}
|
|
185512
185572
|
function doesToolInvocationMatch(toolOrToolName, invocation, patterns) {
|
|
185513
185573
|
let toolNames;
|
|
185514
185574
|
if (isTool(toolOrToolName)) {
|
|
@@ -185546,12 +185606,65 @@ function doesToolInvocationMatch(toolOrToolName, invocation, patterns) {
|
|
|
185546
185606
|
}
|
|
185547
185607
|
return false;
|
|
185548
185608
|
}
|
|
185549
|
-
var SHELL_TOOL_NAMES;
|
|
185609
|
+
var normalizeIdentifier, toolNameKeys, TOOL_ALIAS_MAP, getAliasSetForTool, sanitizeExactIdentifier, sanitizePatternIdentifier, filterList, SHELL_TOOL_NAMES;
|
|
185550
185610
|
var init_tool_utils = __esm({
|
|
185551
185611
|
"packages/core/src/utils/tool-utils.ts"() {
|
|
185552
185612
|
"use strict";
|
|
185553
185613
|
init_esbuild_shims();
|
|
185554
185614
|
init_src();
|
|
185615
|
+
init_tool_names();
|
|
185616
|
+
normalizeIdentifier = /* @__PURE__ */ __name((identifier2) => identifier2.trim().replace(/^_+/, ""), "normalizeIdentifier");
|
|
185617
|
+
toolNameKeys = Object.keys(ToolNames);
|
|
185618
|
+
TOOL_ALIAS_MAP = (() => {
|
|
185619
|
+
const map2 = /* @__PURE__ */ new Map();
|
|
185620
|
+
const addAlias = /* @__PURE__ */ __name((set, alias) => {
|
|
185621
|
+
if (!alias) {
|
|
185622
|
+
return;
|
|
185623
|
+
}
|
|
185624
|
+
set.add(normalizeIdentifier(alias));
|
|
185625
|
+
}, "addAlias");
|
|
185626
|
+
for (const key of toolNameKeys) {
|
|
185627
|
+
const canonicalName = ToolNames[key];
|
|
185628
|
+
const displayName = ToolDisplayNames[key];
|
|
185629
|
+
const aliases = /* @__PURE__ */ new Set();
|
|
185630
|
+
addAlias(aliases, canonicalName);
|
|
185631
|
+
addAlias(aliases, displayName);
|
|
185632
|
+
addAlias(aliases, `${displayName}Tool`);
|
|
185633
|
+
for (const [legacyName, mappedName] of Object.entries(ToolNamesMigration)) {
|
|
185634
|
+
if (mappedName === canonicalName) {
|
|
185635
|
+
addAlias(aliases, legacyName);
|
|
185636
|
+
}
|
|
185637
|
+
}
|
|
185638
|
+
for (const [legacyDisplay, mappedDisplay] of Object.entries(
|
|
185639
|
+
ToolDisplayNamesMigration
|
|
185640
|
+
)) {
|
|
185641
|
+
if (mappedDisplay === displayName) {
|
|
185642
|
+
addAlias(aliases, legacyDisplay);
|
|
185643
|
+
}
|
|
185644
|
+
}
|
|
185645
|
+
map2.set(canonicalName, aliases);
|
|
185646
|
+
}
|
|
185647
|
+
return map2;
|
|
185648
|
+
})();
|
|
185649
|
+
getAliasSetForTool = /* @__PURE__ */ __name((toolName) => {
|
|
185650
|
+
const aliases = TOOL_ALIAS_MAP.get(toolName);
|
|
185651
|
+
if (!aliases) {
|
|
185652
|
+
return /* @__PURE__ */ new Set([normalizeIdentifier(toolName)]);
|
|
185653
|
+
}
|
|
185654
|
+
return aliases;
|
|
185655
|
+
}, "getAliasSetForTool");
|
|
185656
|
+
sanitizeExactIdentifier = /* @__PURE__ */ __name((value) => normalizeIdentifier(value), "sanitizeExactIdentifier");
|
|
185657
|
+
sanitizePatternIdentifier = /* @__PURE__ */ __name((value) => {
|
|
185658
|
+
const openParenIndex = value.indexOf("(");
|
|
185659
|
+
if (openParenIndex === -1) {
|
|
185660
|
+
return normalizeIdentifier(value);
|
|
185661
|
+
}
|
|
185662
|
+
return normalizeIdentifier(value.slice(0, openParenIndex));
|
|
185663
|
+
}, "sanitizePatternIdentifier");
|
|
185664
|
+
filterList = /* @__PURE__ */ __name((list3) => (list3 ?? []).filter(
|
|
185665
|
+
(entry) => Boolean(entry && entry.trim())
|
|
185666
|
+
), "filterList");
|
|
185667
|
+
__name(isToolEnabled, "isToolEnabled");
|
|
185555
185668
|
SHELL_TOOL_NAMES = ["run_shell_command", "ShellTool"];
|
|
185556
185669
|
__name(doesToolInvocationMatch, "doesToolInvocationMatch");
|
|
185557
185670
|
}
|
|
@@ -185649,30 +185762,6 @@ var require_levenshtein = __commonJS({
|
|
|
185649
185762
|
}
|
|
185650
185763
|
});
|
|
185651
185764
|
|
|
185652
|
-
// packages/core/src/tools/tool-names.ts
|
|
185653
|
-
var ToolNames;
|
|
185654
|
-
var init_tool_names = __esm({
|
|
185655
|
-
"packages/core/src/tools/tool-names.ts"() {
|
|
185656
|
-
"use strict";
|
|
185657
|
-
init_esbuild_shims();
|
|
185658
|
-
ToolNames = {
|
|
185659
|
-
EDIT: "edit",
|
|
185660
|
-
WRITE_FILE: "write_file",
|
|
185661
|
-
READ_FILE: "read_file",
|
|
185662
|
-
READ_MANY_FILES: "read_many_files",
|
|
185663
|
-
GREP: "grep_search",
|
|
185664
|
-
GLOB: "glob",
|
|
185665
|
-
SHELL: "run_shell_command",
|
|
185666
|
-
TODO_WRITE: "todo_write",
|
|
185667
|
-
MEMORY: "save_memory",
|
|
185668
|
-
TASK: "task",
|
|
185669
|
-
EXIT_PLAN_MODE: "exit_plan_mode",
|
|
185670
|
-
WEB_FETCH: "web_fetch",
|
|
185671
|
-
WEB_SEARCH: "web_search"
|
|
185672
|
-
};
|
|
185673
|
-
}
|
|
185674
|
-
});
|
|
185675
|
-
|
|
185676
185765
|
// packages/core/src/utils/gitUtils.ts
|
|
185677
185766
|
import * as fs18 from "node:fs";
|
|
185678
185767
|
import * as path14 from "node:path";
|
|
@@ -185945,6 +186034,7 @@ var init_memoryTool = __esm({
|
|
|
185945
186034
|
init_lib();
|
|
185946
186035
|
init_diffOptions();
|
|
185947
186036
|
init_paths();
|
|
186037
|
+
init_tool_names();
|
|
185948
186038
|
init_tool_error();
|
|
185949
186039
|
memoryToolSchemaData = {
|
|
185950
186040
|
name: "save_memory",
|
|
@@ -186165,11 +186255,11 @@ Project: ${projectPath} (current project only)`;
|
|
|
186165
186255
|
static {
|
|
186166
186256
|
__name(this, "MemoryTool");
|
|
186167
186257
|
}
|
|
186168
|
-
static Name =
|
|
186258
|
+
static Name = ToolNames.MEMORY;
|
|
186169
186259
|
constructor() {
|
|
186170
186260
|
super(
|
|
186171
186261
|
_MemoryTool.Name,
|
|
186172
|
-
|
|
186262
|
+
ToolDisplayNames.MEMORY,
|
|
186173
186263
|
memoryToolDescription,
|
|
186174
186264
|
"think" /* Think */,
|
|
186175
186265
|
memoryToolSchemaData.parametersJsonSchema
|
|
@@ -198481,7 +198571,7 @@ Co-authored-by: ${gitCoAuthorSettings.name} <${gitCoAuthorSettings.email}>`;
|
|
|
198481
198571
|
constructor(config) {
|
|
198482
198572
|
super(
|
|
198483
198573
|
_ShellTool.Name,
|
|
198484
|
-
|
|
198574
|
+
ToolDisplayNames.SHELL,
|
|
198485
198575
|
getShellToolDescription(),
|
|
198486
198576
|
"execute" /* Execute */,
|
|
198487
198577
|
{
|
|
@@ -202092,7 +202182,7 @@ var init_task = __esm({
|
|
|
202092
202182
|
};
|
|
202093
202183
|
super(
|
|
202094
202184
|
_TaskTool.Name,
|
|
202095
|
-
|
|
202185
|
+
ToolDisplayNames.TASK,
|
|
202096
202186
|
"Delegate tasks to specialized subagents. Loading available subagents...",
|
|
202097
202187
|
// Initial description
|
|
202098
202188
|
"other" /* Other */,
|
|
@@ -221280,7 +221370,7 @@ ${result.llmContent}`;
|
|
|
221280
221370
|
constructor(config) {
|
|
221281
221371
|
super(
|
|
221282
221372
|
_ReadFileTool.Name,
|
|
221283
|
-
|
|
221373
|
+
ToolDisplayNames.READ_FILE,
|
|
221284
221374
|
`Reads and returns the content of a specified file. If the file is large, the content will be truncated. The tool's response will clearly indicate if truncation has occurred and will provide details on how to read more of the file using the 'offset' and 'limit' parameters. Handles text, images (PNG, JPG, GIF, WEBP, SVG, BMP), and PDF files. For text files, it can read specific line ranges.`,
|
|
221285
221375
|
"read" /* Read */,
|
|
221286
221376
|
{
|
|
@@ -232324,7 +232414,7 @@ var init_edit = __esm({
|
|
|
232324
232414
|
constructor(config) {
|
|
232325
232415
|
super(
|
|
232326
232416
|
_EditTool.Name,
|
|
232327
|
-
|
|
232417
|
+
ToolDisplayNames.EDIT,
|
|
232328
232418
|
`Replaces text within a file. By default, replaces a single occurrence, but can replace multiple occurrences when \`expected_replacements\` is specified. This tool requires providing significant context around the change to ensure precise targeting. Always use the ${ReadFileTool.Name} tool to examine the file's current content before attempting a text replacement.
|
|
232329
232419
|
|
|
232330
232420
|
The user has the ability to modify the \`new_string\` content. If modified, this will be stated in the response.
|
|
@@ -232435,6 +232525,7 @@ var init_exitPlanMode = __esm({
|
|
|
232435
232525
|
init_esbuild_shims();
|
|
232436
232526
|
init_tools();
|
|
232437
232527
|
init_config3();
|
|
232528
|
+
init_tool_names();
|
|
232438
232529
|
exitPlanModeToolDescription = `Use this tool when you are in plan mode and have finished presenting your plan and are ready to code. This will prompt the user to exit plan mode.
|
|
232439
232530
|
IMPORTANT: Only use this tool when the task requires planning the implementation steps of a task that requires writing code. For research tasks where you're gathering information, searching files, reading files or in general trying to understand the codebase - do NOT use this tool.
|
|
232440
232531
|
|
|
@@ -232545,7 +232636,7 @@ Eg.
|
|
|
232545
232636
|
constructor(config) {
|
|
232546
232637
|
super(
|
|
232547
232638
|
_ExitPlanModeTool.Name,
|
|
232548
|
-
|
|
232639
|
+
ToolDisplayNames.EXIT_PLAN_MODE,
|
|
232549
232640
|
exitPlanModeToolDescription,
|
|
232550
232641
|
"think" /* Think */,
|
|
232551
232642
|
exitPlanModeToolSchemaData.parametersJsonSchema
|
|
@@ -232555,7 +232646,7 @@ Eg.
|
|
|
232555
232646
|
static {
|
|
232556
232647
|
__name(this, "ExitPlanModeTool");
|
|
232557
232648
|
}
|
|
232558
|
-
static Name =
|
|
232649
|
+
static Name = ToolNames.EXIT_PLAN_MODE;
|
|
232559
232650
|
validateToolParams(params) {
|
|
232560
232651
|
if (!params.plan || typeof params.plan !== "string" || params.plan.trim() === "") {
|
|
232561
232652
|
return 'Parameter "plan" must be a non-empty string.';
|
|
@@ -232723,7 +232814,7 @@ ${fileListDescription}`;
|
|
|
232723
232814
|
constructor(config) {
|
|
232724
232815
|
super(
|
|
232725
232816
|
_GlobTool.Name,
|
|
232726
|
-
|
|
232817
|
+
ToolDisplayNames.GLOB,
|
|
232727
232818
|
'Fast file pattern matching tool that works with any codebase size\n- Supports glob patterns like "**/*.js" or "src/**/*.ts"\n- Returns matching file paths sorted by modification time\n- Use this tool when you need to find files by name patterns\n- When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead\n- You have the capability to call multiple tools in a single response. It is always better to speculatively perform multiple searches as a batch that are potentially useful.',
|
|
232728
232819
|
"search" /* Search */,
|
|
232729
232820
|
{
|
|
@@ -233158,7 +233249,7 @@ var init_grep2 = __esm({
|
|
|
233158
233249
|
constructor(config) {
|
|
233159
233250
|
super(
|
|
233160
233251
|
_GrepTool.Name,
|
|
233161
|
-
|
|
233252
|
+
ToolDisplayNames.GREP,
|
|
233162
233253
|
'A powerful search tool for finding patterns in files\n\n Usage:\n - ALWAYS use Grep for search tasks. NEVER invoke `grep` or `rg` as a Bash command. The Grep tool has been optimized for correct permissions and access.\n - Supports full regex syntax (e.g., "log.*Error", "function\\s+\\w+")\n - Filter files with glob parameter (e.g., "*.js", "**/*.tsx")\n - Case-insensitive by default\n - Use Task tool for open-ended searches requiring multiple rounds\n',
|
|
233163
233254
|
"search" /* Search */,
|
|
233164
233255
|
{
|
|
@@ -233229,6 +233320,7 @@ var init_ls = __esm({
|
|
|
233229
233320
|
init_paths();
|
|
233230
233321
|
init_constants3();
|
|
233231
233322
|
init_tool_error();
|
|
233323
|
+
init_tool_names();
|
|
233232
233324
|
LSToolInvocation = class extends BaseToolInvocation {
|
|
233233
233325
|
constructor(config, params) {
|
|
233234
233326
|
super(params);
|
|
@@ -233380,7 +233472,7 @@ ${directoryContent}`;
|
|
|
233380
233472
|
constructor(config) {
|
|
233381
233473
|
super(
|
|
233382
233474
|
_LSTool.Name,
|
|
233383
|
-
|
|
233475
|
+
ToolDisplayNames.LS,
|
|
233384
233476
|
"Lists the names of files and subdirectories directly within a specified directory path. Can optionally ignore entries matching provided glob patterns.",
|
|
233385
233477
|
"search" /* Search */,
|
|
233386
233478
|
{
|
|
@@ -233420,7 +233512,7 @@ ${directoryContent}`;
|
|
|
233420
233512
|
static {
|
|
233421
233513
|
__name(this, "LSTool");
|
|
233422
233514
|
}
|
|
233423
|
-
static Name =
|
|
233515
|
+
static Name = ToolNames.LS;
|
|
233424
233516
|
/**
|
|
233425
233517
|
* Validates the parameters for the tool
|
|
233426
233518
|
* @param params Parameters to validate
|
|
@@ -233838,7 +233930,7 @@ ${fileContentForLlm}
|
|
|
233838
233930
|
};
|
|
233839
233931
|
super(
|
|
233840
233932
|
_ReadManyFilesTool.Name,
|
|
233841
|
-
|
|
233933
|
+
ToolDisplayNames.READ_MANY_FILES,
|
|
233842
233934
|
`Reads content from multiple files specified by paths or glob patterns within a configured target directory. For text files, it concatenates their content into a single string. It is primarily designed for text-based files. However, it can also process image (e.g., .png, .jpg) and PDF (.pdf) files if their file names or extensions are explicitly included in the 'paths' argument. For these explicitly requested non-text files, their data is read and included in a format suitable for model consumption (e.g., base64 encoded).
|
|
233843
233935
|
|
|
233844
233936
|
This tool is useful when you need to understand or analyze a collection of files, such as:
|
|
@@ -234079,12 +234171,12 @@ var init_ripGrep = __esm({
|
|
|
234079
234171
|
rgArgs.push("--no-ignore-vcs");
|
|
234080
234172
|
}
|
|
234081
234173
|
if (filteringOptions.respectQwenIgnore) {
|
|
234082
|
-
const
|
|
234174
|
+
const rdmindIgnorePath = path40.join(
|
|
234083
234175
|
this.config.getTargetDir(),
|
|
234084
|
-
".
|
|
234176
|
+
".rdmindignore"
|
|
234085
234177
|
);
|
|
234086
|
-
if (fs36.existsSync(
|
|
234087
|
-
rgArgs.push("--ignore-file",
|
|
234178
|
+
if (fs36.existsSync(rdmindIgnorePath)) {
|
|
234179
|
+
rgArgs.push("--ignore-file", rdmindIgnorePath);
|
|
234088
234180
|
}
|
|
234089
234181
|
}
|
|
234090
234182
|
if (glob2) {
|
|
@@ -235152,6 +235244,7 @@ var init_todoWrite = __esm({
|
|
|
235152
235244
|
init_esbuild_shims();
|
|
235153
235245
|
init_tools();
|
|
235154
235246
|
init_paths();
|
|
235247
|
+
init_tool_names();
|
|
235155
235248
|
todoWriteToolSchemaData = {
|
|
235156
235249
|
name: "todo_write",
|
|
235157
235250
|
description: "Creates and manages a structured task list for your current coding session. This helps track progress, organize complex tasks, and demonstrate thoroughness.",
|
|
@@ -235464,7 +235557,7 @@ Todo list modification failed with error: ${errorMessage}. You may need to retry
|
|
|
235464
235557
|
static {
|
|
235465
235558
|
__name(this, "TodoWriteTool");
|
|
235466
235559
|
}
|
|
235467
|
-
static Name =
|
|
235560
|
+
static Name = ToolNames.TODO_WRITE;
|
|
235468
235561
|
getDisplayName(params) {
|
|
235469
235562
|
return params?.title || "\u6D41\u7A0BTodo";
|
|
235470
235563
|
}
|
|
@@ -244781,7 +244874,7 @@ ${textContent2}
|
|
|
244781
244874
|
constructor(config) {
|
|
244782
244875
|
super(
|
|
244783
244876
|
_WebFetchTool.Name,
|
|
244784
|
-
|
|
244877
|
+
ToolDisplayNames.WEB_FETCH,
|
|
244785
244878
|
`Fetches content from a specified URL and processes it using an AI model
|
|
244786
244879
|
- Takes a URL and a prompt as input
|
|
244787
244880
|
- Fetches the URL content, converts HTML to markdown
|
|
@@ -245547,7 +245640,7 @@ ${content}`,
|
|
|
245547
245640
|
constructor(config) {
|
|
245548
245641
|
super(
|
|
245549
245642
|
_WebSearchTool.Name,
|
|
245550
|
-
|
|
245643
|
+
ToolDisplayNames.WEB_SEARCH,
|
|
245551
245644
|
"Allows searching the web and using results to inform responses. Provides up-to-date information for current events and recent data beyond the training data cutoff. Returns search results formatted with concise answers and source links. Use this tool when accessing information that may be outdated or beyond the knowledge cutoff.",
|
|
245552
245645
|
"search" /* Search */,
|
|
245553
245646
|
{
|
|
@@ -245829,7 +245922,7 @@ var init_write_file = __esm({
|
|
|
245829
245922
|
constructor(config) {
|
|
245830
245923
|
super(
|
|
245831
245924
|
_WriteFileTool.Name,
|
|
245832
|
-
|
|
245925
|
+
ToolDisplayNames.WRITE_FILE,
|
|
245833
245926
|
`Writes content to a specified file in the local filesystem.
|
|
245834
245927
|
|
|
245835
245928
|
The user has the ability to modify \`content\`. If modified, this will be stated in the response.`,
|
|
@@ -246560,6 +246653,7 @@ var init_subagent_manager = __esm({
|
|
|
246560
246653
|
init_validation();
|
|
246561
246654
|
init_subagent();
|
|
246562
246655
|
init_builtin_agents();
|
|
246656
|
+
init_tool_names();
|
|
246563
246657
|
QWEN_CONFIG_DIR2 = ".rdmind";
|
|
246564
246658
|
AGENT_CONFIG_DIR = "agents";
|
|
246565
246659
|
SubagentManager = class {
|
|
@@ -247002,7 +247096,7 @@ ${config.systemPrompt}
|
|
|
247002
247096
|
continue;
|
|
247003
247097
|
}
|
|
247004
247098
|
const displayNameMatch = allTools.find(
|
|
247005
|
-
(tool) => tool.displayName === toolIdentifier
|
|
247099
|
+
(tool) => tool.displayName === toolIdentifier || tool.displayName === ToolDisplayNamesMigration[toolIdentifier]
|
|
247006
247100
|
);
|
|
247007
247101
|
if (displayNameMatch) {
|
|
247008
247102
|
result.push(displayNameMatch.name);
|
|
@@ -247388,6 +247482,7 @@ var init_config3 = __esm({
|
|
|
247388
247482
|
init_browser();
|
|
247389
247483
|
init_ignorePatterns();
|
|
247390
247484
|
init_workspaceContext();
|
|
247485
|
+
init_tool_utils();
|
|
247391
247486
|
init_constants3();
|
|
247392
247487
|
init_models();
|
|
247393
247488
|
init_storage();
|
|
@@ -248046,26 +248141,27 @@ var init_config3 = __esm({
|
|
|
248046
248141
|
}
|
|
248047
248142
|
async createToolRegistry() {
|
|
248048
248143
|
const registry = new ToolRegistry(this, this.eventEmitter);
|
|
248144
|
+
const coreToolsConfig = this.getCoreTools();
|
|
248145
|
+
const excludeToolsConfig = this.getExcludeTools();
|
|
248049
248146
|
const registerCoreTool = /* @__PURE__ */ __name((ToolClass, ...args) => {
|
|
248050
|
-
const
|
|
248051
|
-
const
|
|
248052
|
-
|
|
248053
|
-
|
|
248054
|
-
|
|
248055
|
-
let isEnabled2 = true;
|
|
248056
|
-
if (coreTools) {
|
|
248057
|
-
isEnabled2 = coreTools.some(
|
|
248058
|
-
(tool) => tool === toolName || tool === normalizedClassName || tool.startsWith(`${toolName}(`) || tool.startsWith(`${normalizedClassName}(`)
|
|
248147
|
+
const toolName = ToolClass?.Name;
|
|
248148
|
+
const className = ToolClass?.name ?? "UnknownTool";
|
|
248149
|
+
if (!toolName) {
|
|
248150
|
+
console.warn(
|
|
248151
|
+
`[Config] Skipping tool registration: ${className} is missing static Name property. Tools must define a static Name property to be registered. Location: config.ts:registerCoreTool`
|
|
248059
248152
|
);
|
|
248153
|
+
return;
|
|
248060
248154
|
}
|
|
248061
|
-
|
|
248062
|
-
|
|
248063
|
-
|
|
248064
|
-
|
|
248065
|
-
|
|
248066
|
-
|
|
248067
|
-
|
|
248068
|
-
|
|
248155
|
+
if (isToolEnabled(toolName, coreToolsConfig, excludeToolsConfig)) {
|
|
248156
|
+
try {
|
|
248157
|
+
registry.registerTool(new ToolClass(...args));
|
|
248158
|
+
} catch (error) {
|
|
248159
|
+
console.error(
|
|
248160
|
+
`[Config] Failed to register tool ${className} (${toolName}):`,
|
|
248161
|
+
error
|
|
248162
|
+
);
|
|
248163
|
+
throw error;
|
|
248164
|
+
}
|
|
248069
248165
|
}
|
|
248070
248166
|
}, "registerCoreTool");
|
|
248071
248167
|
registerCoreTool(TaskTool, this);
|
|
@@ -342366,7 +342462,7 @@ __name(getPackageJson, "getPackageJson");
|
|
|
342366
342462
|
// packages/cli/src/utils/version.ts
|
|
342367
342463
|
async function getCliVersion() {
|
|
342368
342464
|
const pkgJson = await getPackageJson();
|
|
342369
|
-
return "0.0.
|
|
342465
|
+
return "0.0.25";
|
|
342370
342466
|
}
|
|
342371
342467
|
__name(getCliVersion, "getCliVersion");
|
|
342372
342468
|
|
|
@@ -344367,7 +344463,7 @@ init_core2();
|
|
|
344367
344463
|
|
|
344368
344464
|
// packages/cli/src/generated/git-commit.ts
|
|
344369
344465
|
init_esbuild_shims();
|
|
344370
|
-
var GIT_COMMIT_INFO2 = "
|
|
344466
|
+
var GIT_COMMIT_INFO2 = "efd3db26";
|
|
344371
344467
|
|
|
344372
344468
|
// packages/cli/src/utils/systemInfo.ts
|
|
344373
344469
|
async function getNpmVersion() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rdmind/rdmind",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "RDMind - AI-powered coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "cli.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"LICENSE"
|
|
20
20
|
],
|
|
21
21
|
"config": {
|
|
22
|
-
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.0.
|
|
22
|
+
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.0.25"
|
|
23
23
|
},
|
|
24
24
|
"publishConfig": {
|
|
25
25
|
"access": "public"
|