@antaif3ng/til-work 0.2.0 → 0.4.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # TIL work agent 工具
2
2
 
3
- > 运行在终端里的个人电脑 AI 助手,类似 Codex CLI / Claude Code。
3
+ > 运行在终端里的个人 AI 助手,类似 Codex CLI / Claude Code。
4
4
 
5
5
  TIL work 是一个基于大语言模型的命令行 Agent 工具。它可以直接操作你的文件系统、执行命令、编辑代码、搜索网页、截图、控制浏览器,并通过对话式交互帮你完成各种电脑任务。
6
6
 
@@ -13,7 +13,7 @@ TIL work 是一个基于大语言模型的命令行 Agent 工具。它可以直
13
13
  | **代码编辑** | 精确替换代码片段(类似 sed,但更智能) |
14
14
  | **截图** | 截取全屏或窗口截图,返回给 LLM 进行视觉分析 |
15
15
  | **Computer Use** | 鼠标点击、键盘输入、滚动拖拽 + 自动截图反馈 |
16
- | **浏览器控制** | 页面导航、点击、输入、截图、JS 执行(Playwright) |
16
+ | **浏览器控制** | 页面导航、快照(ref 定位)、点击、输入、截图、JS 执行(agent-browser) |
17
17
  | **网页搜索** | 实时搜索互联网获取最新信息 |
18
18
  | **MCP 扩展** | 通过 MCP 协议接入外部工具服务(stdio / HTTP) |
19
19
  | **记忆系统** | 跨对话记住上下文(MEMORY.md + AGENTS.md) |
@@ -23,6 +23,14 @@ TIL work 是一个基于大语言模型的命令行 Agent 工具。它可以直
23
23
  | **安全拦截** | 自动检测并拦截 `rm -rf`、`sudo` 等危险命令 |
24
24
  | **多模型** | 支持 Anthropic、OpenAI、Google Gemini 及任意 OpenAI 兼容接口 |
25
25
 
26
+ ## 交互体验
27
+
28
+ - **多行输入**:行尾输入 `\` 再回车、`Ctrl+J` 或 `Alt+Enter` 均可插入换行,`Esc` 取消多行输入
29
+ - **输入框 UI**:带上下边框的输入区域,底部常驻显示当前工作目录和随机操作提示
30
+ - **Placeholder**:空输入时显示换行快捷键提示,输入后自动消失
31
+ - **文件引用**:输入 `@` 后实时搜索文件,方向键选择,文件内容自动注入 LLM 上下文
32
+ - **命令菜单**:输入 `/` 弹出命令列表,方向键循环选择,`Enter` 直接执行,`Tab` 补全
33
+
26
34
  ## 前置要求
27
35
 
28
36
  - **Node.js** >= 20.6.0(推荐 22+)
@@ -92,7 +100,9 @@ export OPENAI_BASE_URL=https://api.minimaxi.com/v1
92
100
  til
93
101
  ```
94
102
 
95
- 输入 `/` 查看所有可用命令(支持方向键选择),输入 `@` 引用文件内容。
103
+ 输入 `/` 查看所有可用命令(支持方向键循环选择),输入 `@` 引用文件内容(自动注入到上下文)。
104
+
105
+ 支持多行输入:行尾输入 `\` 再回车,或按 `Ctrl+J` / `Alt+Enter` 换行。
96
106
 
97
107
  ### 3. 单次执行模式
98
108
 
@@ -133,9 +143,9 @@ til [options] [prompt]
133
143
  | `/model` | 查看/切换/管理模型(支持方向键选择) |
134
144
  | `/model add <id> [baseUrl] [apiKey]` | 添加模型配置 |
135
145
  | `/model default <id>` | 设置默认模型 |
136
- | `/skills` | 查看已加载的技能(含来源标签) |
146
+ | `/skills` | 查看/管理技能 (reload/install/enable/disable/rm) |
137
147
  | `/skill:<name>` | 查看某个技能的详细内容 |
138
- | `/mcp` | 查看已连接的 MCP 服务和工具 |
148
+ | `/mcp` | 查看/管理 MCP 服务 (add/rm/reload) |
139
149
  | `/memory` | 查看当前记忆内容 |
140
150
  | `/usage` | 查看本次会话的 Token 用量 |
141
151
  | `/sessions` | 查看会话历史列表 |
@@ -158,7 +168,7 @@ til [options] [prompt]
158
168
  | `web_fetch` | 网络 | 是 | 抓取网页内容转纯文本 |
159
169
  | `screenshot` | 视觉 | 是 | 截取全屏或窗口截图 |
160
170
  | `computer` | 桌面自动化 | 是 | 鼠标、键盘、滚动 + 自动截图反馈 |
161
- | `browser` | 浏览器 | 否 | Playwright 页面控制(需安装 Playwright) |
171
+ | `browser` | 浏览器 | 否 | agent-browser 浏览器自动化(内置,自动发现系统 Chrome) |
162
172
 
163
173
  ### screenshot 工具
164
174
 
@@ -190,14 +200,18 @@ til [options] [prompt]
190
200
 
191
201
  ### browser 工具
192
202
 
193
- 基于 Playwright 的浏览器自动化,需单独安装:
203
+ 基于 [agent-browser](https://github.com/vercel-labs/agent-browser) 的浏览器自动化,已内置为依赖,自动发现系统中已安装的 Chrome。默认以**可见窗口**(headed)模式运行,可设置 `headed=false` 切换为无窗口模式。
194
204
 
195
- ```bash
196
- npm install playwright
197
- npx playwright install chromium
198
- ```
205
+ **推荐工作流(snapshot-ref 模式):**
206
+
207
+ 1. `open` 打开目标 URL
208
+ 2. `snapshot` — 获取页面可访问性树 + 元素 ref(`@e1`、`@e2` …)
209
+ 3. 使用 ref 交互(`click @e1`、`fill @e2 "text"`)
210
+ 4. 页面变化后重新 `snapshot`
199
211
 
200
- 支持 `navigate`、`screenshot`、`click`、`type`、`evaluate`、`get_text`、`scroll`、`wait`、`back`、`forward`、`close` 等操作。
212
+ 支持操作:`open`、`snapshot`、`screenshot`、`click`、`fill`、`type`、`eval`、`get_text`、`scroll`、`wait`、`press`、`select`、`hover`、`back`、`forward`、`close`。
213
+
214
+ 如果系统没有 Chrome,可运行 `npx agent-browser install` 下载,或设置 `AGENT_BROWSER_EXECUTABLE_PATH` 指向自定义浏览器。
201
215
 
202
216
  ## 配置
203
217
 
@@ -238,6 +252,7 @@ npx playwright install chromium
238
252
  | `models` | 各模型的单独配置(provider、apiKey、baseUrl、contextWindow 等) |
239
253
  | `providers` | Provider 级别配置(apiKey、baseUrl、headers) |
240
254
  | `mcpServers` | MCP 服务器配置 |
255
+ | `disabledSkills` | 已禁用的技能名称列表 |
241
256
  | `defaultTools` | 默认启用的工具列表 |
242
257
 
243
258
  ### 模型管理
@@ -277,35 +292,65 @@ TIL 支持通过 MCP (Model Context Protocol) 接入外部工具服务。
277
292
  ```json
278
293
  {
279
294
  "mcpServers": {
280
- "playwright": {
281
- "command": "npx",
282
- "args": ["@playwright/mcp", "--headless"]
283
- },
284
295
  "web-search": {
285
296
  "type": "http",
286
297
  "url": "https://open.bigmodel.cn/api/mcp/web_search/mcp",
287
298
  "headers": {
288
299
  "Authorization": "Bearer your_api_key"
289
300
  }
301
+ },
302
+ "minimax": {
303
+ "command": "uvx",
304
+ "args": ["minimax-coding-plan-mcp"],
305
+ "env": {
306
+ "MINIMAX_API_KEY": "your_minimax_api_key"
307
+ }
290
308
  }
291
309
  }
292
310
  }
293
311
  ```
294
312
 
313
+ > **注意**:浏览器自动化已通过内置 `browser` 工具提供(基于 agent-browser),无需再配置 Playwright MCP。MCP 主要用于接入需要 API key 的外部服务。
314
+
295
315
  支持两种传输方式:
296
316
  - **stdio**:本地进程通过 stdin/stdout 通信
297
317
  - **streamable_http** / **sse**:远程 HTTP 服务
298
318
 
299
- ### 查看 MCP 状态
319
+ ### 交互式 MCP 管理
300
320
 
321
+ 在交互模式中直接添加、删除和重载 MCP 服务:
322
+
323
+ ```bash
324
+ /mcp # 查看所有 MCP 服务状态
325
+ /mcp add playwright --stdio npx @playwright/mcp --headless # 添加 stdio 类型
326
+ /mcp add web-search --url https://api.example.com/mcp # 添加 HTTP 类型
327
+ /mcp add api --url https://api.example.com/mcp -H Authorization:Bearer\ sk-xxx # 带 header
328
+ /mcp add api --url https://api.example.com/mcp -H Authorization:Bearer\ sk-xxx -H X-Project:demo # 多个 header
329
+ /mcp add project-db --stdio npx @mcp/postgres --project # 添加到项目级配置
330
+ /mcp rm playwright # 删除服务
331
+ /mcp reload # 重载所有服务(热重载)
332
+ /extensions # 查看所有扩展信息
301
333
  ```
302
- /mcp # 查看已连接的 MCP 服务器和工具列表
303
- /extensions # 查看所有扩展信息
334
+
335
+ ### 项目级 MCP 配置
336
+
337
+ 除全局 `~/.til/config.json` 外,还支持项目级配置 `<项目>/.til/config.json`。项目级配置的同名服务覆盖全局配置。
338
+
339
+ ```json
340
+ // .til/config.json(项目级)
341
+ {
342
+ "mcpServers": {
343
+ "project-db": {
344
+ "command": "npx",
345
+ "args": ["@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
346
+ }
347
+ }
348
+ }
304
349
  ```
305
350
 
306
351
  ## 内置技能
307
352
 
308
- TIL 内置 5 个实用技能,安装即用:
353
+ TIL 内置 8 个实用技能,安装即用:
309
354
 
310
355
  | 技能 | 说明 |
311
356
  |------|------|
@@ -313,13 +358,21 @@ TIL 内置 5 个实用技能,安装即用:
313
358
  | **find-skills** | 从开源社区发现和安装新技能 |
314
359
  | **self-improvement** | 自动记录错误、学习和修正,持续改进 |
315
360
  | **skill-creator** | 创建新技能的指南和最佳实践 |
316
- | **playwright-mcp** | Playwright MCP 浏览器自动化配置和用法 |
361
+ | **agent-browser** | agent-browser 浏览器自动化工作流和最佳实践 |
362
+ | **excel-xlsx** | 创建、检查和编辑 Excel 工作簿(公式、日期、类型、格式、兼容性) |
363
+ | **word-docx** | 创建、检查和编辑 Word 文档(样式、编号、修订、表格、兼容性) |
364
+ | **nano-pdf** | 使用自然语言指令编辑 PDF 文件 |
317
365
 
318
- ### 查看和使用技能
366
+ ### 技能管理
319
367
 
320
- ```
321
- /skills # 列出所有已加载技能(显示来源:内置/用户/项目)
322
- /skill:summarize # 查看 summarize 技能详情
368
+ ```bash
369
+ /skills # 列出所有已加载技能(显示来源和状态)
370
+ /skill:summarize # 查看 summarize 技能详情
371
+ /skills reload # 重新扫描并加载技能(热重载)
372
+ /skills install steipete/nano-pdf # 从远程安装技能(npx skills add)
373
+ /skills disable excel-xlsx # 暂时禁用技能(不删文件)
374
+ /skills enable excel-xlsx # 重新启用技能
375
+ /skills rm my-old-skill # 从磁盘删除用户/项目技能(内置技能不可删除)
323
376
  ```
324
377
 
325
378
  ### 自定义技能
@@ -398,10 +451,10 @@ til --resume abc12345 # 恢复指定会话
398
451
  实时显示使用率:
399
452
 
400
453
  ```
401
- in:12.3k out:1.2k cache_r:8.0k ctx:35%
454
+ in:12.3k out:1.2k ctx:35%
402
455
  ```
403
456
 
404
- - `in` 输入 token · `out` 输出 token · `cache_r/w` 缓存读写 · `ctx` 上下文占用率
457
+ - `in` 输入 token · `out` 输出 token · `ctx` 上下文占用率
405
458
 
406
459
  ## 安全拦截
407
460
 
@@ -448,12 +501,15 @@ til --setup
448
501
 
449
502
  ### 如何启用浏览器工具
450
503
 
451
- ```bash
452
- npm install playwright
453
- npx playwright install chromium
504
+ browser 工具基于 agent-browser,已内置为依赖。只需在配置中将 `browser` 加入 `defaultTools`:
505
+
506
+ ```json
507
+ {
508
+ "defaultTools": ["bash", "read", "write", "edit", "system_info", "file_manager", "web_search", "web_fetch", "screenshot", "computer", "browser"]
509
+ }
454
510
  ```
455
511
 
456
- 然后在配置中将 `browser` 加入 `defaultTools`,或使用 Playwright MCP。
512
+ agent-browser 会自动发现系统中的 Chrome。如果没有 Chrome,运行 `npx agent-browser install` 下载。
457
513
 
458
514
  ## 开发
459
515
 
@@ -502,7 +558,7 @@ til-cli/
502
558
  │ │ ├── web-fetch.ts # 网页抓取
503
559
  │ │ ├── screenshot.ts # 截图
504
560
  │ │ ├── computer.ts # Computer Use(鼠标/键盘/截图)
505
- │ │ └── browser.ts # 浏览器控制(Playwright
561
+ │ │ └── browser.ts # 浏览器控制(agent-browser CLI
506
562
  │ ├── extensions/ # 扩展系统
507
563
  │ │ ├── types.ts # 扩展/MCP 类型定义
508
564
  │ │ ├── loader.ts # 扩展加载器
@@ -514,7 +570,10 @@ til-cli/
514
570
  │ ├── find-skills/
515
571
  │ ├── self-improving-agent/
516
572
  │ ├── skill-creator/
517
- └── playwright-mcp/
573
+ ├── agent-browser/
574
+ │ ├── excel-xlsx/
575
+ │ ├── word-docx/
576
+ │ └── nano-pdf/
518
577
  ├── tests/ # 单元测试
519
578
  ├── package.json
520
579
  ├── tsconfig.json
@@ -37,6 +37,8 @@ export interface TilConfig {
37
37
  mcpServers?: Record<string, McpServerConfig>;
38
38
  /** Paths to extension files (.js/.mjs) */
39
39
  extensions?: string[];
40
+ /** Names of skills that are temporarily disabled */
41
+ disabledSkills?: string[];
40
42
  /** @deprecated use `providers` */
41
43
  apiKeys?: Record<string, string>;
42
44
  /** @deprecated use `model` */
@@ -64,6 +66,9 @@ export declare function resolveBaseUrl(model: ModelConfig, config: TilConfig): s
64
66
  export declare function guessProvider(modelId: string): string;
65
67
  export declare function getKnownModelIds(): string[];
66
68
  export declare function getKnownModels(): Record<string, ModelConfig>;
69
+ export declare function getProjectConfigPath(cwd: string): string;
70
+ export declare function loadProjectMcpServers(cwd: string): Record<string, McpServerConfig>;
71
+ export declare function saveProjectMcpServers(cwd: string, servers: Record<string, McpServerConfig>): Promise<void>;
67
72
  export declare function getProviderDisplayInfo(provider: string, config: TilConfig): {
68
73
  hasKey: boolean;
69
74
  baseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,14 @@
3
3
  * Stores provider settings (API keys, base URLs, headers),
4
4
  * default model, and tool preferences in ~/.til/config.json.
5
5
  */
6
- import { existsSync } from "node:fs";
6
+ import { existsSync, readFileSync } from "node:fs";
7
7
  import { mkdir, readFile, writeFile } from "node:fs/promises";
8
- import { dirname, join } from "node:path";
8
+ import { dirname, join, resolve } from "node:path";
9
9
  import { homedir } from "node:os";
10
10
  const DEFAULT_CONFIG = {
11
11
  model: "",
12
12
  providers: {},
13
- defaultTools: ["bash", "read", "write", "edit", "system_info", "file_manager", "web_search", "web_fetch", "screenshot", "computer"],
13
+ defaultTools: ["bash", "read", "write", "edit", "system_info", "file_manager", "web_search", "web_fetch", "screenshot", "computer", "browser"],
14
14
  };
15
15
  const DEFAULT_BASE_URLS = {
16
16
  anthropic: "https://api.anthropic.com/v1",
@@ -206,6 +206,36 @@ export function getKnownModelIds() {
206
206
  export function getKnownModels() {
207
207
  return {};
208
208
  }
209
+ // ── Project-level MCP Config ──
210
+ export function getProjectConfigPath(cwd) {
211
+ return join(resolve(cwd), ".til", "config.json");
212
+ }
213
+ export function loadProjectMcpServers(cwd) {
214
+ const configPath = getProjectConfigPath(cwd);
215
+ if (!existsSync(configPath))
216
+ return {};
217
+ try {
218
+ const content = readFileSync(configPath, "utf-8");
219
+ const parsed = JSON.parse(content);
220
+ return parsed.mcpServers ?? {};
221
+ }
222
+ catch {
223
+ return {};
224
+ }
225
+ }
226
+ export async function saveProjectMcpServers(cwd, servers) {
227
+ const configPath = getProjectConfigPath(cwd);
228
+ let existing = {};
229
+ if (existsSync(configPath)) {
230
+ try {
231
+ existing = JSON.parse(readFileSync(configPath, "utf-8"));
232
+ }
233
+ catch { /* start fresh */ }
234
+ }
235
+ existing.mcpServers = servers;
236
+ await mkdir(dirname(configPath), { recursive: true });
237
+ await writeFile(configPath, JSON.stringify(existing, null, 2), "utf-8");
238
+ }
209
239
  export function getProviderDisplayInfo(provider, config) {
210
240
  const prov = config.providers[provider];
211
241
  const envVar = ENV_KEY_MAP[provider];
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/core/pricing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAYtD,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAe1E;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CASnE;AAED,wBAAgB,oBAAoB,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAItC"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/core/pricing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAYtD,CAAC;AAEF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAe1E;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAQnE;AAED,wBAAgB,oBAAoB,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAItC"}
@@ -55,8 +55,6 @@ export function formatUsage(usage, _modelId) {
55
55
  parts.push(`in:${formatTokenCount(usage.input)}`);
56
56
  if (usage.output)
57
57
  parts.push(`out:${formatTokenCount(usage.output)}`);
58
- if (usage.cacheRead)
59
- parts.push(`cache_r:${formatTokenCount(usage.cacheRead)}`);
60
58
  if (usage.cacheWrite)
61
59
  parts.push(`cache_w:${formatTokenCount(usage.cacheWrite)}`);
62
60
  return parts.join(" ");
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/core/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/core/pricing.ts"],"names":[],"mappings":"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"}
@@ -34,11 +34,14 @@ export declare class TilSession {
34
34
  readonly agent: Agent;
35
35
  readonly model: ModelConfig;
36
36
  readonly cwd: string;
37
- readonly skills: Skill[];
37
+ skills: Skill[];
38
38
  readonly sessionManager: SessionManager;
39
- readonly extensionRunner?: ExtensionRunner;
40
- readonly config: TilConfig;
39
+ extensionRunner?: ExtensionRunner;
40
+ config: TilConfig;
41
41
  private toolNames;
42
+ private baseToolNames;
43
+ private skillPaths?;
44
+ private noSkills;
42
45
  private customInstructions?;
43
46
  private _cumulativeUsage;
44
47
  private _lastTurnUsage?;
@@ -72,6 +75,10 @@ export declare class TilSession {
72
75
  };
73
76
  /** List sessions for the current cwd */
74
77
  static listSessions(cwd?: string): SessionInfo[];
78
+ /** Re-scan skill directories and update system prompt. */
79
+ reloadSkills(): Promise<void>;
80
+ /** Disconnect all MCP servers, re-read config, and reconnect. */
81
+ reloadMcpServers(): Promise<void>;
75
82
  private refreshSystemPrompt;
76
83
  }
77
84
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { Agent } from "./agent.js";
6
6
  import { buildSystemPrompt } from "./system-prompt.js";
7
- import { loadConfig, resolveModel, resolveApiKey, resolveBaseUrl } from "./config.js";
7
+ import { loadConfig, resolveModel, resolveApiKey, resolveBaseUrl, loadProjectMcpServers } from "./config.js";
8
8
  import { createAllTools, TOOL_NAMES, closeBrowser } from "../tools/index.js";
9
9
  import { loadSkills } from "./skills.js";
10
10
  import { loadMemory, getMemoryDisplay, loadProjectContextFiles } from "./memory.js";
@@ -24,19 +24,25 @@ export class TilSession {
24
24
  extensionRunner;
25
25
  config;
26
26
  toolNames;
27
+ baseToolNames;
28
+ skillPaths;
29
+ noSkills;
27
30
  customInstructions;
28
31
  _cumulativeUsage = createEmptyUsage();
29
32
  _lastTurnUsage;
30
- constructor(agent, model, cwd, config, skills, toolNames, sessionManager, customInstructions, extensionRunner) {
33
+ constructor(agent, model, cwd, config, skills, toolNames, baseToolNames, sessionManager, customInstructions, extensionRunner, skillPaths, noSkills) {
31
34
  this.agent = agent;
32
35
  this.model = model;
33
36
  this.cwd = cwd;
34
37
  this.config = config;
35
38
  this.skills = skills;
36
39
  this.toolNames = toolNames;
40
+ this.baseToolNames = baseToolNames;
37
41
  this.sessionManager = sessionManager;
38
42
  this.customInstructions = customInstructions;
39
43
  this.extensionRunner = extensionRunner;
44
+ this.skillPaths = skillPaths;
45
+ this.noSkills = noSkills ?? false;
40
46
  }
41
47
  static async create(options = {}) {
42
48
  const config = await loadConfig();
@@ -45,7 +51,7 @@ export class TilSession {
45
51
  const model = resolveModel(modelId, config);
46
52
  model.apiKey = resolveApiKey(model, config);
47
53
  model.baseUrl = options.baseUrl ?? resolveBaseUrl(model, config);
48
- // Load skills
54
+ // Load skills (filter out disabled ones)
49
55
  const skillResult = options.noSkills
50
56
  ? { skills: [], diagnostics: [] }
51
57
  : loadSkills({
@@ -53,7 +59,8 @@ export class TilSession {
53
59
  skillPaths: options.skillPaths,
54
60
  includeDefaults: true,
55
61
  });
56
- const skills = skillResult.skills;
62
+ const disabledSet = new Set(config.disabledSkills ?? []);
63
+ const skills = skillResult.skills.filter((s) => !disabledSet.has(s.name));
57
64
  const toolNames = options.tools ?? config.defaultTools ?? [...TOOL_NAMES.DEFAULT];
58
65
  const allToolsMap = new Map();
59
66
  for (const tool of createAllTools(cwd)) {
@@ -67,8 +74,11 @@ export class TilSession {
67
74
  const extensionToolNames = [];
68
75
  try {
69
76
  const loadedExtensions = await loadAllExtensions(cwd, config);
70
- // Load MCP servers as a built-in extension
71
- if (config.mcpServers && Object.keys(config.mcpServers).length > 0) {
77
+ // Load MCP servers as a built-in extension (merge global + project-level)
78
+ const globalMcp = config.mcpServers ?? {};
79
+ const projectMcp = loadProjectMcpServers(cwd);
80
+ const mergedMcp = { ...globalMcp, ...projectMcp };
81
+ if (Object.keys(mergedMcp).length > 0) {
72
82
  const mcpExtension = {
73
83
  path: "<builtin:mcp>",
74
84
  name: "mcp",
@@ -87,7 +97,7 @@ export class TilSession {
87
97
  mcpExtension.handlers.get(event).push(handler);
88
98
  },
89
99
  };
90
- await registerMcpServers(mcpApi, config.mcpServers);
100
+ await registerMcpServers(mcpApi, mergedMcp);
91
101
  loadedExtensions.push(mcpExtension);
92
102
  }
93
103
  if (loadedExtensions.length > 0) {
@@ -136,7 +146,7 @@ export class TilSession {
136
146
  else {
137
147
  sm = SessionManager.create(cwd, model.id);
138
148
  }
139
- const session = new TilSession(agent, model, cwd, config, skills, allToolNamesList, sm, options.customInstructions, extensionRunner);
149
+ const session = new TilSession(agent, model, cwd, config, skills, allToolNamesList, [...toolNames], sm, options.customInstructions, extensionRunner, options.skillPaths, options.noSkills);
140
150
  // Auto-persist, usage tracking, and extension event forwarding
141
151
  agent.subscribe((event) => {
142
152
  if (event.type === "message_end") {
@@ -254,6 +264,97 @@ export class TilSession {
254
264
  static listSessions(cwd) {
255
265
  return SessionManager.list(cwd ?? process.cwd());
256
266
  }
267
+ /** Re-scan skill directories and update system prompt. */
268
+ async reloadSkills() {
269
+ if (this.noSkills)
270
+ return;
271
+ const freshConfig = await loadConfig();
272
+ this.config = freshConfig;
273
+ const result = loadSkills({
274
+ cwd: this.cwd,
275
+ skillPaths: this.skillPaths,
276
+ includeDefaults: true,
277
+ });
278
+ const disabledSet = new Set(this.config.disabledSkills ?? []);
279
+ this.skills = result.skills.filter((s) => !disabledSet.has(s.name));
280
+ this.refreshSystemPrompt();
281
+ }
282
+ /** Disconnect all MCP servers, re-read config, and reconnect. */
283
+ async reloadMcpServers() {
284
+ // Shutdown existing MCP connections
285
+ if (this.extensionRunner) {
286
+ await this.extensionRunner.shutdown(this.cwd);
287
+ }
288
+ // Re-read config
289
+ const config = await loadConfig();
290
+ this.config = config;
291
+ const globalMcp = config.mcpServers ?? {};
292
+ const projectMcp = loadProjectMcpServers(this.cwd);
293
+ const mergedMcp = { ...globalMcp, ...projectMcp };
294
+ // Remove old MCP tools from agent
295
+ this.toolNames = this.toolNames.filter((t) => !t.startsWith("mcp_"));
296
+ // Reload all extensions + MCP
297
+ try {
298
+ const loadedExtensions = await loadAllExtensions(this.cwd, config);
299
+ if (Object.keys(mergedMcp).length > 0) {
300
+ const mcpExtension = {
301
+ path: "<builtin:mcp>",
302
+ name: "mcp",
303
+ tools: new Map(),
304
+ commands: new Map(),
305
+ handlers: new Map(),
306
+ };
307
+ const mcpApi = {
308
+ cwd: this.cwd,
309
+ config,
310
+ registerTool(tool) { mcpExtension.tools.set(tool.name, tool); },
311
+ registerCommand(cmd) { mcpExtension.commands.set(cmd.name, cmd); },
312
+ on(event, handler) {
313
+ if (!mcpExtension.handlers.has(event))
314
+ mcpExtension.handlers.set(event, []);
315
+ mcpExtension.handlers.get(event).push(handler);
316
+ },
317
+ };
318
+ await registerMcpServers(mcpApi, mergedMcp);
319
+ loadedExtensions.push(mcpExtension);
320
+ }
321
+ if (loadedExtensions.length > 0) {
322
+ this.extensionRunner = new ExtensionRunner(loadedExtensions);
323
+ const extensionTools = this.extensionRunner.getAllTools();
324
+ const newMcpToolNames = [];
325
+ for (const tool of extensionTools) {
326
+ newMcpToolNames.push(tool.name);
327
+ }
328
+ this.toolNames = [...this.baseToolNames, ...newMcpToolNames];
329
+ // Update agent tools: base tools + new extension tools
330
+ const allToolsMap = new Map();
331
+ for (const tool of createAllTools(this.cwd)) {
332
+ allToolsMap.set(tool.name, tool);
333
+ }
334
+ const selectedTools = this.baseToolNames
335
+ .map((name) => allToolsMap.get(name))
336
+ .filter((t) => t !== undefined);
337
+ selectedTools.push(...extensionTools);
338
+ this.agent.setTools(selectedTools);
339
+ }
340
+ else {
341
+ this.extensionRunner = undefined;
342
+ this.toolNames = [...this.baseToolNames];
343
+ const allToolsMap = new Map();
344
+ for (const tool of createAllTools(this.cwd)) {
345
+ allToolsMap.set(tool.name, tool);
346
+ }
347
+ const selectedTools = this.baseToolNames
348
+ .map((name) => allToolsMap.get(name))
349
+ .filter((t) => t !== undefined);
350
+ this.agent.setTools(selectedTools);
351
+ }
352
+ }
353
+ catch (err) {
354
+ console.error(`MCP reload warning: ${err.message}`);
355
+ }
356
+ this.refreshSystemPrompt();
357
+ }
257
358
  refreshSystemPrompt() {
258
359
  const memory = loadMemory(this.cwd);
259
360
  const contextFiles = loadProjectContextFiles(this.cwd);