tianxincode 1.0.9 → 1.0.10
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/dist/api/filesystem.routes.js +18 -9
- package/dist/api/filesystem.routes.js.map +1 -1
- package/dist/modules/tools/provider/bash.txt +47 -0
- package/dist/modules/tools/provider/code_search.txt +20 -0
- package/dist/modules/tools/provider/edit_file.txt +13 -0
- package/dist/modules/tools/provider/glob.txt +12 -0
- package/dist/modules/tools/provider/grep.txt +14 -0
- package/dist/modules/tools/provider/lsp.txt +19 -0
- package/dist/modules/tools/provider/memory.txt +40 -0
- package/dist/modules/tools/provider/read_file.txt +17 -0
- package/dist/modules/tools/provider/todo_read.txt +16 -0
- package/dist/modules/tools/provider/todo_write.txt +48 -0
- package/dist/modules/tools/provider/web_fetch.txt +17 -0
- package/dist/modules/tools/provider/web_search.txt +18 -0
- package/dist/modules/tools/provider/write_file.txt +11 -0
- package/package.json +2 -2
|
@@ -103,9 +103,12 @@ filesystemRouter.get('/browse', (req, res) => {
|
|
|
103
103
|
return res.status(500).json({ success: false, error: 'Failed to read directory' });
|
|
104
104
|
}
|
|
105
105
|
return res.json({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
success: true,
|
|
107
|
+
data: {
|
|
108
|
+
current_path: dirPath,
|
|
109
|
+
parent_path: parentPath,
|
|
110
|
+
items,
|
|
111
|
+
}
|
|
109
112
|
});
|
|
110
113
|
}
|
|
111
114
|
});
|
|
@@ -117,16 +120,22 @@ filesystemRouter.get('/drives', (req, res) => {
|
|
|
117
120
|
const isWindows = os.platform() === 'win32';
|
|
118
121
|
if (!isWindows) {
|
|
119
122
|
return res.json({
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
success: true,
|
|
124
|
+
data: {
|
|
125
|
+
current_path: '/',
|
|
126
|
+
parent_path: null,
|
|
127
|
+
items: [{ name: '/', path: '/', is_directory: true, is_drive: false }],
|
|
128
|
+
}
|
|
123
129
|
});
|
|
124
130
|
}
|
|
125
131
|
const drives = getWindowsDrives();
|
|
126
132
|
return res.json({
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
133
|
+
success: true,
|
|
134
|
+
data: {
|
|
135
|
+
current_path: '',
|
|
136
|
+
parent_path: null,
|
|
137
|
+
items: drives,
|
|
138
|
+
}
|
|
130
139
|
});
|
|
131
140
|
});
|
|
132
141
|
function getWindowsDrives() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.routes.js","sourceRoot":"","sources":["../../src/api/filesystem.routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"filesystem.routes.js","sourceRoot":"","sources":["../../src/api/filesystem.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
### 工具bash
|
|
2
|
+
在持久化 shell 会话中执行 bash 命令,支持可选超时,确保正确的处理和安全措施。
|
|
3
|
+
|
|
4
|
+
所有命令默认在 ${directory} 执行。如需在其他目录运行命令,使用 `workdir` 参数。**禁止使用 `cd <目录> && <命令>` 模式**,应该使用 `workdir` 参数代替。
|
|
5
|
+
|
|
6
|
+
**重要**:此工具仅用于终端操作如 git、npm、docker 等。**禁止**用于文件操作(读取、写入、编辑、搜索文件)——请使用专用工具。
|
|
7
|
+
|
|
8
|
+
## 执行前验证
|
|
9
|
+
|
|
10
|
+
1. **目录验证**:
|
|
11
|
+
- 如果命令会创建新目录或文件,先用 `ls` 验证父目录存在
|
|
12
|
+
- 例如:运行 "mkdir foo/bar" 前,先用 `ls foo` 确认 "foo" 存在
|
|
13
|
+
|
|
14
|
+
2. **命令执行**:
|
|
15
|
+
- 包含空格的路径必须用双引号包裹
|
|
16
|
+
- 正确示例:`mkdir "/Users/name/My Documents"`
|
|
17
|
+
- 错误示例:`mkdir /Users/name/My Documents`(会失败)
|
|
18
|
+
- 确保正确引用后执行命令
|
|
19
|
+
|
|
20
|
+
## 使用说明
|
|
21
|
+
|
|
22
|
+
- `command` 参数是必需的
|
|
23
|
+
- 可选超时时间(毫秒),默认 120000ms(2分钟)
|
|
24
|
+
- 请用 5-10 个字写清楚命令作用的描述
|
|
25
|
+
- 如果输出超过 2000 行或 51200 字节,会被截断并保存到文件
|
|
26
|
+
- 可以用 Read 的 offset/limit 读取特定部分,或用 grep 搜索全部内容
|
|
27
|
+
- **禁止**使用 `head`、`tail` 等命令限制输出
|
|
28
|
+
|
|
29
|
+
**禁止使用 bash 执行以下操作**,请使用专用工具:
|
|
30
|
+
- 文件搜索:用 glob(不用 find 或 ls)
|
|
31
|
+
- 内容搜索:用 grep(不用 grep 或 rg)
|
|
32
|
+
- 读取文件:用 read_file(不用 cat/head/tail)
|
|
33
|
+
- 编辑文件:用 edit_file(不用 sed/awk)
|
|
34
|
+
- 写入文件:用 write_file(不用 echo >/cat <<EOF)
|
|
35
|
+
- 输出文本:直接输出(不用 echo/printf)
|
|
36
|
+
|
|
37
|
+
**多命令执行**:
|
|
38
|
+
- 独立命令可以并行执行多个 Bash 调用
|
|
39
|
+
- 顺序依赖的命令用 `&&` 链接(如 `git add . && git commit -m "message" && git push`)
|
|
40
|
+
- 不关心前置结果时用 `;` 分隔
|
|
41
|
+
- **禁止**使用换行符分隔命令(在引号字符串中除外)
|
|
42
|
+
|
|
43
|
+
**注意事项**:
|
|
44
|
+
- 禁止使用交互式 git 命令(如 `git rebase -i` 或 `git add -i`)
|
|
45
|
+
- 除非用户明确要求,不要推送到远程
|
|
46
|
+
- 没有变更时不创建空提交
|
|
47
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
### 工具code_search
|
|
2
|
+
使用 Exa Code API 搜索编程相关的代码和上下文。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- 为任何编程任务提供最高质量和最新鲜的上下文
|
|
6
|
+
- 提供库、SDK 和 API 的全面代码示例、文档和 API 参考
|
|
7
|
+
- 用于任何编程相关问题
|
|
8
|
+
- 优化用于查找特定编程模式和解决方案
|
|
9
|
+
|
|
10
|
+
**使用说明**:
|
|
11
|
+
- 可调整的 token 数量(1000-50000)用于聚焦或全面的结果
|
|
12
|
+
- 默认 5000 tokens 为大多数查询提供平衡的上下文
|
|
13
|
+
- 特定问题用较低值,全面文档用较高值
|
|
14
|
+
- 支持关于框架、库、API 和编程概念的查询
|
|
15
|
+
|
|
16
|
+
**示例**:
|
|
17
|
+
- 'React useState hook examples'
|
|
18
|
+
- 'Python pandas dataframe filtering'
|
|
19
|
+
- 'Express.js middleware'
|
|
20
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
### 工具edit_file
|
|
2
|
+
对文件执行精确的字符串替换。当文件已经存在时,应该直接调用edit_file工具修改,而不是删除后重新新建,除非客户要求。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- 在编辑前,**必须**至少使用过一次 Read 工具。未读取文件就编辑会报错
|
|
6
|
+
- 从 Read 工具输出编辑文本时,确保保留精确的缩进(空格/制表符)。行号前缀格式是:行号 + 冒号 + 空格(如 `1: `)。`old_string` 和 `new_string` 中**禁止**包含行号前缀的任何部分
|
|
7
|
+
- **优先**编辑现有文件,**禁止**创建新文件除非明确需要
|
|
8
|
+
- 只有用户明确要求时才使用表情符号
|
|
9
|
+
- 如果 `old_string` 在文件中找不到会**失败**
|
|
10
|
+
- 如果 `old_string` 在文件中出现多次会**失败**,可以提供更多上下文使其唯一,或使用 `replace_all` 替换所有匹配项
|
|
11
|
+
- `replace_all` 用于在整个文件中替换和重命名字符串
|
|
12
|
+
|
|
13
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
### 工具grep
|
|
2
|
+
快速的内容搜索工具,适用于任何规模的代码库。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- 使用正则表达式搜索文件内容
|
|
6
|
+
- 支持完整正则语法(如 "log.*Error", "function\s+\w+" 等)
|
|
7
|
+
- 用 `include` 参数按文件模式过滤(如 "*.js", "*.{ts,tsx}")
|
|
8
|
+
- 返回有匹配的文件路径和行号,按修改时间排序
|
|
9
|
+
- 当你需要查找包含特定模式的文件时使用此工具
|
|
10
|
+
|
|
11
|
+
**注意**:
|
|
12
|
+
- 如果需要识别/统计文件中的匹配数量,直接用 Bash 工具运行 `rg` (ripgrep),**不要**用 Grep
|
|
13
|
+
- 当你需要可能需要多轮搜索的开放式搜索时,使用 Task 工具
|
|
14
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
### 工具lsp
|
|
2
|
+
与语言服务器协议(LSP)服务器交互,获取代码智能功能。
|
|
3
|
+
|
|
4
|
+
**支持的操作**:
|
|
5
|
+
- gotoDefinition:查找符号定义位置
|
|
6
|
+
- findReferences:查找符号的所有引用
|
|
7
|
+
- hover:获取悬停信息(文档、类型信息)
|
|
8
|
+
- documentSymbol:获取文档中的所有符号(函数、类、变量)
|
|
9
|
+
- workspaceSymbol:在整个工作区搜索符号
|
|
10
|
+
- gotoImplementation:查找接口或抽象方法的实现
|
|
11
|
+
- callHierarchy:获取位置的调用层次结构项(函数/方法)
|
|
12
|
+
|
|
13
|
+
**所有操作需要**:
|
|
14
|
+
- `filePath`:要操作的文件
|
|
15
|
+
- `line`:行号(从 1 开始,编辑器中显示的那样)
|
|
16
|
+
- `character`:字符偏移(从 1 开始)
|
|
17
|
+
|
|
18
|
+
**注意**:需要为文件类型配置 LSP 服务器。如果文件类型没有可用的服务器,返回错误。
|
|
19
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
### 工具memory
|
|
2
|
+
获取项目的记忆列表。记忆用于记录项目的关键信息(架构、目录结构、核心模块、关键路径等),帮助 AI 快速了解项目并定位代码。
|
|
3
|
+
|
|
4
|
+
**工作流顺序**:
|
|
5
|
+
1. 查看记忆 → 2. 了解项目 → 3. 解决问题 → 4. 评估是否更新 → 5. 维护记忆数量
|
|
6
|
+
|
|
7
|
+
**一、查看记忆**
|
|
8
|
+
- 参数: 无需参数,直接调用 memory 即可
|
|
9
|
+
- 返回: 所有记忆的索引列表(序号、名称、描述、文件路径)
|
|
10
|
+
|
|
11
|
+
**二、什么情况需要更新记忆**(满足任一即可):
|
|
12
|
+
- 发现了项目的重要结构信息(如新的目录组织方式、核心模块划分)
|
|
13
|
+
- 定位到了关键代码位置(如重要的工具函数、核心业务逻辑)
|
|
14
|
+
- 遇到了项目特有的配置或约定(如特定的代码规范、构建配置)
|
|
15
|
+
- 解决了复杂问题,学到了有价值的经验
|
|
16
|
+
- 项目有新功能上线,涉及新的架构或路径
|
|
17
|
+
|
|
18
|
+
**三、具体操作指令**:
|
|
19
|
+
|
|
20
|
+
1. **读取记忆**: 调用 memory 获取列表,然后用 read_file 读取具体内容
|
|
21
|
+
2. **新建记忆**: 使用 write_file 在 .txcode/memory/ 目录下创建文件
|
|
22
|
+
- 命名格式: {序号}-{名称}.md,如 01-项目架构.md
|
|
23
|
+
- 文件内容必须包含 YAML front matter:
|
|
24
|
+
```
|
|
25
|
+
---
|
|
26
|
+
id: 01
|
|
27
|
+
name: 记忆名称
|
|
28
|
+
description: 一句话描述这个记忆记录什么
|
|
29
|
+
updated: 2024-01-01
|
|
30
|
+
---
|
|
31
|
+
```
|
|
32
|
+
然后是正文内容
|
|
33
|
+
3. **修改记忆**: 使用 edit_file 编辑已有记忆文件,同时更新 updated 时间
|
|
34
|
+
4. **删除记忆**: 使用 bash 执行 rm 命令删除文件
|
|
35
|
+
|
|
36
|
+
**四、数量限制**:
|
|
37
|
+
- 最多 20 个记忆
|
|
38
|
+
- 超过 20 个后只能修改已有记忆,不能新建
|
|
39
|
+
- 删除记忆后需要重新整理序号,保持 01-20 连续
|
|
40
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
### 工具read_file
|
|
2
|
+
从本地文件系统读取文件或目录内容。如果路径不存在,返回错误。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- `file_path` 参数应为绝对路径
|
|
6
|
+
- 默认返回文件开头最多 2000 行
|
|
7
|
+
- `offset` 参数是从哪一行开始(从 1 开始)
|
|
8
|
+
- 要读取后面的部分,用更大的 offset 再次调用
|
|
9
|
+
- 用 Grep 工具搜索大文件或长行文件
|
|
10
|
+
- 不确定正确路径时,用 Glob 工具按 glob 模式查找
|
|
11
|
+
- 内容返回时每行带有行号前缀:`<line>: <content>`(如 "1: foo\n")
|
|
12
|
+
- 目录返回时每行一个条目,子目录以 `/` 结尾
|
|
13
|
+
- 超过 2000 字符的行会被截断
|
|
14
|
+
- 可以并行调用此工具读取多个文件
|
|
15
|
+
- 避免频繁小量读取(30 行片段),需要更多上下文时读取更大范围
|
|
16
|
+
- 此工具可以读取图片和 PDF 并作为附件返回
|
|
17
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
### 工具todoread
|
|
2
|
+
使用此工具读取当前会话的任务列表。此工具应主动频繁使用,确保你了解当前任务列表的状态。应在以下情况使用:
|
|
3
|
+
|
|
4
|
+
- 对话开始时查看待处理任务
|
|
5
|
+
- 开始新任务前优先安排工作
|
|
6
|
+
- 用户询问之前的任务或计划时
|
|
7
|
+
- 不确定下一步该做什么时
|
|
8
|
+
- 完成任务后更新对剩余工作的理解
|
|
9
|
+
- 每隔几条消息后检查以确保在正确轨道上
|
|
10
|
+
|
|
11
|
+
**使用说明**:
|
|
12
|
+
- 此工具不需要参数。留空或发送空对象,**禁止**包含虚拟对象、占位符字符串或 "input"、"empty" 等键名
|
|
13
|
+
- 返回任务列表及其状态、优先级和内容
|
|
14
|
+
- 用此信息跟踪进度和计划下一步
|
|
15
|
+
- 如果还没有任务,返回空列表
|
|
16
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
### 工具todowrite
|
|
2
|
+
使用此工具创建和管理当前编码会话的结构化任务列表。这帮助你跟踪进度、组织复杂任务,并向用户展示完成情况。
|
|
3
|
+
|
|
4
|
+
## 何时使用
|
|
5
|
+
|
|
6
|
+
**主动使用此工具的场景**:
|
|
7
|
+
|
|
8
|
+
1. **复杂多步任务** - 任务需要 3 个或更多独立步骤或操作
|
|
9
|
+
2. **非平凡复杂任务** - 需要仔细规划或多个操作的任务
|
|
10
|
+
3. **用户明确请求任务列表** - 用户直接要求你规划任务时
|
|
11
|
+
4. **用户提供多任务** - 用户提供要做的事情列表(编号或逗号分隔)
|
|
12
|
+
5. **收到新指令后** - 立即捕获用户需求为任务。可根据新信息编辑任务列表
|
|
13
|
+
6. **完成任务后** - 标记完成并添加后续任务
|
|
14
|
+
7. **开始新任务时** - 标记进行中。同时只能有一个进行中的任务。先完成现有任务再开始新任务
|
|
15
|
+
|
|
16
|
+
## 何时不使用
|
|
17
|
+
|
|
18
|
+
**跳过使用此工具的场景**:
|
|
19
|
+
1. 单一、简单的任务
|
|
20
|
+
2. 琐碎任务,跟踪没有组织价值
|
|
21
|
+
3. 可在少于 3 个简单步骤内完成的任务
|
|
22
|
+
4. 完全对话性或信息性的请求
|
|
23
|
+
|
|
24
|
+
**注意**:如果只有一个琐碎任务要做,直接做即可,不需要任务列表。
|
|
25
|
+
|
|
26
|
+
## 任务状态
|
|
27
|
+
|
|
28
|
+
- `pending`:尚未开始
|
|
29
|
+
- `in_progress`:正在进行(同时只能有一个)
|
|
30
|
+
- `completed`:已完成
|
|
31
|
+
- `cancelled`:不再需要
|
|
32
|
+
|
|
33
|
+
## 任务管理
|
|
34
|
+
|
|
35
|
+
- 实时更新状态
|
|
36
|
+
- 完成后**立即**标记,不要批量
|
|
37
|
+
- 同时只做一个任务
|
|
38
|
+
- 完成当前任务后再开始新任务
|
|
39
|
+
- 取消不再相关的任务
|
|
40
|
+
|
|
41
|
+
## 任务分解
|
|
42
|
+
|
|
43
|
+
- 创建具体、可操作的事项
|
|
44
|
+
- 将复杂任务分解为更小、可管理的步骤
|
|
45
|
+
- 使用清晰、描述性的任务名称
|
|
46
|
+
|
|
47
|
+
如有疑问,使用此工具。积极主动的任务管理展示专注力,确保完成所有要求。
|
|
48
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
### 工具web_fetch
|
|
2
|
+
从指定 URL 获取内容。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- 接收 URL 和可选格式参数
|
|
6
|
+
- 获取 URL 内容,转换为请求格式(默认为 markdown)
|
|
7
|
+
- 返回指定格式的内容
|
|
8
|
+
- 当你需要获取和分析网页内容时使用此工具
|
|
9
|
+
|
|
10
|
+
**使用说明**:
|
|
11
|
+
- **重要**:如果有其他工具提供更好的网页获取能力、更针对任务、或限制更少,**优先**使用该工具而不是此工具
|
|
12
|
+
- URL 必须是完整有效的 URL
|
|
13
|
+
- HTTP URL 会自动升级为 HTTPS
|
|
14
|
+
- 格式选项:"markdown"(默认)、"text" 或 "html"
|
|
15
|
+
- 此工具是只读的,不会修改任何文件
|
|
16
|
+
- 内容非常大时可能会被摘要
|
|
17
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
### 工具web_search
|
|
2
|
+
使用 Exa AI 搜索网络——执行实时网络搜索,可以抓取特定 URL 的内容。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- 提供最新信息用于时事和近期数据
|
|
6
|
+
- 支持可配置的结果数量,返回最相关网站的内容
|
|
7
|
+
- 用于访问知识截止日期之外的信息
|
|
8
|
+
- 在单个 API 调用内执行搜索
|
|
9
|
+
|
|
10
|
+
**使用说明**:
|
|
11
|
+
- 支持实时爬取模式:'fallback'(缓存不可用时备用)或 'preferred'(优先实时爬取)
|
|
12
|
+
- 搜索类型:'auto'(平衡)、'fast'(快速结果)、'deep'(全面搜索)
|
|
13
|
+
- 可配置上下文长度以优化 LLM 集成
|
|
14
|
+
- 支持域名过滤和高级搜索选项
|
|
15
|
+
|
|
16
|
+
**当前年份是 2026 年**。搜索最近信息或时事时**必须**使用此年份:
|
|
17
|
+
- 正确示例:当前年份是 2026,搜索 "AI 新闻 2026",**不是** "AI 新闻 2025"
|
|
18
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
### 工具write_file
|
|
2
|
+
写入文件到本地文件系统。
|
|
3
|
+
|
|
4
|
+
**功能**:
|
|
5
|
+
- 如果提供的路径已存在文件,**此工具会报错**
|
|
6
|
+
- 如果是已存在的文件,**必须**先用 Read 工具读取文件内容,然后使用 Edit 工具修改
|
|
7
|
+
- **优先**编辑现有文件,**禁止**创建新文件除非明确需要
|
|
8
|
+
- **禁止**主动创建文档文件(*.md)或 README 文件。只有用户明确要求时才创建
|
|
9
|
+
- 只有用户明确要求时才使用表情符号
|
|
10
|
+
- 父目录不存在时会自动创建。避免写入表情符号除非被要求
|
|
11
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tianxincode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI Coding Assistant",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc && npm run copy-txt",
|
|
13
|
-
"copy-txt": "node -e \"const fs=require('fs');const path=require('path');const src='src/modules/tools/builtin';const dst='dist/modules/tools/builtin';fs.readdirSync(src).filter(f=>f.endsWith('.txt')).forEach(f=>fs.copyFileSync(path.join(src,f),path.join(dst,f)));const skillSrc='src/modules/skill';const skillDst='dist/modules/skill';fs.mkdirSync(skillDst,{recursive:true});fs.copyFileSync(path.join(skillSrc,'skill.txt'),path.join(skillDst,'skill.txt'));const promptSrc='src/modules/ai/react/prompt';const promptDst='dist/modules/ai/react/prompt';fs.mkdirSync(promptDst,{recursive:true});fs.copyFileSync(path.join(promptSrc,'role.txt'),path.join(promptDst,'role.txt'));const providerPromptSrc='src/modules/ai/provider/openai/prompt';const providerPromptDst='dist/modules/ai/provider/openai/prompt';fs.mkdirSync(providerPromptDst,{recursive:true});fs.copyFileSync(path.join(providerPromptSrc,'role.txt'),path.join(providerPromptDst,'role.txt'));console.log('Copied .txt files to dist')\"",
|
|
13
|
+
"copy-txt": "node -e \"const fs=require('fs');const path=require('path');const src='src/modules/tools/builtin';const dst='dist/modules/tools/builtin';fs.readdirSync(src).filter(f=>f.endsWith('.txt')).forEach(f=>fs.copyFileSync(path.join(src,f),path.join(dst,f)));const providerSrc='src/modules/tools/provider';const providerDst='dist/modules/tools/provider';fs.readdirSync(providerSrc).filter(f=>f.endsWith('.txt')).forEach(f=>fs.copyFileSync(path.join(providerSrc,f),path.join(providerDst,f)));const skillSrc='src/modules/skill';const skillDst='dist/modules/skill';fs.mkdirSync(skillDst,{recursive:true});fs.copyFileSync(path.join(skillSrc,'skill.txt'),path.join(skillDst,'skill.txt'));const promptSrc='src/modules/ai/react/prompt';const promptDst='dist/modules/ai/react/prompt';fs.mkdirSync(promptDst,{recursive:true});fs.copyFileSync(path.join(promptSrc,'role.txt'),path.join(promptDst,'role.txt'));const providerPromptSrc='src/modules/ai/provider/openai/prompt';const providerPromptDst='dist/modules/ai/provider/openai/prompt';fs.mkdirSync(providerPromptDst,{recursive:true});fs.copyFileSync(path.join(providerPromptSrc,'role.txt'),path.join(providerPromptDst,'role.txt'));console.log('Copied .txt files to dist')\"",
|
|
14
14
|
"dev": "tsx src/index.ts",
|
|
15
15
|
"start": "node dist/index.js",
|
|
16
16
|
"start:web": "node dist/index.js web",
|