thatgfsj-code 3.0.4 → 3.0.6
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 +64 -21
- package/dist/app/index.d.ts +93 -22
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +232 -40
- package/dist/app/index.js.map +1 -1
- package/dist/cmd/index.d.ts +12 -20
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +192 -146
- package/dist/cmd/index.js.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/llm/anthropic.d.ts +1 -1
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +116 -84
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/gemini.d.ts +27 -3
- package/dist/llm/gemini.d.ts.map +1 -1
- package/dist/llm/gemini.js +196 -73
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/index.d.ts +20 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +66 -6
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/openai.d.ts +5 -1
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +96 -56
- package/dist/llm/openai.js.map +1 -1
- package/dist/mcp/client.d.ts +84 -34
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +291 -126
- package/dist/mcp/client.js.map +1 -1
- package/dist/session/compactor.d.ts +27 -7
- package/dist/session/compactor.d.ts.map +1 -1
- package/dist/session/compactor.js +78 -23
- package/dist/session/compactor.js.map +1 -1
- package/dist/session/index.d.ts +96 -33
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +278 -60
- package/dist/session/index.js.map +1 -1
- package/dist/tools/file.d.ts +10 -2
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/file.js +54 -5
- package/dist/tools/file.js.map +1 -1
- package/dist/tools/git.d.ts +16 -2
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +61 -18
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/nwt.d.ts.map +1 -1
- package/dist/tools/nwt.js +8 -1
- package/dist/tools/nwt.js.map +1 -1
- package/dist/tools/search.d.ts +8 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +105 -34
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +0 -4
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +11 -26
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +90 -18
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/ChatMessage.d.ts.map +1 -1
- package/dist/tui/components/ChatMessage.js +9 -2
- package/dist/tui/components/ChatMessage.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.d.ts +21 -0
- package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/tui/components/ConfirmPrompt.js +45 -0
- package/dist/tui/components/ConfirmPrompt.js.map +1 -0
- package/dist/tui/components/Header.d.ts +10 -5
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +13 -5
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/StatusBar.d.ts +7 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +8 -3
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/Thinking.d.ts +5 -0
- package/dist/tui/components/Thinking.d.ts.map +1 -1
- package/dist/tui/components/Thinking.js +24 -2
- package/dist/tui/components/Thinking.js.map +1 -1
- package/dist/tui/components/ToolCall.d.ts +6 -1
- package/dist/tui/components/ToolCall.d.ts.map +1 -1
- package/dist/tui/components/ToolCall.js +50 -22
- package/dist/tui/components/ToolCall.js.map +1 -1
- package/dist/tui/components/UserInput.d.ts +5 -0
- package/dist/tui/components/UserInput.d.ts.map +1 -1
- package/dist/tui/components/UserInput.js +9 -13
- package/dist/tui/components/UserInput.js.map +1 -1
- package/dist/tui/hooks/useChat.d.ts +1 -0
- package/dist/tui/hooks/useChat.d.ts.map +1 -1
- package/dist/tui/hooks/useChat.js +36 -16
- package/dist/tui/hooks/useChat.js.map +1 -1
- package/dist/tui/hooks/useCommands.d.ts +7 -1
- package/dist/tui/hooks/useCommands.d.ts.map +1 -1
- package/dist/tui/hooks/useCommands.js +77 -41
- package/dist/tui/hooks/useCommands.js.map +1 -1
- package/dist/tui/theme.d.ts +34 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +34 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +9 -7
- package/dist/tui/welcome.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/diff.d.ts +5 -0
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/diff.js +15 -0
- package/dist/utils/diff.js.map +1 -1
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +29 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -7
- package/CHANGELOG.md +0 -192
- package/DEVELOPMENT.md +0 -286
- package/ROADMAP.md +0 -91
- package/docs/API_KEY_GUIDE.md +0 -236
- package/docs/FAQ.md +0 -182
- package/install.bat +0 -63
- package/install.ps1 +0 -238
- package/install.sh +0 -113
- package/src/app/index.ts +0 -197
- package/src/cache/fingerprint.ts +0 -101
- package/src/cache/index.ts +0 -21
- package/src/cache/smartModel.ts +0 -133
- package/src/cache/stats.ts +0 -199
- package/src/cache/volatile.ts +0 -47
- package/src/cmd/index.tsx +0 -288
- package/src/config/index.ts +0 -156
- package/src/config/providers.ts +0 -234
- package/src/config/types.ts +0 -71
- package/src/hooks/index.ts +0 -111
- package/src/llm/anthropic.ts +0 -413
- package/src/llm/gemini.ts +0 -169
- package/src/llm/index.ts +0 -303
- package/src/llm/openai.ts +0 -243
- package/src/llm/provider.ts +0 -71
- package/src/mcp/client.ts +0 -330
- package/src/prompts/index.ts +0 -260
- package/src/session/compactor.ts +0 -103
- package/src/session/index.ts +0 -181
- package/src/session/message.ts +0 -42
- package/src/skills/brainstorming.ts +0 -43
- package/src/skills/code-review.ts +0 -45
- package/src/skills/executing-plans.ts +0 -27
- package/src/skills/frontend-design.ts +0 -35
- package/src/skills/git-workflow.ts +0 -36
- package/src/skills/improve-architecture.ts +0 -38
- package/src/skills/index.ts +0 -136
- package/src/skills/neuroweave.ts +0 -47
- package/src/skills/playwright.ts +0 -72
- package/src/skills/prototype.ts +0 -30
- package/src/skills/subagent.ts +0 -28
- package/src/skills/supabase.ts +0 -44
- package/src/skills/systematic-debugging.ts +0 -44
- package/src/skills/tdd.ts +0 -39
- package/src/skills/triage.ts +0 -35
- package/src/skills/verification.ts +0 -31
- package/src/skills/writing-plans.ts +0 -42
- package/src/tools/file.ts +0 -143
- package/src/tools/git.ts +0 -132
- package/src/tools/index.ts +0 -111
- package/src/tools/nwt.ts +0 -598
- package/src/tools/search.ts +0 -263
- package/src/tools/shell.ts +0 -136
- package/src/tools/types.ts +0 -122
- package/src/tui/app.tsx +0 -159
- package/src/tui/components/ChatList.tsx +0 -41
- package/src/tui/components/ChatMessage.tsx +0 -54
- package/src/tui/components/Header.tsx +0 -66
- package/src/tui/components/InitWizard.tsx +0 -247
- package/src/tui/components/Markdown.tsx +0 -35
- package/src/tui/components/ModelSelector.tsx +0 -107
- package/src/tui/components/StatusBar.tsx +0 -30
- package/src/tui/components/Thinking.tsx +0 -17
- package/src/tui/components/ToolCall.tsx +0 -102
- package/src/tui/components/UserInput.tsx +0 -151
- package/src/tui/hooks/useChat.ts +0 -287
- package/src/tui/hooks/useCommands.ts +0 -271
- package/src/tui/index.ts +0 -6
- package/src/tui/welcome.ts +0 -177
- package/src/types.ts +0 -104
- package/src/utils/diff.ts +0 -71
- package/src/utils/project.ts +0 -99
- package/src/utils/stableStringify.ts +0 -47
- package/src/utils/thinking.ts +0 -119
- package/tests/cache/fingerprint.test.ts +0 -75
- package/tests/cache/providerCatalog.test.ts +0 -31
- package/tests/cache/smartModel.test.ts +0 -100
- package/tests/cache/stableStringify.test.ts +0 -43
- package/tests/cache/stats.test.ts +0 -146
- package/tests/cache/volatile.test.ts +0 -75
- package/tests/smoke-pollution.mjs +0 -78
- package/tests/smoke-thinking.mjs +0 -110
- package/tests/smoke-tool-stream.mjs +0 -69
- package/tests/smoke-tool.mjs +0 -117
- package/tsconfig.json +0 -21
package/README.md
CHANGED
|
@@ -7,12 +7,16 @@ AI 编程助手 — 终端里的 AI 编程伙伴
|
|
|
7
7
|
## 特性
|
|
8
8
|
|
|
9
9
|
- **Ink TUI** — React 驱动的终端 UI,流式输出、Markdown 渲染
|
|
10
|
-
-
|
|
10
|
+
- **Agent 工具调用** — AI 可以读写文件、执行命令、搜索代码、操作 Git,写/删文件前展示 diff 并请求确认
|
|
11
|
+
- **MCP 支持** — 接入 Model Context Protocol 服务器(stdio),工具动态注册进对话,`~/.thatgfsj/mcp.json` 配置
|
|
12
|
+
- **会话持久化** — 每轮自动保存到 `~/.thatgfsj/sessions/`,`/resume` 随时恢复历史会话
|
|
13
|
+
- **Headless 模式** — `gfcode "任务" --json` 输出行分隔 JSON 事件流,可脚本化 / 接 CI
|
|
14
|
+
- **权限管线** — 写/执行类工具调用默认需要确认(y / a / n),`--yolo` 跳过
|
|
15
|
+
- **上下文自动压缩** — 超过阈值按"完整工具调用块"原子压缩,不产生孤儿 tool_calls
|
|
16
|
+
- **Prompt Caching** — Reasonix 式缓存架构:稳定序列化、Anthropic cache_control 断点、智能 TTL、命中率统计
|
|
11
17
|
- **16 个内置 Skills** — 规划、调试、TDD、架构优化、代码审查等
|
|
12
18
|
- **NeuroWeave Timeline** — 项目演进记忆,自动归档(30天)
|
|
13
|
-
- **多 Provider** — 15 个平台 +
|
|
14
|
-
- **上下文压缩** — 超限自动压缩,节省 token
|
|
15
|
-
- **Playwright** — 浏览器自动化(测试/抓取/截图)
|
|
19
|
+
- **多 Provider** — 15 个平台 + 自定义中转站,含 Ollama 本地模型
|
|
16
20
|
- **消息队列** — AI 工作时输入补充说明,完成后自动处理
|
|
17
21
|
- **中文命令** — `/模型` `/新建` `/压缩` `/技能` 等
|
|
18
22
|
|
|
@@ -32,7 +36,7 @@ irm https://www.thatgfsj.xyz/install/gfcode.ps1 | iex
|
|
|
32
36
|
curl -fsSL https://www.thatgfsj.xyz/install/gfcode.sh | bash
|
|
33
37
|
```
|
|
34
38
|
|
|
35
|
-
**npm(已有 Node.js):**
|
|
39
|
+
**npm(已有 Node.js ≥ 20.19):**
|
|
36
40
|
```bash
|
|
37
41
|
npm install -g thatgfsj-code
|
|
38
42
|
```
|
|
@@ -56,25 +60,61 @@ gfcode
|
|
|
56
60
|
# 单次 prompt
|
|
57
61
|
gfcode "帮我写一个 Hello World"
|
|
58
62
|
|
|
63
|
+
# headless JSON 事件流(可接脚本/CI)
|
|
64
|
+
gfcode "跑一下测试并总结结果" --json
|
|
65
|
+
|
|
66
|
+
# 跳过工具确认(谨慎)
|
|
67
|
+
gfcode --yolo
|
|
68
|
+
|
|
59
69
|
# 指定模型
|
|
60
70
|
gfcode -m gpt-4o "你的任务"
|
|
61
71
|
```
|
|
62
72
|
|
|
73
|
+
### 权限确认
|
|
74
|
+
|
|
75
|
+
写/执行类操作(shell、git 写操作、文件写入/删除)默认需要确认:
|
|
76
|
+
|
|
77
|
+
- 文件写入会展示**逐行 diff**(超长自动截断)
|
|
78
|
+
- `y` 允许一次 · `a` 本会话全部允许 · `n` 拒绝(60 秒无响应自动拒绝)
|
|
79
|
+
- headless / 非 TTY 环境默认**拒绝**,需要放行请加 `--yolo`(TUI 内也可用 `/yolo` 切换)
|
|
80
|
+
|
|
63
81
|
### 内置命令
|
|
64
82
|
|
|
65
83
|
| 命令 | 别名 | 说明 |
|
|
66
84
|
|------|------|------|
|
|
67
|
-
| `/model <名称>` | `/模型` |
|
|
85
|
+
| `/model <名称>` | `/模型` | 切换模型(立即生效,无需重启) |
|
|
68
86
|
| `/provider` | `/服务商` | 更换服务商 |
|
|
69
|
-
| `/new` | `/新建` |
|
|
70
|
-
| `/
|
|
87
|
+
| `/new` | `/新建` | 新建会话(保留系统提示) |
|
|
88
|
+
| `/resume [序号]` | `/恢复` | 恢复历史会话 |
|
|
89
|
+
| `/compact` | `/压缩` | 压缩上下文(保持工具调用完整) |
|
|
90
|
+
| `/cache` | `/缓存` | 缓存命中率统计(`/cache reset` 清零) |
|
|
91
|
+
| `/ttl 5m\|1h` | `/ttl` | 设置缓存 TTL(立即生效) |
|
|
92
|
+
| `/thinking on\|off` | `/思考` | 切换思考块显示 |
|
|
71
93
|
| `/skills [id]` | `/技能` | 管理技能 |
|
|
72
|
-
| `/mcp` | - | MCP
|
|
94
|
+
| `/mcp` | - | MCP 服务器状态 |
|
|
95
|
+
| `/yolo` | - | 切换写/执行操作自动确认 |
|
|
73
96
|
| `/help` | `/帮助` | 查看帮助 |
|
|
74
97
|
| `exit` | - | 退出 |
|
|
75
98
|
|
|
76
99
|
输入 `/` 会弹出命令选择框,↑↓ 选择,Tab 补全。
|
|
77
100
|
|
|
101
|
+
### MCP 配置
|
|
102
|
+
|
|
103
|
+
编辑 `~/.thatgfsj/mcp.json`(兼容 Claude Code 的 `mcpServers` 键名):
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"mcpServers": {
|
|
108
|
+
"filesystem": {
|
|
109
|
+
"command": "npx",
|
|
110
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "D:\\projects"]
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
重启后生效,工具以 `mcp__服务器名__工具名` 注册进对话,`/mcp` 查看连接状态。
|
|
117
|
+
|
|
78
118
|
### 消息队列
|
|
79
119
|
|
|
80
120
|
AI 工作时可以继续输入,消息会排队等待:
|
|
@@ -117,11 +157,12 @@ AI 工作时可以继续输入,消息会排队等待:
|
|
|
117
157
|
|
|
118
158
|
| 工具 | 功能 |
|
|
119
159
|
|------|------|
|
|
120
|
-
| `file` |
|
|
121
|
-
| `shell` | 执行 shell
|
|
122
|
-
| `git` | Git
|
|
123
|
-
| `search` |
|
|
160
|
+
| `file` | 读/写/列表/删除文件(写/删需确认,写入带 diff 预览) |
|
|
161
|
+
| `shell` | 执行 shell 命令(每次确认,危险命令黑名单硬拦截) |
|
|
162
|
+
| `git` | Git 操作(写操作确认;参数以数组传递,无 shell 注入) |
|
|
163
|
+
| `search` | 代码搜索(纯 JS grep,Windows 原生可用) |
|
|
124
164
|
| `nwt` | 项目演进记忆(见下方说明) |
|
|
165
|
+
| `mcp__*` | 来自 MCP 服务器的动态工具 |
|
|
125
166
|
|
|
126
167
|
### NWT - NeuroWeave Timeline
|
|
127
168
|
|
|
@@ -163,7 +204,7 @@ AI 工作时可以继续输入,消息会排队等待:
|
|
|
163
204
|
| triage | 问题分级 |
|
|
164
205
|
| git-workflow | Git 最佳实践 |
|
|
165
206
|
| subagent | 任务分解 |
|
|
166
|
-
| playwright |
|
|
207
|
+
| playwright | 浏览器自动化实践(提示词技能,Playwright 本身按需 `npx` 安装) |
|
|
167
208
|
| frontend-design | UI/UX 实践 |
|
|
168
209
|
| supabase | 数据库实践 |
|
|
169
210
|
| neuroweave | 项目记忆 |
|
|
@@ -174,17 +215,18 @@ AI 工作时可以继续输入,消息会排队等待:
|
|
|
174
215
|
|
|
175
216
|
```
|
|
176
217
|
src/
|
|
177
|
-
├── cmd/ # CLI
|
|
178
|
-
├── app/ #
|
|
218
|
+
├── cmd/ # CLI 入口(交互 / 单次 / --json headless)
|
|
219
|
+
├── app/ # 核心服务(组装、权限决策、模型热切换)
|
|
179
220
|
├── config/ # 配置 + Provider
|
|
180
|
-
├── llm/ # LLM
|
|
181
|
-
├──
|
|
182
|
-
├──
|
|
221
|
+
├── llm/ # LLM 抽象层(openai / anthropic / gemini 三协议)
|
|
222
|
+
├── cache/ # Prompt caching(稳定序列化、断点、智能 TTL、统计)
|
|
223
|
+
├── session/ # 会话持久化 / resume / 自动压缩
|
|
224
|
+
├── tools/ # 工具系统(权限确认、diff 预览)
|
|
183
225
|
├── skills/ # 16 个内置 Skills
|
|
184
226
|
├── tui/ # Ink TUI 组件
|
|
185
|
-
├── mcp/ # MCP
|
|
227
|
+
├── mcp/ # MCP stdio 客户端
|
|
186
228
|
├── hooks/ # 钩子系统
|
|
187
|
-
├── prompts/ #
|
|
229
|
+
├── prompts/ # 系统提示(分段构建)
|
|
188
230
|
├── utils/ # 工具函数
|
|
189
231
|
└── types.ts # 全局类型
|
|
190
232
|
```
|
|
@@ -196,6 +238,7 @@ src/
|
|
|
196
238
|
- [API Key 获取教程](./docs/API_KEY_GUIDE.md)
|
|
197
239
|
- [常见问题 FAQ](./docs/FAQ.md)
|
|
198
240
|
- [版本路线图](./ROADMAP.md)
|
|
241
|
+
- [更新日志](./CHANGELOG.md)
|
|
199
242
|
|
|
200
243
|
---
|
|
201
244
|
|
package/dist/app/index.d.ts
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* App - Core application singleton
|
|
3
|
-
* Simplified: directly uses LLMService (which has built-in agent loop)
|
|
4
3
|
*
|
|
5
|
-
* v3.0.
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
4
|
+
* v3.0.5 wiring release:
|
|
5
|
+
* - MCP: servers from ~/.thatgfsj/mcp.json are connected at startup
|
|
6
|
+
* (per-server failures are non-fatal) and their tools join the
|
|
7
|
+
* registry before the system prompt is built. Child processes are
|
|
8
|
+
* disconnected on exit.
|
|
9
|
+
* - Permission pipeline: tool confirmations now actually reach the UI —
|
|
10
|
+
* App owns the mode ('ask' default, 'accept' via --yolo) and a
|
|
11
|
+
* pluggable confirmHandler (TUI prompt / headless auto-deny). With no
|
|
12
|
+
* handler and 'ask' mode, write/execute tool calls are DENIED instead
|
|
13
|
+
* of silently executed.
|
|
14
|
+
* - reloadModel(): /model hot-swaps provider+model without restarting;
|
|
15
|
+
* tools and the system prompt are rebuilt, TTL resolution resets.
|
|
16
|
+
* - applyTtl(): /ttl takes effect immediately (config + provider marker).
|
|
17
|
+
* - streamResponse() accepts an AbortSignal that reaches the provider
|
|
18
|
+
* fetch calls, so cancelling a round stops token generation.
|
|
8
19
|
*/
|
|
9
20
|
import { ConfigManager } from '../config/index.js';
|
|
10
21
|
import { LLMService } from '../llm/index.js';
|
|
@@ -14,7 +25,15 @@ import { HookManager } from '../hooks/index.js';
|
|
|
14
25
|
import { SystemPromptBuilder } from '../prompts/index.js';
|
|
15
26
|
import { SkillRegistry } from '../skills/index.js';
|
|
16
27
|
import { CacheStatsStore } from '../cache/stats.js';
|
|
28
|
+
import { MCPServerManager, type McpConfigFile } from '../mcp/client.js';
|
|
17
29
|
import type { ChatMessage, ChatResponse, StreamChunk, Usage } from '../types.js';
|
|
30
|
+
/** Read ~/.thatgfsj/mcp.json. Missing or corrupted file = no servers. */
|
|
31
|
+
export declare function loadMcpConfig(): McpConfigFile;
|
|
32
|
+
/** Confirmation request handed to the active UI. */
|
|
33
|
+
export interface ConfirmRequest {
|
|
34
|
+
/** Human-readable description of the action, including a diff preview when relevant. */
|
|
35
|
+
message: string;
|
|
36
|
+
}
|
|
18
37
|
export declare class App {
|
|
19
38
|
config: ConfigManager;
|
|
20
39
|
llm: LLMService;
|
|
@@ -29,10 +48,18 @@ export declare class App {
|
|
|
29
48
|
* and the /cache command.
|
|
30
49
|
*/
|
|
31
50
|
cacheStats: CacheStatsStore;
|
|
51
|
+
/** v3.0.5: connected MCP servers (empty manager when none configured). */
|
|
52
|
+
mcp: MCPServerManager;
|
|
53
|
+
/** v3.0.5: startup results per configured MCP server, for /mcp output. */
|
|
54
|
+
mcpStartupResults: Array<{
|
|
55
|
+
name: string;
|
|
56
|
+
ok: boolean;
|
|
57
|
+
error?: string;
|
|
58
|
+
tools: number;
|
|
59
|
+
}>;
|
|
32
60
|
/**
|
|
33
|
-
* v2.2.5
|
|
34
|
-
*
|
|
35
|
-
* in the REPL.
|
|
61
|
+
* v2.2.5: toggle thinking block compression. Default true. Toggled by
|
|
62
|
+
* `--show-thinking` on the CLI or `/thinking on|off` in the REPL.
|
|
36
63
|
*/
|
|
37
64
|
showThinking: boolean;
|
|
38
65
|
/**
|
|
@@ -41,8 +68,58 @@ export declare class App {
|
|
|
41
68
|
* is '5m' or '1h' and stays sticky.
|
|
42
69
|
*/
|
|
43
70
|
resolvedTtl: '5m' | '1h' | null;
|
|
71
|
+
/**
|
|
72
|
+
* v3.0.5: permission mode. 'ask' requires confirmation for write/execute
|
|
73
|
+
* tool actions; 'accept' (--yolo) allows everything.
|
|
74
|
+
*/
|
|
75
|
+
permissionMode: 'ask' | 'accept';
|
|
76
|
+
/**
|
|
77
|
+
* v3.0.5: pluggable confirmation UI. The TUI installs an Ink prompt;
|
|
78
|
+
* headless mode leaves it unset → write/execute actions are denied with
|
|
79
|
+
* a note (add --yolo to allow them).
|
|
80
|
+
*/
|
|
81
|
+
confirmHandler?: (req: ConfirmRequest) => Promise<boolean>;
|
|
44
82
|
private constructor();
|
|
45
83
|
static create(): Promise<App>;
|
|
84
|
+
/**
|
|
85
|
+
* v3.0.5: keep registry and LLMService tool contexts in sync. All asks
|
|
86
|
+
* funnel through requestConfirmation so the permission mode and the
|
|
87
|
+
* active UI handler apply uniformly.
|
|
88
|
+
*/
|
|
89
|
+
private applyToolContext;
|
|
90
|
+
/**
|
|
91
|
+
* v3.0.5: central permission decision.
|
|
92
|
+
* - 'accept' mode (--yolo): always allowed.
|
|
93
|
+
* - handler installed (TUI): ask it, 60s timeout denies.
|
|
94
|
+
* - no handler (headless): deny with a hint on stderr.
|
|
95
|
+
*/
|
|
96
|
+
requestConfirmation(req: ConfirmRequest): Promise<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* v3.0.5: single entry for toggling auto-accept. Also refreshes the
|
|
99
|
+
* system prompt's permission-mode section so the model knows tool calls
|
|
100
|
+
* no longer need user approval.
|
|
101
|
+
*/
|
|
102
|
+
setYolo(on: boolean): void;
|
|
103
|
+
/**
|
|
104
|
+
* v3.0.5: hot-swap the model (and provider, if /provider changed it on
|
|
105
|
+
* disk). Rebuilds LLMService, re-registers every current tool, resets TTL
|
|
106
|
+
* resolution and refreshes the system prompt. /model previously only
|
|
107
|
+
* wrote the config file and required a restart.
|
|
108
|
+
*/
|
|
109
|
+
reloadModel(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* v3.0.5: apply a TTL pin immediately (config write-through + provider
|
|
112
|
+
* marker). /ttl previously only updated a display value; the wire format
|
|
113
|
+
* kept the old TTL until restart.
|
|
114
|
+
*/
|
|
115
|
+
applyTtl(ttl: '5m' | '1h'): Promise<void>;
|
|
116
|
+
/** v3.0.5: rebuild the system prompt (tools / permission mode changed). */
|
|
117
|
+
rebuildSystemPrompt(): void;
|
|
118
|
+
/**
|
|
119
|
+
* v3.0.5: TUI hook-up — show MCP startup results as an in-chat message.
|
|
120
|
+
* Returns a short multi-line report (empty when no servers configured).
|
|
121
|
+
*/
|
|
122
|
+
mcpStatusText(): string;
|
|
46
123
|
/**
|
|
47
124
|
* Stream a response for the current session messages.
|
|
48
125
|
* The LLMService handles the full agent loop internally.
|
|
@@ -50,26 +127,20 @@ export declare class App {
|
|
|
50
127
|
* Yields structured StreamChunks. Returns the final ChatResponse (with usage
|
|
51
128
|
* if the provider reported it) so the caller can record cache stats.
|
|
52
129
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* generator's return value. Using yield* doesn't carry the return value
|
|
56
|
-
* through TS's AsyncGenerator<T, R> type inference in this version of
|
|
57
|
-
* TypeScript, so we wrap with an inner for-await and explicit return.
|
|
130
|
+
* v3.0.5: accepts { signal } — propagated into provider fetch calls so
|
|
131
|
+
* cancellation actually aborts the HTTP request.
|
|
58
132
|
*/
|
|
59
|
-
streamResponse(messages?: ChatMessage[]
|
|
133
|
+
streamResponse(messages?: ChatMessage[], opts?: {
|
|
134
|
+
signal?: AbortSignal;
|
|
135
|
+
}): AsyncGenerator<StreamChunk, ChatResponse>;
|
|
60
136
|
/**
|
|
61
137
|
* Run a single prompt (non-interactive mode)
|
|
62
138
|
*
|
|
63
|
-
* v2.2.4
|
|
64
|
-
*
|
|
65
|
-
* pollution markers like "[已中断]".
|
|
66
|
-
*
|
|
67
|
-
* v2.2.5 (product 0.4.2): persistence also strips blocks
|
|
68
|
-
* (and similar reasoning delimiters) when showThinking is false,
|
|
69
|
-
* so the conversation log stays compact.
|
|
139
|
+
* v2.2.4: persistence of the assistant message uses addMessageSafe, which
|
|
140
|
+
* drops the message if it contains pollution markers like "[已中断]".
|
|
70
141
|
*
|
|
71
|
-
* v3.0.0: yields structured StreamChunks; final usage is captured
|
|
72
|
-
*
|
|
142
|
+
* v3.0.0: yields structured StreamChunks; final usage is captured.
|
|
143
|
+
* v3.0.5: persists the session to disk when the round completes.
|
|
73
144
|
*/
|
|
74
145
|
runPrompt(prompt: string, onUsage?: (usage: Usage) => void): Promise<string>;
|
|
75
146
|
}
|
package/dist/app/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEjF,yEAAyE;AACzE,wBAAgB,aAAa,IAAI,aAAa,CAU7C;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,GAAG;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,eAAe,CAAC;IAC5B,0EAA0E;IAC1E,GAAG,EAAE,gBAAgB,CAAC;IACtB,0EAA0E;IAC1E,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IAC5F;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAS;IAC9B;;;;OAIG;IACH,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IACvC;;;OAGG;IACH,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAS;IACzC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,OAAO;WAsBM,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAuEnC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;OAKG;IACG,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBhE;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAK1B;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC;;;;OAIG;IACG,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,2EAA2E;IAC3E,mBAAmB,IAAI,IAAI;IAO3B;;;OAGG;IACH,aAAa,IAAI,MAAM;IAmCvB;;;;;;;;;OASG;IACI,cAAc,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;IAwB3H;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA+BnF"}
|