ysagc-agent 0.9.5 → 0.9.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +137 -10
- package/dist/agent.js.map +1 -1
- package/dist/browser.d.ts +31 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +609 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +69 -0
- package/dist/cli.js.map +1 -1
- package/dist/executor.d.ts +6 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +46 -0
- package/dist/executor.js.map +1 -1
- package/dist/hooks.d.ts +29 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +211 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +92 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +746 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +14 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +148 -0
- package/dist/memory.js.map +1 -0
- package/dist/protocol-handler.d.ts +8 -0
- package/dist/protocol-handler.d.ts.map +1 -0
- package/dist/protocol-handler.js +127 -0
- package/dist/protocol-handler.js.map +1 -0
- package/dist/protocol.d.ts +60 -3
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -1
- package/dist/protocol.js.map +1 -1
- package/dist/screenshot.d.ts +15 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +385 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +18 -4
- package/dist/security.js.map +1 -1
- package/dist/tools.d.ts +22 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +470 -78
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.hooksDisabled = hooksDisabled;
|
|
37
|
+
exports.loadHooks = loadHooks;
|
|
38
|
+
exports.runPreHooks = runPreHooks;
|
|
39
|
+
exports.runPostHooks = runPostHooks;
|
|
40
|
+
exports.attachHookResult = attachHookResult;
|
|
41
|
+
exports.describeHooks = describeHooks;
|
|
42
|
+
exports.clearHooksCache = clearHooksCache;
|
|
43
|
+
exports.writeSampleHooks = writeSampleHooks;
|
|
44
|
+
// ============================================================================
|
|
45
|
+
// hooks:工具调用前后自动执行命令(工作区级配置)
|
|
46
|
+
// ----------------------------------------------------------------------------
|
|
47
|
+
// 解决什么问题:有些事「每次都得做」,但只能靠每轮叮嘱 AI —— 而 AI 会漏。
|
|
48
|
+
// - 改完 .ts/.vue 要跑 prettier / eslint --fix
|
|
49
|
+
// - 写完文件要跑一遍类型检查
|
|
50
|
+
// - 动完迁移文件要提醒
|
|
51
|
+
// 配一次 hooks,之后每次命中都自动跑,不用再靠 prompt 兜。
|
|
52
|
+
//
|
|
53
|
+
// 配置位置:<工作区根>/.ysagc/hooks.json(跟着项目走,用户看得见、能提交进 git)
|
|
54
|
+
// {
|
|
55
|
+
// "post_tool": { "write_file": "npx prettier --write {{path}}", "*": "" },
|
|
56
|
+
// "pre_tool": { "run_command": "echo about to run {{tool}}" }
|
|
57
|
+
// }
|
|
58
|
+
// 占位符:{{path}} 工具的目标路径 / {{tool}} 工具名
|
|
59
|
+
//
|
|
60
|
+
// 几条硬规则(都是为了不把工作台变成后门):
|
|
61
|
+
// 1) hook 命令照样过危险命令检测(isDangerCommand)—— 配置文件里写 rm -rf / 也会被拦;
|
|
62
|
+
// 2) hook 失败**不推翻工具本身**(文件已经写成功了),但会把失败信息回给模型,让它知道;
|
|
63
|
+
// 3) 超时短(默认 30s)、输出截断,避免一个卡死的 hook 拖垮整个任务;
|
|
64
|
+
// 4) 用 YSAGC_HOOKS=0 可整体关掉(排查问题时用)。
|
|
65
|
+
const fs = __importStar(require("node:fs"));
|
|
66
|
+
const node_fs_1 = require("node:fs");
|
|
67
|
+
const path = __importStar(require("node:path"));
|
|
68
|
+
const path_utils_1 = require("./path-utils");
|
|
69
|
+
const security_1 = require("./security");
|
|
70
|
+
const executor_1 = require("./executor");
|
|
71
|
+
const HOOKS_REL = path.join('.ysagc', 'hooks.json');
|
|
72
|
+
const HOOK_TIMEOUT_MS = Math.max(3000, Number(process.env.YSAGC_HOOK_TIMEOUT_MS || 30000));
|
|
73
|
+
const MAX_HOOK_OUTPUT = 1200;
|
|
74
|
+
/** 配置缓存:按文件 mtime 失效,避免每次工具调用都读盘 */
|
|
75
|
+
const cache = new Map();
|
|
76
|
+
function hooksDisabled() {
|
|
77
|
+
return String(process.env.YSAGC_HOOKS || '') === '0';
|
|
78
|
+
}
|
|
79
|
+
function hooksPathOf(root) {
|
|
80
|
+
try {
|
|
81
|
+
const r = (0, path_utils_1.canonicalize)(root);
|
|
82
|
+
const p = (0, path_utils_1.safeResolve)(r, HOOKS_REL, r, { allowEqual: false });
|
|
83
|
+
if ((0, security_1.isSensitivePath)(p))
|
|
84
|
+
return null;
|
|
85
|
+
return p;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** 读配置(带 mtime 缓存)。读不到/解析失败一律当「没配」,绝不因此让工具调用失败。 */
|
|
92
|
+
function loadHooks(root) {
|
|
93
|
+
if (hooksDisabled())
|
|
94
|
+
return {};
|
|
95
|
+
const p = hooksPathOf(root);
|
|
96
|
+
if (!p)
|
|
97
|
+
return {};
|
|
98
|
+
try {
|
|
99
|
+
if (!fs.existsSync(p))
|
|
100
|
+
return {};
|
|
101
|
+
const st = fs.statSync(p);
|
|
102
|
+
const hit = cache.get(p);
|
|
103
|
+
if (hit && hit.mtime === st.mtimeMs)
|
|
104
|
+
return hit.config;
|
|
105
|
+
const raw = JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
106
|
+
const cfg = {
|
|
107
|
+
pre_tool: raw && typeof raw.pre_tool === 'object' ? raw.pre_tool : {},
|
|
108
|
+
post_tool: raw && typeof raw.post_tool === 'object' ? raw.post_tool : {},
|
|
109
|
+
};
|
|
110
|
+
cache.set(p, { mtime: st.mtimeMs, config: cfg });
|
|
111
|
+
return cfg;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return {};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/** 取某个工具命中的 hook 命令:精确名优先,其次通配 "*" */
|
|
118
|
+
function hookFor(map, tool) {
|
|
119
|
+
if (!map)
|
|
120
|
+
return '';
|
|
121
|
+
const exact = String(map[tool] || '').trim();
|
|
122
|
+
if (exact)
|
|
123
|
+
return exact;
|
|
124
|
+
return String(map['*'] || '').trim();
|
|
125
|
+
}
|
|
126
|
+
function fillTemplate(cmd, tool, args) {
|
|
127
|
+
const target = String((args.path ?? args.file_path ?? args.name ?? '') || '');
|
|
128
|
+
return cmd.replace(/\{\{\s*tool\s*\}\}/g, tool).replace(/\{\{\s*path\s*\}\}/g, target);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 跑一条 hook 命令。
|
|
132
|
+
* 复用 executor.runCommand(带超时/输出上限),所以行为和 run_command 完全一致。
|
|
133
|
+
*/
|
|
134
|
+
async function runHook(ctx, command, tool, args) {
|
|
135
|
+
const filled = fillTemplate(command, tool, args);
|
|
136
|
+
const danger = (0, security_1.isDangerCommand)(filled);
|
|
137
|
+
if (danger.danger) {
|
|
138
|
+
return { command: filled, ok: false, output: `hook 被安全策略拦下(${danger.reason})`, blocked: true };
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
// 复用 executor.runCommand:超时、输出上限、脱敏都和 run_command 完全一致
|
|
142
|
+
const res = await (0, executor_1.runCommand)({
|
|
143
|
+
command: filled,
|
|
144
|
+
cwd: ctx.root,
|
|
145
|
+
timeoutMs: HOOK_TIMEOUT_MS,
|
|
146
|
+
maxBytes: Math.min(Number(ctx.maxBytes) || 64000, 64000),
|
|
147
|
+
});
|
|
148
|
+
const text = [res.stdout, res.stderr].filter(Boolean).join('\n').trim().slice(0, MAX_HOOK_OUTPUT);
|
|
149
|
+
return { command: filled, ok: res.exitCode === 0 && !res.timedOut, output: text };
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
return { command: filled, ok: false, output: String(e?.message || e).slice(0, MAX_HOOK_OUTPUT) };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** pre_tool:在工具执行**前**跑。返回 null 表示没配 / 不需要拦。 */
|
|
156
|
+
async function runPreHooks(ctx, tool, args) {
|
|
157
|
+
const cmd = hookFor(loadHooks(ctx.root).pre_tool, tool);
|
|
158
|
+
if (!cmd)
|
|
159
|
+
return null;
|
|
160
|
+
return runHook(ctx, cmd, tool, args);
|
|
161
|
+
}
|
|
162
|
+
/** post_tool:工具**成功**后跑。失败的工具不触发(避免对着半成品又跑一遍格式化)。 */
|
|
163
|
+
async function runPostHooks(ctx, tool, args) {
|
|
164
|
+
const cmd = hookFor(loadHooks(ctx.root).post_tool, tool);
|
|
165
|
+
if (!cmd)
|
|
166
|
+
return null;
|
|
167
|
+
return runHook(ctx, cmd, tool, args);
|
|
168
|
+
}
|
|
169
|
+
/** 把 hook 结果并进工具返回值:模型看得到「hook 做了什么 / 失败了什么」 */
|
|
170
|
+
function attachHookResult(outcome, hook, phase) {
|
|
171
|
+
const label = phase === 'pre' ? '前置 hook' : '后置 hook';
|
|
172
|
+
const note = hook.ok
|
|
173
|
+
? `${label} \`${hook.command}\` 执行成功${hook.output ? `:${hook.output}` : ''}`
|
|
174
|
+
: `${label} \`${hook.command}\` 执行失败${hook.output ? `:${hook.output}` : ''}`;
|
|
175
|
+
if (!outcome.result || typeof outcome.result !== 'object') {
|
|
176
|
+
return { ...outcome, result: { hook: note } };
|
|
177
|
+
}
|
|
178
|
+
return { ...outcome, result: { ...outcome.result, hook: note } };
|
|
179
|
+
}
|
|
180
|
+
/** 给「任务开始」时用:告诉模型这个工作区配了哪些 hooks(省得它以为是灵异事件) */
|
|
181
|
+
function describeHooks(root) {
|
|
182
|
+
const cfg = loadHooks(root);
|
|
183
|
+
const pre = Object.entries(cfg.pre_tool || {}).filter(([, v]) => String(v || '').trim());
|
|
184
|
+
const post = Object.entries(cfg.post_tool || {}).filter(([, v]) => String(v || '').trim());
|
|
185
|
+
if (!pre.length && !post.length)
|
|
186
|
+
return '';
|
|
187
|
+
const lines = [];
|
|
188
|
+
if (pre.length)
|
|
189
|
+
lines.push(`前置(执行前):${pre.map(([k, v]) => `${k} → ${v}`).join(';')}`);
|
|
190
|
+
if (post.length)
|
|
191
|
+
lines.push(`后置(执行后):${post.map(([k, v]) => `${k} → ${v}`).join(';')}`);
|
|
192
|
+
return `\n\n【本工作区已配置自动 hooks】\n${lines.join('\n')}\n(这些命令会在对应工具调用前后自动执行,你不需要自己再跑一遍;如果它们失败,工具结果里会带上 hook 的报错。)`;
|
|
193
|
+
}
|
|
194
|
+
/** 供 selftest / 调试:清掉配置缓存 */
|
|
195
|
+
function clearHooksCache() {
|
|
196
|
+
cache.clear();
|
|
197
|
+
}
|
|
198
|
+
/** 写入一份示例配置(供用户点「生成示例」时用) */
|
|
199
|
+
async function writeSampleHooks(root) {
|
|
200
|
+
const r = (0, path_utils_1.canonicalize)(root);
|
|
201
|
+
const p = (0, path_utils_1.safeResolve)(r, HOOKS_REL, r, { allowEqual: false });
|
|
202
|
+
await node_fs_1.promises.mkdir(path.dirname(p), { recursive: true });
|
|
203
|
+
const sample = {
|
|
204
|
+
pre_tool: {},
|
|
205
|
+
post_tool: { write_file: 'npx --no-install prettier --write {{path}}' },
|
|
206
|
+
};
|
|
207
|
+
await node_fs_1.promises.writeFile(p, JSON.stringify(sample, null, 2) + '\n', 'utf8');
|
|
208
|
+
clearHooksCache();
|
|
209
|
+
return HOOKS_REL;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ export { canonicalize, isWithinRoot, assertInsideRoot, safeResolve } from './pat
|
|
|
6
6
|
export type { WithinRootOptions } from './path-utils';
|
|
7
7
|
export { isDangerCommand, isSensitivePath, maskSecrets, MASK, } from './security';
|
|
8
8
|
export type { DangerAssessment, DangerSeverity } from './security';
|
|
9
|
-
export { createToolRegistry, preExecute, postExecute, walkTree, globToRegex } from './tools';
|
|
9
|
+
export { createToolRegistry, preExecute, postExecute, walkTree, globToRegex, listMcpTools, mcpFailuresFor, shutdownMcp } from './tools';
|
|
10
|
+
export { loadMcpConfig, mcpToolName, parseMcpToolName, renderMcpResult, writeSampleMcpConfig, mcpDisabled, McpManager, } from './mcp';
|
|
11
|
+
export type { McpToolDef, McpServerConfig, McpConfig } from './mcp';
|
|
10
12
|
export type { ToolRegistry, ToolContext, ToolResult, ToolOutcome, PreCheckOutcome, PostCheckOutcome, WalkEntry, } from './tools';
|
|
11
13
|
export { loadConfig, loadSavedConfig, saveConfig, resolveConfigPath, configFileExists, normalizeServerUrl, validateConfig, describeConfig, DEFAULT_SERVER, } from './config';
|
|
12
14
|
export type { AgentConfig, ConfigOverrides, PermissionMode, PermissionPreset, } from './config';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzF,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,IAAI,GACL,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzF,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,IAAI,GACL,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExI,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,GAC7G,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvF,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClG,YAAY,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/E,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,eAAe,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Public API for ysagc-agent.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.shouldUseShell = exports.tokenize = exports.sanitizeEnv = exports.runCommand = exports.computeUsage = exports.estimateTokens = exports.countTextTokens = exports.stableStringify = exports.computeIdempotencyKey = exports.decodeMessage = exports.encodeMessage = exports.promptMasked = exports.prompt = exports.isInteractiveStdin = exports.runOnboarding = exports.DEFAULT_SERVER = exports.describeConfig = exports.validateConfig = exports.normalizeServerUrl = exports.configFileExists = exports.resolveConfigPath = exports.saveConfig = exports.loadSavedConfig = exports.loadConfig = exports.McpManager = exports.mcpDisabled = exports.writeSampleMcpConfig = exports.renderMcpResult = exports.parseMcpToolName = exports.mcpToolName = exports.loadMcpConfig = exports.shutdownMcp = exports.mcpFailuresFor = exports.listMcpTools = exports.globToRegex = exports.walkTree = exports.postExecute = exports.preExecute = exports.createToolRegistry = exports.MASK = exports.maskSecrets = exports.isSensitivePath = exports.isDangerCommand = exports.safeResolve = exports.assertInsideRoot = exports.isWithinRoot = exports.canonicalize = exports.runSelfTest = exports.AGENT_VERSION = exports.startAgent = void 0;
|
|
5
|
+
exports.Logger = exports.loadSkillRecord = exports.loadSkill = exports.listSkills = void 0;
|
|
5
6
|
var agent_1 = require("./agent");
|
|
6
7
|
Object.defineProperty(exports, "startAgent", { enumerable: true, get: function () { return agent_1.startAgent; } });
|
|
7
8
|
Object.defineProperty(exports, "AGENT_VERSION", { enumerable: true, get: function () { return agent_1.AGENT_VERSION; } });
|
|
@@ -23,6 +24,17 @@ Object.defineProperty(exports, "preExecute", { enumerable: true, get: function (
|
|
|
23
24
|
Object.defineProperty(exports, "postExecute", { enumerable: true, get: function () { return tools_1.postExecute; } });
|
|
24
25
|
Object.defineProperty(exports, "walkTree", { enumerable: true, get: function () { return tools_1.walkTree; } });
|
|
25
26
|
Object.defineProperty(exports, "globToRegex", { enumerable: true, get: function () { return tools_1.globToRegex; } });
|
|
27
|
+
Object.defineProperty(exports, "listMcpTools", { enumerable: true, get: function () { return tools_1.listMcpTools; } });
|
|
28
|
+
Object.defineProperty(exports, "mcpFailuresFor", { enumerable: true, get: function () { return tools_1.mcpFailuresFor; } });
|
|
29
|
+
Object.defineProperty(exports, "shutdownMcp", { enumerable: true, get: function () { return tools_1.shutdownMcp; } });
|
|
30
|
+
var mcp_1 = require("./mcp");
|
|
31
|
+
Object.defineProperty(exports, "loadMcpConfig", { enumerable: true, get: function () { return mcp_1.loadMcpConfig; } });
|
|
32
|
+
Object.defineProperty(exports, "mcpToolName", { enumerable: true, get: function () { return mcp_1.mcpToolName; } });
|
|
33
|
+
Object.defineProperty(exports, "parseMcpToolName", { enumerable: true, get: function () { return mcp_1.parseMcpToolName; } });
|
|
34
|
+
Object.defineProperty(exports, "renderMcpResult", { enumerable: true, get: function () { return mcp_1.renderMcpResult; } });
|
|
35
|
+
Object.defineProperty(exports, "writeSampleMcpConfig", { enumerable: true, get: function () { return mcp_1.writeSampleMcpConfig; } });
|
|
36
|
+
Object.defineProperty(exports, "mcpDisabled", { enumerable: true, get: function () { return mcp_1.mcpDisabled; } });
|
|
37
|
+
Object.defineProperty(exports, "McpManager", { enumerable: true, get: function () { return mcp_1.McpManager; } });
|
|
26
38
|
var config_1 = require("./config");
|
|
27
39
|
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
|
|
28
40
|
Object.defineProperty(exports, "loadSavedConfig", { enumerable: true, get: function () { return config_1.loadSavedConfig; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,8BAA8B
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;AAE9B,iCAAoD;AAA3C,mGAAA,UAAU,OAAA;AAAE,sGAAA,aAAa,OAAA;AAGlC,6BAAoC;AAA3B,kGAAA,WAAW,OAAA;AAGpB,2CAAyF;AAAhF,0GAAA,YAAY,OAAA;AAAE,0GAAA,YAAY,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,yGAAA,WAAW,OAAA;AAGlE,uCAKoB;AAJlB,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,uGAAA,WAAW,OAAA;AACX,gGAAA,IAAI,OAAA;AAIN,iCAAwI;AAA/H,2GAAA,kBAAkB,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,oGAAA,WAAW,OAAA;AAEtH,6BAEe;AADb,oGAAA,aAAa,OAAA;AAAE,kGAAA,WAAW,OAAA;AAAE,uGAAA,gBAAgB,OAAA;AAAE,sGAAA,eAAe,OAAA;AAAE,2GAAA,oBAAoB,OAAA;AAAE,kGAAA,WAAW,OAAA;AAAE,iGAAA,UAAU,OAAA;AAa9G,mCAUkB;AAThB,oGAAA,UAAU,OAAA;AACV,yGAAA,eAAe,OAAA;AACf,oGAAA,UAAU,OAAA;AACV,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AAShB,2CAAuF;AAA9E,2GAAA,aAAa,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,0GAAA,YAAY,OAAA;AAGhE,uCAAkG;AAAzF,yGAAA,aAAa,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAe7E,mCAAyE;AAAhE,yGAAA,eAAe,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,sGAAA,YAAY,OAAA;AAGtD,uCAA+E;AAAtE,sGAAA,UAAU,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,0GAAA,cAAc,OAAA;AAG1D,mCAAkE;AAAzD,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA;AAG/C,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAGf,mCAAqC;AACrC,kBAAe,kBAAU,CAAC"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export interface McpServerConfig {
|
|
2
|
+
/** stdio 传输:要拉起的命令(与 url 二选一) */
|
|
3
|
+
command?: string;
|
|
4
|
+
args?: string[];
|
|
5
|
+
env?: Record<string, string>;
|
|
6
|
+
cwd?: string;
|
|
7
|
+
/**
|
|
8
|
+
* HTTP 传输(Streamable HTTP / 旧版 SSE):MCP server 的地址(与 command 二选一)。
|
|
9
|
+
* 远端 server、或本地以 HTTP 方式跑起来的 server 都用这个。
|
|
10
|
+
*/
|
|
11
|
+
url?: string;
|
|
12
|
+
/** HTTP 传输的请求头(如 Authorization)。支持 ${ENV_VAR} 形式从环境变量取值,避免把密钥写进仓库。 */
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
/** 默认 true;设为 false 可单独停用某个 server */
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface McpToolDef {
|
|
18
|
+
/** 平台侧使用的完整工具名:mcp__<server>__<tool> */
|
|
19
|
+
name: string;
|
|
20
|
+
server: string;
|
|
21
|
+
tool: string;
|
|
22
|
+
description: string;
|
|
23
|
+
inputSchema: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
export interface McpConfig {
|
|
26
|
+
mcpServers: Record<string, McpServerConfig>;
|
|
27
|
+
}
|
|
28
|
+
export declare function mcpDisabled(): boolean;
|
|
29
|
+
export declare function mcpConfigPath(root: string): string;
|
|
30
|
+
/** 读取工作区 MCP 配置;不存在/格式不对返回 null(不抛,避免拖垮 Agent 启动) */
|
|
31
|
+
export declare function loadMcpConfig(root: string): McpConfig | null;
|
|
32
|
+
/**
|
|
33
|
+
* 带原因的版本。
|
|
34
|
+
*
|
|
35
|
+
* 为什么需要它:JSON 里写 Windows 路径时 `\m` 这种是**非法转义**,JSON.parse 直接抛,
|
|
36
|
+
* 配置整个作废。以前这种情况只会表现为「一个 MCP 工具都没有」,用户完全看不出是自己
|
|
37
|
+
* 把反斜杠写错了。现在把原因带出来,经 mcp_tools 消息里的 failures 一路报到 UI。
|
|
38
|
+
*/
|
|
39
|
+
export declare function loadMcpConfigDetailed(root: string): {
|
|
40
|
+
config: McpConfig | null;
|
|
41
|
+
error?: string;
|
|
42
|
+
};
|
|
43
|
+
/** 工具名里的 server/tool 分隔符。用双下划线,和 Claude 的 mcp__server__tool 命名保持一致。 */
|
|
44
|
+
export declare const MCP_PREFIX = "mcp__";
|
|
45
|
+
/** 把 server+tool 拼成平台可见的工具名。名字里不允许再出现分隔符,否则解析会歧义。 */
|
|
46
|
+
export declare function mcpToolName(server: string, tool: string): string;
|
|
47
|
+
/** 反向解析;不是 mcp__ 前缀或格式不对返回 null */
|
|
48
|
+
export declare function parseMcpToolName(name: string): {
|
|
49
|
+
server: string;
|
|
50
|
+
tool: string;
|
|
51
|
+
} | null;
|
|
52
|
+
/**
|
|
53
|
+
* 一个工作区对应一个 Manager:懒启动、缓存工具清单。
|
|
54
|
+
* 配置变化(mtime 变了)时整体重启 —— MCP server 不支持热加载,重建是最稳的做法。
|
|
55
|
+
*/
|
|
56
|
+
export declare class McpManager {
|
|
57
|
+
private root;
|
|
58
|
+
private log?;
|
|
59
|
+
private clients;
|
|
60
|
+
private errors;
|
|
61
|
+
private loadedMtime;
|
|
62
|
+
private starting;
|
|
63
|
+
constructor(root: string, log?: (msg: string) => void);
|
|
64
|
+
private configMtime;
|
|
65
|
+
/** 确保按当前配置把所有 server 拉起来(幂等) */
|
|
66
|
+
ensure(): Promise<void>;
|
|
67
|
+
private doEnsure;
|
|
68
|
+
private reset;
|
|
69
|
+
/** 平台可见的工具清单(已带 mcp__server__tool 名字) */
|
|
70
|
+
listTools(): Promise<McpToolDef[]>;
|
|
71
|
+
/** 启动失败的 server 及其原因(用于在工具清单里如实说明,而不是静默消失) */
|
|
72
|
+
failures(): {
|
|
73
|
+
server: string;
|
|
74
|
+
error: string;
|
|
75
|
+
}[];
|
|
76
|
+
/** 按平台工具名分发一次 MCP 调用 */
|
|
77
|
+
callByName(name: string, args: Record<string, unknown>): Promise<any>;
|
|
78
|
+
/** 进程退出时收尾(Agent 关闭时调用) */
|
|
79
|
+
shutdown(): void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 把 MCP 的 tools/call 结果压成模型好读的文本。
|
|
83
|
+
* MCP 返回 { content: [{type:'text', text} | {type:'image', data, mimeType}], isError? },
|
|
84
|
+
* 图片没法直接塞进文本结果,用占位说明代替(否则模型会以为拿到了空结果)。
|
|
85
|
+
*/
|
|
86
|
+
export declare function renderMcpResult(result: any): {
|
|
87
|
+
ok: boolean;
|
|
88
|
+
text: string;
|
|
89
|
+
};
|
|
90
|
+
/** 给工作区写一份示例配置(用户点「添加 MCP」时用) */
|
|
91
|
+
export declare function writeSampleMcpConfig(root: string): string;
|
|
92
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|