@zhin.js/agent 0.1.25 → 0.1.26
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/lib/agent-prompt/registry.js +1 -1
- package/lib/agent-prompt/registry.js.map +1 -1
- package/lib/ai-event-bus.d.ts +19 -0
- package/lib/ai-event-bus.d.ts.map +1 -0
- package/lib/ai-event-bus.js +75 -0
- package/lib/ai-event-bus.js.map +1 -0
- package/lib/ai-event-subscriber.d.ts +38 -0
- package/lib/ai-event-subscriber.d.ts.map +1 -0
- package/lib/ai-event-subscriber.js +61 -0
- package/lib/ai-event-subscriber.js.map +1 -0
- package/lib/builtin/ask-user-tool.d.ts +2 -0
- package/lib/builtin/ask-user-tool.d.ts.map +1 -1
- package/lib/builtin/ask-user-tool.js +2 -0
- package/lib/builtin/ask-user-tool.js.map +1 -1
- package/lib/builtin/bash-tool.d.ts +7 -3
- package/lib/builtin/bash-tool.d.ts.map +1 -1
- package/lib/builtin/bash-tool.js +51 -9
- package/lib/builtin/bash-tool.js.map +1 -1
- package/lib/builtin/bing-search-html.d.ts.map +1 -1
- package/lib/builtin/bing-search-html.js +14 -7
- package/lib/builtin/bing-search-html.js.map +1 -1
- package/lib/builtin/builtin-base-tool.d.ts +2 -0
- package/lib/builtin/builtin-base-tool.d.ts.map +1 -1
- package/lib/builtin/builtin-base-tool.js +5 -0
- package/lib/builtin/builtin-base-tool.js.map +1 -1
- package/lib/builtin/edit-file-tool.d.ts +1 -1
- package/lib/builtin/edit-file-tool.d.ts.map +1 -1
- package/lib/builtin/edit-file-tool.js +33 -1
- package/lib/builtin/edit-file-tool.js.map +1 -1
- package/lib/builtin/file-edit-quote-utils.d.ts +1 -3
- package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -1
- package/lib/builtin/file-edit-quote-utils.js +1 -3
- package/lib/builtin/file-edit-quote-utils.js.map +1 -1
- package/lib/builtin/glob-tool.d.ts +1 -1
- package/lib/builtin/glob-tool.d.ts.map +1 -1
- package/lib/builtin/glob-tool.js +15 -3
- package/lib/builtin/glob-tool.js.map +1 -1
- package/lib/builtin/grep-tool.d.ts +1 -1
- package/lib/builtin/grep-tool.d.ts.map +1 -1
- package/lib/builtin/grep-tool.js +16 -3
- package/lib/builtin/grep-tool.js.map +1 -1
- package/lib/builtin/list-dir-tool.d.ts +1 -1
- package/lib/builtin/list-dir-tool.d.ts.map +1 -1
- package/lib/builtin/list-dir-tool.js +14 -3
- package/lib/builtin/list-dir-tool.js.map +1 -1
- package/lib/builtin/read-file-tool.d.ts +1 -1
- package/lib/builtin/read-file-tool.d.ts.map +1 -1
- package/lib/builtin/read-file-tool.js +24 -3
- package/lib/builtin/read-file-tool.js.map +1 -1
- package/lib/builtin/run-deferred-task-tool.d.ts +3 -0
- package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -1
- package/lib/builtin/run-deferred-task-tool.js +2 -0
- package/lib/builtin/run-deferred-task-tool.js.map +1 -1
- package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
- package/lib/builtin/spawn-task-tool.js +2 -0
- package/lib/builtin/spawn-task-tool.js.map +1 -1
- package/lib/builtin/web-fetch-tool.d.ts +2 -2
- package/lib/builtin/web-fetch-tool.d.ts.map +1 -1
- package/lib/builtin/web-fetch-tool.js +12 -18
- package/lib/builtin/web-fetch-tool.js.map +1 -1
- package/lib/builtin/write-file-tool.d.ts +1 -1
- package/lib/builtin/write-file-tool.d.ts.map +1 -1
- package/lib/builtin/write-file-tool.js +33 -1
- package/lib/builtin/write-file-tool.js.map +1 -1
- package/lib/common-adapter-tools.d.ts +8 -41
- package/lib/common-adapter-tools.d.ts.map +1 -1
- package/lib/common-adapter-tools.js +23 -182
- package/lib/common-adapter-tools.js.map +1 -1
- package/lib/deferred-worker-runner.d.ts +13 -2
- package/lib/deferred-worker-runner.d.ts.map +1 -1
- package/lib/deferred-worker-runner.js +91 -13
- package/lib/deferred-worker-runner.js.map +1 -1
- package/lib/discovery/agents.js +1 -1
- package/lib/discovery/agents.js.map +1 -1
- package/lib/discovery/skills.js +1 -1
- package/lib/discovery/skills.js.map +1 -1
- package/lib/discovery/tools.d.ts +1 -1
- package/lib/discovery/tools.d.ts.map +1 -1
- package/lib/discovery/tools.js +17 -4
- package/lib/discovery/tools.js.map +1 -1
- package/lib/discovery/utils.js +1 -1
- package/lib/discovery/utils.js.map +1 -1
- package/lib/hooks.d.ts.map +1 -1
- package/lib/hooks.js +2 -0
- package/lib/hooks.js.map +1 -1
- package/lib/index.d.ts +9 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/init/message-media.d.ts +3 -1
- package/lib/init/message-media.d.ts.map +1 -1
- package/lib/init/message-media.js +20 -0
- package/lib/init/message-media.js.map +1 -1
- package/lib/init/register-ai-service.js.map +1 -1
- package/lib/init/register-ai-trigger.d.ts.map +1 -1
- package/lib/init/register-ai-trigger.js +71 -10
- package/lib/init/register-ai-trigger.js.map +1 -1
- package/lib/init/register-builtin-tools.js +7 -7
- package/lib/init/register-builtin-tools.js.map +1 -1
- package/lib/init/register-typing-indicator.d.ts +9 -0
- package/lib/init/register-typing-indicator.d.ts.map +1 -0
- package/lib/init/register-typing-indicator.js +206 -0
- package/lib/init/register-typing-indicator.js.map +1 -0
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +2 -0
- package/lib/init.js.map +1 -1
- package/lib/mcp-client/connection.d.ts +2 -0
- package/lib/mcp-client/connection.d.ts.map +1 -1
- package/lib/mcp-client/connection.js +7 -0
- package/lib/mcp-client/connection.js.map +1 -1
- package/lib/mcp-client/index.d.ts +2 -0
- package/lib/mcp-client/index.d.ts.map +1 -1
- package/lib/mcp-client/index.js +19 -2
- package/lib/mcp-client/index.js.map +1 -1
- package/lib/monitoring/index.d.ts +79 -0
- package/lib/monitoring/index.d.ts.map +1 -0
- package/lib/monitoring/index.js +197 -0
- package/lib/monitoring/index.js.map +1 -0
- package/lib/monitoring/metrics.d.ts +240 -0
- package/lib/monitoring/metrics.d.ts.map +1 -0
- package/lib/monitoring/metrics.js +483 -0
- package/lib/monitoring/metrics.js.map +1 -0
- package/lib/orchestrator/agent-dispatcher.d.ts +170 -0
- package/lib/orchestrator/agent-dispatcher.d.ts.map +1 -0
- package/lib/orchestrator/agent-dispatcher.js +379 -0
- package/lib/orchestrator/agent-dispatcher.js.map +1 -0
- package/lib/orchestrator/hook-registry.d.ts.map +1 -1
- package/lib/orchestrator/hook-registry.js +2 -0
- package/lib/orchestrator/hook-registry.js.map +1 -1
- package/lib/orchestrator/index.d.ts +2 -0
- package/lib/orchestrator/index.d.ts.map +1 -1
- package/lib/orchestrator/index.js +2 -0
- package/lib/orchestrator/index.js.map +1 -1
- package/lib/orchestrator/mcp-lifecycle.d.ts +1 -1
- package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -1
- package/lib/orchestrator/mcp-lifecycle.js +2 -2
- package/lib/orchestrator/mcp-lifecycle.js.map +1 -1
- package/lib/orchestrator/mcp-registry.d.ts +8 -1
- package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
- package/lib/orchestrator/mcp-registry.js +28 -5
- package/lib/orchestrator/mcp-registry.js.map +1 -1
- package/lib/orchestrator/task-queue.d.ts +147 -0
- package/lib/orchestrator/task-queue.d.ts.map +1 -0
- package/lib/orchestrator/task-queue.js +337 -0
- package/lib/orchestrator/task-queue.js.map +1 -0
- package/lib/orchestrator/tool-selection.d.ts.map +1 -1
- package/lib/orchestrator/tool-selection.js +3 -0
- package/lib/orchestrator/tool-selection.js.map +1 -1
- package/lib/orchestrator/types.d.ts +8 -0
- package/lib/orchestrator/types.d.ts.map +1 -1
- package/lib/plugin-ai-hook-bus.d.ts +4 -0
- package/lib/plugin-ai-hook-bus.d.ts.map +1 -0
- package/lib/plugin-ai-hook-bus.js +24 -0
- package/lib/plugin-ai-hook-bus.js.map +1 -0
- package/lib/security/anomaly-detection.d.ts +119 -0
- package/lib/security/anomaly-detection.d.ts.map +1 -0
- package/lib/security/anomaly-detection.js +305 -0
- package/lib/security/anomaly-detection.js.map +1 -0
- package/lib/security/audit-logger.d.ts +158 -0
- package/lib/security/audit-logger.d.ts.map +1 -0
- package/lib/security/audit-logger.js +379 -0
- package/lib/security/audit-logger.js.map +1 -0
- package/lib/security/bash-tool-context.d.ts +3 -3
- package/lib/security/bash-tool-context.d.ts.map +1 -1
- package/lib/security/budget-limiter.d.ts +156 -0
- package/lib/security/budget-limiter.d.ts.map +1 -0
- package/lib/security/budget-limiter.js +363 -0
- package/lib/security/budget-limiter.js.map +1 -0
- package/lib/security/dangerous-tool-policy.d.ts +17 -0
- package/lib/security/dangerous-tool-policy.d.ts.map +1 -0
- package/lib/security/dangerous-tool-policy.js +137 -0
- package/lib/security/dangerous-tool-policy.js.map +1 -0
- package/lib/security/exec-policy.d.ts +21 -12
- package/lib/security/exec-policy.d.ts.map +1 -1
- package/lib/security/exec-policy.js +198 -25
- package/lib/security/exec-policy.js.map +1 -1
- package/lib/security/file-policy.d.ts +0 -1
- package/lib/security/file-policy.d.ts.map +1 -1
- package/lib/security/file-policy.js +112 -14
- package/lib/security/file-policy.js.map +1 -1
- package/lib/security/file-role-policy.d.ts +119 -0
- package/lib/security/file-role-policy.d.ts.map +1 -0
- package/lib/security/file-role-policy.js +268 -0
- package/lib/security/file-role-policy.js.map +1 -0
- package/lib/security/index.d.ts +59 -0
- package/lib/security/index.d.ts.map +1 -1
- package/lib/security/index.js +68 -0
- package/lib/security/index.js.map +1 -1
- package/lib/security/network-policy.d.ts +94 -0
- package/lib/security/network-policy.d.ts.map +1 -0
- package/lib/security/network-policy.js +291 -0
- package/lib/security/network-policy.js.map +1 -0
- package/lib/security/owner-approve-always-store.d.ts +2 -0
- package/lib/security/owner-approve-always-store.d.ts.map +1 -1
- package/lib/security/owner-approve-always-store.js +37 -0
- package/lib/security/owner-approve-always-store.js.map +1 -1
- package/lib/security/sandbox-enhanced.d.ts +170 -0
- package/lib/security/sandbox-enhanced.d.ts.map +1 -0
- package/lib/security/sandbox-enhanced.js +630 -0
- package/lib/security/sandbox-enhanced.js.map +1 -0
- package/lib/security/sandbox.d.ts +104 -0
- package/lib/security/sandbox.d.ts.map +1 -0
- package/lib/security/sandbox.js +373 -0
- package/lib/security/sandbox.js.map +1 -0
- package/lib/security/security-config.example.d.ts +33 -0
- package/lib/security/security-config.example.d.ts.map +1 -0
- package/lib/security/security-config.example.js +166 -0
- package/lib/security/security-config.example.js.map +1 -0
- package/lib/subagent-goal-notify.d.ts +13 -0
- package/lib/subagent-goal-notify.d.ts.map +1 -0
- package/lib/subagent-goal-notify.js +32 -0
- package/lib/subagent-goal-notify.js.map +1 -0
- package/lib/subagent.d.ts +24 -0
- package/lib/subagent.d.ts.map +1 -1
- package/lib/subagent.js +98 -16
- package/lib/subagent.js.map +1 -1
- package/lib/typing-indicator/adapter-integration.d.ts +140 -0
- package/lib/typing-indicator/adapter-integration.d.ts.map +1 -0
- package/lib/typing-indicator/adapter-integration.js +473 -0
- package/lib/typing-indicator/adapter-integration.js.map +1 -0
- package/lib/typing-indicator/index.d.ts +170 -0
- package/lib/typing-indicator/index.d.ts.map +1 -0
- package/lib/typing-indicator/index.js +311 -0
- package/lib/typing-indicator/index.js.map +1 -0
- package/lib/typing-indicator/integration.d.ts +91 -0
- package/lib/typing-indicator/integration.d.ts.map +1 -0
- package/lib/typing-indicator/integration.js +219 -0
- package/lib/typing-indicator/integration.js.map +1 -0
- package/lib/zhin-agent/config.d.ts +20 -2
- package/lib/zhin-agent/config.d.ts.map +1 -1
- package/lib/zhin-agent/config.js +27 -9
- package/lib/zhin-agent/config.js.map +1 -1
- package/lib/zhin-agent/event-emitter.d.ts +11 -0
- package/lib/zhin-agent/event-emitter.d.ts.map +1 -0
- package/lib/zhin-agent/event-emitter.js +43 -0
- package/lib/zhin-agent/event-emitter.js.map +1 -0
- package/lib/zhin-agent/index.d.ts +9 -31
- package/lib/zhin-agent/index.d.ts.map +1 -1
- package/lib/zhin-agent/index.js +70 -672
- package/lib/zhin-agent/index.js.map +1 -1
- package/lib/zhin-agent/llm-runner.d.ts +16 -0
- package/lib/zhin-agent/llm-runner.d.ts.map +1 -0
- package/lib/zhin-agent/llm-runner.js +85 -0
- package/lib/zhin-agent/llm-runner.js.map +1 -0
- package/lib/zhin-agent/model-resolver.d.ts +9 -0
- package/lib/zhin-agent/model-resolver.d.ts.map +1 -0
- package/lib/zhin-agent/model-resolver.js +25 -0
- package/lib/zhin-agent/model-resolver.js.map +1 -0
- package/lib/zhin-agent/phase-trace.d.ts +12 -0
- package/lib/zhin-agent/phase-trace.d.ts.map +1 -0
- package/lib/zhin-agent/phase-trace.js +24 -0
- package/lib/zhin-agent/phase-trace.js.map +1 -0
- package/lib/zhin-agent/prompt-assembly.d.ts +22 -0
- package/lib/zhin-agent/prompt-assembly.d.ts.map +1 -0
- package/lib/zhin-agent/prompt-assembly.js +66 -0
- package/lib/zhin-agent/prompt-assembly.js.map +1 -0
- package/lib/zhin-agent/prompt-builder.d.ts +200 -0
- package/lib/zhin-agent/prompt-builder.d.ts.map +1 -0
- package/lib/zhin-agent/prompt-builder.js +574 -0
- package/lib/zhin-agent/prompt-builder.js.map +1 -0
- package/lib/zhin-agent/prompt-templates.d.ts +160 -0
- package/lib/zhin-agent/prompt-templates.d.ts.map +1 -0
- package/lib/zhin-agent/prompt-templates.js +436 -0
- package/lib/zhin-agent/prompt-templates.js.map +1 -0
- package/lib/zhin-agent/prompt.d.ts +15 -0
- package/lib/zhin-agent/prompt.d.ts.map +1 -1
- package/lib/zhin-agent/prompt.js +149 -4
- package/lib/zhin-agent/prompt.js.map +1 -1
- package/lib/zhin-agent/session-io.d.ts +10 -0
- package/lib/zhin-agent/session-io.d.ts.map +1 -0
- package/lib/zhin-agent/session-io.js +14 -0
- package/lib/zhin-agent/session-io.js.map +1 -0
- package/lib/zhin-agent/task-continuation.d.ts +144 -0
- package/lib/zhin-agent/task-continuation.d.ts.map +1 -0
- package/lib/zhin-agent/task-continuation.js +346 -0
- package/lib/zhin-agent/task-continuation.js.map +1 -0
- package/lib/zhin-agent/text-sanitize.d.ts +2 -5
- package/lib/zhin-agent/text-sanitize.d.ts.map +1 -1
- package/lib/zhin-agent/text-sanitize.js +2 -25
- package/lib/zhin-agent/text-sanitize.js.map +1 -1
- package/lib/zhin-agent/tool-calls-user-format.d.ts.map +1 -1
- package/lib/zhin-agent/tool-calls-user-format.js +12 -3
- package/lib/zhin-agent/tool-calls-user-format.js.map +1 -1
- package/lib/zhin-agent/tool-orchestration.d.ts +9 -0
- package/lib/zhin-agent/tool-orchestration.d.ts.map +1 -0
- package/lib/zhin-agent/tool-orchestration.js +68 -0
- package/lib/zhin-agent/tool-orchestration.js.map +1 -0
- package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -1
- package/lib/zhin-agent/tool-search-orchestrator.js +5 -2
- package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -1
- package/lib/zhin-agent/turn-pipeline.d.ts +5 -0
- package/lib/zhin-agent/turn-pipeline.d.ts.map +1 -0
- package/lib/zhin-agent/turn-pipeline.js +541 -0
- package/lib/zhin-agent/turn-pipeline.js.map +1 -0
- package/lib/zhin-agent/turn-tracker.d.ts +17 -0
- package/lib/zhin-agent/turn-tracker.d.ts.map +1 -0
- package/lib/zhin-agent/turn-tracker.js +54 -0
- package/lib/zhin-agent/turn-tracker.js.map +1 -0
- package/lib/zhin-agent/web-search-locale-attach.d.ts +4 -0
- package/lib/zhin-agent/web-search-locale-attach.d.ts.map +1 -0
- package/lib/zhin-agent/web-search-locale-attach.js +19 -0
- package/lib/zhin-agent/web-search-locale-attach.js.map +1 -0
- package/lib/zhin-agent/zhin-agent-private.d.ts +66 -0
- package/lib/zhin-agent/zhin-agent-private.d.ts.map +1 -0
- package/lib/zhin-agent/zhin-agent-private.js +4 -0
- package/lib/zhin-agent/zhin-agent-private.js.map +1 -0
- package/package.json +5 -5
|
@@ -4,7 +4,7 @@ const contributors = new Map();
|
|
|
4
4
|
export function registerAgentPromptContributor(contributor) {
|
|
5
5
|
const key = contributor.platform;
|
|
6
6
|
if (contributors.has(key)) {
|
|
7
|
-
logger.warn(
|
|
7
|
+
logger.warn(`平台 "${key}" 的 AgentPromptContributor 已注册,正在覆盖旧实现`);
|
|
8
8
|
}
|
|
9
9
|
contributors.set(key, contributor);
|
|
10
10
|
}
|
|
@@ -1 +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
|
|
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,OAAO,GAAG,wCAAwC,CAAC,CAAC;IAClE,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,19 @@
|
|
|
1
|
+
import type { Plugin } from '@zhin.js/core';
|
|
2
|
+
import type { AIHookEvent } from './orchestrator/types.js';
|
|
3
|
+
export type AIEventPayload = Plugin.AIEventPayload;
|
|
4
|
+
export interface AISessionNewPayload extends Plugin.AIEventPayload {
|
|
5
|
+
reason: 'first_message';
|
|
6
|
+
}
|
|
7
|
+
export interface AISessionCompactPayload extends Plugin.AIEventPayload {
|
|
8
|
+
compactedCount: number;
|
|
9
|
+
savedTokens: number;
|
|
10
|
+
totalTokensBefore: number;
|
|
11
|
+
totalTokensAfter: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function createAIHookBusPayload(event: AIHookEvent, source: Plugin.AIEventPayload['source'], agentId?: string): Plugin.AIEventPayload;
|
|
14
|
+
export declare function isAISessionNewPayload(payload: Plugin.AIEventPayload): payload is AISessionNewPayload;
|
|
15
|
+
export declare function isAISessionCompactPayload(payload: Plugin.AIEventPayload): payload is AISessionCompactPayload;
|
|
16
|
+
export declare function onAIHook(plugin: Plugin, listener: (payload: Plugin.AIEventPayload) => void): () => void;
|
|
17
|
+
export declare function onAISessionNew(plugin: Plugin, listener: (payload: AISessionNewPayload) => void): () => void;
|
|
18
|
+
export declare function onAISessionCompact(plugin: Plugin, listener: (payload: AISessionCompactPayload) => void): () => void;
|
|
19
|
+
//# sourceMappingURL=ai-event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-event-bus.d.ts","sourceRoot":"","sources":["../src/ai-event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAEnD,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,cAAc;IAChE,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,uBAAwB,SAAQ,MAAM,CAAC,cAAc;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAkBD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EACvC,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,cAAc,CAmCvB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,IAAI,mBAAmB,CAEpG;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,IAAI,uBAAuB,CAK5G;AAWD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI,CAEvG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,MAAM,IAAI,CAE3G;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,GAAG,MAAM,IAAI,CAEnH"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
function resolveSessionId(event) {
|
|
2
|
+
if (event.sessionId)
|
|
3
|
+
return event.sessionId;
|
|
4
|
+
const platform = typeof event.context.platform === 'string' ? event.context.platform : 'system';
|
|
5
|
+
const sceneId = typeof event.context.sceneId === 'string'
|
|
6
|
+
? event.context.sceneId
|
|
7
|
+
: typeof event.context.channelId === 'string'
|
|
8
|
+
? event.context.channelId
|
|
9
|
+
: `${event.type}:${event.action}`;
|
|
10
|
+
const userId = typeof event.context.senderId === 'string'
|
|
11
|
+
? event.context.senderId
|
|
12
|
+
: typeof event.context.from === 'string'
|
|
13
|
+
? event.context.from
|
|
14
|
+
: 'system';
|
|
15
|
+
return `${platform}:${sceneId}:${userId}`;
|
|
16
|
+
}
|
|
17
|
+
export function createAIHookBusPayload(event, source, agentId) {
|
|
18
|
+
return {
|
|
19
|
+
sessionId: resolveSessionId(event),
|
|
20
|
+
source,
|
|
21
|
+
hookType: event.type,
|
|
22
|
+
hookAction: event.action,
|
|
23
|
+
hookContext: event.context,
|
|
24
|
+
messages: event.messages,
|
|
25
|
+
agentId,
|
|
26
|
+
platform: typeof event.context.platform === 'string' ? event.context.platform : undefined,
|
|
27
|
+
botId: typeof event.context.botId === 'string' ? event.context.botId : undefined,
|
|
28
|
+
userId: typeof event.context.senderId === 'string'
|
|
29
|
+
? event.context.senderId
|
|
30
|
+
: typeof event.context.from === 'string'
|
|
31
|
+
? event.context.from
|
|
32
|
+
: undefined,
|
|
33
|
+
sceneId: typeof event.context.sceneId === 'string'
|
|
34
|
+
? event.context.sceneId
|
|
35
|
+
: typeof event.context.channelId === 'string'
|
|
36
|
+
? event.context.channelId
|
|
37
|
+
: undefined,
|
|
38
|
+
messageId: typeof event.context.messageId === 'string' ? event.context.messageId : undefined,
|
|
39
|
+
content: typeof event.context.content === 'string' ? event.context.content : undefined,
|
|
40
|
+
toolName: typeof event.context.toolName === 'string' ? event.context.toolName : undefined,
|
|
41
|
+
args: typeof event.context.args === 'object' && event.context.args !== null
|
|
42
|
+
? event.context.args
|
|
43
|
+
: undefined,
|
|
44
|
+
result: event.context.result,
|
|
45
|
+
error: typeof event.context.error === 'string' ? event.context.error : undefined,
|
|
46
|
+
reply: event.messages[0],
|
|
47
|
+
compactedCount: typeof event.context.compactedCount === 'number' ? event.context.compactedCount : undefined,
|
|
48
|
+
savedTokens: typeof event.context.savedTokens === 'number' ? event.context.savedTokens : undefined,
|
|
49
|
+
totalTokensBefore: typeof event.context.totalTokensBefore === 'number' ? event.context.totalTokensBefore : undefined,
|
|
50
|
+
totalTokensAfter: typeof event.context.totalTokensAfter === 'number' ? event.context.totalTokensAfter : undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function isAISessionNewPayload(payload) {
|
|
54
|
+
return payload.reason === 'first_message';
|
|
55
|
+
}
|
|
56
|
+
export function isAISessionCompactPayload(payload) {
|
|
57
|
+
return typeof payload.compactedCount === 'number'
|
|
58
|
+
&& typeof payload.savedTokens === 'number'
|
|
59
|
+
&& typeof payload.totalTokensBefore === 'number'
|
|
60
|
+
&& typeof payload.totalTokensAfter === 'number';
|
|
61
|
+
}
|
|
62
|
+
function onAIEvent(plugin, event, listener) {
|
|
63
|
+
plugin.on(event, listener);
|
|
64
|
+
return () => plugin.off(event, listener);
|
|
65
|
+
}
|
|
66
|
+
export function onAIHook(plugin, listener) {
|
|
67
|
+
return onAIEvent(plugin, 'ai.hook', listener);
|
|
68
|
+
}
|
|
69
|
+
export function onAISessionNew(plugin, listener) {
|
|
70
|
+
return onAIEvent(plugin, 'ai.session.new', listener);
|
|
71
|
+
}
|
|
72
|
+
export function onAISessionCompact(plugin, listener) {
|
|
73
|
+
return onAIEvent(plugin, 'ai.session.compact', listener);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ai-event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-event-bus.js","sourceRoot":"","sources":["../src/ai-event-bus.ts"],"names":[],"mappings":"AAgBA,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChG,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;QACvD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;QACvB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ;YAC3C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;YACzB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACvD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;QACxB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;YACtC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;YACpB,CAAC,CAAC,QAAQ,CAAC;IACf,OAAO,GAAG,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,MAAuC,EACvC,OAAgB;IAEhB,OAAO;QACL,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC;QAClC,MAAM;QACN,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO;QACP,QAAQ,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACzF,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAChF,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAChD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;YACxB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBACtC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;gBACpB,CAAC,CAAC,SAAS;QACf,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;YAChD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;YACvB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ;gBAC3C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;gBACzB,CAAC,CAAC,SAAS;QACf,SAAS,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC5F,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACtF,QAAQ,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACzF,IAAI,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI;YACzE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAA+B;YAC/C,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAC5B,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxB,cAAc,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QAC3G,WAAW,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAClG,iBAAiB,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;QACpH,gBAAgB,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;KAClH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA8B;IAClE,OAAO,OAAO,CAAC,MAAM,KAAK,eAAe,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAA8B;IACtE,OAAO,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;WAC5C,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;WACvC,OAAO,OAAO,CAAC,iBAAiB,KAAK,QAAQ;WAC7C,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ,CAAC;AACpD,CAAC;AAED,SAAS,SAAS,CAChB,MAAc,EACd,KAA0D,EAC1D,QAAkD;IAElD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,QAAkD;IACzF,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,QAAgD;IAC7F,OAAO,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAoD,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,QAAoD;IACrG,OAAO,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAoD,CAAC,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Plugin } from '@zhin.js/core';
|
|
2
|
+
export type AIEventName = 'ai.processing.start' | 'ai.processing.finish' | 'ai.processing.error' | 'ai.agent.start' | 'ai.agent.finish' | 'ai.thinking' | 'ai.tool.call' | 'ai.tool.result' | 'ai.response' | 'ai.typing.start' | 'ai.typing.stop' | 'ai.subagent.spawn' | 'ai.subagent.start' | 'ai.subagent.finish' | 'ai.deferred.start' | 'ai.deferred.finish' | 'ai.mcp.connect.start' | 'ai.mcp.connect.finish' | 'ai.mcp.connect.error' | 'ai.session.new' | 'ai.session.compact' | 'ai.hook';
|
|
3
|
+
export type AIEventPayload = Plugin.AIEventPayload;
|
|
4
|
+
export interface AIEventFilter {
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
platform?: string;
|
|
7
|
+
botId?: string;
|
|
8
|
+
sceneId?: string;
|
|
9
|
+
source?: Plugin.AIEventPayload['source'];
|
|
10
|
+
}
|
|
11
|
+
export interface AIEventHandlers {
|
|
12
|
+
onAny?: (event: AIEventName, payload: AIEventPayload) => void;
|
|
13
|
+
onProcessingStart?: (payload: AIEventPayload) => void;
|
|
14
|
+
onProcessingFinish?: (payload: AIEventPayload) => void;
|
|
15
|
+
onProcessingError?: (payload: AIEventPayload) => void;
|
|
16
|
+
onAgentStart?: (payload: AIEventPayload) => void;
|
|
17
|
+
onAgentFinish?: (payload: AIEventPayload) => void;
|
|
18
|
+
onThinking?: (payload: AIEventPayload) => void;
|
|
19
|
+
onToolCall?: (payload: AIEventPayload) => void;
|
|
20
|
+
onToolResult?: (payload: AIEventPayload) => void;
|
|
21
|
+
onResponse?: (payload: AIEventPayload) => void;
|
|
22
|
+
onTypingStart?: (payload: AIEventPayload) => void;
|
|
23
|
+
onTypingStop?: (payload: AIEventPayload) => void;
|
|
24
|
+
onSubagentSpawn?: (payload: AIEventPayload) => void;
|
|
25
|
+
onSubagentStart?: (payload: AIEventPayload) => void;
|
|
26
|
+
onSubagentFinish?: (payload: AIEventPayload) => void;
|
|
27
|
+
onDeferredStart?: (payload: AIEventPayload) => void;
|
|
28
|
+
onDeferredFinish?: (payload: AIEventPayload) => void;
|
|
29
|
+
onMcpConnectStart?: (payload: AIEventPayload) => void;
|
|
30
|
+
onMcpConnectFinish?: (payload: AIEventPayload) => void;
|
|
31
|
+
onMcpConnectError?: (payload: AIEventPayload) => void;
|
|
32
|
+
onSessionNew?: (payload: AIEventPayload) => void;
|
|
33
|
+
onSessionCompact?: (payload: AIEventPayload) => void;
|
|
34
|
+
onHook?: (payload: AIEventPayload) => void;
|
|
35
|
+
}
|
|
36
|
+
export declare const AI_EVENT_NAMES: AIEventName[];
|
|
37
|
+
export declare function subscribeAIEvents(plugin: Plugin, handlers: AIEventHandlers, filter?: AIEventFilter): () => void;
|
|
38
|
+
//# sourceMappingURL=ai-event-subscriber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-event-subscriber.d.ts","sourceRoot":"","sources":["../src/ai-event-subscriber.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
const EVENT_HANDLER_MAP = {
|
|
2
|
+
'ai.processing.start': 'onProcessingStart',
|
|
3
|
+
'ai.processing.finish': 'onProcessingFinish',
|
|
4
|
+
'ai.processing.error': 'onProcessingError',
|
|
5
|
+
'ai.agent.start': 'onAgentStart',
|
|
6
|
+
'ai.agent.finish': 'onAgentFinish',
|
|
7
|
+
'ai.thinking': 'onThinking',
|
|
8
|
+
'ai.tool.call': 'onToolCall',
|
|
9
|
+
'ai.tool.result': 'onToolResult',
|
|
10
|
+
'ai.response': 'onResponse',
|
|
11
|
+
'ai.typing.start': 'onTypingStart',
|
|
12
|
+
'ai.typing.stop': 'onTypingStop',
|
|
13
|
+
'ai.subagent.spawn': 'onSubagentSpawn',
|
|
14
|
+
'ai.subagent.start': 'onSubagentStart',
|
|
15
|
+
'ai.subagent.finish': 'onSubagentFinish',
|
|
16
|
+
'ai.deferred.start': 'onDeferredStart',
|
|
17
|
+
'ai.deferred.finish': 'onDeferredFinish',
|
|
18
|
+
'ai.mcp.connect.start': 'onMcpConnectStart',
|
|
19
|
+
'ai.mcp.connect.finish': 'onMcpConnectFinish',
|
|
20
|
+
'ai.mcp.connect.error': 'onMcpConnectError',
|
|
21
|
+
'ai.session.new': 'onSessionNew',
|
|
22
|
+
'ai.session.compact': 'onSessionCompact',
|
|
23
|
+
'ai.hook': 'onHook',
|
|
24
|
+
};
|
|
25
|
+
export const AI_EVENT_NAMES = Object.keys(EVENT_HANDLER_MAP);
|
|
26
|
+
function matchesFilter(payload, filter) {
|
|
27
|
+
if (!filter)
|
|
28
|
+
return true;
|
|
29
|
+
if (filter.sessionId && payload.sessionId !== filter.sessionId)
|
|
30
|
+
return false;
|
|
31
|
+
if (filter.platform && payload.platform !== filter.platform)
|
|
32
|
+
return false;
|
|
33
|
+
if (filter.botId && payload.botId !== filter.botId)
|
|
34
|
+
return false;
|
|
35
|
+
if (filter.sceneId && payload.sceneId !== filter.sceneId)
|
|
36
|
+
return false;
|
|
37
|
+
if (filter.source && payload.source !== filter.source)
|
|
38
|
+
return false;
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
export function subscribeAIEvents(plugin, handlers, filter) {
|
|
42
|
+
const disposers = AI_EVENT_NAMES.map((eventName) => {
|
|
43
|
+
const listener = (payload) => {
|
|
44
|
+
if (!matchesFilter(payload, filter))
|
|
45
|
+
return;
|
|
46
|
+
handlers.onAny?.(eventName, payload);
|
|
47
|
+
const handlerName = EVENT_HANDLER_MAP[eventName];
|
|
48
|
+
const handler = handlerName ? handlers[handlerName] : undefined;
|
|
49
|
+
if (typeof handler === 'function') {
|
|
50
|
+
handler(payload);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
plugin.on(eventName, listener);
|
|
54
|
+
return () => plugin.off(eventName, listener);
|
|
55
|
+
});
|
|
56
|
+
return () => {
|
|
57
|
+
for (const dispose of disposers)
|
|
58
|
+
dispose();
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ai-event-subscriber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-event-subscriber.js","sourceRoot":"","sources":["../src/ai-event-subscriber.ts"],"names":[],"mappings":"AA8DA,MAAM,iBAAiB,GAA2D;IAChF,qBAAqB,EAAE,mBAAmB;IAC1C,sBAAsB,EAAE,oBAAoB;IAC5C,qBAAqB,EAAE,mBAAmB;IAC1C,gBAAgB,EAAE,cAAc;IAChC,iBAAiB,EAAE,eAAe;IAClC,aAAa,EAAE,YAAY;IAC3B,cAAc,EAAE,YAAY;IAC5B,gBAAgB,EAAE,cAAc;IAChC,aAAa,EAAE,YAAY;IAC3B,iBAAiB,EAAE,eAAe;IAClC,gBAAgB,EAAE,cAAc;IAChC,mBAAmB,EAAE,iBAAiB;IACtC,mBAAmB,EAAE,iBAAiB;IACtC,oBAAoB,EAAE,kBAAkB;IACxC,mBAAmB,EAAE,iBAAiB;IACtC,oBAAoB,EAAE,kBAAkB;IACxC,sBAAsB,EAAE,mBAAmB;IAC3C,uBAAuB,EAAE,oBAAoB;IAC7C,sBAAsB,EAAE,mBAAmB;IAC3C,gBAAgB,EAAE,cAAc;IAChC,oBAAoB,EAAE,kBAAkB;IACxC,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAkB,CAAC;AAE9E,SAAS,aAAa,CAAC,OAAuB,EAAE,MAAsB;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1E,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACvE,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,QAAyB,EACzB,MAAsB;IAEtB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,CAAC,OAAuB,EAAE,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC;gBAAE,OAAO;YAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBACjC,OAA6C,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,OAAO,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -22,6 +22,8 @@ export declare class AskUserBuiltinTool extends BuiltinBaseTool {
|
|
|
22
22
|
readonly description = "\u5411 Bot Owner \u53D1\u9001\u95EE\u9898\u5E76\u7B49\u5F85\u56DE\u590D\uFF1B\u7FA4\u804A\u573A\u666F\u4E0B\u901A\u8FC7\u79C1\u804A\u786E\u8BA4\u3002bash/icqq\uFF1AOwner \u79C1\u804A\u53EF\u7528\u300C#approve always bash\u300D\u300C#approve rule <\u6B63\u5219>\u300D\uFF08\u5339\u914D\u6574\u6BB5 shell \u5B50\u547D\u4EE4\uFF0C\u5982\u70B9\u8D5E\u7C7B icqq \u4E0D\u5FC5\u56FA\u5316\u89E3\u53C2\u6570\uFF09\u3001\u300C#approve list\u300D\u300C#approve revoke rule <id>\u300D\u300C#approve revoke\u300D\u7B49\uFF08\u4EA6\u652F\u6301 / \u6216\u65E0 #\uFF09\u3002write_file / edit_file / web_fetch \u7684\u786C\u7F16\u6392\u4ECD\u987B\u9010\u6B21\u786E\u8BA4\u3002";
|
|
23
23
|
readonly parameters: ToolParametersSchema<Record<string, any>>;
|
|
24
24
|
readonly kind = "interaction";
|
|
25
|
+
/** 默认等待 Owner 120s,须大于 Agent 默认 30s 工具超时 */
|
|
26
|
+
readonly executionTimeoutMs = 150000;
|
|
25
27
|
constructor(plugin: Plugin);
|
|
26
28
|
run(args: Record<string, unknown>, context?: ToolContext): Promise<ToolResult>;
|
|
27
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,KAAK,MAAM,EAGX,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAgBxG;AAED,eAAO,MAAM,mBAAmB,EAAE,oBAkBjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,qBAAa,kBAAmB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"ask-user-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,KAAK,MAAM,EAGX,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAgBxG;AAED,eAAO,MAAM,mBAAmB,EAAE,oBAkBjC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,qBAAa,kBAAmB,SAAQ,eAAe;IASzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IARnC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,WAAW,0pBAC2O;IAC/P,QAAQ,CAAC,UAAU,4CAAuB;IAC1C,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,kBAAkB,UAAW;gBAET,MAAM,EAAE,MAAM;IAgBrC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CA+ErF"}
|
|
@@ -99,6 +99,8 @@ export class AskUserBuiltinTool extends BuiltinBaseTool {
|
|
|
99
99
|
description = '向 Bot Owner 发送问题并等待回复;群聊场景下通过私聊确认。bash/icqq:Owner 私聊可用「#approve always bash」「#approve rule <正则>」(匹配整段 shell 子命令,如点赞类 icqq 不必固化解参数)、「#approve list」「#approve revoke rule <id>」「#approve revoke」等(亦支持 / 或无 #)。write_file / edit_file / web_fetch 的硬编排仍须逐次确认。';
|
|
100
100
|
parameters = ASK_USER_PARAMETERS;
|
|
101
101
|
kind = 'interaction';
|
|
102
|
+
/** 默认等待 Owner 120s,须大于 Agent 默认 30s 工具超时 */
|
|
103
|
+
executionTimeoutMs = 150_000;
|
|
102
104
|
constructor(plugin) {
|
|
103
105
|
super();
|
|
104
106
|
this.plugin = plugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-tool.js","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ask-user-tool.js","sourceRoot":"","sources":["../../src/builtin/ask-user-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* bash — Shell 执行(安全检查 +
|
|
2
|
+
* bash — Shell 执行(安全检查 + 命令读写分类 + 沙箱保护 + 文件角色权限)
|
|
3
3
|
*/
|
|
4
4
|
import { type ExecOptions } from 'node:child_process';
|
|
5
5
|
import type { Tool, ToolContext, ToolParametersSchema, ToolResult } from '@zhin.js/core';
|
|
@@ -16,8 +16,12 @@ export declare class BashBuiltinTool extends BuiltinBaseTool {
|
|
|
16
16
|
readonly description = "\u6267\u884C Shell \u547D\u4EE4\uFF08\u5E26\u8D85\u65F6\u4FDD\u62A4\u548C\u547D\u4EE4\u5206\u7C7B\uFF09\u3002\u8FD4\u56DE\u7ED3\u679C\u4E2D\u4F1A\u6807\u6CE8\u547D\u4EE4\u7C7B\u578B\uFF08\u53EA\u8BFB/\u641C\u7D22/\u5199\u5165\uFF09\u3002";
|
|
17
17
|
readonly parameters: ToolParametersSchema<Record<string, any>>;
|
|
18
18
|
readonly kind = "shell";
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
/** 是否使用沙箱(默认 true,测试时可设为 false) */
|
|
20
|
+
private useSandbox;
|
|
21
|
+
constructor(execAsync?: BashExecAsync, options?: {
|
|
22
|
+
useSandbox?: boolean;
|
|
23
|
+
});
|
|
24
|
+
run(args: Record<string, unknown>, context?: ToolContext): Promise<ToolResult>;
|
|
21
25
|
}
|
|
22
26
|
export declare function createBashTool(): Tool;
|
|
23
27
|
//# sourceMappingURL=bash-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/bash-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"bash-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/bash-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,oCAAoC;AACpC,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,eAAO,MAAM,eAAe,EAAE,oBAQ7B,CAAC;AAEF,qBAAa,eAAgB,SAAQ,eAAe;IAWhD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAV5B,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,mPACgC;IACpD,QAAQ,CAAC,UAAU,4CAAmB;IACtC,QAAQ,CAAC,IAAI,WAAW;IAExB,mCAAmC;IACnC,OAAO,CAAC,UAAU,CAAU;gBAGT,SAAS,GAAE,aAAgC,EAC5D,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;IAQ9B,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAoErF;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
package/lib/builtin/bash-tool.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* bash — Shell 执行(安全检查 +
|
|
2
|
+
* bash — Shell 执行(安全检查 + 命令读写分类 + 沙箱保护 + 文件角色权限)
|
|
3
3
|
*/
|
|
4
4
|
import { exec } from 'node:child_process';
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
6
|
import { checkBashCommandSafety, classifyBashCommand, } from '../security/file-policy.js';
|
|
7
|
+
import { checkBashFilePermission, formatFilePermissionMessage } from '../security/file-role-policy.js';
|
|
8
|
+
import { getSandbox } from '../security/sandbox.js';
|
|
7
9
|
import { errMsg } from '../discovery/utils.js';
|
|
8
10
|
import { BuiltinBaseTool } from './builtin-base-tool.js';
|
|
9
11
|
const defaultExecAsync = promisify(exec);
|
|
@@ -22,26 +24,66 @@ export class BashBuiltinTool extends BuiltinBaseTool {
|
|
|
22
24
|
description = '执行 Shell 命令(带超时保护和命令分类)。返回结果中会标注命令类型(只读/搜索/写入)。';
|
|
23
25
|
parameters = BASH_PARAMETERS;
|
|
24
26
|
kind = 'shell';
|
|
25
|
-
|
|
27
|
+
/** 是否使用沙箱(默认 true,测试时可设为 false) */
|
|
28
|
+
useSandbox;
|
|
29
|
+
constructor(execAsync = defaultExecAsync, options) {
|
|
26
30
|
super();
|
|
27
31
|
this.execAsync = execAsync;
|
|
28
32
|
this.tags.push('shell', 'exec');
|
|
29
33
|
this.keywords.push('执行', '运行', '命令', '终端', 'shell', 'bash');
|
|
34
|
+
this.useSandbox = options?.useSandbox ?? true;
|
|
30
35
|
}
|
|
31
|
-
async run(args,
|
|
36
|
+
async run(args, context) {
|
|
32
37
|
try {
|
|
33
|
-
const timeout = args.timeout ?? 30000;
|
|
34
38
|
const cmd = String(args.command || '');
|
|
39
|
+
if (!cmd.trim())
|
|
40
|
+
return 'Error: command is required';
|
|
35
41
|
const safety = checkBashCommandSafety(cmd);
|
|
36
42
|
if (!safety.safe)
|
|
37
43
|
return `Error: ${safety.reason}`;
|
|
44
|
+
const role = context?.fileRole ?? 'owner';
|
|
45
|
+
const filePermResult = checkBashFilePermission(role, cmd);
|
|
46
|
+
if (!filePermResult.allowed) {
|
|
47
|
+
return formatFilePermissionMessage(filePermResult, 'bash', `Shell 命令: ${cmd.slice(0, 200)}`);
|
|
48
|
+
}
|
|
49
|
+
if (filePermResult.needsOwnerConfirmation || filePermResult.needsConfirmation) {
|
|
50
|
+
const msg = formatFilePermissionMessage(filePermResult, 'bash', `Shell 命令: ${cmd.slice(0, 200)}`);
|
|
51
|
+
if (msg)
|
|
52
|
+
return msg;
|
|
53
|
+
}
|
|
54
|
+
const timeout = args.timeout ?? 30000;
|
|
38
55
|
const classification = classifyBashCommand(cmd);
|
|
39
56
|
const cwd = args.cwd || process.cwd();
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
let stdout;
|
|
58
|
+
let stderr;
|
|
59
|
+
if (this.useSandbox) {
|
|
60
|
+
// 使用沙箱执行命令
|
|
61
|
+
const sandbox = getSandbox();
|
|
62
|
+
const sandboxResult = await sandbox.execute(cmd, {
|
|
63
|
+
cwd,
|
|
64
|
+
timeout,
|
|
65
|
+
});
|
|
66
|
+
// 检查是否被沙箱阻止
|
|
67
|
+
if (sandboxResult.blocked) {
|
|
68
|
+
return `Error: 命令被沙箱阻止 - ${sandboxResult.blockReason}`;
|
|
69
|
+
}
|
|
70
|
+
// 检查是否超时
|
|
71
|
+
if (sandboxResult.timedOut) {
|
|
72
|
+
return `Error: 命令执行超时(${timeout}ms)`;
|
|
73
|
+
}
|
|
74
|
+
stdout = sandboxResult.stdout;
|
|
75
|
+
stderr = sandboxResult.stderr;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// 使用传统的 exec 执行(用于测试)
|
|
79
|
+
const result = await this.execAsync(cmd, {
|
|
80
|
+
cwd,
|
|
81
|
+
timeout,
|
|
82
|
+
maxBuffer: 1024 * 1024,
|
|
83
|
+
});
|
|
84
|
+
stdout = result.stdout;
|
|
85
|
+
stderr = result.stderr;
|
|
86
|
+
}
|
|
45
87
|
let result = '';
|
|
46
88
|
const tag = classification.isReadOnly
|
|
47
89
|
? (classification.isSearch ? '[搜索]' : classification.isList ? '[列出]' : '[只读]')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-tool.js","sourceRoot":"","sources":["../../src/builtin/bash-tool.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAoB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAQzC,MAAM,CAAC,MAAM,eAAe,GAAyB;IACnD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;QACpD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;QAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;KAC5D;IACD,QAAQ,EAAE,CAAC,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"bash-tool.js","sourceRoot":"","sources":["../../src/builtin/bash-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bing-search-html.d.ts","sourceRoot":"","sources":["../../src/builtin/bing-search-html.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bing-search-html.d.ts","sourceRoot":"","sources":["../../src/builtin/bing-search-html.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,KAAG,MAAsB,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAsBtE;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyBjE;AAqBD,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;CAG9B,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK7E;AAED,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAkC,GACzC,MAAM,CAGR;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAI7E"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* https://github.com/claude-code-best/claude-code/blob/main/packages/builtin-tools/src/tools/WebSearchTool/adapters/bingAdapter.ts
|
|
4
4
|
*/
|
|
5
5
|
import he from 'he';
|
|
6
|
+
import { htmlToPlainText } from '@zhin.js/core';
|
|
6
7
|
import { acceptLanguageForMarket, DEFAULT_WEB_SEARCH_MARKET } from './web-search-locale.js';
|
|
7
8
|
export const decodeHtmlEntities = (s) => he.decode(s);
|
|
8
9
|
/**
|
|
@@ -24,7 +25,7 @@ export function extractBingResults(html) {
|
|
|
24
25
|
const url = resolveBingUrl(rawUrl);
|
|
25
26
|
if (!url)
|
|
26
27
|
continue;
|
|
27
|
-
const title = decodeHtmlEntities(titleHtml
|
|
28
|
+
const title = decodeHtmlEntities(htmlToPlainText(titleHtml));
|
|
28
29
|
const snippet = extractSnippet(block);
|
|
29
30
|
results.push({ title, url, snippet });
|
|
30
31
|
}
|
|
@@ -34,17 +35,17 @@ function extractSnippet(block) {
|
|
|
34
35
|
const lineclampRegex = /<p[^>]*class="b_lineclamp[^"]*"[^>]*>([\s\S]*?)<\/p>/i;
|
|
35
36
|
let match = lineclampRegex.exec(block);
|
|
36
37
|
if (match) {
|
|
37
|
-
return decodeHtmlEntities(match[1]
|
|
38
|
+
return decodeHtmlEntities(htmlToPlainText(match[1]));
|
|
38
39
|
}
|
|
39
40
|
const captionPRegex = /<div[^>]*class="b_caption[^"]*"[^>]*>[\s\S]*?<p[^>]*>([\s\S]*?)<\/p>/i;
|
|
40
41
|
match = captionPRegex.exec(block);
|
|
41
42
|
if (match) {
|
|
42
|
-
return decodeHtmlEntities(match[1]
|
|
43
|
+
return decodeHtmlEntities(htmlToPlainText(match[1]));
|
|
43
44
|
}
|
|
44
45
|
const fallbackRegex = /<div[^>]*class="b_caption[^"]*"[^>]*>([\s\S]*?)<\/div>/i;
|
|
45
46
|
const fallbackMatch = fallbackRegex.exec(block);
|
|
46
47
|
if (fallbackMatch) {
|
|
47
|
-
const text = fallbackMatch[1]
|
|
48
|
+
const text = htmlToPlainText(fallbackMatch[1]);
|
|
48
49
|
if (text)
|
|
49
50
|
return decodeHtmlEntities(text);
|
|
50
51
|
}
|
|
@@ -72,9 +73,15 @@ export function resolveBingUrl(rawUrl) {
|
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
try {
|
|
77
|
+
const host = new URL(rawUrl).hostname.toLowerCase();
|
|
78
|
+
if (host === 'bing.com' || host.endsWith('.bing.com'))
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
/* not an absolute URL */
|
|
83
|
+
}
|
|
84
|
+
return rawUrl;
|
|
78
85
|
}
|
|
79
86
|
/** 与 bingAdapter 一致:浏览器风格请求头(不含 Accept-Language,由 {@link bingSearchFetchHeaders} 按市场注入) */
|
|
80
87
|
const BING_SEARCH_BROWSER_HEADERS_BASE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bing-search-html.js","sourceRoot":"","sources":["../../src/builtin/bing-search-html.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAQ5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,8CAA8C,CAAC;IACtE,IAAI,UAAkC,CAAC;IAEvC,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,WAAW,GAAG,yDAAyD,CAAC;QAC9E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"bing-search-html.js","sourceRoot":"","sources":["../../src/builtin/bing-search-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-base-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/builtin-base-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzF,8BAAsB,eAAe;IACnC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAEnD,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAM;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"builtin-base-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/builtin-base-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzF,8BAAsB,eAAe;IACnC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAEnD,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAM;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,gCAAgC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAEvF;;OAEG;IACH,MAAM,IAAI,IAAI;CAiBf"}
|
|
@@ -5,6 +5,8 @@ export class BuiltinBaseTool {
|
|
|
5
5
|
kind;
|
|
6
6
|
/** 仅当为 true 时写入 Tool */
|
|
7
7
|
preExecutable;
|
|
8
|
+
/** Agent 工具执行超时(毫秒),覆盖默认 30s */
|
|
9
|
+
executionTimeoutMs;
|
|
8
10
|
/**
|
|
9
11
|
* 注册到 ToolFeature;带 `source` 以便 `normalizeTool` 识别为 IM 工具形态并绑定 context。
|
|
10
12
|
*/
|
|
@@ -24,6 +26,9 @@ export class BuiltinBaseTool {
|
|
|
24
26
|
tool.kind = this.kind;
|
|
25
27
|
if (this.preExecutable)
|
|
26
28
|
tool.preExecutable = true;
|
|
29
|
+
if (this.executionTimeoutMs != null) {
|
|
30
|
+
tool.timeout = this.executionTimeoutMs;
|
|
31
|
+
}
|
|
27
32
|
return tool;
|
|
28
33
|
}
|
|
29
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-base-tool.js","sourceRoot":"","sources":["../../src/builtin/builtin-base-tool.ts"],"names":[],"mappings":"AAMA,MAAM,OAAgB,eAAe;IAKnC,2BAA2B;IAClB,IAAI,GAAa,EAAE,CAAC;IACpB,QAAQ,GAAa,EAAE,CAAC;IACxB,IAAI,CAAU;IACvB,wBAAwB;IACf,aAAa,CAAW;
|
|
1
|
+
{"version":3,"file":"builtin-base-tool.js","sourceRoot":"","sources":["../../src/builtin/builtin-base-tool.ts"],"names":[],"mappings":"AAMA,MAAM,OAAgB,eAAe;IAKnC,2BAA2B;IAClB,IAAI,GAAa,EAAE,CAAC;IACpB,QAAQ,GAAa,EAAE,CAAC;IACxB,IAAI,CAAU;IACvB,wBAAwB;IACf,aAAa,CAAW;IACjC,gCAAgC;IACvB,kBAAkB,CAAU;IAOrC;;OAEG;IACH,MAAM;QACJ,MAAM,IAAI,GAAS;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAA+B,EAAE,GAAG,CAAC;SAC7E,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAClD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE,CAAC;YACnC,IAAoC,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -7,7 +7,7 @@ export declare class EditFileBuiltinTool extends BuiltinBaseTool {
|
|
|
7
7
|
readonly parameters: ToolParametersSchema<Record<string, any>>;
|
|
8
8
|
readonly kind = "file";
|
|
9
9
|
constructor();
|
|
10
|
-
run(args: Record<string, unknown>,
|
|
10
|
+
run(args: Record<string, unknown>, context?: ToolContext): Promise<ToolResult>;
|
|
11
11
|
}
|
|
12
12
|
export declare function createEditFileTool(): Tool;
|
|
13
13
|
//# sourceMappingURL=edit-file-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-file-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/edit-file-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"edit-file-tool.d.ts","sourceRoot":"","sources":["../../src/builtin/edit-file-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAUzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD,eAAO,MAAM,oBAAoB,EAAE,oBAWlC,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,4YAC4D;IAChF,QAAQ,CAAC,UAAU,4CAAwB;IAC3C,QAAQ,CAAC,IAAI,UAAU;;IAiBjB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAsFrF;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|