@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.
Files changed (163) hide show
  1. package/dist/index.d.ts +14 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +14603 -0
  4. package/dist/index.js.map +7 -0
  5. package/dist/src/access-control.d.ts +43 -0
  6. package/dist/src/access-control.d.ts.map +1 -0
  7. package/dist/src/ack-reaction/dynamic-ack-reaction-controller.d.ts +22 -0
  8. package/dist/src/ack-reaction/dynamic-ack-reaction-controller.d.ts.map +1 -0
  9. package/dist/src/ack-reaction/dynamic-ack-reaction-events.d.ts +36 -0
  10. package/dist/src/ack-reaction/dynamic-ack-reaction-events.d.ts.map +1 -0
  11. package/dist/src/ack-reaction/dynamic-ack-reaction-progress.d.ts +7 -0
  12. package/dist/src/ack-reaction/dynamic-ack-reaction-progress.d.ts.map +1 -0
  13. package/dist/src/ack-reaction-classifier.d.ts +8 -0
  14. package/dist/src/ack-reaction-classifier.d.ts.map +1 -0
  15. package/dist/src/ack-reaction-service.d.ts +15 -0
  16. package/dist/src/ack-reaction-service.d.ts.map +1 -0
  17. package/dist/src/auth.d.ts +7 -0
  18. package/dist/src/auth.d.ts.map +1 -0
  19. package/dist/src/card/card-action-handler.d.ts +14 -0
  20. package/dist/src/card/card-action-handler.d.ts.map +1 -0
  21. package/dist/src/card/card-markdown-image-reroute.d.ts +16 -0
  22. package/dist/src/card/card-markdown-image-reroute.d.ts.map +1 -0
  23. package/dist/src/card/card-run-registry.d.ts +60 -0
  24. package/dist/src/card/card-run-registry.d.ts.map +1 -0
  25. package/dist/src/card/card-stop-handler.d.ts +18 -0
  26. package/dist/src/card/card-stop-handler.d.ts.map +1 -0
  27. package/dist/src/card/card-streaming-mode.d.ts +8 -0
  28. package/dist/src/card/card-streaming-mode.d.ts.map +1 -0
  29. package/dist/src/card/card-template.d.ts +21 -0
  30. package/dist/src/card/card-template.d.ts.map +1 -0
  31. package/dist/src/card/reasoning-answer-split.d.ts +6 -0
  32. package/dist/src/card/reasoning-answer-split.d.ts.map +1 -0
  33. package/dist/src/card/reasoning-block-assembler.d.ts +7 -0
  34. package/dist/src/card/reasoning-block-assembler.d.ts.map +1 -0
  35. package/dist/src/card/statusline-renderer.d.ts +24 -0
  36. package/dist/src/card/statusline-renderer.d.ts.map +1 -0
  37. package/dist/src/card-callback-service.d.ts +23 -0
  38. package/dist/src/card-callback-service.d.ts.map +1 -0
  39. package/dist/src/card-draft-controller.d.ts +75 -0
  40. package/dist/src/card-draft-controller.d.ts.map +1 -0
  41. package/dist/src/card-service.d.ts +99 -0
  42. package/dist/src/card-service.d.ts.map +1 -0
  43. package/dist/src/channel.d.ts +10 -0
  44. package/dist/src/channel.d.ts.map +1 -0
  45. package/dist/src/command/card-stop-command.d.ts +30 -0
  46. package/dist/src/command/card-stop-command.d.ts.map +1 -0
  47. package/dist/src/command/inbound-command-dispatch-service.d.ts +40 -0
  48. package/dist/src/command/inbound-command-dispatch-service.d.ts.map +1 -0
  49. package/dist/src/config-schema.d.ts +8 -0
  50. package/dist/src/config-schema.d.ts.map +1 -0
  51. package/dist/src/config.d.ts +60 -0
  52. package/dist/src/config.d.ts.map +1 -0
  53. package/dist/src/connection-manager.d.ts +148 -0
  54. package/dist/src/connection-manager.d.ts.map +1 -0
  55. package/dist/src/dedup.d.ts +4 -0
  56. package/dist/src/dedup.d.ts.map +1 -0
  57. package/dist/src/device-registration.d.ts +16 -0
  58. package/dist/src/device-registration.d.ts.map +1 -0
  59. package/dist/src/docs-service.d.ts +12 -0
  60. package/dist/src/docs-service.d.ts.map +1 -0
  61. package/dist/src/draft-stream-loop.d.ts +28 -0
  62. package/dist/src/draft-stream-loop.d.ts.map +1 -0
  63. package/dist/src/feedback-learning-service.d.ts +123 -0
  64. package/dist/src/feedback-learning-service.d.ts.map +1 -0
  65. package/dist/src/feedback-learning-store.d.ts +181 -0
  66. package/dist/src/feedback-learning-store.d.ts.map +1 -0
  67. package/dist/src/gateway/channel-gateway.d.ts +4 -0
  68. package/dist/src/gateway/channel-gateway.d.ts.map +1 -0
  69. package/dist/src/http-client.d.ts +9 -0
  70. package/dist/src/http-client.d.ts.map +1 -0
  71. package/dist/src/inbound-handler.d.ts +9 -0
  72. package/dist/src/inbound-handler.d.ts.map +1 -0
  73. package/dist/src/learning-command-service.d.ts +64 -0
  74. package/dist/src/learning-command-service.d.ts.map +1 -0
  75. package/dist/src/logger-context.d.ts +10 -0
  76. package/dist/src/logger-context.d.ts.map +1 -0
  77. package/dist/src/media-utils.d.ts +63 -0
  78. package/dist/src/media-utils.d.ts.map +1 -0
  79. package/dist/src/message-context-store.d.ts +126 -0
  80. package/dist/src/message-context-store.d.ts.map +1 -0
  81. package/dist/src/message-utils.d.ts +12 -0
  82. package/dist/src/message-utils.d.ts.map +1 -0
  83. package/dist/src/messaging/attachment-text-extractor.d.ts +13 -0
  84. package/dist/src/messaging/attachment-text-extractor.d.ts.map +1 -0
  85. package/dist/src/messaging/btw-deliver.d.ts +42 -0
  86. package/dist/src/messaging/btw-deliver.d.ts.map +1 -0
  87. package/dist/src/messaging/channel-actions.d.ts +3 -0
  88. package/dist/src/messaging/channel-actions.d.ts.map +1 -0
  89. package/dist/src/messaging/channel-outbound.d.ts +3 -0
  90. package/dist/src/messaging/channel-outbound.d.ts.map +1 -0
  91. package/dist/src/messaging/quoted-context.d.ts +36 -0
  92. package/dist/src/messaging/quoted-context.d.ts.map +1 -0
  93. package/dist/src/messaging/quoted-file-service.d.ts +25 -0
  94. package/dist/src/messaging/quoted-file-service.d.ts.map +1 -0
  95. package/dist/src/messaging/quoted-ref.d.ts +12 -0
  96. package/dist/src/messaging/quoted-ref.d.ts.map +1 -0
  97. package/dist/src/onboarding.d.ts +4 -0
  98. package/dist/src/onboarding.d.ts.map +1 -0
  99. package/dist/src/path-utils.d.ts +3 -0
  100. package/dist/src/path-utils.d.ts.map +1 -0
  101. package/dist/src/peer-id-registry.d.ts +35 -0
  102. package/dist/src/peer-id-registry.d.ts.map +1 -0
  103. package/dist/src/persistence-store.d.ts +27 -0
  104. package/dist/src/persistence-store.d.ts.map +1 -0
  105. package/dist/src/platform/channel-status.d.ts +3 -0
  106. package/dist/src/platform/channel-status.d.ts.map +1 -0
  107. package/dist/src/plugin-sdk-channel-actions-augment.d.ts +7 -0
  108. package/dist/src/plugin-sdk-channel-actions-augment.d.ts.map +1 -0
  109. package/dist/src/proactive-risk-registry.d.ts +22 -0
  110. package/dist/src/proactive-risk-registry.d.ts.map +1 -0
  111. package/dist/src/reply-strategy-card.d.ts +14 -0
  112. package/dist/src/reply-strategy-card.d.ts.map +1 -0
  113. package/dist/src/reply-strategy-markdown.d.ts +10 -0
  114. package/dist/src/reply-strategy-markdown.d.ts.map +1 -0
  115. package/dist/src/reply-strategy-types.d.ts +85 -0
  116. package/dist/src/reply-strategy-types.d.ts.map +1 -0
  117. package/dist/src/reply-strategy-with-reaction.d.ts +47 -0
  118. package/dist/src/reply-strategy-with-reaction.d.ts.map +1 -0
  119. package/dist/src/reply-strategy.d.ts +14 -0
  120. package/dist/src/reply-strategy.d.ts.map +1 -0
  121. package/dist/src/run-usage-store.d.ts +15 -0
  122. package/dist/src/run-usage-store.d.ts.map +1 -0
  123. package/dist/src/runtime.d.ts +4 -0
  124. package/dist/src/runtime.d.ts.map +1 -0
  125. package/dist/src/secret-input.d.ts +42 -0
  126. package/dist/src/secret-input.d.ts.map +1 -0
  127. package/dist/src/send-service.d.ts +46 -0
  128. package/dist/src/send-service.d.ts.map +1 -0
  129. package/dist/src/session-command-service.d.ts +35 -0
  130. package/dist/src/session-command-service.d.ts.map +1 -0
  131. package/dist/src/session-lock.d.ts +11 -0
  132. package/dist/src/session-lock.d.ts.map +1 -0
  133. package/dist/src/session-peer-store.d.ts +21 -0
  134. package/dist/src/session-peer-store.d.ts.map +1 -0
  135. package/dist/src/session-routing.d.ts +14 -0
  136. package/dist/src/session-routing.d.ts.map +1 -0
  137. package/dist/src/session-state.d.ts +13 -0
  138. package/dist/src/session-state.d.ts.map +1 -0
  139. package/dist/src/signature.d.ts +6 -0
  140. package/dist/src/signature.d.ts.map +1 -0
  141. package/dist/src/targeting/agent-name-matcher.d.ts +63 -0
  142. package/dist/src/targeting/agent-name-matcher.d.ts.map +1 -0
  143. package/dist/src/targeting/agent-routing.d.ts +72 -0
  144. package/dist/src/targeting/agent-routing.d.ts.map +1 -0
  145. package/dist/src/targeting/group-members-store.d.ts +3 -0
  146. package/dist/src/targeting/group-members-store.d.ts.map +1 -0
  147. package/dist/src/targeting/target-directory-adapter.d.ts +13 -0
  148. package/dist/src/targeting/target-directory-adapter.d.ts.map +1 -0
  149. package/dist/src/targeting/target-directory-store.d.ts +45 -0
  150. package/dist/src/targeting/target-directory-store.d.ts.map +1 -0
  151. package/dist/src/targeting/target-input.d.ts +3 -0
  152. package/dist/src/targeting/target-input.d.ts.map +1 -0
  153. package/dist/src/types.d.ts +730 -0
  154. package/dist/src/types.d.ts.map +1 -0
  155. package/dist/src/utils.d.ts +54 -0
  156. package/dist/src/utils.d.ts.map +1 -0
  157. package/index.ts +234 -16
  158. package/openclaw.plugin.json +5 -5
  159. package/package.json +26 -5
  160. package/src/device-registration.ts +0 -32
  161. package/src/gateway/channel-gateway.ts +1 -1
  162. package/src/onboarding.ts +3 -7
  163. 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,6 @@
1
+ /**
2
+ * Generate DingTalk custom-bot style signature.
3
+ * Sign payload format: `${timestamp}\n${secret}`
4
+ */
5
+ export declare function generateDingTalkSignature(timestamp: string | number, secret: string): string;
6
+ //# sourceMappingURL=signature.d.ts.map
@@ -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,3 @@
1
+ export declare function noteGroupMember(storePath: string, groupId: string, userId: string, name: string): void;
2
+ export declare function formatGroupMembers(storePath: string, groupId: string): string | undefined;
3
+ //# sourceMappingURL=group-members-store.d.ts.map
@@ -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,3 @@
1
+ export declare function normalizeDingTalkTarget(raw: string): string | undefined;
2
+ export declare function looksLikeDingTalkTargetId(raw: string, normalized?: string): boolean;
3
+ //# sourceMappingURL=target-input.d.ts.map
@@ -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"}