staff-mcp 1.0.0 → 1.0.2

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
@@ -2,44 +2,42 @@
2
2
 
3
3
  [English](./README.md) | [简体中文](./README_zh.md)
4
4
 
5
- A powerful Model Context Protocol (MCP) server providing file management, shell execution, and LSP capabilities. Built for seamless integration with AI assistants like Claude Desktop, IDE plugins, and custom agents.
5
+ A robust Model Context Protocol (MCP) server that provides AI assistants with a secure, cross-platform environment for file management, shell execution, and LSP-powered code intelligence.
6
6
 
7
- ## 🚀 Quick Start
7
+ ---
8
8
 
9
- ### Installation
9
+ ## 🚀 Usage
10
10
 
11
- ```bash
12
- npm install
13
- npm run build
14
- ```
11
+ Use this section if you want to run the published package.
15
12
 
16
- ### Running the Server
13
+ ### Run with npx
17
14
 
18
- **Using npx (Quickest)**
15
+ Recommended command:
19
16
 
20
17
  ```bash
21
- # From local directory
22
- npx . --working-dir /path/to/your/project
23
-
24
- # If published to npm (e.g., @your-org/staff-mcp)
25
- # npx -y @your-org/staff-mcp --working-dir /path/to/your/project
18
+ npx -y staff-mcp@latest --working-dir /path/to/your/project
26
19
  ```
27
20
 
28
- **Stdio Mode (Recommended for Claude Desktop)**
29
-
30
- ```bash
31
- # Using npm (Recommended)
32
- npm start -- --working-dir /path/to/your/project
33
- ```
34
-
35
- **HTTP Mode**
36
-
37
- ```bash
38
- # Using npm
39
- npm start -- --transport http --port 3000
40
-
41
- # Using node directly
42
- node dist/src/index.js --transport http --port 3000
21
+ Using `@latest` is the safest option for a published CLI package and avoids resolution issues such as `could not determine executable to run`.
22
+
23
+ ### Configure for Claude Desktop
24
+
25
+ Add the following to your `claude_desktop_config.json`:
26
+
27
+ ```json
28
+ {
29
+ "mcpServers": {
30
+ "staff-mcp": {
31
+ "command": "npx",
32
+ "args": [
33
+ "-y",
34
+ "staff-mcp@latest",
35
+ "--working-dir",
36
+ "/path/to/your/project"
37
+ ]
38
+ }
39
+ }
40
+ }
43
41
  ```
44
42
 
45
43
  ### CLI Arguments
@@ -49,41 +47,86 @@ node dist/src/index.js --transport http --port 3000
49
47
  | `--working-dir` | Root directory for the sandbox | `process.cwd()` |
50
48
  | `--allowed-dir` | Extra directories allowed for access | `[]` |
51
49
  | `--transport` | Transport type (`stdio` or `http`) | `stdio` |
52
- | `--port` | Port for HTTP server | `3000` |
50
+ | `--port` | Port for HTTP server (if using http) | `3000` |
51
+
52
+ ### Skill Loading
53
+
54
+ `staff-mcp` can work with skill directories if they already exist in your workspace or home directory. To use them, place skill files in any supported location such as:
55
+
56
+ - `.staff/skills/<skill-name>/SKILL.md`
57
+ - `.claude/skills/<skill-name>/SKILL.md`
58
+ - `.agents/skills/<skill-name>/SKILL.md`
59
+ - `.opencode/skills/<skill-name>/SKILL.md`
60
+
61
+ The server discovers them automatically at startup.
53
62
 
54
63
  ---
55
64
 
56
- ## 🛠️ Supported MCP Features
65
+ ## 🛠️ Core Features
66
+
67
+ - **File Operations**: Secure read, write, delete, and list operations within the sandbox.
68
+ - **Shell Integration**: Execute non-interactive commands or start background tasks (e.g., dev servers).
69
+ - **Code Intelligence**: LSP-based symbol extraction and diagnostics for better code understanding.
70
+ - **Skill System**: Automatically detects and loads domain-specific instructions from `.staff/skills/`, `.claude/skills/`, and `.agents/skills/`.
71
+ - **Environment Awareness**: Native support for Windows (CMD/PowerShell) and Unix-like (Bash/Sh) systems.
57
72
 
58
- - **Tools**: Comprehensive file operations, shell execution, and LSP support.
59
- - **Skills & Prompts**: Compatible with the `SKILL.md` format. Automatically detects skills in `.staff/skills/`, `.claude/skills/`, etc.
60
- - **MCP Native Support**: Implements the `instructions` mechanism to provide model context for environment awareness (OS, shell, etc.) and tool relationships.
73
+ ### Adding Skills
61
74
 
62
- ### Skill File Format (`SKILL.md`)
75
+ Create a `SKILL.md` file in `.staff/skills/your-skill/`:
63
76
 
64
77
  ```markdown
65
78
  ---
66
79
  name: my-skill
67
- description: Skill description
80
+ description: Custom logic for my project
68
81
  ---
69
- Skill instructions here...
82
+ Add your domain-specific instructions or workflows here.
70
83
  ```
71
84
 
72
85
  ---
73
86
 
74
- ## 💻 Cross-Platform Compatibility
87
+ ## 🧪 Development
75
88
 
76
- `staff-mcp` handles environment differences automatically:
77
- - **Paths**: Resolves `\` (Windows) and `/` (Unix) based on host OS.
78
- - **Shell**: Uses `cmd.exe` on Windows and `sh` on Linux/macOS.
79
- - **Line Endings**: Supports both `CRLF` and `LF` for file operations.
89
+ Use this section only if you want to work on the repository itself.
80
90
 
81
- ## 🧪 Development
91
+ ### Local setup
82
92
 
83
93
  ```bash
94
+ git clone https://github.com/your-username/staff-mcp.git
95
+ cd staff-mcp
96
+ npm install
97
+ npm run build
98
+ ```
99
+
100
+ ### Run the local build
101
+
102
+ ```bash
103
+ node dist/src/index.js --working-dir ./test-workspace
104
+ ```
105
+
106
+ ### Run with npm scripts
107
+
108
+ ```bash
109
+ npm start -- --working-dir ./test-workspace
84
110
  npm run dev -- --working-dir ./test-workspace
85
111
  ```
86
112
 
113
+ ## ✅ Testing
114
+
115
+ Examples for verifying the package behavior separately from normal usage:
116
+
117
+ ### Verify the published package
118
+
119
+ ```bash
120
+ npx -y staff-mcp@latest --working-dir /tmp
121
+ ```
122
+
123
+ ### Verify the local build
124
+
125
+ ```bash
126
+ npm run build
127
+ node dist/src/index.js --working-dir /tmp
128
+ ```
129
+
87
130
  ## 📄 License
88
131
 
89
132
  MIT
package/README_zh.md CHANGED
@@ -2,44 +2,42 @@
2
2
 
3
3
  [English](./README.md) | [简体中文](./README_zh.md)
4
4
 
5
- 一个功能强大的 Model Context Protocol (MCP) 服务端,提供文件管理、Shell 执行和 LSP 能力。专为 AI 助手(如 Claude Desktop、IDE 插件和自定义 Agent)的无缝集成而设计。
5
+ 一个稳健的 Model Context Protocol (MCP) 服务端,为 AI 助手提供安全、跨平台的文件管理、Shell 执行和基于 LSP 的代码智能环境。
6
6
 
7
- ## 🚀 快速开始
8
-
9
- ### 安装
10
-
11
- ```bash
12
- npm install
13
- npm run build
14
- ```
7
+ ---
15
8
 
16
- ### 运行服务
9
+ ## 🚀 使用
17
10
 
18
- **使用 npx (最快方式)**
11
+ 这一节用于说明如何直接使用已发布的包,而不是如何开发或测试这个仓库。
19
12
 
20
- ```bash
21
- # 在项目本地运行
22
- npx . --working-dir /你的项目/路径
23
-
24
- # 如果已发布到 npm (例如 @your-org/staff-mcp)
25
- # npx -y @your-org/staff-mcp --working-dir /你的项目/路径
26
- ```
13
+ ### 使用 npx 运行
27
14
 
28
- **Stdio 模式 (Claude Desktop 推荐方式)**
15
+ 推荐命令:
29
16
 
30
17
  ```bash
31
- # 使用 npm (推荐)
32
- npm start -- --working-dir /你的项目/路径
18
+ npx -y staff-mcp@latest --working-dir /你的项目/路径
33
19
  ```
34
20
 
35
- **HTTP 模式**
36
-
37
- ```bash
38
- # 使用 npm
39
- npm start -- --transport http --port 3000
40
-
41
- # 使用 node 直接启动
42
- node dist/src/index.js --transport http --port 3000
21
+ 对于已发布的 CLI 包,显式使用 `@latest` 更稳妥,也可以避免类似 `could not determine executable to run` 的解析问题。
22
+
23
+ ### 在 Claude Desktop 中配置
24
+
25
+ 将以下内容添加到你的 `claude_desktop_config.json` 文件中:
26
+
27
+ ```json
28
+ {
29
+ "mcpServers": {
30
+ "staff-mcp": {
31
+ "command": "npx",
32
+ "args": [
33
+ "-y",
34
+ "staff-mcp@latest",
35
+ "--working-dir",
36
+ "/你的项目/路径"
37
+ ]
38
+ }
39
+ }
40
+ }
43
41
  ```
44
42
 
45
43
  ### 命令行参数
@@ -49,41 +47,84 @@ node dist/src/index.js --transport http --port 3000
49
47
  | `--working-dir` | 沙箱根目录 | `process.cwd()` |
50
48
  | `--allowed-dir` | 额外允许访问的目录 | `[]` |
51
49
  | `--transport` | 传输方式 (`stdio` 或 `http`) | `stdio` |
52
- | `--port` | HTTP 服务端口 | `3000` |
50
+ | `--port` | HTTP 服务端口 (如果使用 http 模式) | `3000` |
51
+
52
+ ### Skill 加载方式
53
+
54
+ 如果你的工作区或用户目录里已经存在 skill 目录,`staff-mcp` 会在启动时自动发现并加载。可用目录示例:
55
+
56
+ - `.staff/skills/<skill-name>/SKILL.md`
57
+ - `.claude/skills/<skill-name>/SKILL.md`
58
+ - `.agents/skills/<skill-name>/SKILL.md`
59
+ - `.opencode/skills/<skill-name>/SKILL.md`
53
60
 
54
61
  ---
55
62
 
56
- ## 🛠️ 支持的 MCP 特性
63
+ ## 🛠️ 核心特性
64
+
65
+ - **文件操作**: 在沙箱范围内提供安全的读、写、删除和列表操作。
66
+ - **Shell 集成**: 执行非交互式命令或启动后台任务(如开发服务器)。
67
+ - **代码智能**: 基于 LSP 的符号提取和诊断,帮助 AI 更好地理解代码结构。
68
+ - **技能系统 (Skills)**: 自动检测并加载 `.staff/skills/`、`.claude/skills/` 和 `.agents/skills/` 目录下的领域特定指令。
69
+ - **环境感知**: 原生支持 Windows (CMD/PowerShell) 和 Unix-like (Bash/Sh) 系统。
57
70
 
58
- - **Tools (工具)**: 提供完整的文件操作、Shell 执行和 LSP(符号/诊断)支持。
59
- - **Skills (技能)**: 兼容 `SKILL.md` 格式。自动检测并注册 `.staff/skills/`、`.claude/skills/` 等目录下的技能及 Prompts。
60
- - **MCP 原生支持**: 实现了 `instructions` 机制,为模型自动提供环境感知(OS、Shell、路径规则)及工具调用建议。
71
+ ### 如何添加技能
61
72
 
62
- ### Skill 文件格式 (`SKILL.md`)
73
+ `.staff/skills/your-skill/` 目录下创建一个 `SKILL.md` 文件:
63
74
 
64
75
  ```markdown
65
76
  ---
66
77
  name: my-skill
67
- description: 技能描述
78
+ description: 我的项目专属逻辑
68
79
  ---
69
- 这里是技能的具体指令...
80
+ 在此处添加你的领域特定指令或工作流。
70
81
  ```
71
82
 
72
83
  ---
73
84
 
74
- ## 💻 跨平台兼容性
85
+ ## 🧪 开发
75
86
 
76
- `staff-mcp` 自动处理环境差异:
77
- - **路径**: 根据宿主系统解析 `\` (Windows) 或 `/` (Unix)。
78
- - **Shell**: Windows 使用 `cmd.exe`,Linux/macOS 使用 `sh`。
79
- - **换行符**: 文件操作支持 `CRLF` 和 `LF`。
87
+ 这一节只面向要修改仓库源码的开发者。
80
88
 
81
- ## 🧪 开发
89
+ ### 本地准备
90
+
91
+ ```bash
92
+ git clone https://github.com/your-username/staff-mcp.git
93
+ cd staff-mcp
94
+ npm install
95
+ npm run build
96
+ ```
97
+
98
+ ### 运行本地构建产物
82
99
 
83
100
  ```bash
101
+ node dist/src/index.js --working-dir ./test-workspace
102
+ ```
103
+
104
+ ### 使用 npm 脚本运行
105
+
106
+ ```bash
107
+ npm start -- --working-dir ./test-workspace
84
108
  npm run dev -- --working-dir ./test-workspace
85
109
  ```
86
110
 
111
+ ## ✅ 测试
112
+
113
+ 这一节单独用于说明如何验证包是否可用,而不是日常使用方式。
114
+
115
+ ### 验证已发布包
116
+
117
+ ```bash
118
+ npx -y staff-mcp@latest --working-dir /tmp
119
+ ```
120
+
121
+ ### 验证本地构建
122
+
123
+ ```bash
124
+ npm run build
125
+ node dist/src/index.js --working-dir /tmp
126
+ ```
127
+
87
128
  ## 📄 开源协议
88
129
 
89
130
  MIT
package/dist/src/index.js CHANGED
File without changes
@@ -0,0 +1,33 @@
1
+ export interface LSPConfig {
2
+ command: string[];
3
+ installCommand?: string;
4
+ extensions: string[];
5
+ }
6
+ export declare class LSPClient {
7
+ private config;
8
+ private rootPath;
9
+ private process;
10
+ private idCounter;
11
+ private handlers;
12
+ private buffer;
13
+ constructor(config: LSPConfig, rootPath: string);
14
+ start(): Promise<void>;
15
+ private notificationHandlers;
16
+ private handleData;
17
+ onNotification(method: string, handler: (params: any) => void): void;
18
+ request(method: string, params: any): Promise<any>;
19
+ notification(method: string, params: any): Promise<void>;
20
+ stop(): void;
21
+ }
22
+ export declare class LSPManager {
23
+ readonly DEFAULT_CONFIGS: Record<string, LSPConfig>;
24
+ private clients;
25
+ private lspDir;
26
+ constructor();
27
+ ensureServer(language: string): Promise<void>;
28
+ getClient(language: string, rootPath: string): Promise<LSPClient>;
29
+ getDiagnostics(filePath: string, rootPath: string): Promise<any[]>;
30
+ hover(filePath: string, line: number, character: number, rootPath: string): Promise<string>;
31
+ go_to_definition_internal(filePath: string, line: number, character: number, rootPath: string): Promise<string>;
32
+ }
33
+ export declare const lspManager: LSPManager;
@@ -0,0 +1,286 @@
1
+ import { spawn } from "child_process";
2
+ import * as path from "path";
3
+ import * as os from "os";
4
+ import * as fs from "fs";
5
+ const DEFAULT_CONFIGS = {
6
+ typescript: {
7
+ command: ["node", path.join(os.homedir(), ".staff/lsp/node_modules/typescript-language-server/lib/cli.mjs"), "--stdio"],
8
+ installCommand: "npm install --prefix " + path.join(os.homedir(), ".staff/lsp") + " typescript-language-server typescript",
9
+ extensions: [".ts", ".tsx", ".js", ".jsx"]
10
+ },
11
+ python: {
12
+ command: ["node", path.join(os.homedir(), ".staff/lsp/node_modules/pyright/dist/pyright-langserver.js"), "--stdio"],
13
+ installCommand: "npm install --prefix " + path.join(os.homedir(), ".staff/lsp") + " pyright",
14
+ extensions: [".py"]
15
+ },
16
+ go: {
17
+ command: ["gopls"],
18
+ installCommand: "go install golang.org/x/tools/gopls@latest",
19
+ extensions: [".go"]
20
+ },
21
+ cpp: {
22
+ command: ["clangd"],
23
+ installCommand: "echo 'Please install clangd (e.g., sudo apt install clangd)'",
24
+ extensions: [".c", ".cpp", ".h", ".hpp"]
25
+ },
26
+ java: {
27
+ command: ["jdtls"],
28
+ installCommand: "echo 'Please install jdtls and ensure it is in your PATH'",
29
+ extensions: [".java"]
30
+ },
31
+ kotlin: {
32
+ command: ["kotlin-language-server"],
33
+ installCommand: "echo 'Please install kotlin-language-server and ensure it is in your PATH'",
34
+ extensions: [".kt", ".kts"]
35
+ },
36
+ rust: {
37
+ command: ["rust-analyzer"],
38
+ installCommand: "rustup component add rust-analyzer",
39
+ extensions: [".rs"]
40
+ }
41
+ };
42
+ export class LSPClient {
43
+ config;
44
+ rootPath;
45
+ process = null;
46
+ idCounter = 0;
47
+ handlers = new Map();
48
+ buffer = "";
49
+ constructor(config, rootPath) {
50
+ this.config = config;
51
+ this.rootPath = rootPath;
52
+ }
53
+ async start() {
54
+ this.process = spawn(this.config.command[0], this.config.command.slice(1), {
55
+ cwd: this.rootPath,
56
+ stdio: ["pipe", "pipe", "pipe"]
57
+ });
58
+ this.process.stdout?.on("data", (data) => {
59
+ this.handleData(data.toString());
60
+ });
61
+ this.process.stderr?.on("data", (data) => {
62
+ console.error(`[LSP Error]: ${data.toString()}`);
63
+ });
64
+ // Initialize
65
+ await this.request("initialize", {
66
+ processId: process.pid,
67
+ rootUri: `file://${this.rootPath}`,
68
+ capabilities: {},
69
+ workspaceFolders: [{ uri: `file://${this.rootPath}`, name: "workspace" }]
70
+ });
71
+ await this.notification("initialized", {});
72
+ }
73
+ notificationHandlers = new Map();
74
+ handleData(data) {
75
+ this.buffer += data;
76
+ while (true) {
77
+ const match = this.buffer.match(/Content-Length: (\d+)\r\n\r\n/);
78
+ if (!match)
79
+ break;
80
+ const contentLength = parseInt(match[1]);
81
+ const headerLength = match[0].length;
82
+ const totalLength = headerLength + contentLength;
83
+ if (this.buffer.length < totalLength)
84
+ break;
85
+ const body = this.buffer.slice(headerLength, totalLength);
86
+ this.buffer = this.buffer.slice(totalLength);
87
+ try {
88
+ const response = JSON.parse(body);
89
+ if (response.id !== undefined) {
90
+ const handler = this.handlers.get(response.id);
91
+ if (handler) {
92
+ handler(response);
93
+ this.handlers.delete(response.id);
94
+ }
95
+ }
96
+ else if (response.method) {
97
+ const handler = this.notificationHandlers.get(response.method);
98
+ if (handler) {
99
+ handler(response.params);
100
+ }
101
+ }
102
+ }
103
+ catch (e) {
104
+ console.error("Failed to parse LSP response", e);
105
+ }
106
+ }
107
+ }
108
+ onNotification(method, handler) {
109
+ this.notificationHandlers.set(method, handler);
110
+ }
111
+ async request(method, params) {
112
+ const id = this.idCounter++;
113
+ const message = {
114
+ jsonrpc: "2.0",
115
+ id,
116
+ method,
117
+ params
118
+ };
119
+ const json = JSON.stringify(message);
120
+ const header = `Content-Length: ${Buffer.byteLength(json, "utf8")}\r\n\r\n`;
121
+ return new Promise((resolve) => {
122
+ this.handlers.set(id, (res) => resolve(res.result));
123
+ this.process?.stdin?.write(header + json);
124
+ });
125
+ }
126
+ async notification(method, params) {
127
+ const message = {
128
+ jsonrpc: "2.0",
129
+ method,
130
+ params
131
+ };
132
+ const json = JSON.stringify(message);
133
+ const header = `Content-Length: ${Buffer.byteLength(json, "utf8")}\r\n\r\n`;
134
+ this.process?.stdin?.write(header + json);
135
+ }
136
+ stop() {
137
+ this.process?.kill();
138
+ this.process = null;
139
+ }
140
+ }
141
+ export class LSPManager {
142
+ DEFAULT_CONFIGS = DEFAULT_CONFIGS;
143
+ clients = new Map();
144
+ lspDir = path.join(os.homedir(), ".staff/lsp");
145
+ constructor() {
146
+ if (!fs.existsSync(this.lspDir)) {
147
+ fs.mkdirSync(this.lspDir, { recursive: true });
148
+ }
149
+ }
150
+ async ensureServer(language) {
151
+ const config = DEFAULT_CONFIGS[language];
152
+ if (!config || !config.installCommand)
153
+ return;
154
+ // Check if the command exists in PATH
155
+ const cmd = config.command[0];
156
+ const { execSync } = await import("child_process");
157
+ try {
158
+ const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
159
+ execSync(checkCmd, { stdio: 'ignore' });
160
+ return; // Found in PATH
161
+ }
162
+ catch {
163
+ // Not in PATH, check if it's a specific node_module path we manage
164
+ if (path.isAbsolute(cmd) && fs.existsSync(cmd)) {
165
+ return;
166
+ }
167
+ // Check common user bin path for go
168
+ if (language === 'go') {
169
+ const goBin = path.join(os.homedir(), 'go', 'bin', 'gopls');
170
+ if (fs.existsSync(goBin)) {
171
+ config.command[0] = goBin;
172
+ return;
173
+ }
174
+ }
175
+ console.log(`LSP server '${cmd}' not found. Attempting install for ${language}...`);
176
+ try {
177
+ // Use inherit only for major installs to avoid blocking
178
+ execSync(config.installCommand, { stdio: 'pipe' });
179
+ }
180
+ catch (e) {
181
+ console.error(`Failed to install LSP for ${language}:`, e);
182
+ }
183
+ }
184
+ }
185
+ async getClient(language, rootPath) {
186
+ const key = `${language}:${rootPath}`;
187
+ if (this.clients.has(key))
188
+ return this.clients.get(key);
189
+ await this.ensureServer(language);
190
+ const config = DEFAULT_CONFIGS[language];
191
+ if (!config)
192
+ throw new Error(`Unsupported language: ${language}`);
193
+ // Verify binary exists before spawning
194
+ const cmd = config.command[0];
195
+ const { execSync } = await import("child_process");
196
+ try {
197
+ const checkCmd = process.platform === 'win32' ? `where ${cmd}` : `which ${cmd}`;
198
+ execSync(checkCmd, { stdio: 'ignore' });
199
+ }
200
+ catch {
201
+ if (!path.isAbsolute(cmd) || !fs.existsSync(cmd)) {
202
+ throw new Error(`LSP server binary '${cmd}' not found for ${language}`);
203
+ }
204
+ }
205
+ const client = new LSPClient(config, rootPath);
206
+ await client.start();
207
+ this.clients.set(key, client);
208
+ return client;
209
+ }
210
+ async getDiagnostics(filePath, rootPath) {
211
+ const ext = path.extname(filePath);
212
+ const lang = Object.keys(DEFAULT_CONFIGS).find(l => DEFAULT_CONFIGS[l].extensions.includes(ext));
213
+ if (!lang)
214
+ return [];
215
+ const client = await this.getClient(lang, rootPath);
216
+ const uri = `file://${filePath}`;
217
+ // Ensure file is opened and notified to server
218
+ const content = fs.readFileSync(filePath, "utf-8");
219
+ await client.notification("textDocument/didOpen", {
220
+ textDocument: {
221
+ uri,
222
+ languageId: lang,
223
+ version: 1,
224
+ text: content
225
+ }
226
+ });
227
+ return new Promise(async (resolve) => {
228
+ let resolved = false;
229
+ const timeout = setTimeout(() => {
230
+ if (!resolved) {
231
+ resolved = true;
232
+ resolve([]);
233
+ }
234
+ }, 3000); // Wait for async diagnostics
235
+ client.onNotification("textDocument/publishDiagnostics", (params) => {
236
+ // Normalize path for comparison
237
+ const paramPath = params.uri.replace("file://", "");
238
+ const checkPath = filePath.startsWith("/") ? filePath : `/${filePath}`;
239
+ if (paramPath.endsWith(filePath) && !resolved) {
240
+ resolved = true;
241
+ clearTimeout(timeout);
242
+ resolve(params.diagnostics);
243
+ }
244
+ });
245
+ });
246
+ }
247
+ async hover(filePath, line, character, rootPath) {
248
+ const ext = path.extname(filePath);
249
+ const lang = Object.keys(DEFAULT_CONFIGS).find(l => DEFAULT_CONFIGS[l].extensions.includes(ext));
250
+ if (!lang)
251
+ return "Unsupported language";
252
+ const client = await this.getClient(lang, rootPath);
253
+ const result = await client.request("textDocument/hover", {
254
+ textDocument: { uri: `file://${filePath}` },
255
+ position: { line, character }
256
+ });
257
+ if (!result || !result.contents)
258
+ return "No hover information found";
259
+ if (typeof result.contents === "string")
260
+ return result.contents;
261
+ if (Array.isArray(result.contents))
262
+ return result.contents.map((c) => typeof c === "string" ? c : c.value).join("\n");
263
+ return result.contents.value || "No hover information found";
264
+ }
265
+ async go_to_definition_internal(filePath, line, character, rootPath) {
266
+ const ext = path.extname(filePath);
267
+ const lang = Object.keys(DEFAULT_CONFIGS).find(l => DEFAULT_CONFIGS[l].extensions.includes(ext));
268
+ if (!lang)
269
+ throw new Error(`Unsupported language for extension ${ext}`);
270
+ const client = await this.getClient(lang, rootPath);
271
+ const result = await client.request("textDocument/definition", {
272
+ textDocument: { uri: `file://${filePath}` },
273
+ position: { line: line - 1, character: character - 1 }
274
+ });
275
+ if (!result)
276
+ return "Definition not found";
277
+ const locations = Array.isArray(result) ? result : [result];
278
+ return locations.map((loc) => {
279
+ const uri = loc.uri || loc.targetUri;
280
+ const range = loc.range || loc.targetSelectionRange;
281
+ return `${uri.replace('file://', '')}:${range.start.line + 1}`;
282
+ }).join("\n");
283
+ }
284
+ }
285
+ export const lspManager = new LSPManager();
286
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/lsp/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getWorkspaceArtifactPolicy(): string;
@@ -0,0 +1,21 @@
1
+ export function getWorkspaceArtifactPolicy() {
2
+ return `
3
+ Workspace Artifact Policy:
4
+ Before creating any file, classify it as either a user-facing deliverable or an assistant-only working artifact.
5
+
6
+ Rules:
7
+ - User-facing deliverables should be placed according to the current task and the workspace's own conventions.
8
+ - Assistant-only working artifacts should be kept in a hidden assistant work area, defaulting to '.staff/', unless the workspace already defines another scratch location.
9
+ - Assistant-only working artifacts include temporary experiments, reproduction scripts, disposable test files, logs, progress notes, planning documents, checkpoints, derived metadata, and caches.
10
+ - Recommended default layout under '.staff/':
11
+ - '.staff/tmp/' for temporary experiments and one-off outputs
12
+ - '.staff/notes/' for plans, findings, and progress summaries
13
+ - '.staff/logs/' for command output, traces, and runtime logs
14
+ - '.staff/state/' for session or task state and checkpoints
15
+ - '.staff/cache/' for reusable derived data that is not part of the deliverable
16
+ - Do not mix assistant-only working artifacts with user deliverables unless explicitly requested.
17
+ - If unsure whether a file is a deliverable, treat it as an assistant-only working artifact first.
18
+ - If the target workspace already has explicit conventions for generated or scratch material, follow those conventions instead of the default hidden layout.
19
+ `.trim();
20
+ }
21
+ //# sourceMappingURL=workspace-artifact-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-artifact-policy.js","sourceRoot":"","sources":["../../../src/policies/workspace-artifact-policy.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,0BAA0B;IACxC,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -18,4 +18,5 @@ export declare class SecurityManager {
18
18
  */
19
19
  validateDirectory(dirPath: string): string;
20
20
  getAllowedDirs(): string[];
21
+ getWorkingDir(): string;
21
22
  }
@@ -47,5 +47,8 @@ export class SecurityManager {
47
47
  getAllowedDirs() {
48
48
  return [...this.allowedDirs];
49
49
  }
50
+ getWorkingDir() {
51
+ return this.workingDir;
52
+ }
50
53
  }
51
54
  //# sourceMappingURL=security.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,OAAO,eAAe;IAClB,WAAW,CAAW;IACtB,UAAU,CAAS;IAE3B,YAAY,UAAkB,EAAE,cAAwB,EAAE;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,sCAAsC;QACtC,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;OAMG;IACI,sBAAsB,CAAC,UAAkB,EAAE,GAAY;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAEvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,uCAAuC,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH;;OAEG;IACI,iBAAiB,CAAC,OAAe;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,+BAA+B,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,OAAO,eAAe;IAClB,WAAW,CAAW;IACtB,UAAU,CAAS;IAE3B,YAAY,UAAkB,EAAE,cAAwB,EAAE;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,sCAAsC;QACtC,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;OAMG;IACI,sBAAsB,CAAC,UAAkB,EAAE,GAAY;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAEvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,uCAAuC,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH;;OAEG;IACI,iBAAiB,CAAC,OAAe;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,+BAA+B,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
@@ -2,7 +2,7 @@ import * as fs from "fs/promises";
2
2
  import * as path from "path";
3
3
  import { z } from "zod";
4
4
  import { CHARACTER_LIMIT } from "../constants.js";
5
- import { getPathDiagnostics } from "./lsp-tools.js";
5
+ import { lspManager } from "../lsp/manager.js";
6
6
  /**
7
7
  * Registers file-related tools using the latest registerTool API.
8
8
  */
@@ -78,12 +78,12 @@ export function registerFileTools(server, security) {
78
78
  const updatedContent = content.slice(0, index) + newText + content.slice(index + oldText.length);
79
79
  await fs.writeFile(validatedPath, updatedContent, "utf-8");
80
80
  let response = `Successfully updated ${filePath}`;
81
- // Add diagnostics feedback for TS files
82
- if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) {
83
- const diagnostics = await getPathDiagnostics(filePath, security);
84
- if (diagnostics) {
85
- response += `\n\nWarning: TypeScript diagnostics found after editing:\n${diagnostics}`;
86
- }
81
+ // Add diagnostics feedback
82
+ const rootPath = security.getWorkingDir();
83
+ const diagnostics = await lspManager.getDiagnostics(validatedPath, rootPath);
84
+ if (diagnostics && diagnostics.length > 0) {
85
+ const formatted = diagnostics.map((d) => `[Line ${d.range.start.line + 1}] ${d.message}`).join("\n");
86
+ response += `\n\nWarning: LSP diagnostics found after editing:\n${formatted}`;
87
87
  }
88
88
  return {
89
89
  content: [{ type: "text", text: response }],
@@ -109,12 +109,12 @@ export function registerFileTools(server, security) {
109
109
  await fs.mkdir(path.dirname(validatedPath), { recursive: true });
110
110
  await fs.writeFile(validatedPath, content, "utf-8");
111
111
  let response = `Successfully wrote file: ${filePath}`;
112
- // Add diagnostics feedback for TS files
113
- if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) {
114
- const diagnostics = await getPathDiagnostics(filePath, security);
115
- if (diagnostics) {
116
- response += `\n\nWarning: TypeScript diagnostics found after writing:\n${diagnostics}`;
117
- }
112
+ // Add diagnostics feedback
113
+ const rootPath = security.getWorkingDir();
114
+ const diagnostics = await lspManager.getDiagnostics(validatedPath, rootPath);
115
+ if (diagnostics && diagnostics.length > 0) {
116
+ const formatted = diagnostics.map((d) => `[Line ${d.range.start.line + 1}] ${d.message}`).join("\n");
117
+ response += `\n\nWarning: LSP diagnostics found after writing:\n${formatted}`;
118
118
  }
119
119
  return {
120
120
  content: [{ type: "text", text: response }],
@@ -1 +1 @@
1
- {"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../src/tools/file-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,QAAyB;IAC5E,YAAY;IACZ,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACvF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SAC9F,CAAC,CAAC,MAAM,EAAE;KACZ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEzC,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;gBACrE,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,GAAG,iBAAiB,KAAK,GAAG,CAAC,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;YACrE,CAAC;YAED,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;gBACrC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,wCAAwC,CAAC;YAC7F,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;aACpD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,0FAA0F;QACvG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACtD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;YACvH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SACtE,CAAC,CAAC,MAAM,EAAE;KACZ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAE1D,oDAAoD;YACpD,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAErC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,6CAA6C;gBAC7C,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjE,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;gBAEzC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7C,qFAAqF;oBACrF,oFAAoF;oBACpF,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6HAA6H,EAAE,CAAC;wBAChK,OAAO,EAAE,IAAI;qBACd,CAAC;gBACL,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sDAAsD,QAAQ,4CAA4C,EAAE,CAAC;oBAC7I,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACjG,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAE3D,IAAI,QAAQ,GAAG,wBAAwB,QAAQ,EAAE,CAAC;YAElD,wCAAwC;YACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjE,IAAI,WAAW,EAAE,CAAC;oBAChB,QAAQ,IAAI,6DAA6D,WAAW,EAAE,CAAC;gBACzF,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,aAAa;IACb,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACvD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SAChE,CAAC,CAAC,MAAM,EAAE;KACZ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAEpD,IAAI,QAAQ,GAAG,4BAA4B,QAAQ,EAAE,CAAC;YAEtD,wCAAwC;YACxC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjE,IAAI,WAAW,EAAE,CAAC;oBAChB,QAAQ,IAAI,6DAA6D,WAAW,EAAE,CAAC;gBACzF,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,cAAc;IACd,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,2CAA2C;QACxD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACzD,CAAC,CAAC,MAAM,EAAE;KACZ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE/B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,QAAQ,EAAE,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,WAAW;IACX,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACrF,CAAC,CAAC,MAAM,EAAE;KACZ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACjC,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,sBAAsB,EAAE,CAAC;aACpE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE,sFAAsF;QACnG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;SACpG,CAAC,CAAC,MAAM,EAAE;KACZ,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAErD,KAAK,UAAU,iBAAiB,CAAC,UAAkB;gBACjD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEnD,6CAA6C;oBAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;wBAAE,SAAS;oBAErE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBACpC,CAAC;yBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;wBAEjD,uCAAuC;wBACvC,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BAAE,SAAS;wBAE/E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACrD,IAAI,KAAK,CAAC;wBACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4BACpD,qDAAqD;4BACrD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;4BACxE,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;4BACpD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BAE1D,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gCACzB,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;gCACjE,OAAO;4BACT,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEjC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC;aAC7E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { SecurityManager } from "../security.js";
3
- /**
4
- * Internal helper to get diagnostics for a specific path.
5
- */
6
- export declare function getPathDiagnostics(checkPath: string, security: SecurityManager): Promise<string>;
7
3
  /**
8
4
  * Registers LSP-related tools using the latest registerTool API.
9
5
  */
@@ -1,48 +1,25 @@
1
1
  import { Project } from "ts-morph";
2
2
  import { z } from "zod";
3
- /**
4
- * Internal helper to get diagnostics for a specific path.
5
- */
6
- export async function getPathDiagnostics(checkPath, security) {
7
- const validatedPath = security.resolveAndValidatePath(checkPath);
8
- const project = new Project();
9
- project.addSourceFilesAtPaths([
10
- validatedPath.endsWith(".ts") || validatedPath.endsWith(".js")
11
- ? validatedPath
12
- : `${validatedPath}/**/*.{ts,js,tsx,jsx}`
13
- ]);
14
- const diagnostics = project.getPreEmitDiagnostics();
15
- return diagnostics.map(diag => {
16
- const messageText = diag.getMessageText();
17
- const line = diag.getLineNumber();
18
- const file = diag.getSourceFile()?.getFilePath() || "Unknown file";
19
- const formattedMessage = typeof messageText === "string" ? messageText : messageText.getMessageText();
20
- return `[${file}:${line}] ${formattedMessage}`;
21
- }).join("\n");
22
- }
3
+ import { lspManager } from "../lsp/manager.js";
23
4
  /**
24
5
  * Registers LSP-related tools using the latest registerTool API.
25
6
  */
26
7
  export function registerLspTools(server, security) {
27
- // get_document_symbols
28
- server.registerTool("get_document_symbols", {
29
- description: "Extract high-level symbols (classes, functions, interfaces) from a TypeScript file.",
8
+ // hover
9
+ server.registerTool("hover", {
10
+ description: "Get hover information (type, documentation) at a specific position.",
30
11
  inputSchema: z.object({
31
- path: z.string().describe("TypeScript/JavaScript file path to analyze."),
12
+ path: z.string().describe("File path to inspect."),
13
+ line: z.number().describe("1-based line number."),
14
+ character: z.number().describe("1-based character position."),
32
15
  }).strict(),
33
- }, async ({ path: filePath }) => {
16
+ }, async ({ path: filePath, line, character }) => {
34
17
  try {
35
18
  const validatedPath = security.resolveAndValidatePath(filePath);
36
- const project = new Project();
37
- const sourceFile = project.addSourceFileAtPath(validatedPath);
38
- const symbols = [];
39
- sourceFile.getClasses().forEach(c => symbols.push(`[Class] ${c.getName()} (Line ${c.getStartLineNumber()})`));
40
- sourceFile.getInterfaces().forEach(i => symbols.push(`[Interface] ${i.getName()} (Line ${i.getStartLineNumber()})`));
41
- sourceFile.getFunctions().forEach(f => symbols.push(`[Function] ${f.getName()} (Line ${f.getStartLineNumber()})`));
42
- sourceFile.getEnums().forEach(e => symbols.push(`[Enum] ${e.getName()} (Line ${e.getStartLineNumber()})`));
43
- sourceFile.getTypeAliases().forEach(t => symbols.push(`[TypeAlias] ${t.getName()} (Line ${t.getStartLineNumber()})`));
19
+ const rootPath = security.getWorkingDir();
20
+ const result = await lspManager.hover(validatedPath, line - 1, character - 1, rootPath);
44
21
  return {
45
- content: [{ type: "text", text: symbols.join("\n") || "(No significant symbols found)" }],
22
+ content: [{ type: "text", text: result }],
46
23
  };
47
24
  }
48
25
  catch (error) {
@@ -54,15 +31,70 @@ export function registerLspTools(server, security) {
54
31
  });
55
32
  // get_diagnostics
56
33
  server.registerTool("get_diagnostics", {
57
- description: "Get TypeScript diagnostics/errors for a file or directory.",
34
+ description: "Get diagnostics/errors for a file (supports TS, JS, Python).",
58
35
  inputSchema: z.object({
59
- path: z.string().describe("File or directory path to check for TypeScript diagnostics."),
36
+ path: z.string().describe("File path to check for diagnostics."),
60
37
  }).strict(),
61
38
  }, async ({ path: checkPath }) => {
62
39
  try {
63
- const output = await getPathDiagnostics(checkPath, security);
40
+ const validatedPath = security.resolveAndValidatePath(checkPath);
41
+ const rootPath = security.workingDir;
42
+ const diagnostics = await lspManager.getDiagnostics(validatedPath, rootPath);
43
+ const formatted = diagnostics.map((d) => `[Line ${d.range.start.line + 1}] ${d.message} (${d.severity === 1 ? 'Error' : 'Warning'})`).join("\n");
44
+ return {
45
+ content: [{ type: "text", text: formatted || "No diagnostics found." }],
46
+ };
47
+ }
48
+ catch (error) {
64
49
  return {
65
- content: [{ type: "text", text: output || "No TypeScript diagnostics found." }],
50
+ content: [{ type: "text", text: `LSP Error: ${error.message}` }],
51
+ isError: true,
52
+ };
53
+ }
54
+ });
55
+ // go_to_definition
56
+ server.registerTool("go_to_definition", {
57
+ description: "Find the definition of a symbol at a specific position.",
58
+ inputSchema: z.object({
59
+ path: z.string().describe("File path to inspect."),
60
+ line: z.number().describe("1-based line number."),
61
+ character: z.number().describe("1-based character position."),
62
+ }).strict(),
63
+ }, async ({ path: filePath, line, character }) => {
64
+ try {
65
+ const validatedPath = security.resolveAndValidatePath(filePath);
66
+ const rootPath = security.getWorkingDir();
67
+ const result = await lspManager.go_to_definition_internal(validatedPath, line, character, rootPath);
68
+ return {
69
+ content: [{ type: "text", text: result }],
70
+ };
71
+ }
72
+ catch (error) {
73
+ return {
74
+ content: [{ type: "text", text: `LSP Error: ${error.message}` }],
75
+ isError: true,
76
+ };
77
+ }
78
+ });
79
+ // get_document_symbols
80
+ server.registerTool("get_document_symbols", {
81
+ description: "Extract high-level symbols (classes, functions, interfaces) from a TypeScript file.",
82
+ inputSchema: z.object({
83
+ path: z.string().describe("TypeScript/JavaScript file path to analyze."),
84
+ }).strict(),
85
+ }, async ({ path: filePath }) => {
86
+ try {
87
+ const validatedPath = security.resolveAndValidatePath(filePath);
88
+ const project = new Project();
89
+ const sourceFile = project.addSourceFileAtPath(validatedPath);
90
+ const symbols = [];
91
+ sourceFile.getClasses().forEach(c => symbols.push(`[Class] ${c.getName()} (Line ${c.getStartLineNumber()})`));
92
+ sourceFile.getInterfaces().forEach(i => symbols.push(`[Interface] ${i.getName()} (Line ${i.getStartLineNumber()})`));
93
+ sourceFile.getFunctions().forEach(f => symbols.push(`[Function] ${f.getName()} (Line ${f.getStartLineNumber()})`));
94
+ sourceFile.getEnums().forEach(e => symbols.push(`[Enum] ${e.getName()} (Line ${e.getStartLineNumber()})`));
95
+ sourceFile.getTypeAliases().forEach(t => symbols.push(`[TypeAlias] ${t.getName()} (Line ${t.getStartLineNumber()})`));
96
+ return {
97
+ content: [{ type: "text", text: symbols.join("\n") || "(No significant symbols found)" }],
66
98
  };
67
99
  }
68
100
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-tools.js","sourceRoot":"","sources":["../../../src/tools/lsp-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-tools.js","sourceRoot":"","sources":["../../../src/tools/lsp-tools.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as os from "os";
2
2
  import * as path from "path";
3
+ import { getWorkspaceArtifactPolicy } from "../policies/workspace-artifact-policy.js";
3
4
  /**
4
5
  * Returns a concise instruction string for the MCP server to guide tool usage.
5
6
  * Focuses on environment context and tool relationships rather than defining identity.
@@ -31,6 +32,8 @@ Tool Usage Guidance:
31
32
  4. Specialized Skills: If a '.staff/skills' or '.claude/skills' directory exists, use the 'skill' tool to load domain-specific workflows which will augment your current context.
32
33
  5. Search & Replace: When refactoring, use 'search_file_content' to find all occurrences, then 'edit_file_by_replace' for precise, line-based replacements.
33
34
  6. Verification: Use 'get_diagnostics' after editing code to ensure no errors were introduced.
35
+
36
+ ${getWorkspaceArtifactPolicy()}
34
37
  `.trim();
35
38
  }
36
39
  //# sourceMappingURL=system-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-tools.js","sourceRoot":"","sources":["../../../src/tools/system-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,QAAyB;IAC9E,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAE9C,OAAO;;;QAGD,QAAQ;mBACG,KAAK;uBACD,UAAU;2CACU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;qBAC5C,IAAI,CAAC,GAAG;;;;;;;;;;;OAWtB,KAAK,CAAC,CAAC,CAAC,6HAA6H,CAAC,CAAC,CAAC,6GAA6G;;;;CAI3P,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"system-tools.js","sourceRoot":"","sources":["../../../src/tools/system-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,QAAyB;IAC9E,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAE9C,OAAO;;;QAGD,QAAQ;mBACG,KAAK;uBACD,UAAU;2CACU,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;qBAC5C,IAAI,CAAC,GAAG;;;;;;;;;;;OAWtB,KAAK,CAAC,CAAC,CAAC,6HAA6H,CAAC,CAAC,CAAC,6GAA6G;;;;;EAK1P,0BAA0B,EAAE;CAC7B,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import { test } from "node:test";
2
+ import assert from "node:assert";
3
+ import { SecurityManager } from "../src/security.js";
4
+ import { getMcpInstructions } from "../src/tools/system-tools.js";
5
+ test("getMcpInstructions - should describe a default hidden work area for assistant-only artifacts", () => {
6
+ const workingDir = "/tmp/workspace";
7
+ const security = new SecurityManager(workingDir);
8
+ const instructions = getMcpInstructions(workingDir, security);
9
+ assert.match(instructions, /Workspace Artifact Policy/);
10
+ assert.match(instructions, /assistant-only working artifacts/i);
11
+ assert.match(instructions, /hidden assistant work area, defaulting to '\.staff\/'/i);
12
+ assert.match(instructions, /\.staff\/tmp\//);
13
+ assert.match(instructions, /\.staff\/notes\//);
14
+ assert.match(instructions, /\.staff\/logs\//);
15
+ assert.match(instructions, /\.staff\/state\//);
16
+ assert.match(instructions, /\.staff\/cache\//);
17
+ });
18
+ test("getMcpInstructions - should prefer workspace conventions for deliverables and scratch material", () => {
19
+ const workingDir = "/tmp/workspace";
20
+ const security = new SecurityManager(workingDir);
21
+ const instructions = getMcpInstructions(workingDir, security);
22
+ assert.match(instructions, /User-facing deliverables should be placed according to the current task and the workspace's own conventions\./);
23
+ assert.match(instructions, /If the target workspace already has explicit conventions for generated or scratch material, follow those conventions instead of the default hidden layout\./);
24
+ assert.match(instructions, /Do not mix assistant-only working artifacts with user deliverables unless explicitly requested\./);
25
+ });
26
+ //# sourceMappingURL=system-tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-tools.test.js","sourceRoot":"","sources":["../../tests/system-tools.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,IAAI,CAAC,8FAA8F,EAAE,GAAG,EAAE;IACxG,MAAM,UAAU,GAAG,gBAAgB,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9D,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,mCAAmC,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,wDAAwD,CAAC,CAAC;IACrF,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gGAAgG,EAAE,GAAG,EAAE;IAC1G,MAAM,UAAU,GAAG,gBAAgB,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9D,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,+GAA+G,CAAC,CAAC;IAC5I,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,6JAA6J,CAAC,CAAC;IAC1L,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,kGAAkG,CAAC,CAAC;AACjI,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "staff-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "main": "dist/src/index.js",
6
6
  "bin": {