@insta-dev01/intclaw 1.0.11 → 1.1.0
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/LICENSE +1 -1
- package/README.en.md +424 -0
- package/README.md +365 -164
- package/index.ts +28 -0
- package/openclaw.plugin.json +12 -41
- package/package.json +69 -40
- package/src/channel.ts +557 -0
- package/src/config/accounts.ts +230 -0
- package/src/config/schema.ts +144 -0
- package/src/core/connection.ts +733 -0
- package/src/core/message-handler.ts +1268 -0
- package/src/core/provider.ts +106 -0
- package/src/core/state.ts +54 -0
- package/src/directory.ts +95 -0
- package/src/gateway-methods.ts +237 -0
- package/src/onboarding.ts +387 -0
- package/src/policy.ts +19 -0
- package/src/probe.ts +213 -0
- package/src/reply-dispatcher.ts +674 -0
- package/src/runtime.ts +7 -0
- package/src/sdk/helpers.ts +317 -0
- package/src/sdk/types.ts +515 -0
- package/src/secret-input.ts +19 -0
- package/src/services/media/audio.ts +54 -0
- package/src/services/media/chunk-upload.ts +293 -0
- package/src/services/media/common.ts +154 -0
- package/src/services/media/file.ts +70 -0
- package/src/services/media/image.ts +67 -0
- package/src/services/media/index.ts +10 -0
- package/src/services/media/video.ts +162 -0
- package/src/services/media.ts +1134 -0
- package/src/services/messaging/index.ts +16 -0
- package/src/services/messaging/send.ts +137 -0
- package/src/services/messaging.ts +800 -0
- package/src/targets.ts +45 -0
- package/src/types/index.ts +52 -0
- package/src/utils/agent.ts +63 -0
- package/src/utils/async.ts +51 -0
- package/src/utils/constants.ts +9 -0
- package/src/utils/http-client.ts +84 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/logger.ts +78 -0
- package/src/utils/session.ts +118 -0
- package/src/utils/token.ts +94 -0
- package/src/utils/utils-legacy.ts +506 -0
- package/.env.example +0 -11
- package/skills/intclaw_matrix/SKILL.md +0 -20
- package/src/channel/intclaw_channel.js +0 -155
- package/src/index.js +0 -23
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息发送模块统一导出
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export * from './send.ts';
|
|
6
|
+
|
|
7
|
+
// 兼容旧实现(`src/services/messaging.ts`)中仍被外部调用的 API。
|
|
8
|
+
// 注意:这里只显式导出函数,避免与 `send.ts/card.ts` 的类型/常量命名冲突。
|
|
9
|
+
export {
|
|
10
|
+
sendMessage,
|
|
11
|
+
sendProactive,
|
|
12
|
+
sendToUser,
|
|
13
|
+
sendToGroup,
|
|
14
|
+
sendTextToIntClaw,
|
|
15
|
+
sendMediaToIntClaw,
|
|
16
|
+
} from '../messaging.ts';
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 消息发送基础模块
|
|
3
|
+
* 支持 Markdown、文本、链接等消息类型
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { IntclawConfig } from '../../types/index.ts';
|
|
7
|
+
import { INTCLAW_API, getAccessToken } from '../../utils/token.ts';
|
|
8
|
+
import { intclawHttp } from '../../utils/http-client.ts';
|
|
9
|
+
|
|
10
|
+
/** 消息类型枚举 */
|
|
11
|
+
export type IntClawMsgType = 'text' | 'markdown' | 'link' | 'actionCard' | 'image';
|
|
12
|
+
|
|
13
|
+
/** 主动发送消息的结果 */
|
|
14
|
+
export interface SendResult {
|
|
15
|
+
ok: boolean;
|
|
16
|
+
processQueryKey?: string;
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** 主动发送选项 */
|
|
21
|
+
export interface ProactiveSendOptions {
|
|
22
|
+
msgType?: IntClawMsgType;
|
|
23
|
+
replyToId?: string;
|
|
24
|
+
title?: string;
|
|
25
|
+
log?: any;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 发送 Markdown 消息
|
|
30
|
+
*/
|
|
31
|
+
export async function sendMarkdownMessage(
|
|
32
|
+
config: IntclawConfig,
|
|
33
|
+
sessionWebhook: string,
|
|
34
|
+
title: string,
|
|
35
|
+
markdown: string,
|
|
36
|
+
options: any = {},
|
|
37
|
+
): Promise<any> {
|
|
38
|
+
const token = await getAccessToken(config);
|
|
39
|
+
let text = markdown;
|
|
40
|
+
if (options.atUserId) text = `${text} @${options.atUserId}`;
|
|
41
|
+
|
|
42
|
+
const body: any = {
|
|
43
|
+
msgtype: 'markdown',
|
|
44
|
+
markdown: {
|
|
45
|
+
title,
|
|
46
|
+
text: text,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
if (options.atUserId) {
|
|
51
|
+
body.at = {
|
|
52
|
+
userIds: [options.atUserId],
|
|
53
|
+
isAtAll: false,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const resp = await intclawHttp.post(sessionWebhook, body, {
|
|
58
|
+
headers: {
|
|
59
|
+
'x-acs-intclaw-access-token': token,
|
|
60
|
+
'Content-Type': 'application/json',
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return resp.data;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* 发送文本消息
|
|
69
|
+
*/
|
|
70
|
+
export async function sendTextMessage(
|
|
71
|
+
config: IntclawConfig,
|
|
72
|
+
sessionWebhook: string,
|
|
73
|
+
content: string,
|
|
74
|
+
options: any = {},
|
|
75
|
+
): Promise<any> {
|
|
76
|
+
const token = await getAccessToken(config);
|
|
77
|
+
let text = content;
|
|
78
|
+
if (options.atUserId) text = `${text} @${options.atUserId}`;
|
|
79
|
+
|
|
80
|
+
const body: any = {
|
|
81
|
+
msgtype: 'text',
|
|
82
|
+
text: {
|
|
83
|
+
content: text,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
if (options.atUserId) {
|
|
88
|
+
body.at = {
|
|
89
|
+
userIds: [options.atUserId],
|
|
90
|
+
isAtAll: false,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const resp = await intclawHttp.post(sessionWebhook, body, {
|
|
95
|
+
headers: {
|
|
96
|
+
'x-acs-intclaw-access-token': token,
|
|
97
|
+
'Content-Type': 'application/json',
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return resp.data;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* 发送链接消息
|
|
106
|
+
*/
|
|
107
|
+
export async function sendLinkMessage(
|
|
108
|
+
config: IntclawConfig,
|
|
109
|
+
sessionWebhook: string,
|
|
110
|
+
params: {
|
|
111
|
+
title: string;
|
|
112
|
+
text: string;
|
|
113
|
+
picUrl?: string;
|
|
114
|
+
messageUrl: string;
|
|
115
|
+
},
|
|
116
|
+
): Promise<any> {
|
|
117
|
+
const token = await getAccessToken(config);
|
|
118
|
+
|
|
119
|
+
const body = {
|
|
120
|
+
msgtype: 'link',
|
|
121
|
+
link: {
|
|
122
|
+
title: params.title,
|
|
123
|
+
text: params.text,
|
|
124
|
+
picUrl: params.picUrl,
|
|
125
|
+
messageUrl: params.messageUrl,
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const resp = await intclawHttp.post(sessionWebhook, body, {
|
|
130
|
+
headers: {
|
|
131
|
+
'x-acs-intclaw-access-token': token,
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
return resp.data;
|
|
137
|
+
}
|