tianxincode 1.0.25 → 1.0.27
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/README.md +1 -198
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/wiki.routes.d.ts +5 -0
- package/dist/api/wiki.routes.d.ts.map +1 -0
- package/dist/api/wiki.routes.js +62 -0
- package/dist/api/wiki.routes.js.map +1 -0
- package/dist/components/Header.js +1 -1
- package/dist/modules/tools/provider/edit_file.d.ts.map +1 -1
- package/dist/modules/tools/provider/edit_file.js +423 -20
- package/dist/modules/tools/provider/edit_file.js.map +1 -1
- package/dist/modules/tools/provider/write_file.d.ts.map +1 -1
- package/dist/modules/tools/provider/write_file.js +3 -8
- package/dist/modules/tools/provider/write_file.js.map +1 -1
- package/package.json +3 -1
- package/txcode/skills/llm-wiki/validate-menu.js +148 -0
- package/web/dist/assets/{AiLogsView-CVrYev7d.js → AiLogsView-TTa6moV3.js} +1 -1
- package/web/dist/assets/ConfirmDialog-eCpi8rBQ.js +1 -0
- package/web/dist/assets/{CustomActionsView-CQxKk6SO.js → CustomActionsView-Cq7LMVOm.js} +1 -1
- package/web/dist/assets/DevWorkflowView-3uw47AWR.js +11 -0
- package/web/dist/assets/{DevWorkflowView-BOszt_zy.css → DevWorkflowView-C48T1Vn9.css} +1 -1
- package/web/dist/assets/DevWorkflowView-DEua6ZP6.css +1 -0
- package/web/dist/assets/{DevWorkflowView-CpVJXbRj.js → DevWorkflowView-tWFUkf3j.js} +3 -3
- package/web/dist/assets/GitChanges-D430pnbK.js +2 -0
- package/web/dist/assets/GitChangesApp-Cxlq5udx.js +2 -0
- package/web/dist/assets/GitChangesApp-D8TsaOlK.css +1 -0
- package/web/dist/assets/{Layout-DSOX_ZQg.js → Layout-fAJ6zHSG.js} +1 -1
- package/web/dist/assets/{TasksView-BQLcnztt.js → TasksView-C2sykBn1.js} +1 -1
- package/web/dist/assets/{TerminalView-CaEdQC15.js → TerminalView-6zhWPcS2.js} +1 -1
- package/web/dist/assets/WikiView-B3ioU5qp.js +1 -0
- package/web/dist/assets/WikiView-OxwIcazz.css +1 -0
- package/web/dist/assets/{cssMode-Wg7UhMIG.js → cssMode-DL32wtS4.js} +1 -1
- package/web/dist/assets/{freemarker2-DaMvTxgM.js → freemarker2-BlocLFsd.js} +1 -1
- package/web/dist/assets/{handlebars-BmSrZuMd.js → handlebars-_Spxw7Li.js} +1 -1
- package/web/dist/assets/{html-wdaeQuim.js → html-CWQbZQWQ.js} +1 -1
- package/web/dist/assets/{htmlMode-CgOkorRk.js → htmlMode-DATEJehN.js} +1 -1
- package/web/dist/assets/{index-D3xzRDti.css → index-CYjLVF1N.css} +1 -1
- package/web/dist/assets/{index-n-xW_xO-.js → index-CpCSEd7o.js} +207 -207
- package/web/dist/assets/{javascript-D1li0PeC.js → javascript-BBvSL4U3.js} +1 -1
- package/web/dist/assets/{jsonMode-DXU-WgyL.js → jsonMode-DX7TVjfD.js} +1 -1
- package/web/dist/assets/{liquid-BQ5-AUOg.js → liquid-CL5JIb08.js} +1 -1
- package/web/dist/assets/{mdx-NaQ3utsA.js → mdx-C31_gl86.js} +1 -1
- package/web/dist/assets/{python-Bi2ecxh2.js → python-7Kp2T0Nb.js} +1 -1
- package/web/dist/assets/{razor-aB18BLo4.js → razor-W7cm7GQ5.js} +1 -1
- package/web/dist/assets/{tsMode-DnD0UWyD.js → tsMode-BZP54ZOj.js} +1 -1
- package/web/dist/assets/{typescript-CFJU3nfS.js → typescript-BiKyz9zw.js} +1 -1
- package/web/dist/assets/{xml-BoojtM7k.js → xml-CrkoIiwJ.js} +1 -1
- package/web/dist/assets/{yaml-DFVYjsED.js → yaml-CTJ6CfjA.js} +1 -1
- package/web/dist/index.html +2 -2
- package/web/dist/assets/GitChanges-CghJtlNa.js +0 -2
package/README.md
CHANGED
|
@@ -1,198 +1 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
AI Coding Assistant - 一个强大的 AI 编程助手命令行工具。
|
|
4
|
-
|
|
5
|
-
## 安装
|
|
6
|
-
|
|
7
|
-
### 全局安装(推荐)
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm install -g tianxincode
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
安装完成后,您可以在任何目录下使用 `txcode` 命令。
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## 快速开始
|
|
17
|
-
|
|
18
|
-
安装完成后,直接在终端中运行:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
txcode web
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
访问http://localhost:4000 页面 设置里配置模型提供商和模型,然后可以web端交互,也可以ctrl+c 关闭后启动命令行方式
|
|
25
|
-

|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
txcode
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## 基本用法
|
|
32
|
-
|
|
33
|
-
### 操作文档
|
|
34
|
-
|
|
35
|
-
[https://joinz2015-boop.github.io/txcode/getting-started/index.html](https://joinz2015-boop.github.io/txcode/getting-started/index.html)
|
|
36
|
-
|
|
37
|
-
### 启动交互模式(默认)
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
txcode
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 启动 Web 界面
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
txcode web
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### 指定 Web 服务端口
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
txcode web --port 40001
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 获取帮助(在交互模式中)
|
|
56
|
-
|
|
57
|
-
启动交互模式后,输入 `/help` 查看可用命令。
|
|
58
|
-
|
|
59
|
-
## 功能特性
|
|
60
|
-
|
|
61
|
-
- **交互式命令行界面**:直接在终端中与 AI 助手对话
|
|
62
|
-
- **代码智能分析**:支持代码搜索、文件操作、Git 集成等功能
|
|
63
|
-
- **项目记忆管理**:自动记录项目关键信息,快速定位代码
|
|
64
|
-
- **多工具支持**:内置文件操作、代码搜索、网络搜索等工具
|
|
65
|
-
- **Web 界面**:提供图形化操作界面(可选)
|
|
66
|
-
|
|
67
|
-
## 使用示例
|
|
68
|
-
|
|
69
|
-
### 1. 启动交互模式
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
# 启动交互式命令行界面
|
|
73
|
-
txcode
|
|
74
|
-
|
|
75
|
-
# 启动后,您可以输入自然语言指令,例如:
|
|
76
|
-
> 搜索所有包含 "function" 的 TypeScript 文件
|
|
77
|
-
> 读取 src/index.ts 文件
|
|
78
|
-
> 查看当前 Git 状态
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### 2. 使用 Web 界面
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
# 启动 Web 服务(默认端口 40000)
|
|
85
|
-
txcode web
|
|
86
|
-
|
|
87
|
-
# 指定端口启动
|
|
88
|
-
txcode web --port 40001
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### 3. 交互式命令
|
|
92
|
-
|
|
93
|
-
在交互模式中,可以使用以下命令:
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
/help - 显示帮助信息
|
|
97
|
-
/new [标题] - 创建新会话
|
|
98
|
-
/sessions - 列出所有会话
|
|
99
|
-
/switch <ID> - 切换到指定会话
|
|
100
|
-
/models - 列出可用模型
|
|
101
|
-
/model <ID> - 切换模型
|
|
102
|
-
/skills - 列出可用技能
|
|
103
|
-
/use <技能名> - 使用特定技能
|
|
104
|
-
/token - 显示 Token 使用统计
|
|
105
|
-
/exit - 退出程序
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 4. 常见任务示例
|
|
109
|
-
|
|
110
|
-
```
|
|
111
|
-
# 代码搜索和分析
|
|
112
|
-
> 查找所有使用 useState 的 React 组件
|
|
113
|
-
> 分析项目的目录结构
|
|
114
|
-
> 搜索包含特定错误信息的文件
|
|
115
|
-
|
|
116
|
-
# 文件操作
|
|
117
|
-
> 创建新的组件文件
|
|
118
|
-
> 修改现有代码
|
|
119
|
-
> 批量重命名文件
|
|
120
|
-
|
|
121
|
-
# Git 操作
|
|
122
|
-
> 查看最近的提交
|
|
123
|
-
> 创建新的分支
|
|
124
|
-
> 提交当前更改
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## 配置说明
|
|
128
|
-
|
|
129
|
-
### 环境变量
|
|
130
|
-
|
|
131
|
-
工具支持以下环境变量:
|
|
132
|
-
|
|
133
|
-
- `OPENAI_API_KEY`:OpenAI API 密钥(必需)
|
|
134
|
-
- `TXCODE_WORKSPACE`:工作空间目录路径(可选)
|
|
135
|
-
|
|
136
|
-
### 配置文件
|
|
137
|
-
|
|
138
|
-
工具会在工作目录下创建 `.txcode` 文件夹,用于存储:
|
|
139
|
-
- 项目记忆文件
|
|
140
|
-
- 会话历史
|
|
141
|
-
- 配置文件
|
|
142
|
-
|
|
143
|
-
## 项目结构
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
├── src/ # 源代码目录
|
|
147
|
-
│ ├── index.ts # 主入口文件
|
|
148
|
-
│ ├── modules/ # 功能模块
|
|
149
|
-
│ └── types/ # 类型定义
|
|
150
|
-
├── dist/ # 构建输出目录
|
|
151
|
-
├── tests/ # 测试文件
|
|
152
|
-
└── package.json # 项目配置
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## 开发说明
|
|
156
|
-
|
|
157
|
-
> **注意**:以下内容主要面向开发者,普通用户无需关注。
|
|
158
|
-
|
|
159
|
-
### 开发环境设置
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# 克隆项目
|
|
163
|
-
git clone <repository-url>
|
|
164
|
-
cd txcode
|
|
165
|
-
|
|
166
|
-
# 安装依赖
|
|
167
|
-
npm install
|
|
168
|
-
|
|
169
|
-
# 开发模式运行
|
|
170
|
-
npm run dev
|
|
171
|
-
|
|
172
|
-
# 构建项目
|
|
173
|
-
npm run build
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### 运行测试
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
# 运行测试
|
|
180
|
-
npm test
|
|
181
|
-
|
|
182
|
-
# 运行测试并生成覆盖率报告
|
|
183
|
-
npm run test:coverage
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### 发布新版本
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
# 更新版本号
|
|
190
|
-
npm version patch # 或 minor, major
|
|
191
|
-
|
|
192
|
-
# 发布到 npm
|
|
193
|
-
npm publish
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## 许可证
|
|
197
|
-
|
|
198
|
-
ISC
|
|
1
|
+
# Test overwrite
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH,eAAO,MAAM,SAAS,4CAAW,CAAC;AAsBlC,mBAAmB,gBAAgB,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { workflowRouter } from './workflow.routes.js';
|
|
|
20
20
|
import { gitRouter } from './git.routes.js';
|
|
21
21
|
import { customActionsRouter } from './custom-actions.routes.js';
|
|
22
22
|
import { specsRouter } from './specs.routes.js';
|
|
23
|
+
import { wikiRouter } from './wiki.routes.js';
|
|
23
24
|
export const apiRouter = Router();
|
|
24
25
|
apiRouter.use('/chat', chatRouter);
|
|
25
26
|
apiRouter.use('/sessions', sessionRouter);
|
|
@@ -39,4 +40,5 @@ apiRouter.use('/workflow', workflowRouter);
|
|
|
39
40
|
apiRouter.use('/git', gitRouter);
|
|
40
41
|
apiRouter.use('/custom-actions', customActionsRouter);
|
|
41
42
|
apiRouter.use('/specs', specsRouter);
|
|
43
|
+
apiRouter.use('/wiki', wikiRouter);
|
|
42
44
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;AAElC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC1C,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACvC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACvC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACjC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAC3C,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/B,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC/C,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACvC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAC3C,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACzC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAC3C,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACjC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AACtD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki.routes.d.ts","sourceRoot":"","sources":["../../src/api/wiki.routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,eAAO,MAAM,UAAU,4CAAW,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wiki API 路由
|
|
3
|
+
*/
|
|
4
|
+
import { Router } from 'express';
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import * as yaml from 'yaml';
|
|
8
|
+
export const wikiRouter = Router();
|
|
9
|
+
const DOCS_BASE_PATH = path.resolve(process.cwd(), '.txcode/wiki');
|
|
10
|
+
wikiRouter.get('/menu', (req, res) => {
|
|
11
|
+
try {
|
|
12
|
+
const menuPath = path.join(DOCS_BASE_PATH, 'menu.yaml');
|
|
13
|
+
if (!fs.existsSync(menuPath)) {
|
|
14
|
+
return res.status(404).json({ success: false, error: 'menu.yaml not found' });
|
|
15
|
+
}
|
|
16
|
+
const menuContent = fs.readFileSync(menuPath, 'utf-8');
|
|
17
|
+
const menuData = yaml.parse(menuContent);
|
|
18
|
+
res.json({ success: true, data: menuData });
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error('Error reading wiki menu:', error);
|
|
22
|
+
res.status(500).json({ success: false, error: 'Failed to read menu' });
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
wikiRouter.get('/content', (req, res) => {
|
|
26
|
+
try {
|
|
27
|
+
const { path: filePath } = req.query;
|
|
28
|
+
if (!filePath || typeof filePath !== 'string') {
|
|
29
|
+
return res.status(400).json({ success: false, error: 'path parameter is required' });
|
|
30
|
+
}
|
|
31
|
+
const normalizedPath = filePath.replace(/^\//, '');
|
|
32
|
+
const fullPath = path.join(DOCS_BASE_PATH, normalizedPath);
|
|
33
|
+
if (!fs.existsSync(fullPath)) {
|
|
34
|
+
return res.status(404).json({ success: false, error: 'File not found' });
|
|
35
|
+
}
|
|
36
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
37
|
+
res.json({ success: true, data: content });
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('Error reading wiki content:', error);
|
|
41
|
+
res.status(500).json({ success: false, error: 'Failed to read content' });
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
wikiRouter.get('/asset', (req, res) => {
|
|
45
|
+
try {
|
|
46
|
+
const { path: assetPath } = req.query;
|
|
47
|
+
if (!assetPath || typeof assetPath !== 'string') {
|
|
48
|
+
return res.status(400).json({ success: false, error: 'path parameter is required' });
|
|
49
|
+
}
|
|
50
|
+
const normalizedPath = assetPath.replace(/^\//, '');
|
|
51
|
+
const fullPath = path.join(DOCS_BASE_PATH, normalizedPath);
|
|
52
|
+
if (!fs.existsSync(fullPath)) {
|
|
53
|
+
return res.status(404).json({ success: false, error: 'Asset not found' });
|
|
54
|
+
}
|
|
55
|
+
res.sendFile(fullPath);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('Error reading wiki asset:', error);
|
|
59
|
+
res.status(500).json({ success: false, error: 'Failed to read asset' });
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=wiki.routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki.routes.js","sourceRoot":"","sources":["../../src/api/wiki.routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
|
-
const VERSION = '1.0.
|
|
3
|
+
const VERSION = '1.0.27';
|
|
4
4
|
export const Header = React.memo(function Header() {
|
|
5
5
|
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 },
|
|
6
6
|
React.createElement(Text, { bold: true, cyan: true }, " "),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit_file.d.ts","sourceRoot":"","sources":["../../../../src/modules/tools/provider/edit_file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAA2B,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"edit_file.d.ts","sourceRoot":"","sources":["../../../../src/modules/tools/provider/edit_file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAA2B,MAAM,kBAAkB,CAAA;AA8chE,eAAO,MAAM,YAAY,EAAE,IAuH1B,CAAA"}
|