@soimy/dingtalk 3.6.1 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14603 -0
- package/dist/index.js.map +7 -0
- package/dist/src/access-control.d.ts +43 -0
- package/dist/src/access-control.d.ts.map +1 -0
- package/dist/src/ack-reaction/dynamic-ack-reaction-controller.d.ts +22 -0
- package/dist/src/ack-reaction/dynamic-ack-reaction-controller.d.ts.map +1 -0
- package/dist/src/ack-reaction/dynamic-ack-reaction-events.d.ts +36 -0
- package/dist/src/ack-reaction/dynamic-ack-reaction-events.d.ts.map +1 -0
- package/dist/src/ack-reaction/dynamic-ack-reaction-progress.d.ts +7 -0
- package/dist/src/ack-reaction/dynamic-ack-reaction-progress.d.ts.map +1 -0
- package/dist/src/ack-reaction-classifier.d.ts +8 -0
- package/dist/src/ack-reaction-classifier.d.ts.map +1 -0
- package/dist/src/ack-reaction-service.d.ts +15 -0
- package/dist/src/ack-reaction-service.d.ts.map +1 -0
- package/dist/src/auth.d.ts +7 -0
- package/dist/src/auth.d.ts.map +1 -0
- package/dist/src/card/card-action-handler.d.ts +14 -0
- package/dist/src/card/card-action-handler.d.ts.map +1 -0
- package/dist/src/card/card-markdown-image-reroute.d.ts +16 -0
- package/dist/src/card/card-markdown-image-reroute.d.ts.map +1 -0
- package/dist/src/card/card-run-registry.d.ts +60 -0
- package/dist/src/card/card-run-registry.d.ts.map +1 -0
- package/dist/src/card/card-stop-handler.d.ts +18 -0
- package/dist/src/card/card-stop-handler.d.ts.map +1 -0
- package/dist/src/card/card-streaming-mode.d.ts +8 -0
- package/dist/src/card/card-streaming-mode.d.ts.map +1 -0
- package/dist/src/card/card-template.d.ts +21 -0
- package/dist/src/card/card-template.d.ts.map +1 -0
- package/dist/src/card/reasoning-answer-split.d.ts +6 -0
- package/dist/src/card/reasoning-answer-split.d.ts.map +1 -0
- package/dist/src/card/reasoning-block-assembler.d.ts +7 -0
- package/dist/src/card/reasoning-block-assembler.d.ts.map +1 -0
- package/dist/src/card/statusline-renderer.d.ts +24 -0
- package/dist/src/card/statusline-renderer.d.ts.map +1 -0
- package/dist/src/card-callback-service.d.ts +23 -0
- package/dist/src/card-callback-service.d.ts.map +1 -0
- package/dist/src/card-draft-controller.d.ts +75 -0
- package/dist/src/card-draft-controller.d.ts.map +1 -0
- package/dist/src/card-service.d.ts +99 -0
- package/dist/src/card-service.d.ts.map +1 -0
- package/dist/src/channel.d.ts +10 -0
- package/dist/src/channel.d.ts.map +1 -0
- package/dist/src/command/card-stop-command.d.ts +30 -0
- package/dist/src/command/card-stop-command.d.ts.map +1 -0
- package/dist/src/command/inbound-command-dispatch-service.d.ts +40 -0
- package/dist/src/command/inbound-command-dispatch-service.d.ts.map +1 -0
- package/dist/src/config-schema.d.ts +8 -0
- package/dist/src/config-schema.d.ts.map +1 -0
- package/dist/src/config.d.ts +60 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/connection-manager.d.ts +148 -0
- package/dist/src/connection-manager.d.ts.map +1 -0
- package/dist/src/dedup.d.ts +4 -0
- package/dist/src/dedup.d.ts.map +1 -0
- package/dist/src/device-registration.d.ts +16 -0
- package/dist/src/device-registration.d.ts.map +1 -0
- package/dist/src/docs-service.d.ts +12 -0
- package/dist/src/docs-service.d.ts.map +1 -0
- package/dist/src/draft-stream-loop.d.ts +28 -0
- package/dist/src/draft-stream-loop.d.ts.map +1 -0
- package/dist/src/feedback-learning-service.d.ts +123 -0
- package/dist/src/feedback-learning-service.d.ts.map +1 -0
- package/dist/src/feedback-learning-store.d.ts +181 -0
- package/dist/src/feedback-learning-store.d.ts.map +1 -0
- package/dist/src/gateway/channel-gateway.d.ts +4 -0
- package/dist/src/gateway/channel-gateway.d.ts.map +1 -0
- package/dist/src/http-client.d.ts +9 -0
- package/dist/src/http-client.d.ts.map +1 -0
- package/dist/src/inbound-handler.d.ts +9 -0
- package/dist/src/inbound-handler.d.ts.map +1 -0
- package/dist/src/learning-command-service.d.ts +64 -0
- package/dist/src/learning-command-service.d.ts.map +1 -0
- package/dist/src/logger-context.d.ts +10 -0
- package/dist/src/logger-context.d.ts.map +1 -0
- package/dist/src/media-utils.d.ts +63 -0
- package/dist/src/media-utils.d.ts.map +1 -0
- package/dist/src/message-context-store.d.ts +126 -0
- package/dist/src/message-context-store.d.ts.map +1 -0
- package/dist/src/message-utils.d.ts +12 -0
- package/dist/src/message-utils.d.ts.map +1 -0
- package/dist/src/messaging/attachment-text-extractor.d.ts +13 -0
- package/dist/src/messaging/attachment-text-extractor.d.ts.map +1 -0
- package/dist/src/messaging/btw-deliver.d.ts +42 -0
- package/dist/src/messaging/btw-deliver.d.ts.map +1 -0
- package/dist/src/messaging/channel-actions.d.ts +3 -0
- package/dist/src/messaging/channel-actions.d.ts.map +1 -0
- package/dist/src/messaging/channel-outbound.d.ts +3 -0
- package/dist/src/messaging/channel-outbound.d.ts.map +1 -0
- package/dist/src/messaging/quoted-context.d.ts +36 -0
- package/dist/src/messaging/quoted-context.d.ts.map +1 -0
- package/dist/src/messaging/quoted-file-service.d.ts +25 -0
- package/dist/src/messaging/quoted-file-service.d.ts.map +1 -0
- package/dist/src/messaging/quoted-ref.d.ts +12 -0
- package/dist/src/messaging/quoted-ref.d.ts.map +1 -0
- package/dist/src/onboarding.d.ts +4 -0
- package/dist/src/onboarding.d.ts.map +1 -0
- package/dist/src/path-utils.d.ts +3 -0
- package/dist/src/path-utils.d.ts.map +1 -0
- package/dist/src/peer-id-registry.d.ts +35 -0
- package/dist/src/peer-id-registry.d.ts.map +1 -0
- package/dist/src/persistence-store.d.ts +27 -0
- package/dist/src/persistence-store.d.ts.map +1 -0
- package/dist/src/platform/channel-status.d.ts +3 -0
- package/dist/src/platform/channel-status.d.ts.map +1 -0
- package/dist/src/plugin-sdk-channel-actions-augment.d.ts +7 -0
- package/dist/src/plugin-sdk-channel-actions-augment.d.ts.map +1 -0
- package/dist/src/proactive-risk-registry.d.ts +22 -0
- package/dist/src/proactive-risk-registry.d.ts.map +1 -0
- package/dist/src/reply-strategy-card.d.ts +14 -0
- package/dist/src/reply-strategy-card.d.ts.map +1 -0
- package/dist/src/reply-strategy-markdown.d.ts +10 -0
- package/dist/src/reply-strategy-markdown.d.ts.map +1 -0
- package/dist/src/reply-strategy-types.d.ts +85 -0
- package/dist/src/reply-strategy-types.d.ts.map +1 -0
- package/dist/src/reply-strategy-with-reaction.d.ts +47 -0
- package/dist/src/reply-strategy-with-reaction.d.ts.map +1 -0
- package/dist/src/reply-strategy.d.ts +14 -0
- package/dist/src/reply-strategy.d.ts.map +1 -0
- package/dist/src/run-usage-store.d.ts +15 -0
- package/dist/src/run-usage-store.d.ts.map +1 -0
- package/dist/src/runtime.d.ts +4 -0
- package/dist/src/runtime.d.ts.map +1 -0
- package/dist/src/secret-input.d.ts +42 -0
- package/dist/src/secret-input.d.ts.map +1 -0
- package/dist/src/send-service.d.ts +46 -0
- package/dist/src/send-service.d.ts.map +1 -0
- package/dist/src/session-command-service.d.ts +35 -0
- package/dist/src/session-command-service.d.ts.map +1 -0
- package/dist/src/session-lock.d.ts +11 -0
- package/dist/src/session-lock.d.ts.map +1 -0
- package/dist/src/session-peer-store.d.ts +21 -0
- package/dist/src/session-peer-store.d.ts.map +1 -0
- package/dist/src/session-routing.d.ts +14 -0
- package/dist/src/session-routing.d.ts.map +1 -0
- package/dist/src/session-state.d.ts +13 -0
- package/dist/src/session-state.d.ts.map +1 -0
- package/dist/src/signature.d.ts +6 -0
- package/dist/src/signature.d.ts.map +1 -0
- package/dist/src/targeting/agent-name-matcher.d.ts +63 -0
- package/dist/src/targeting/agent-name-matcher.d.ts.map +1 -0
- package/dist/src/targeting/agent-routing.d.ts +72 -0
- package/dist/src/targeting/agent-routing.d.ts.map +1 -0
- package/dist/src/targeting/group-members-store.d.ts +3 -0
- package/dist/src/targeting/group-members-store.d.ts.map +1 -0
- package/dist/src/targeting/target-directory-adapter.d.ts +13 -0
- package/dist/src/targeting/target-directory-adapter.d.ts.map +1 -0
- package/dist/src/targeting/target-directory-store.d.ts +45 -0
- package/dist/src/targeting/target-directory-store.d.ts.map +1 -0
- package/dist/src/targeting/target-input.d.ts +3 -0
- package/dist/src/targeting/target-input.d.ts.map +1 -0
- package/dist/src/types.d.ts +730 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils.d.ts +54 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/index.ts +234 -16
- package/openclaw.plugin.json +5 -5
- package/package.json +26 -5
- package/src/device-registration.ts +0 -32
- package/src/gateway/channel-gateway.ts +1 -1
- package/src/onboarding.ts +3 -7
- package/src/secret-input.ts +13 -47
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type SessionPeerSourceKind = "direct" | "group";
|
|
2
|
+
export declare function getSessionPeerOverride(params: {
|
|
3
|
+
storePath: string;
|
|
4
|
+
accountId: string;
|
|
5
|
+
sourceKind: SessionPeerSourceKind;
|
|
6
|
+
sourceId: string;
|
|
7
|
+
}): string | undefined;
|
|
8
|
+
export declare function setSessionPeerOverride(params: {
|
|
9
|
+
storePath: string;
|
|
10
|
+
accountId: string;
|
|
11
|
+
sourceKind: SessionPeerSourceKind;
|
|
12
|
+
sourceId: string;
|
|
13
|
+
peerId: string;
|
|
14
|
+
}): void;
|
|
15
|
+
export declare function clearSessionPeerOverride(params: {
|
|
16
|
+
storePath: string;
|
|
17
|
+
accountId: string;
|
|
18
|
+
sourceKind: SessionPeerSourceKind;
|
|
19
|
+
sourceId: string;
|
|
20
|
+
}): boolean;
|
|
21
|
+
//# sourceMappingURL=session-peer-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-peer-store.d.ts","sourceRoot":"","sources":["../../src/session-peer-store.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAC;AA0BvD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAKP;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAeV"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DingTalkConfig } from "./types";
|
|
2
|
+
export interface ResolveDingTalkSessionPeerParams {
|
|
3
|
+
isDirect: boolean;
|
|
4
|
+
senderId: string;
|
|
5
|
+
conversationId: string;
|
|
6
|
+
peerIdOverride?: string;
|
|
7
|
+
config: DingTalkConfig;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolvedDingTalkSessionPeer {
|
|
10
|
+
kind: "direct" | "group";
|
|
11
|
+
peerId: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function resolveDingTalkSessionPeer(params: ResolveDingTalkSessionPeerParams): ResolvedDingTalkSessionPeer;
|
|
14
|
+
//# sourceMappingURL=session-routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-routing.d.ts","sourceRoot":"","sources":["../../src/session-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gCAAgC,GACvC,2BAA2B,CAa7B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface SessionState {
|
|
2
|
+
model?: string;
|
|
3
|
+
effort?: string;
|
|
4
|
+
taskStartTime: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function initSessionState(accountId: string, conversationId: string): SessionState;
|
|
7
|
+
export declare function getSessionState(accountId: string, conversationId: string): SessionState | undefined;
|
|
8
|
+
export declare function updateSessionState(accountId: string, conversationId: string, patch: Partial<Pick<SessionState, "model" | "effort">>): void;
|
|
9
|
+
export declare function getTaskTimeSeconds(accountId: string, conversationId: string): number | undefined;
|
|
10
|
+
export declare function clearSessionState(accountId: string, conversationId: string): void;
|
|
11
|
+
export declare function clearAllSessionStatesForTest(): void;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=session-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/session-state.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,CAYxF;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEnG;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,GACrD,IAAI,CAWN;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAEjF;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5F"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent name matcher for @sub-agent feature
|
|
3
|
+
*
|
|
4
|
+
* Matches @mentions to agent IDs based on name and id fields in agents.list config.
|
|
5
|
+
*/
|
|
6
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk/core";
|
|
7
|
+
import type { AtMention, AgentNameMatch } from "../types";
|
|
8
|
+
interface AgentConfig {
|
|
9
|
+
id: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
default?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get main agent ID from agents.list
|
|
15
|
+
*/
|
|
16
|
+
export declare function getMainAgentId(agents: AgentConfig[] | undefined): string;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve @mentions to agent matches
|
|
19
|
+
*
|
|
20
|
+
* @param atMentions - List of @mentions extracted from message
|
|
21
|
+
* @param cfg - OpenClaw configuration
|
|
22
|
+
* @param atUserDingtalkIds - dingtalkIds from webhook atUsers field (real users selected via @picker)
|
|
23
|
+
* @returns Matched agents, unmatched names, main agent ID, and whether there are invalid agent names
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* Exclusion logic for unmatched @mentions:
|
|
27
|
+
* - If mention.userId is set (from richText), it's a real user → excluded from unmatchedNames
|
|
28
|
+
* - In text mode, we cannot map dingtalkIds to specific @mention names
|
|
29
|
+
* - To avoid false positives (reporting real user names as missing agents),
|
|
30
|
+
* we use a conservative heuristic:
|
|
31
|
+
* - If realUserCount > 0, hasInvalidAgentNames is always false
|
|
32
|
+
* - This means we never report "agent not found" in text mode when there are real users
|
|
33
|
+
* - In richText mode, mention.userId allows precise exclusion, so the heuristic is not needed
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveAtAgents(atMentions: AtMention[], cfg: OpenClawConfig, atUserDingtalkIds?: string[]): {
|
|
36
|
+
matchedAgents: AgentNameMatch[];
|
|
37
|
+
unmatchedNames: string[];
|
|
38
|
+
mainAgentId: string;
|
|
39
|
+
/** Count of @mentions that are likely real users (from atUserDingtalkIds) */
|
|
40
|
+
realUserCount: number;
|
|
41
|
+
/** Whether there are invalid agent names (conservative: false if realUserCount > 0) */
|
|
42
|
+
hasInvalidAgentNames: boolean;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Get agent display name for statusLine in card template.
|
|
46
|
+
*
|
|
47
|
+
* Priority:
|
|
48
|
+
* 1. subAgentOptions.matchedName - user-friendly name from @mention (e.g., "代码专家")
|
|
49
|
+
* 2. agents.list lookup - name field from agent config
|
|
50
|
+
* 3. agentId fallback - technical identifier
|
|
51
|
+
*/
|
|
52
|
+
export declare function getAgentDisplayName(params: {
|
|
53
|
+
subAgentOptions?: {
|
|
54
|
+
matchedName?: string;
|
|
55
|
+
};
|
|
56
|
+
agentId: string;
|
|
57
|
+
agentsList?: Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
name?: string;
|
|
60
|
+
}>;
|
|
61
|
+
}): string;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=agent-name-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-name-matcher.d.ts","sourceRoot":"","sources":["../../../src/targeting/agent-name-matcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1D,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM,CAWxE;AA+BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,GAAG,EAAE,cAAc,EACnB,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC3B;IACD,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAkDA;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,eAAe,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,GAAG,MAAM,CAcT"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-agent routing for @mention-based multi-agent support.
|
|
3
|
+
*
|
|
4
|
+
* Extracts @mentions from inbound messages and resolves them to agent IDs
|
|
5
|
+
* using agents.list configuration. This is a plugin-layer routing mechanism
|
|
6
|
+
* because the framework's resolveAgentRoute only supports static matching
|
|
7
|
+
* (channel + accountId + peer), not content-based dynamic routing.
|
|
8
|
+
*/
|
|
9
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk/core";
|
|
10
|
+
import { getDingTalkRuntime } from "../runtime";
|
|
11
|
+
import type { AgentNameMatch, DingTalkConfig, DingTalkInboundMessage, HandleDingTalkMessageParams, Logger, MessageContent } from "../types";
|
|
12
|
+
export declare class HostRoutingHelperUnavailableError extends Error {
|
|
13
|
+
constructor(message?: string);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a session key for a specific agent using the runtime API.
|
|
17
|
+
* On supported host versions, sub-agent routing must use the shared helper
|
|
18
|
+
* instead of synthesizing plugin-local fallback keys.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildAgentSessionKey(params: {
|
|
21
|
+
rt: ReturnType<typeof getDingTalkRuntime>;
|
|
22
|
+
cfg: OpenClawConfig;
|
|
23
|
+
accountId: string;
|
|
24
|
+
agentId: string;
|
|
25
|
+
peerKind: "direct" | "group";
|
|
26
|
+
peerId: string;
|
|
27
|
+
}): string;
|
|
28
|
+
/**
|
|
29
|
+
* Resolve @mention-based sub-agent routing for a group or direct message.
|
|
30
|
+
*
|
|
31
|
+
* In group chats, @mentions are populated by the DingTalk SDK (atMentions field).
|
|
32
|
+
* In direct messages (DM), the SDK also populates atMentions for text-type messages
|
|
33
|
+
* via extractMessageContent in message-utils.ts, so the same field is reused here.
|
|
34
|
+
* The !isGroup guard is removed to enable sub-agent routing in DM as well.
|
|
35
|
+
*
|
|
36
|
+
* Returns matched agents if any @mentions resolve to configured agents,
|
|
37
|
+
* or null if the message should be handled by the default agent.
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveSubAgentRoute(params: {
|
|
40
|
+
extractedContent: MessageContent;
|
|
41
|
+
cfg: OpenClawConfig;
|
|
42
|
+
isGroup: boolean;
|
|
43
|
+
dingtalkConfig: DingTalkConfig;
|
|
44
|
+
sessionWebhook: string;
|
|
45
|
+
senderId: string;
|
|
46
|
+
log?: Logger;
|
|
47
|
+
}): Promise<{
|
|
48
|
+
matchedAgents: AgentNameMatch[];
|
|
49
|
+
preDownloadedMedia?: {
|
|
50
|
+
mediaPath?: string;
|
|
51
|
+
mediaType?: string;
|
|
52
|
+
};
|
|
53
|
+
} | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Process matched sub-agents by dispatching each to handleDingTalkMessage.
|
|
56
|
+
*/
|
|
57
|
+
export declare function dispatchSubAgents(params: {
|
|
58
|
+
matchedAgents: AgentNameMatch[];
|
|
59
|
+
cfg: OpenClawConfig;
|
|
60
|
+
accountId: string;
|
|
61
|
+
data: DingTalkInboundMessage;
|
|
62
|
+
dingtalkConfig: DingTalkConfig;
|
|
63
|
+
sessionWebhook: string;
|
|
64
|
+
extractedContent: MessageContent;
|
|
65
|
+
handleMessage: (params: HandleDingTalkMessageParams) => Promise<void>;
|
|
66
|
+
downloadMedia: (config: DingTalkConfig, mediaPath: string, log?: Logger) => Promise<{
|
|
67
|
+
path: string;
|
|
68
|
+
mimeType: string;
|
|
69
|
+
} | null>;
|
|
70
|
+
log?: Logger;
|
|
71
|
+
}): Promise<void>;
|
|
72
|
+
//# sourceMappingURL=agent-routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-routing.d.ts","sourceRoot":"","sources":["../../../src/targeting/agent-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE5I,qBAAa,iCAAkC,SAAQ,KAAK;gBAC9C,OAAO,SAA4G;CAIhI;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,EAAE,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC1C,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAgBT;AAWD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,gBAAgB,EAAE,cAAc,CAAC;IACjC,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE,GAAG,IAAI,CAAC,CAqDR;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,cAAc,CAAC;IACjC,aAAa,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,aAAa,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC/H,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-members-store.d.ts","sourceRoot":"","sources":["../../../src/targeting/group-members-store.ts"],"names":[],"mappings":"AAsDA,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CAUN;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOzF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { OpenClawConfig } from "openclaw/plugin-sdk/core";
|
|
2
|
+
import type { ChannelDirectoryEntry } from "openclaw/plugin-sdk/directory-runtime";
|
|
3
|
+
export type DirectoryListParams = {
|
|
4
|
+
cfg: OpenClawConfig;
|
|
5
|
+
accountId?: string | null;
|
|
6
|
+
query?: string | null;
|
|
7
|
+
limit?: number | null;
|
|
8
|
+
runtime?: unknown;
|
|
9
|
+
};
|
|
10
|
+
export declare function listDingTalkDirectoryGroups(params: DirectoryListParams): ChannelDirectoryEntry[];
|
|
11
|
+
export declare function listDingTalkDirectoryUsers(params: DirectoryListParams): ChannelDirectoryEntry[];
|
|
12
|
+
export declare function normalizeResolvedDingTalkTarget(raw: string): string;
|
|
13
|
+
//# sourceMappingURL=target-directory-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-directory-adapter.d.ts","sourceRoot":"","sources":["../../../src/targeting/target-directory-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAMnF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA+DF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,CAgDhG;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,CAqB/F;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface GroupTargetEntry {
|
|
2
|
+
conversationId: string;
|
|
3
|
+
currentTitle: string;
|
|
4
|
+
historicalTitles: string[];
|
|
5
|
+
lastSeenAt: number;
|
|
6
|
+
}
|
|
7
|
+
export interface UserTargetEntry {
|
|
8
|
+
canonicalUserId: string;
|
|
9
|
+
staffId?: string;
|
|
10
|
+
senderId: string;
|
|
11
|
+
currentDisplayName: string;
|
|
12
|
+
historicalDisplayNames: string[];
|
|
13
|
+
lastSeenAt: number;
|
|
14
|
+
lastSeenInConversationIds: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare function clearTargetDirectoryStateCache(): void;
|
|
17
|
+
export declare function upsertObservedGroupTarget(params: {
|
|
18
|
+
storePath?: string;
|
|
19
|
+
accountId: string;
|
|
20
|
+
conversationId: string;
|
|
21
|
+
title?: string;
|
|
22
|
+
seenAt?: number;
|
|
23
|
+
}): void;
|
|
24
|
+
export declare function upsertObservedUserTarget(params: {
|
|
25
|
+
storePath?: string;
|
|
26
|
+
accountId: string;
|
|
27
|
+
senderId: string;
|
|
28
|
+
staffId?: string;
|
|
29
|
+
displayName?: string;
|
|
30
|
+
conversationId?: string;
|
|
31
|
+
seenAt?: number;
|
|
32
|
+
}): void;
|
|
33
|
+
export declare function listKnownGroupTargets(params: {
|
|
34
|
+
storePath?: string;
|
|
35
|
+
accountId: string;
|
|
36
|
+
query?: string;
|
|
37
|
+
limit?: number;
|
|
38
|
+
}): GroupTargetEntry[];
|
|
39
|
+
export declare function listKnownUserTargets(params: {
|
|
40
|
+
storePath?: string;
|
|
41
|
+
accountId: string;
|
|
42
|
+
query?: string;
|
|
43
|
+
limit?: number;
|
|
44
|
+
}): UserTargetEntry[];
|
|
45
|
+
//# sourceMappingURL=target-directory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-directory-store.d.ts","sourceRoot":"","sources":["../../../src/targeting/target-directory-store.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB,EAAE,MAAM,EAAE,CAAC;CACrC;AAmED,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD;AAmED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAiEP;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAmGP;AA0BD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,gBAAgB,EAAE,CASrB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,eAAe,EAAE,CASpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-input.d.ts","sourceRoot":"","sources":["../../../src/targeting/target-input.ts"],"names":[],"mappings":"AAqBA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASvE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CA6BnF"}
|