@zhin.js/agent 0.1.19 → 0.1.21
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 +37 -23
- package/lib/agent-prompt/format.d.ts +6 -0
- package/lib/agent-prompt/format.d.ts.map +1 -0
- package/lib/agent-prompt/format.js +40 -0
- package/lib/agent-prompt/format.js.map +1 -0
- package/lib/agent-prompt/index.d.ts +5 -0
- package/lib/agent-prompt/index.d.ts.map +1 -0
- package/lib/agent-prompt/index.js +4 -0
- package/lib/agent-prompt/index.js.map +1 -0
- package/lib/agent-prompt/registry.d.ts +7 -0
- package/lib/agent-prompt/registry.d.ts.map +1 -0
- package/lib/agent-prompt/registry.js +23 -0
- package/lib/agent-prompt/registry.js.map +1 -0
- package/lib/agent-prompt/resolver.d.ts +12 -0
- package/lib/agent-prompt/resolver.d.ts.map +1 -0
- package/lib/agent-prompt/resolver.js +71 -0
- package/lib/agent-prompt/resolver.js.map +1 -0
- package/lib/builtin/run-deferred-task-tool.d.ts +20 -0
- package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -0
- package/lib/builtin/run-deferred-task-tool.js +39 -0
- package/lib/builtin/run-deferred-task-tool.js.map +1 -0
- package/lib/builtin/tool-search-tool.d.ts +19 -0
- package/lib/builtin/tool-search-tool.d.ts.map +1 -0
- package/lib/builtin/tool-search-tool.js +54 -0
- package/lib/builtin/tool-search-tool.js.map +1 -0
- package/lib/builtin-tools.d.ts +1 -1
- package/lib/builtin-tools.d.ts.map +1 -1
- package/lib/builtin-tools.js +1 -5
- package/lib/builtin-tools.js.map +1 -1
- package/lib/deferred-worker-runner.d.ts +30 -0
- package/lib/deferred-worker-runner.d.ts.map +1 -0
- package/lib/deferred-worker-runner.js +149 -0
- package/lib/deferred-worker-runner.js.map +1 -0
- package/lib/deferred-worker-tool-load.d.ts +6 -0
- package/lib/deferred-worker-tool-load.d.ts.map +1 -0
- package/lib/deferred-worker-tool-load.js +5 -0
- package/lib/deferred-worker-tool-load.js.map +1 -0
- package/lib/hooks.d.ts +13 -0
- package/lib/hooks.d.ts.map +1 -1
- package/lib/hooks.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -3
- package/lib/index.js.map +1 -1
- package/lib/init/create-zhin-agent.d.ts.map +1 -1
- package/lib/init/create-zhin-agent.js +4 -1
- package/lib/init/create-zhin-agent.js.map +1 -1
- package/lib/init/register-mcp-from-config.d.ts +2 -0
- package/lib/init/register-mcp-from-config.d.ts.map +1 -0
- package/lib/init/register-mcp-from-config.js +84 -0
- package/lib/init/register-mcp-from-config.js.map +1 -0
- package/lib/init/register-mcp-memory-default.d.ts +2 -0
- package/lib/init/register-mcp-memory-default.d.ts.map +1 -0
- package/lib/init/register-mcp-memory-default.js +34 -0
- package/lib/init/register-mcp-memory-default.js.map +1 -0
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +4 -0
- package/lib/init.js.map +1 -1
- package/lib/mcp-client/index.d.ts +1 -2
- package/lib/mcp-client/index.d.ts.map +1 -1
- package/lib/mcp-client/index.js +1 -2
- package/lib/mcp-client/index.js.map +1 -1
- package/lib/orchestrator/mcp-lifecycle.d.ts +6 -0
- package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -0
- package/lib/orchestrator/mcp-lifecycle.js +7 -0
- package/lib/orchestrator/mcp-lifecycle.js.map +1 -0
- package/lib/orchestrator/mcp-registry.d.ts +5 -1
- package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
- package/lib/orchestrator/mcp-registry.js +36 -20
- package/lib/orchestrator/mcp-registry.js.map +1 -1
- package/lib/orchestrator/owner-confirm-orchestration.d.ts +4 -1
- package/lib/orchestrator/owner-confirm-orchestration.d.ts.map +1 -1
- package/lib/orchestrator/owner-confirm-orchestration.js.map +1 -1
- package/lib/orchestrator/tool-selection.d.ts +2 -0
- package/lib/orchestrator/tool-selection.d.ts.map +1 -1
- package/lib/orchestrator/tool-selection.js +33 -1
- package/lib/orchestrator/tool-selection.js.map +1 -1
- package/lib/reserved-tools.js +2 -2
- package/lib/reserved-tools.js.map +1 -1
- package/lib/security/bash-tool-context.d.ts +17 -2
- package/lib/security/bash-tool-context.d.ts.map +1 -1
- package/lib/security/bash-tool-context.js +9 -3
- package/lib/security/bash-tool-context.js.map +1 -1
- package/lib/security/exec-policy.d.ts.map +1 -1
- package/lib/security/exec-policy.js +4 -1
- package/lib/security/exec-policy.js.map +1 -1
- package/lib/subagent.js +3 -3
- package/lib/subagent.js.map +1 -1
- package/lib/utils/config-env.d.ts +5 -0
- package/lib/utils/config-env.d.ts.map +1 -0
- package/lib/utils/config-env.js +34 -0
- package/lib/utils/config-env.js.map +1 -0
- package/lib/zhin-agent/config.d.ts +18 -0
- package/lib/zhin-agent/config.d.ts.map +1 -1
- package/lib/zhin-agent/config.js +19 -0
- package/lib/zhin-agent/config.js.map +1 -1
- package/lib/zhin-agent/index.d.ts +13 -0
- package/lib/zhin-agent/index.d.ts.map +1 -1
- package/lib/zhin-agent/index.js +106 -7
- package/lib/zhin-agent/index.js.map +1 -1
- package/lib/zhin-agent/prompt.d.ts +6 -0
- package/lib/zhin-agent/prompt.d.ts.map +1 -1
- package/lib/zhin-agent/prompt.js +70 -15
- package/lib/zhin-agent/prompt.js.map +1 -1
- package/lib/zhin-agent/tool-catalog.d.ts +15 -0
- package/lib/zhin-agent/tool-catalog.d.ts.map +1 -0
- package/lib/zhin-agent/tool-catalog.js +52 -0
- package/lib/zhin-agent/tool-catalog.js.map +1 -0
- package/lib/zhin-agent/tool-runtime.d.ts +3 -1
- package/lib/zhin-agent/tool-runtime.d.ts.map +1 -1
- package/lib/zhin-agent/tool-runtime.js +14 -0
- package/lib/zhin-agent/tool-runtime.js.map +1 -1
- package/lib/zhin-agent/tool-search-orchestrator.d.ts +23 -0
- package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -0
- package/lib/zhin-agent/tool-search-orchestrator.js +86 -0
- package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -0
- package/package.json +13 -4
- package/lib/builtin/read-memory-tool.d.ts +0 -14
- package/lib/builtin/read-memory-tool.d.ts.map +0 -1
- package/lib/builtin/read-memory-tool.js +0 -49
- package/lib/builtin/read-memory-tool.js.map +0 -1
- package/lib/builtin/write-memory-tool.d.ts +0 -14
- package/lib/builtin/write-memory-tool.d.ts.map +0 -1
- package/lib/builtin/write-memory-tool.js +0 -50
- package/lib/builtin/write-memory-tool.js.map +0 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Zhin AI Agent 组合层:在 `@zhin.js/core` 的类型与 Provider 之上,提
|
|
|
12
12
|
- 🛡️ **6 层 Bash 安全**:`ExecPolicy` 纵深防御(危险黑名单、环境变量剥离、wrapper 剥离、复合命令拆分、只读放行、交互式审批)
|
|
13
13
|
- 📂 **文件访问安全**:`FilePolicy` 路径检查、设备路径拦截、命令读写分类
|
|
14
14
|
- 📋 **11 段系统提示词**:`PromptBuilder` 结构化 prompt(Identity、System、Discipline、Tasks、Actions、Tools、Communication、Skills、Active Skills、Memory、Bootstrap)
|
|
15
|
-
- 🔌 **框架挂载**:`initAgentModule()` 注册 `ctx.ai`、定时任务、DB 模型等
|
|
15
|
+
- 🔌 **框架挂载**:`initAgentModule()` 注册 `ctx.ai`、`ctx.agent`、定时任务、DB 模型等
|
|
16
16
|
- 📦 **上下文与记忆**:`ContextManager`、`ConversationMemory`、`UserProfileStore`
|
|
17
17
|
- ⏰ **跟进与定时**:`FollowUpManager`、`PersistentCronEngine`、cron 工具
|
|
18
18
|
- 🔧 **内置工具**:bash、read_file、write_file、ask_user、web_search、chat_history 等
|
|
@@ -92,10 +92,12 @@ const result = await agent.run('你好')
|
|
|
92
92
|
| IM 内置工具工厂 | `createBuiltinTools`、`BuiltinBaseTool`;具体工具见 `src/builtin/*` |
|
|
93
93
|
| 输出与检测 | `parseOutput`, `renderToPlainText`, `renderToSatori`, `detectTone` |
|
|
94
94
|
| 子代理 | `SubagentManager` |
|
|
95
|
+
| 编排 | `AgentOrchestrator`、`ToolRegistry`、`SkillRegistry`、`SubAgentRegistry`、`McpRegistry`、`HookRegistry` |
|
|
96
|
+
| MCP 客户端 | `McpClientManager`、`McpClientConnection`、`mcpToolToAgentTool`、`ensureMcpConnections`(见下方「MCP」) |
|
|
95
97
|
| 限流 | `RateLimiter` |
|
|
96
98
|
| 存储抽象 | `StorageBackend`, `MemoryStorageBackend`, `DatabaseStorageBackend`, `createSwappableBackend` |
|
|
97
99
|
|
|
98
|
-
类型(如 `ZhinAgentConfig`、`ContextConfig`、`AgentState` 等)均从包入口导出或从 `@zhin.js/core` 再导出。
|
|
100
|
+
类型(如 `ZhinAgentConfig`、`ContextConfig`、`AgentState`、`McpServerEntry` 等)均从包入口导出或从 `@zhin.js/core` 再导出。
|
|
99
101
|
|
|
100
102
|
## 全局上下文
|
|
101
103
|
|
|
@@ -105,13 +107,37 @@ const result = await agent.run('你好')
|
|
|
105
107
|
declare module '@zhin.js/core' {
|
|
106
108
|
namespace Plugin {
|
|
107
109
|
interface Contexts {
|
|
108
|
-
ai: AIService
|
|
110
|
+
ai: AIService // 会话、Provider、ZhinAgent、runAgent 等
|
|
111
|
+
agent: AgentOrchestrator // 工具/技能/子代理/MCP 条目/Hook 注册表
|
|
109
112
|
}
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
115
|
```
|
|
113
116
|
|
|
114
|
-
|
|
117
|
+
| Context | 用途 |
|
|
118
|
+
|---------|------|
|
|
119
|
+
| `ctx.ai` | 业务侧 AI 服务:会话、`createAgent` / `runAgent`、全局 ZhinAgent |
|
|
120
|
+
| `ctx.agent` | 扩展编排资源:`orchestrator.addTool`、`addSkill`、`addMcp` 等;内置注册走 `root.inject('agent')` |
|
|
121
|
+
|
|
122
|
+
主包 `zhin.js` 的 `Plugin.Contexts` 类型已包含上述两项。
|
|
123
|
+
|
|
124
|
+
## MCP(Client)
|
|
125
|
+
|
|
126
|
+
默认**不**注册 `@modelcontextprotocol/server-memory`;设 `ai.memoryMcp: true` 启用(`data/knowledge-graph.jsonl`)。另可通过 `ai.mcpServers`(或 `ctx.agent.addMcp`)注册更多 Server;每次 AI 回合前懒连接,`mcp_{server}_{tool}` 并入 ZhinAgent 工具池。需可选安装 `@modelcontextprotocol/sdk`(peer dependency)。
|
|
127
|
+
|
|
128
|
+
**记忆**:内置 `read_memory` / `write_memory` 已移除,请使用 `mcp_memory_read_graph`、`mcp_memory_create_entities` 等。工作区 `AGENTS.md` 仍由 bootstrap 注入。
|
|
129
|
+
|
|
130
|
+
```yaml
|
|
131
|
+
ai:
|
|
132
|
+
memoryMcp: true # 默认 false,显式开启
|
|
133
|
+
mcpServers:
|
|
134
|
+
- name: filesystem
|
|
135
|
+
transport: stdio
|
|
136
|
+
command: npx
|
|
137
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp/zhin-mcp-test"]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**限制**:单 server 连接失败仅 warn,不阻塞回合;resources/prompts 暂不注入模型。与 **`plugins/services/mcp`**(MCP **Server**)方向相反。验收见 [examples/test-bot/ACCEPTANCE.md](../../examples/test-bot/ACCEPTANCE.md)。
|
|
115
141
|
|
|
116
142
|
## 多 Agent 使用方式
|
|
117
143
|
|
|
@@ -205,10 +231,10 @@ src/
|
|
|
205
231
|
│ ├── mcp-registry.ts # McpRegistry
|
|
206
232
|
│ └── hook-registry.ts # HookRegistry
|
|
207
233
|
│
|
|
208
|
-
├── mcp-client/ #
|
|
209
|
-
│
|
|
210
|
-
|
|
211
|
-
|
|
234
|
+
├── mcp-client/ # MCP 客户端(Manager / Connection / bridge)
|
|
235
|
+
│
|
|
236
|
+
├── init.ts # initAgentModule 入口
|
|
237
|
+
├── init/ # 挂载子模块(orchestrator、ai、builtin-tools…)
|
|
212
238
|
│
|
|
213
239
|
├── service.ts # AIService(保留,对接 Orchestrator)
|
|
214
240
|
│
|
|
@@ -243,23 +269,11 @@ src/
|
|
|
243
269
|
├── task-executor.ts
|
|
244
270
|
├── cron-engine.ts
|
|
245
271
|
├── bootstrap.ts
|
|
246
|
-
|
|
247
|
-
│
|
|
248
|
-
└── init/
|
|
249
|
-
├── index.ts # initAgentModule
|
|
250
|
-
├── types.ts # declare Plugin.Contexts.agent: AgentOrchestrator
|
|
251
|
-
├── shared-refs.ts
|
|
252
|
-
├── register-orchestrator.ts # ★ 新增:provide(new AgentOrchestrator())
|
|
253
|
-
├── register-db-models.ts
|
|
254
|
-
├── register-ai-service.ts
|
|
255
|
-
├── create-zhin-agent.ts
|
|
256
|
-
├── register-ai-trigger.ts
|
|
257
|
-
├── register-db-upgrade.ts
|
|
258
|
-
├── register-message-recorder.ts
|
|
259
|
-
├── register-management-tools.ts
|
|
260
|
-
└── register-builtin-tools.ts # 改造:通过 Orchestrator 注册默认资源
|
|
272
|
+
└── user-profile.ts
|
|
261
273
|
```
|
|
262
274
|
|
|
275
|
+
`init/` 目录含 `register-orchestrator.ts`(`provide('agent')`)、`register-ai-service.ts`、`register-builtin-tools.ts` 等,见 `src/init.ts`。
|
|
276
|
+
|
|
263
277
|
### 构建
|
|
264
278
|
|
|
265
279
|
```bash
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentPromptSection } from '@zhin.js/core';
|
|
2
|
+
export declare function sortAgentPromptSections(sections: AgentPromptSection[]): AgentPromptSection[];
|
|
3
|
+
export declare function truncateAgentPromptText(text: string, maxChars: number): string;
|
|
4
|
+
export declare function applyAgentPromptLimits(sections: AgentPromptSection[], sectionMaxChars: number, totalMaxChars: number): AgentPromptSection[];
|
|
5
|
+
export declare function formatAgentPromptSectionsMarkdown(sections: AgentPromptSection[]): string;
|
|
6
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/agent-prompt/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAE5F;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI9E;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB,kBAAkB,EAAE,CAiBtB;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAOxF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export function sortAgentPromptSections(sections) {
|
|
2
|
+
return [...sections].sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100));
|
|
3
|
+
}
|
|
4
|
+
export function truncateAgentPromptText(text, maxChars) {
|
|
5
|
+
if (text.length <= maxChars)
|
|
6
|
+
return text;
|
|
7
|
+
if (maxChars <= 1)
|
|
8
|
+
return '…';
|
|
9
|
+
return text.slice(0, maxChars - 1) + '…';
|
|
10
|
+
}
|
|
11
|
+
export function applyAgentPromptLimits(sections, sectionMaxChars, totalMaxChars) {
|
|
12
|
+
const out = [];
|
|
13
|
+
let used = 0;
|
|
14
|
+
for (const section of sortAgentPromptSections(sections)) {
|
|
15
|
+
const body = truncateAgentPromptText(section.body.trim(), sectionMaxChars);
|
|
16
|
+
if (!body)
|
|
17
|
+
continue;
|
|
18
|
+
const titleLen = section.title ? section.title.length + 2 : 0;
|
|
19
|
+
if (used + titleLen + body.length > totalMaxChars) {
|
|
20
|
+
const remain = totalMaxChars - used - titleLen;
|
|
21
|
+
if (remain <= 0)
|
|
22
|
+
break;
|
|
23
|
+
out.push({ ...section, body: truncateAgentPromptText(body, remain) });
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
out.push({ ...section, body });
|
|
27
|
+
used += titleLen + body.length;
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
export function formatAgentPromptSectionsMarkdown(sections) {
|
|
32
|
+
if (sections.length === 0)
|
|
33
|
+
return '';
|
|
34
|
+
const blocks = sections.map(s => {
|
|
35
|
+
const head = s.title?.trim() ? `${s.title.trim()}\n\n` : '';
|
|
36
|
+
return `${head}${s.body.trim()}`;
|
|
37
|
+
});
|
|
38
|
+
return blocks.join('\n\n');
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/agent-prompt/format.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,QAA8B;IACpE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,QAAgB;IACpE,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAA8B,EAC9B,eAAuB,EACvB,aAAqB;IAErB,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,OAAO,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,QAAQ,CAAC;YAC/C,IAAI,MAAM,IAAI,CAAC;gBAAE,MAAM;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM;QACR,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,QAA8B;IAC9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { registerAgentPromptContributor, unregisterAgentPromptContributor, getAgentPromptContributor, clearAgentPromptContributors, } from './registry.js';
|
|
2
|
+
export { resolveAgentPromptSections, resolveAgentPromptMarkdown, resolveDeferredToolsForPlatform, platformMatchesDeferredTask, } from './resolver.js';
|
|
3
|
+
export type { ResolveAgentPromptOptions } from './resolver.js';
|
|
4
|
+
export { formatAgentPromptSectionsMarkdown, applyAgentPromptLimits, sortAgentPromptSections, truncateAgentPromptText, } from './format.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-prompt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { registerAgentPromptContributor, unregisterAgentPromptContributor, getAgentPromptContributor, clearAgentPromptContributors, } from './registry.js';
|
|
2
|
+
export { resolveAgentPromptSections, resolveAgentPromptMarkdown, resolveDeferredToolsForPlatform, platformMatchesDeferredTask, } from './resolver.js';
|
|
3
|
+
export { formatAgentPromptSectionsMarkdown, applyAgentPromptLimits, sortAgentPromptSections, truncateAgentPromptText, } from './format.js';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-prompt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentPromptContributor } from '@zhin.js/core';
|
|
2
|
+
export declare function registerAgentPromptContributor(contributor: AgentPromptContributor): void;
|
|
3
|
+
export declare function unregisterAgentPromptContributor(platform: string): void;
|
|
4
|
+
export declare function getAgentPromptContributor(platform: string | undefined): AgentPromptContributor | undefined;
|
|
5
|
+
/** Clear all contributors (tests). */
|
|
6
|
+
export declare function clearAgentPromptContributors(): void;
|
|
7
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agent-prompt/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAM5D,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,sBAAsB,GAAG,IAAI,CAMxF;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS,CAG1G;AAED,sCAAsC;AACtC,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Logger } from '@zhin.js/core';
|
|
2
|
+
const logger = new Logger(null, 'AgentPromptRegistry');
|
|
3
|
+
const contributors = new Map();
|
|
4
|
+
export function registerAgentPromptContributor(contributor) {
|
|
5
|
+
const key = contributor.platform;
|
|
6
|
+
if (contributors.has(key)) {
|
|
7
|
+
logger.warn(`AgentPromptContributor for "${key}" already registered; replacing`);
|
|
8
|
+
}
|
|
9
|
+
contributors.set(key, contributor);
|
|
10
|
+
}
|
|
11
|
+
export function unregisterAgentPromptContributor(platform) {
|
|
12
|
+
contributors.delete(platform);
|
|
13
|
+
}
|
|
14
|
+
export function getAgentPromptContributor(platform) {
|
|
15
|
+
if (!platform)
|
|
16
|
+
return undefined;
|
|
17
|
+
return contributors.get(platform);
|
|
18
|
+
}
|
|
19
|
+
/** Clear all contributors (tests). */
|
|
20
|
+
export function clearAgentPromptContributors() {
|
|
21
|
+
contributors.clear();
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agent-prompt/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;AAEvD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE/D,MAAM,UAAU,8BAA8B,CAAC,WAAmC;IAChF,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC;IACjC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,iCAAiC,CAAC,CAAC;IACnF,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,QAAgB;IAC/D,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAA4B;IACpE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,4BAA4B;IAC1C,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentPromptBuildContext, AgentPromptSection } from '@zhin.js/core';
|
|
2
|
+
import type { ZhinAgentConfig } from '../zhin-agent/config.js';
|
|
3
|
+
export interface ResolveAgentPromptOptions {
|
|
4
|
+
ctx: AgentPromptBuildContext;
|
|
5
|
+
config?: Pick<Required<ZhinAgentConfig>, 'platformPromptSectionMaxChars' | 'platformPromptMaxChars'>;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveAgentPromptSections(options: ResolveAgentPromptOptions): Promise<AgentPromptSection[]>;
|
|
9
|
+
export declare function resolveAgentPromptMarkdown(options: ResolveAgentPromptOptions): Promise<string>;
|
|
10
|
+
export declare function resolveDeferredToolsForPlatform(ctx: AgentPromptBuildContext, query: string, goal: string, catalog: import('@zhin.js/ai').AgentTool[], maxTools: number, defaultSelect: (query: string, goal: string, catalog: import('@zhin.js/ai').AgentTool[], maxTools: number) => import('@zhin.js/ai').AgentTool[]): import('@zhin.js/ai').AgentTool[];
|
|
11
|
+
export declare function platformMatchesDeferredTask(ctx: AgentPromptBuildContext, query: string, goal: string): boolean;
|
|
12
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/agent-prompt/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAY/D,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,uBAAuB,CAAC;IAC7B,MAAM,CAAC,EAAE,IAAI,CACX,QAAQ,CAAC,eAAe,CAAC,EACzB,+BAA+B,GAAG,wBAAwB,CAC3D,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0C/B;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,aAAa,EAAE,SAAS,EAAE,EAC1C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,aAAa,EAAE,SAAS,EAAE,GAC9I,OAAO,aAAa,EAAE,SAAS,EAAE,CAOnC;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,uBAAuB,EAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAUT"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Logger } from '@zhin.js/core';
|
|
2
|
+
import { DEFAULT_CONFIG } from '../zhin-agent/config.js';
|
|
3
|
+
import { createAIHookEvent, triggerAIHook } from '../hooks.js';
|
|
4
|
+
import { applyAgentPromptLimits, formatAgentPromptSectionsMarkdown, sortAgentPromptSections, } from './format.js';
|
|
5
|
+
import { getAgentPromptContributor } from './registry.js';
|
|
6
|
+
const logger = new Logger(null, 'AgentPromptResolver');
|
|
7
|
+
export async function resolveAgentPromptSections(options) {
|
|
8
|
+
const { ctx, sessionId } = options;
|
|
9
|
+
const limits = {
|
|
10
|
+
sectionMax: options.config?.platformPromptSectionMaxChars
|
|
11
|
+
?? DEFAULT_CONFIG.platformPromptSectionMaxChars,
|
|
12
|
+
totalMax: options.config?.platformPromptMaxChars
|
|
13
|
+
?? DEFAULT_CONFIG.platformPromptMaxChars,
|
|
14
|
+
};
|
|
15
|
+
const platform = ctx.toolContext.platform;
|
|
16
|
+
const contributor = getAgentPromptContributor(platform);
|
|
17
|
+
let sections = [];
|
|
18
|
+
if (contributor) {
|
|
19
|
+
try {
|
|
20
|
+
const built = await contributor.buildSections(ctx);
|
|
21
|
+
if (built?.length) {
|
|
22
|
+
sections.push(...built);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
27
|
+
logger.warn(`AgentPromptContributor [${platform}] buildSections failed: ${msg}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
sections = sortAgentPromptSections(sections);
|
|
31
|
+
const hookEvent = createAIHookEvent('agent', 'prompt', sessionId, {
|
|
32
|
+
slot: ctx.slot,
|
|
33
|
+
toolContext: ctx.toolContext,
|
|
34
|
+
toolSearch: ctx.toolSearch,
|
|
35
|
+
userMessagePreview: ctx.userMessagePreview,
|
|
36
|
+
deferred: ctx.deferred,
|
|
37
|
+
sections,
|
|
38
|
+
});
|
|
39
|
+
await triggerAIHook(hookEvent);
|
|
40
|
+
const hookSections = hookEvent.context.sections;
|
|
41
|
+
if (Array.isArray(hookSections)) {
|
|
42
|
+
sections = sortAgentPromptSections(hookSections);
|
|
43
|
+
}
|
|
44
|
+
return applyAgentPromptLimits(sections, limits.sectionMax, limits.totalMax);
|
|
45
|
+
}
|
|
46
|
+
export async function resolveAgentPromptMarkdown(options) {
|
|
47
|
+
const sections = await resolveAgentPromptSections(options);
|
|
48
|
+
return formatAgentPromptSectionsMarkdown(sections);
|
|
49
|
+
}
|
|
50
|
+
export function resolveDeferredToolsForPlatform(ctx, query, goal, catalog, maxTools, defaultSelect) {
|
|
51
|
+
const contributor = getAgentPromptContributor(ctx.toolContext.platform);
|
|
52
|
+
if (contributor?.matchesDeferredTask?.(ctx)) {
|
|
53
|
+
const selected = contributor.selectDeferredTools?.(query, goal, catalog, maxTools);
|
|
54
|
+
if (selected)
|
|
55
|
+
return selected;
|
|
56
|
+
}
|
|
57
|
+
return defaultSelect(query, goal, catalog, maxTools);
|
|
58
|
+
}
|
|
59
|
+
export function platformMatchesDeferredTask(ctx, query, goal) {
|
|
60
|
+
const contributor = getAgentPromptContributor(ctx.toolContext.platform);
|
|
61
|
+
if (contributor?.matchesDeferredTask) {
|
|
62
|
+
try {
|
|
63
|
+
return contributor.matchesDeferredTask(ctx);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/agent-prompt/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run_deferred_task — 在同步 Worker 子 Agent 中执行 deferred 工具任务
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool, ToolParametersSchema, ToolResult } from '@zhin.js/core';
|
|
5
|
+
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
6
|
+
export declare const RUN_DEFERRED_TASK_PARAMETERS: ToolParametersSchema;
|
|
7
|
+
export interface RunDeferredTaskToolOptions {
|
|
8
|
+
runWorker: (goal: string, toolQuery?: string) => Promise<string>;
|
|
9
|
+
}
|
|
10
|
+
export declare class RunDeferredTaskBuiltinTool extends BuiltinBaseTool {
|
|
11
|
+
private readonly opts;
|
|
12
|
+
readonly name = "run_deferred_task";
|
|
13
|
+
readonly description = "\u5728\u9694\u79BB\u7684 Worker \u5B50 Agent \u4E2D\u6267\u884C deferred \u5DE5\u5177\u4EFB\u52A1\uFF08github/mcp/\u63D2\u4EF6\u7B49\uFF09\u3002\u8FD9\u662F\u8C03\u7528 deferred \u80FD\u529B\u7684\u552F\u4E00\u5165\u53E3";
|
|
14
|
+
readonly parameters: ToolParametersSchema<Record<string, any>>;
|
|
15
|
+
readonly kind = "meta";
|
|
16
|
+
constructor(opts: RunDeferredTaskToolOptions);
|
|
17
|
+
run(args: Record<string, unknown>): Promise<ToolResult>;
|
|
18
|
+
}
|
|
19
|
+
export declare function createRunDeferredTaskTool(opts: RunDeferredTaskToolOptions): Tool;
|
|
20
|
+
//# sourceMappingURL=run-deferred-task-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-deferred-task-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/run-deferred-task-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,4BAA4B,EAAE,oBAa1C,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClE;AAED,qBAAa,0BAA2B,SAAQ,eAAe;IAOjD,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,WAAW,kOAC4D;IAChF,QAAQ,CAAC,UAAU,4CAAgC;IACnD,QAAQ,CAAC,IAAI,UAAU;gBAEM,IAAI,EAAE,0BAA0B;IAMvD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAM9D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI,CAEhF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
2
|
+
export const RUN_DEFERRED_TASK_PARAMETERS = {
|
|
3
|
+
type: 'object',
|
|
4
|
+
properties: {
|
|
5
|
+
goal: {
|
|
6
|
+
type: 'string',
|
|
7
|
+
description: '交给 Worker 完成的完整任务描述(目标、仓库、期望输出)',
|
|
8
|
+
},
|
|
9
|
+
tool_query: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: '用于 TF-IDF 选取 deferred 工具的搜索词;省略则使用 goal',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
required: ['goal'],
|
|
15
|
+
};
|
|
16
|
+
export class RunDeferredTaskBuiltinTool extends BuiltinBaseTool {
|
|
17
|
+
opts;
|
|
18
|
+
name = 'run_deferred_task';
|
|
19
|
+
description = '在隔离的 Worker 子 Agent 中执行 deferred 工具任务(github/mcp/插件等)。这是调用 deferred 能力的唯一入口';
|
|
20
|
+
parameters = RUN_DEFERRED_TASK_PARAMETERS;
|
|
21
|
+
kind = 'meta';
|
|
22
|
+
constructor(opts) {
|
|
23
|
+
super();
|
|
24
|
+
this.opts = opts;
|
|
25
|
+
this.tags.push('deferred', 'worker', 'delegate');
|
|
26
|
+
this.keywords.push('执行', '委托', 'worker', 'deferred', 'github', 'mcp');
|
|
27
|
+
}
|
|
28
|
+
async run(args) {
|
|
29
|
+
const goal = String(args.goal ?? '').trim();
|
|
30
|
+
if (!goal)
|
|
31
|
+
return '请提供 goal 参数';
|
|
32
|
+
const toolQuery = args.tool_query != null ? String(args.tool_query).trim() : undefined;
|
|
33
|
+
return this.opts.runWorker(goal, toolQuery || undefined);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function createRunDeferredTaskTool(opts) {
|
|
37
|
+
return new RunDeferredTaskBuiltinTool(opts).toTool();
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=run-deferred-task-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-deferred-task-tool.js","sourceRoot":"","sources":["../../src/builtin/run-deferred-task-tool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,4BAA4B,GAAyB;IAChE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iCAAiC;SAC/C;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,yCAAyC;SACvD;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;CACnB,CAAC;AAMF,MAAM,OAAO,0BAA2B,SAAQ,eAAe;IAOhC;IANpB,IAAI,GAAG,mBAAmB,CAAC;IAC3B,WAAW,GAClB,6EAA6E,CAAC;IACvE,UAAU,GAAG,4BAA4B,CAAC;IAC1C,IAAI,GAAG,MAAM,CAAC;IAEvB,YAA6B,IAAgC;QAC3D,KAAK,EAAE,CAAC;QADmB,SAAI,GAAJ,IAAI,CAA4B;QAE3D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA6B;QACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,aAAa,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAgC;IACxE,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Tool, ToolParametersSchema, ToolResult } from '@zhin.js/core';
|
|
2
|
+
import type { AgentTool } from '@zhin.js/ai';
|
|
3
|
+
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
4
|
+
export declare const TOOL_SEARCH_PARAMETERS: ToolParametersSchema;
|
|
5
|
+
export interface ToolSearchToolOptions {
|
|
6
|
+
getDeferredCatalog: () => AgentTool[];
|
|
7
|
+
maxResults?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class ToolSearchBuiltinTool extends BuiltinBaseTool {
|
|
10
|
+
private readonly opts;
|
|
11
|
+
readonly name = "tool_search";
|
|
12
|
+
readonly description = "\u5728 deferred \u5DE5\u5177\u76EE\u5F55\u4E2D\u641C\u7D22\u76F8\u5173\u5DE5\u5177\uFF08\u4EC5\u5217\u51FA\u540D\u79F0\u4E0E\u8BF4\u660E\uFF0C\u4E0D\u6267\u884C\uFF09\u3002\u89C4\u5212\u4EFB\u52A1\u524D\u7528\u4E8E\u786E\u5B9A tool_query";
|
|
13
|
+
readonly parameters: ToolParametersSchema<Record<string, any>>;
|
|
14
|
+
readonly kind = "meta";
|
|
15
|
+
constructor(opts: ToolSearchToolOptions);
|
|
16
|
+
run(args: Record<string, unknown>): Promise<ToolResult>;
|
|
17
|
+
}
|
|
18
|
+
export declare function createToolSearchTool(opts: ToolSearchToolOptions): Tool;
|
|
19
|
+
//# sourceMappingURL=tool-search-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-search-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/tool-search-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,sBAAsB,EAAE,oBAMpC,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,SAAS,EAAE,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,eAAe;IAO5C,OAAO,CAAC,QAAQ,CAAC,IAAI;IANjC,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,mPAC0C;IAC9D,QAAQ,CAAC,UAAU,4CAA0B;IAC7C,QAAQ,CAAC,IAAI,UAAU;gBAEM,IAAI,EAAE,qBAAqB;IAMlD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAuB9D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAEtE"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tool_search — 查询 deferred 工具目录(不执行)
|
|
3
|
+
*/
|
|
4
|
+
import { filterTools } from '@zhin.js/ai';
|
|
5
|
+
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
6
|
+
export const TOOL_SEARCH_PARAMETERS = {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
query: { type: 'string', description: '搜索关键词(工具名、能力、领域,如 github star repo)' },
|
|
10
|
+
},
|
|
11
|
+
required: ['query'],
|
|
12
|
+
};
|
|
13
|
+
export class ToolSearchBuiltinTool extends BuiltinBaseTool {
|
|
14
|
+
opts;
|
|
15
|
+
name = 'tool_search';
|
|
16
|
+
description = '在 deferred 工具目录中搜索相关工具(仅列出名称与说明,不执行)。规划任务前用于确定 tool_query';
|
|
17
|
+
parameters = TOOL_SEARCH_PARAMETERS;
|
|
18
|
+
kind = 'meta';
|
|
19
|
+
constructor(opts) {
|
|
20
|
+
super();
|
|
21
|
+
this.opts = opts;
|
|
22
|
+
this.tags.push('search', 'tools', 'deferred');
|
|
23
|
+
this.keywords.push('工具', '搜索', '查找', 'tool', 'search', 'deferred');
|
|
24
|
+
}
|
|
25
|
+
async run(args) {
|
|
26
|
+
const query = String(args.query ?? '').trim();
|
|
27
|
+
if (!query)
|
|
28
|
+
return '请提供 query 参数';
|
|
29
|
+
const catalog = this.opts.getDeferredCatalog();
|
|
30
|
+
if (catalog.length === 0)
|
|
31
|
+
return 'Deferred 工具目录为空。';
|
|
32
|
+
const max = this.opts.maxResults ?? 5;
|
|
33
|
+
const icqqQuery = /\bicqq\b|mcp_icqq|send_private|friend\s+send|qq.*消息/i.test(query);
|
|
34
|
+
const pool = icqqQuery
|
|
35
|
+
? catalog.filter(t => !t.name.startsWith('mcp_filesystem'))
|
|
36
|
+
: catalog;
|
|
37
|
+
const matched = filterTools(query, pool, { maxTools: max, minScore: 0.05 });
|
|
38
|
+
if (matched.length === 0) {
|
|
39
|
+
return `未找到与「${query}」匹配的 deferred 工具。请换关键词或直接在 run_deferred_task 的 tool_query 中描述能力。`;
|
|
40
|
+
}
|
|
41
|
+
const lines = matched.map(t => `- **${t.name}**: ${t.description.slice(0, 160)}`);
|
|
42
|
+
return [
|
|
43
|
+
`找到 ${matched.length} 个相关 deferred 工具(最多 ${max} 个):`,
|
|
44
|
+
'',
|
|
45
|
+
...lines,
|
|
46
|
+
'',
|
|
47
|
+
'执行这些能力请调用 run_deferred_task,在 goal 中写清任务,tool_query 可复用本次搜索词。',
|
|
48
|
+
].join('\n');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function createToolSearchTool(opts) {
|
|
52
|
+
return new ToolSearchBuiltinTool(opts).toTool();
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=tool-search-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-search-tool.js","sourceRoot":"","sources":["../../src/builtin/tool-search-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAyB;IAC1D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;KAC9E;IACD,QAAQ,EAAE,CAAC,OAAO,CAAC;CACpB,CAAC;AAOF,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAO3B;IANpB,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAClB,2DAA2D,CAAC;IACrD,UAAU,GAAG,sBAAsB,CAAC;IACpC,IAAI,GAAG,MAAM,CAAC;IAEvB,YAA6B,IAA2B;QACtD,KAAK,EAAE,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAuB;QAEtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA6B;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO,cAAc,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,kBAAkB,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,sDAAsD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,SAAS;YACpB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAC3D,CAAC,CAAC,OAAO,CAAC;QACZ,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,KAAK,kEAAkE,CAAC;QACzF,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO;YACL,MAAM,OAAO,CAAC,MAAM,uBAAuB,GAAG,MAAM;YACpD,EAAE;YACF,GAAG,KAAK;YACR,EAAE;YACF,+DAA+D;SAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA2B;IAC9D,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC"}
|
package/lib/builtin-tools.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Shell: bash(builtin/bash-tool)
|
|
6
6
|
* 网络: web_search, web_fetch(builtin/web-*-tool)
|
|
7
7
|
* 计划: todo_read, todo_write(builtin/todo-*-tool)
|
|
8
|
-
*
|
|
8
|
+
* 记忆 MCP: mcp_memory_*(ai.memoryMcp: true 时注册 server-memory)
|
|
9
9
|
* 技能: activate_skill, install_skill(builtin/activate-skill-tool, install-skill-tool)
|
|
10
10
|
* 交互: ask_user(builtin/ask-user-tool)
|
|
11
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-tools.d.ts","sourceRoot":"","sources":["../src/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"builtin-tools.d.ts","sourceRoot":"","sources":["../src/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAiBvD,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC1C;;;OAGG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,EAAE,CAiC5E"}
|
package/lib/builtin-tools.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Shell: bash(builtin/bash-tool)
|
|
6
6
|
* 网络: web_search, web_fetch(builtin/web-*-tool)
|
|
7
7
|
* 计划: todo_read, todo_write(builtin/todo-*-tool)
|
|
8
|
-
*
|
|
8
|
+
* 记忆 MCP: mcp_memory_*(ai.memoryMcp: true 时注册 server-memory)
|
|
9
9
|
* 技能: activate_skill, install_skill(builtin/activate-skill-tool, install-skill-tool)
|
|
10
10
|
* 交互: ask_user(builtin/ask-user-tool)
|
|
11
11
|
*
|
|
@@ -23,8 +23,6 @@ import { createWebSearchTool } from './builtin/web-search-tool.js';
|
|
|
23
23
|
import { createWebFetchTool } from './builtin/web-fetch-tool.js';
|
|
24
24
|
import { createTodoReadTool } from './builtin/todo-read-tool.js';
|
|
25
25
|
import { createTodoWriteTool } from './builtin/todo-write-tool.js';
|
|
26
|
-
import { createReadMemoryTool } from './builtin/read-memory-tool.js';
|
|
27
|
-
import { createWriteMemoryTool } from './builtin/write-memory-tool.js';
|
|
28
26
|
import { createActivateSkillTool } from './builtin/activate-skill-tool.js';
|
|
29
27
|
import { createInstallSkillTool } from './builtin/install-skill-tool.js';
|
|
30
28
|
import { createAskUserTool } from './builtin/ask-user-tool.js';
|
|
@@ -49,8 +47,6 @@ export function createBuiltinTools(options) {
|
|
|
49
47
|
tools.push(createWebFetchTool());
|
|
50
48
|
tools.push(createTodoReadTool(DATA_DIR));
|
|
51
49
|
tools.push(createTodoWriteTool(DATA_DIR));
|
|
52
|
-
tools.push(createReadMemoryTool(DATA_DIR));
|
|
53
|
-
tools.push(createWriteMemoryTool(DATA_DIR));
|
|
54
50
|
tools.push(createActivateSkillTool({
|
|
55
51
|
skillFileLookup,
|
|
56
52
|
skillDirList,
|
package/lib/builtin-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-tools.js","sourceRoot":"","sources":["../src/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"builtin-tools.js","sourceRoot":"","sources":["../src/builtin-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAkB/D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,OAAO,EAAE,wBAAwB,IAAI,IAAI,CAAC;IAChE,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IACzF,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;IACjD,MAAM,SAAS,GAAG,OAAO,EAAE,MAAM,CAAC;IAElC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1C,KAAK,CAAC,IAAI,CACR,uBAAuB,CAAC;QACtB,eAAe;QACf,YAAY;QACZ,aAAa;KACd,CAAC,CACH,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAErC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AIProvider, AgentTool } from '@zhin.js/core';
|
|
2
|
+
import type { ModelRegistry } from '@zhin.js/ai';
|
|
3
|
+
import type { ZhinAgentConfig } from './zhin-agent/config.js';
|
|
4
|
+
import type { ToolContext } from '@zhin.js/core';
|
|
5
|
+
/** 回传给主 Agent 的摘要最大字符数 */
|
|
6
|
+
export declare const DEFAULT_WORKER_SUMMARY_MAX_CHARS = 1500;
|
|
7
|
+
export interface DeferredWorkerRunOptions {
|
|
8
|
+
goal: string;
|
|
9
|
+
toolQuery?: string;
|
|
10
|
+
deferredCatalog: AgentTool[];
|
|
11
|
+
workerBaseTools: AgentTool[];
|
|
12
|
+
allToolsByName: Map<string, AgentTool>;
|
|
13
|
+
origin: ToolContext;
|
|
14
|
+
maxToolResults: number;
|
|
15
|
+
maxIterations?: number;
|
|
16
|
+
execPolicyConfig?: Required<ZhinAgentConfig>;
|
|
17
|
+
modelRegistry?: ModelRegistry | null;
|
|
18
|
+
provider: AIProvider;
|
|
19
|
+
summaryMaxChars?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface DeferredWorkerResult {
|
|
22
|
+
summary: string;
|
|
23
|
+
loadedToolNames: string[];
|
|
24
|
+
iterations: number;
|
|
25
|
+
status: 'ok' | 'error';
|
|
26
|
+
}
|
|
27
|
+
export declare class DeferredWorkerRunner {
|
|
28
|
+
runSync(options: DeferredWorkerRunOptions): Promise<DeferredWorkerResult>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=deferred-worker-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-worker-runner.d.ts","sourceRoot":"","sources":["../src/deferred-worker-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAQ3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAMjD,0BAA0B;AAC1B,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,UAAU,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,oBAAoB;IACzB,OAAO,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAqJhF"}
|