@hirey-ai/hirey 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/dist/clients.d.ts +23 -0
- package/dist/clients.d.ts.map +1 -0
- package/dist/clients.js +47 -0
- package/dist/clients.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/routes/webhook.d.ts +6 -0
- package/dist/routes/webhook.d.ts.map +1 -0
- package/dist/routes/webhook.js +76 -0
- package/dist/routes/webhook.js.map +1 -0
- package/dist/services/agent-events.d.ts +3 -0
- package/dist/services/agent-events.d.ts.map +1 -0
- package/dist/services/agent-events.js +267 -0
- package/dist/services/agent-events.js.map +1 -0
- package/dist/state.d.ts +61 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +128 -0
- package/dist/state.js.map +1 -0
- package/dist/tools/capabilities.d.ts +4 -0
- package/dist/tools/capabilities.d.ts.map +1 -0
- package/dist/tools/capabilities.js +93 -0
- package/dist/tools/capabilities.js.map +1 -0
- package/dist/tools/control.d.ts +8 -0
- package/dist/tools/control.d.ts.map +1 -0
- package/dist/tools/control.js +508 -0
- package/dist/tools/control.js.map +1 -0
- package/dist/types.d.ts +63 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/openclaw-config.d.ts +30 -0
- package/dist/utils/openclaw-config.d.ts.map +1 -0
- package/dist/utils/openclaw-config.js +162 -0
- package/dist/utils/openclaw-config.js.map +1 -0
- package/dist/utils/openclaw-hooks-payload.d.ts +18 -0
- package/dist/utils/openclaw-hooks-payload.d.ts.map +1 -0
- package/dist/utils/openclaw-hooks-payload.js +52 -0
- package/dist/utils/openclaw-hooks-payload.js.map +1 -0
- package/openclaw.plugin.json +83 -0
- package/package.json +65 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
// 4 个核心 control tools:hi_agent_status / hi_agent_install / hi_agent_doctor / hi_agent_reset。
|
|
2
|
+
// 业务逻辑全部委托给 @hirey-ai/agent-sdk 已封装好的 platform/gateway client,本文件只做:
|
|
3
|
+
// - input schema 定义
|
|
4
|
+
// - state file 持久化跟 OAuth client 装配
|
|
5
|
+
// - tool result 组装
|
|
6
|
+
import { buildAuthorizedClients, buildPublicClients, loadStateWithQuarantine, peekQuarantineNotice, } from '../clients.js';
|
|
7
|
+
import { resolveStateDir, resolveStateFile, updateState, } from '../state.js';
|
|
8
|
+
import { ensureOpenClawHooksConfigured, ensurePluginToolsAlsoAllowed, readGatewayPort } from '../utils/openclaw-config.js';
|
|
9
|
+
import fs from 'node:fs/promises';
|
|
10
|
+
function defaultStateDir(config) {
|
|
11
|
+
return config.stateDir || resolveStateDir(config.profile);
|
|
12
|
+
}
|
|
13
|
+
function asJsonResult(payload) {
|
|
14
|
+
return {
|
|
15
|
+
structuredContent: payload,
|
|
16
|
+
content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function asErrorResult(error, details) {
|
|
20
|
+
const payload = { ok: false, error };
|
|
21
|
+
if (details)
|
|
22
|
+
Object.assign(payload, details);
|
|
23
|
+
return { ...asJsonResult(payload), isError: true };
|
|
24
|
+
}
|
|
25
|
+
// ---------- hi_agent_status ----------
|
|
26
|
+
export function buildHiAgentStatusTool(config) {
|
|
27
|
+
const stateDir = defaultStateDir(config);
|
|
28
|
+
return {
|
|
29
|
+
name: 'hi_agent_status',
|
|
30
|
+
label: 'Hi agent status',
|
|
31
|
+
description: 'Reports whether Hirey AI is healthy on this OpenClaw host. Reads local plugin state and (when include_remote=true) verifies platform-side identity is still recognized. Run this when the user asks "is Hi working?" or before any other Hi tool call.',
|
|
32
|
+
parameters: {
|
|
33
|
+
type: 'object',
|
|
34
|
+
additionalProperties: false,
|
|
35
|
+
properties: {
|
|
36
|
+
include_remote: {
|
|
37
|
+
type: 'boolean',
|
|
38
|
+
description: 'When true, also call the Hi platform /me endpoint to confirm the agent identity is recognized server-side. Default false.',
|
|
39
|
+
default: false,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
async execute(_id, params) {
|
|
44
|
+
const args = (params || {});
|
|
45
|
+
try {
|
|
46
|
+
const state = await loadStateWithQuarantine(stateDir, config.profile, config.platformBaseUrl);
|
|
47
|
+
const summary = {
|
|
48
|
+
ok: true,
|
|
49
|
+
plugin: 'hi-openclaw-plugin',
|
|
50
|
+
plugin_version: '1.0.0',
|
|
51
|
+
profile: config.profile,
|
|
52
|
+
state_dir: stateDir,
|
|
53
|
+
state_file: resolveStateFile(stateDir, config.profile),
|
|
54
|
+
platform_base_url: config.platformBaseUrl,
|
|
55
|
+
webhook_path: config.webhookPath,
|
|
56
|
+
quarantined_stale_identity: peekQuarantineNotice(),
|
|
57
|
+
summary: {
|
|
58
|
+
connected: !!state.identity,
|
|
59
|
+
activated: !!state.identity?.activated_at,
|
|
60
|
+
agent_id: state.identity?.agent_id ?? null,
|
|
61
|
+
installation_id: state.identity?.installation_id ?? null,
|
|
62
|
+
},
|
|
63
|
+
state,
|
|
64
|
+
remote: null,
|
|
65
|
+
};
|
|
66
|
+
if (args.include_remote && state.identity) {
|
|
67
|
+
try {
|
|
68
|
+
const auth = await buildAuthorizedClients({
|
|
69
|
+
stateDir, profile: config.profile, platformBaseUrl: config.platformBaseUrl,
|
|
70
|
+
});
|
|
71
|
+
const [me, installation, endpoints, subscriptions] = await Promise.all([
|
|
72
|
+
auth.gateway.me(),
|
|
73
|
+
auth.gateway.getInstallation(),
|
|
74
|
+
auth.gateway.listEndpoints(),
|
|
75
|
+
auth.gateway.listSubscriptions(),
|
|
76
|
+
]);
|
|
77
|
+
summary.remote = { me, installation, endpoints, subscriptions };
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
summary.remote = { error: String(err?.message || err) };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return asJsonResult(summary);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
return asErrorResult('hi_agent_status_failed', { detail: String(err?.message || err) });
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// ---------- hi_agent_install ----------
|
|
92
|
+
export function buildHiAgentInstallTool(config) {
|
|
93
|
+
const stateDir = defaultStateDir(config);
|
|
94
|
+
return {
|
|
95
|
+
name: 'hi_agent_install',
|
|
96
|
+
label: 'Hi agent install',
|
|
97
|
+
description: 'One-shot install entrypoint. Registers a fresh Hi agent (or reuses existing identity), activates installation, declares delivery capabilities, subscribes to default event topics, and persists identity for subsequent Hi tool calls. Idempotent — calling it after a healthy install just refreshes installation/subscription state.',
|
|
98
|
+
parameters: {
|
|
99
|
+
type: 'object',
|
|
100
|
+
additionalProperties: false,
|
|
101
|
+
properties: {
|
|
102
|
+
display_name: {
|
|
103
|
+
type: 'string',
|
|
104
|
+
description: 'Human-readable agent name. Defaults to "OpenClaw Hi Agent" if omitted.',
|
|
105
|
+
},
|
|
106
|
+
agent_kind: {
|
|
107
|
+
type: 'string',
|
|
108
|
+
description: 'Agent kind ("external" by default).',
|
|
109
|
+
},
|
|
110
|
+
host_session_key: {
|
|
111
|
+
type: 'string',
|
|
112
|
+
description: 'OpenClaw current chat canonical session key (sessions.recent[0].key). Used to bind this chat as default reply route. Optional in plugin mode — the gateway already knows the current session.',
|
|
113
|
+
},
|
|
114
|
+
replace_existing_state: {
|
|
115
|
+
type: 'boolean',
|
|
116
|
+
description: 'Force fresh registration even if existing identity is present. Default false (idempotent).',
|
|
117
|
+
default: false,
|
|
118
|
+
},
|
|
119
|
+
subscribe_default_topics: {
|
|
120
|
+
type: 'boolean',
|
|
121
|
+
description: 'Subscribe to all default event topics (agent.message.created, pairing.*, listing_matching_session.updated, meeting.*, hi.release.published). Default true.',
|
|
122
|
+
default: true,
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
async execute(_id, params) {
|
|
127
|
+
const args = (params || {});
|
|
128
|
+
try {
|
|
129
|
+
let state = await loadStateWithQuarantine(stateDir, config.profile, config.platformBaseUrl);
|
|
130
|
+
// Step 1: register if needed
|
|
131
|
+
let registerResp = null;
|
|
132
|
+
if (!state.identity || args.replace_existing_state) {
|
|
133
|
+
const pub = await buildPublicClients(config.platformBaseUrl);
|
|
134
|
+
registerResp = await pub.gateway.register({
|
|
135
|
+
display_name: args.display_name?.trim() || 'OpenClaw Hi Agent',
|
|
136
|
+
agent_kind: args.agent_kind?.trim() || 'external',
|
|
137
|
+
capabilities: [],
|
|
138
|
+
metadata: { host: 'openclaw', plugin: 'hi-openclaw-plugin', plugin_version: '1.0.0' },
|
|
139
|
+
});
|
|
140
|
+
const identity = {
|
|
141
|
+
agent_id: registerResp.agent.agent_id,
|
|
142
|
+
installation_id: registerResp.installation.installation_id,
|
|
143
|
+
display_name: registerResp.agent.display_name,
|
|
144
|
+
agent_kind: registerResp.agent.agent_kind,
|
|
145
|
+
client_id: registerResp.auth.client_id,
|
|
146
|
+
client_secret: registerResp.auth.client_secret,
|
|
147
|
+
installation_subject: registerResp.auth.installation_subject ?? registerResp.installation.installation_id,
|
|
148
|
+
issuer: registerResp.auth.issuer,
|
|
149
|
+
audience: registerResp.auth.audience,
|
|
150
|
+
token_url: registerResp.auth.token_url,
|
|
151
|
+
jwks_url: registerResp.auth.jwks_url,
|
|
152
|
+
activated_at: null,
|
|
153
|
+
delivery_capabilities: null,
|
|
154
|
+
};
|
|
155
|
+
state = await updateState(stateDir, config.profile, (cur) => ({
|
|
156
|
+
...cur,
|
|
157
|
+
platform: { platform_base_url: config.platformBaseUrl, registry_base_url: config.platformBaseUrl, fetched_at: new Date().toISOString() },
|
|
158
|
+
identity,
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
// Step 2: build authorized clients
|
|
162
|
+
const auth = await buildAuthorizedClients({ stateDir, profile: config.profile, platformBaseUrl: config.platformBaseUrl });
|
|
163
|
+
// Step 3: activate (idempotent)
|
|
164
|
+
let activateResp = null;
|
|
165
|
+
if (!state.identity?.activated_at) {
|
|
166
|
+
activateResp = await auth.gateway.activate({});
|
|
167
|
+
state = await updateState(stateDir, config.profile, (cur) => ({
|
|
168
|
+
...cur,
|
|
169
|
+
identity: cur.identity ? { ...cur.identity, activated_at: activateResp.installation.activated_at ?? new Date().toISOString() } : cur.identity,
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
// Step 4: declare delivery capabilities + bind session
|
|
173
|
+
// Native plugin 跑在用户本机的 OpenClaw gateway 进程内,daemon 主动从平台 SSE / claim
|
|
174
|
+
// 拉事件再 POST hooks/agent —— 这在 hi 平台业务定义上等价于"本机 receiver daemon"。
|
|
175
|
+
// 因此声明 local_receiver(让 hi 平台的 bootstrap install_welcome_recommendation 等
|
|
176
|
+
// 业务 push gate 把我们识别为可送达的 host receiver)+ pull_stream(声明 SSE 这条主路径)
|
|
177
|
+
// + claim_ack(声明 fallback 路径)。preferred=local_receiver 跟老 hirey-ai-agent-receiver
|
|
178
|
+
// 的官方语义对齐,让平台业务层对我们的对待跟传统 receiver 完全一致。
|
|
179
|
+
//
|
|
180
|
+
// 注意 platform schema 约束:route_missing_policy=use_explicit_default_route 必须搭配
|
|
181
|
+
// 实际的 default_reply_route 对象;没 host_session_key 时直接 omit 这两个字段,让平台走
|
|
182
|
+
// 默认 (route_missing_policy=use_last_active_session) 兜底。
|
|
183
|
+
const deliveryCapsBody = {
|
|
184
|
+
preferred: 'local_receiver',
|
|
185
|
+
capabilities: [
|
|
186
|
+
{ kind: 'local_receiver', status: 'active', config: {} },
|
|
187
|
+
{ kind: 'pull_stream', status: 'active', config: {} },
|
|
188
|
+
{ kind: 'claim_ack', status: 'active', config: {} },
|
|
189
|
+
],
|
|
190
|
+
};
|
|
191
|
+
if (args.host_session_key) {
|
|
192
|
+
deliveryCapsBody.route_missing_policy = 'use_explicit_default_route';
|
|
193
|
+
deliveryCapsBody.default_reply_route = {
|
|
194
|
+
installation_id: state.identity.installation_id,
|
|
195
|
+
session_key: args.host_session_key,
|
|
196
|
+
delivery_context: { channel: 'last', to: null, account_id: null, thread_id: null },
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
let installationUpdate = null;
|
|
200
|
+
let installationUpdateError = null;
|
|
201
|
+
try {
|
|
202
|
+
installationUpdate = await auth.gateway.updateInstallation({
|
|
203
|
+
delivery_capabilities: deliveryCapsBody,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
// SDK 把详细 error 吞了,这里包一份 surface 出去,让 doctor / install caller 看见到底
|
|
208
|
+
// 是 schema 拒绝还是平台 5xx 还是别的。安装的其它步骤照样视为成功(identity 已建好)。
|
|
209
|
+
installationUpdateError = {
|
|
210
|
+
message: String(err?.message || err),
|
|
211
|
+
response_body: err?.response_body ?? err?.responseBody ?? err?.body ?? null,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
// Step 4.5: 保证 OpenClaw 主 config 的 hooks 段被启用 + 写入一致的 hooks_token,
|
|
215
|
+
// 这样 native plugin daemon 拉到 hi event 后可以 POST 进 /hooks/agent 触发 isolated
|
|
216
|
+
// agentTurn,OpenClaw 自动按 hook payload 的 channel/to 路由把 LLM 输出投递给用户。
|
|
217
|
+
// 等价于老 bundle plugin 的 buildManagedHooksConfig + openclaw config set hooks。
|
|
218
|
+
let hooksConfigure = null;
|
|
219
|
+
let hooksConfigureError = null;
|
|
220
|
+
try {
|
|
221
|
+
const existingState = state;
|
|
222
|
+
const existingToken = existingState.runtime?.install?.hooks_token || null;
|
|
223
|
+
const ensure = await ensureOpenClawHooksConfigured({
|
|
224
|
+
preferredToken: existingToken,
|
|
225
|
+
});
|
|
226
|
+
// 保证 plugin tools 在当前 tools.profile 下能被 LLM 看见 —— 程序化加 alsoAllow
|
|
227
|
+
// group:plugins,避免让 LLM 自己改 tools.allow 把 core 工具误 override 掉。
|
|
228
|
+
await ensurePluginToolsAlsoAllowed().catch(() => { });
|
|
229
|
+
const gatewayPort = await readGatewayPort();
|
|
230
|
+
hooksConfigure = {
|
|
231
|
+
hooks_token: ensure.hooks_token,
|
|
232
|
+
hooks_path: ensure.hooks_path,
|
|
233
|
+
gateway_port: gatewayPort,
|
|
234
|
+
changed: ensure.changed,
|
|
235
|
+
};
|
|
236
|
+
state = await updateState(stateDir, config.profile, (cur) => ({
|
|
237
|
+
...cur,
|
|
238
|
+
runtime: {
|
|
239
|
+
...cur.runtime,
|
|
240
|
+
install: {
|
|
241
|
+
...cur.runtime.install,
|
|
242
|
+
host_kind: 'openclaw_native_plugin',
|
|
243
|
+
hooks_token: ensure.hooks_token,
|
|
244
|
+
hooks_path: ensure.hooks_path,
|
|
245
|
+
gateway_port: gatewayPort,
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
hooksConfigureError = { message: String(err?.message || err) };
|
|
252
|
+
}
|
|
253
|
+
// Step 5: subscribe default topics
|
|
254
|
+
// 注意:installed @hirey-ai/agent-sdk@0.1.10 的 AgentGatewayTopic union 还是老 6-topic 版(漏 hi.release.published),
|
|
255
|
+
// 但平台已经支持 hi.release.published(0.1.11 sdk 才在 type 里加进来)。这里用 string[] + cast 绕开 type 漂移。
|
|
256
|
+
const defaultTopics = [
|
|
257
|
+
'agent.message.created', 'pairing.created', 'pairing.updated',
|
|
258
|
+
'listing_matching_session.updated', 'meeting.negotiation.updated',
|
|
259
|
+
'meeting.execution.requested', 'hi.release.published',
|
|
260
|
+
];
|
|
261
|
+
let subscriptionsResp = null;
|
|
262
|
+
if (args.subscribe_default_topics !== false) {
|
|
263
|
+
subscriptionsResp = await auth.gateway.upsertSubscriptions({
|
|
264
|
+
subscriptions: defaultTopics.map((topic) => ({
|
|
265
|
+
topic: topic,
|
|
266
|
+
status: 'active',
|
|
267
|
+
})),
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
return asJsonResult({
|
|
271
|
+
ok: !installationUpdateError && !hooksConfigureError,
|
|
272
|
+
profile: config.profile,
|
|
273
|
+
state_dir: stateDir,
|
|
274
|
+
quarantined_stale_identity: peekQuarantineNotice(),
|
|
275
|
+
register: registerResp,
|
|
276
|
+
activate: activateResp,
|
|
277
|
+
installation: installationUpdate,
|
|
278
|
+
installation_update_error: installationUpdateError,
|
|
279
|
+
subscriptions: subscriptionsResp,
|
|
280
|
+
hooks_configure: hooksConfigure,
|
|
281
|
+
hooks_configure_error: hooksConfigureError,
|
|
282
|
+
summary: {
|
|
283
|
+
agent_id: state.identity?.agent_id,
|
|
284
|
+
installation_id: state.identity?.installation_id,
|
|
285
|
+
connected: true,
|
|
286
|
+
activated: !!state.identity?.activated_at,
|
|
287
|
+
event_path: 'plugin_native_hooks_loopback',
|
|
288
|
+
installation_update_succeeded: !installationUpdateError,
|
|
289
|
+
hooks_ready: !!hooksConfigure && !hooksConfigureError,
|
|
290
|
+
push_path_hint: hooksConfigure
|
|
291
|
+
? `http://127.0.0.1:${hooksConfigure.gateway_port}${hooksConfigure.hooks_path}/agent`
|
|
292
|
+
: null,
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
return asErrorResult('hi_agent_install_failed', { detail: String(err?.message || err), stack: err?.stack });
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
// ---------- hi_agent_doctor ----------
|
|
303
|
+
export function buildHiAgentDoctorTool(config) {
|
|
304
|
+
const stateDir = defaultStateDir(config);
|
|
305
|
+
return {
|
|
306
|
+
name: 'hi_agent_doctor',
|
|
307
|
+
label: 'Hi agent doctor',
|
|
308
|
+
description: 'Comprehensive health check: verifies persisted identity, OAuth token exchange, gateway-side activation, delivery capability declaration, and (when probe_delivery=true) sends a test delivery to confirm the webhook route works end-to-end.',
|
|
309
|
+
parameters: {
|
|
310
|
+
type: 'object',
|
|
311
|
+
additionalProperties: false,
|
|
312
|
+
properties: {
|
|
313
|
+
include_remote: {
|
|
314
|
+
type: 'boolean',
|
|
315
|
+
description: 'Fetch /me, /installation, /endpoints, /subscriptions from the gateway. Default true.',
|
|
316
|
+
default: true,
|
|
317
|
+
},
|
|
318
|
+
probe_delivery: {
|
|
319
|
+
type: 'boolean',
|
|
320
|
+
description: 'Send a test event through the gateway to confirm webhook delivery actually fires. Default true.',
|
|
321
|
+
default: true,
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
async execute(_id, params) {
|
|
326
|
+
const args = (params || {});
|
|
327
|
+
const blockers = [];
|
|
328
|
+
const warnings = [];
|
|
329
|
+
try {
|
|
330
|
+
const state = await loadStateWithQuarantine(stateDir, config.profile, config.platformBaseUrl);
|
|
331
|
+
if (!state.identity) {
|
|
332
|
+
blockers.push('identity_missing');
|
|
333
|
+
return asJsonResult({
|
|
334
|
+
ok: false, blockers, warnings,
|
|
335
|
+
connected: false, activated: false,
|
|
336
|
+
quarantined_stale_identity: peekQuarantineNotice(),
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
const auth = await buildAuthorizedClients({ stateDir, profile: config.profile, platformBaseUrl: config.platformBaseUrl });
|
|
340
|
+
const installation = await auth.gateway.getInstallation();
|
|
341
|
+
const activated = !!installation.installation?.activated_at;
|
|
342
|
+
if (!activated)
|
|
343
|
+
blockers.push('not_activated');
|
|
344
|
+
let me = null;
|
|
345
|
+
let endpoints = null;
|
|
346
|
+
let subscriptions = null;
|
|
347
|
+
if (args.include_remote !== false) {
|
|
348
|
+
[me, endpoints, subscriptions] = await Promise.all([
|
|
349
|
+
auth.gateway.me(),
|
|
350
|
+
auth.gateway.listEndpoints(),
|
|
351
|
+
auth.gateway.listSubscriptions(),
|
|
352
|
+
]);
|
|
353
|
+
}
|
|
354
|
+
let deliveryProbe = null;
|
|
355
|
+
if (args.probe_delivery !== false && activated) {
|
|
356
|
+
try {
|
|
357
|
+
deliveryProbe = await auth.gateway.testDelivery({
|
|
358
|
+
event_type: 'plugin.delivery.probe',
|
|
359
|
+
preview: { title: 'plugin self-probe', text: 'hi-openclaw-plugin doctor delivery probe' },
|
|
360
|
+
});
|
|
361
|
+
if (deliveryProbe?.results?.some((r) => !r.ok)) {
|
|
362
|
+
blockers.push('delivery_probe_failed');
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
blockers.push('delivery_probe_threw:' + String(err?.message || err));
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return asJsonResult({
|
|
370
|
+
ok: blockers.length === 0,
|
|
371
|
+
profile: config.profile,
|
|
372
|
+
platform_base_url: config.platformBaseUrl,
|
|
373
|
+
state_dir: stateDir,
|
|
374
|
+
quarantined_stale_identity: peekQuarantineNotice(),
|
|
375
|
+
connected: true,
|
|
376
|
+
activated,
|
|
377
|
+
push_ready: !!deliveryProbe?.ok,
|
|
378
|
+
blockers, warnings,
|
|
379
|
+
delivery_capabilities: installation.installation?.delivery_capabilities ?? null,
|
|
380
|
+
remote: { me, installation, endpoints, subscriptions },
|
|
381
|
+
delivery_probe: deliveryProbe,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
return asErrorResult('hi_agent_doctor_failed', { detail: String(err?.message || err) });
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
// ---------- hi_agent_reset ----------
|
|
391
|
+
export function buildHiAgentResetTool(config) {
|
|
392
|
+
const stateDir = defaultStateDir(config);
|
|
393
|
+
return {
|
|
394
|
+
name: 'hi_agent_reset',
|
|
395
|
+
label: 'Hi agent reset',
|
|
396
|
+
description: 'Reset local Hi state: clears persisted identity + receiver runtime cursor. The Hi agent on the platform side is NOT destroyed; it just becomes orphan from this OpenClaw host. Run hi_agent_install afterward to register a fresh agent.',
|
|
397
|
+
parameters: {
|
|
398
|
+
type: 'object',
|
|
399
|
+
additionalProperties: false,
|
|
400
|
+
properties: {
|
|
401
|
+
clear_state: {
|
|
402
|
+
type: 'boolean',
|
|
403
|
+
description: 'Delete the state file. Default true.',
|
|
404
|
+
default: true,
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
},
|
|
408
|
+
async execute(_id, params) {
|
|
409
|
+
const args = (params || {});
|
|
410
|
+
try {
|
|
411
|
+
const file = resolveStateFile(stateDir, config.profile);
|
|
412
|
+
if (args.clear_state !== false) {
|
|
413
|
+
await fs.rm(file, { force: true });
|
|
414
|
+
}
|
|
415
|
+
return asJsonResult({ ok: true, cleared: args.clear_state !== false, state_file: file });
|
|
416
|
+
}
|
|
417
|
+
catch (err) {
|
|
418
|
+
return asErrorResult('hi_agent_reset_failed', { detail: String(err?.message || err) });
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
// ---------- hi_pull_events ----------
|
|
424
|
+
// 替代 daemon claim loop:LLM 主动调一下,从平台拉一次最新 owner-actionable events。
|
|
425
|
+
// 跟 OpenClaw native plugin 的 lazy/in-process 哲学一致:不开后台周期循环,而是 LLM 在
|
|
426
|
+
// 用户问"有没有人发消息/匹配怎么样"时按需拉。还能让 LLM 自己控制频率,避免 OOM/socket 累积。
|
|
427
|
+
export function buildHiPullEventsTool(config) {
|
|
428
|
+
const stateDir = defaultStateDir(config);
|
|
429
|
+
return {
|
|
430
|
+
name: 'hi_pull_events',
|
|
431
|
+
label: 'Hi pull events',
|
|
432
|
+
description: 'Pull (claim) the latest owner-actionable events from the Hi platform once, ack them, and return their topics/payloads. Use this when the user asks about new Hi activity (incoming pairings, messages, meeting proposals, releases) or before deciding whether to act on a thread. Lightweight on-demand replacement for a background daemon — call it whenever fresh state is needed.',
|
|
433
|
+
parameters: {
|
|
434
|
+
type: 'object',
|
|
435
|
+
additionalProperties: false,
|
|
436
|
+
properties: {
|
|
437
|
+
limit: {
|
|
438
|
+
type: 'integer',
|
|
439
|
+
description: 'Max events to claim in one call. Default 20.',
|
|
440
|
+
default: 20,
|
|
441
|
+
minimum: 1,
|
|
442
|
+
maximum: 100,
|
|
443
|
+
},
|
|
444
|
+
lease_ms: {
|
|
445
|
+
type: 'integer',
|
|
446
|
+
description: 'Lease length to request from the platform. Default 60000.',
|
|
447
|
+
default: 60000,
|
|
448
|
+
minimum: 5000,
|
|
449
|
+
maximum: 300000,
|
|
450
|
+
},
|
|
451
|
+
ack: {
|
|
452
|
+
type: 'boolean',
|
|
453
|
+
description: 'Ack consumed events back to the platform so they will not be re-delivered. Default true.',
|
|
454
|
+
default: true,
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
async execute(_id, params) {
|
|
459
|
+
const args = (params || {});
|
|
460
|
+
try {
|
|
461
|
+
const auth = await buildAuthorizedClients({
|
|
462
|
+
stateDir, profile: config.profile, platformBaseUrl: config.platformBaseUrl,
|
|
463
|
+
});
|
|
464
|
+
const claim = await auth.gateway.claimEvents({
|
|
465
|
+
limit: args.limit ?? 20,
|
|
466
|
+
lease_ms: args.lease_ms ?? 60_000,
|
|
467
|
+
});
|
|
468
|
+
const items = (claim?.items ?? []);
|
|
469
|
+
if (args.ack !== false && items.length > 0) {
|
|
470
|
+
try {
|
|
471
|
+
await auth.gateway.ackEvents({
|
|
472
|
+
lease_id: claim.claim_lease_id,
|
|
473
|
+
acks: items.map((ev) => ({ event_id: ev.event_id, status: 'consumed', stream_seq: ev.stream_seq })),
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
catch (err) {
|
|
477
|
+
return asJsonResult({
|
|
478
|
+
ok: true,
|
|
479
|
+
claimed: items.length,
|
|
480
|
+
items,
|
|
481
|
+
ack_error: String(err?.message || err),
|
|
482
|
+
claim_lease_id: claim.claim_lease_id ?? null,
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return asJsonResult({
|
|
487
|
+
ok: true,
|
|
488
|
+
claimed: items.length,
|
|
489
|
+
items,
|
|
490
|
+
claim_lease_id: claim.claim_lease_id ?? null,
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
catch (err) {
|
|
494
|
+
return asErrorResult('hi_pull_events_failed', { detail: String(err?.message || err) });
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
export function buildAllControlTools(config) {
|
|
500
|
+
return [
|
|
501
|
+
buildHiAgentStatusTool(config),
|
|
502
|
+
buildHiAgentInstallTool(config),
|
|
503
|
+
buildHiAgentDoctorTool(config),
|
|
504
|
+
buildHiAgentResetTool(config),
|
|
505
|
+
buildHiPullEventsTool(config),
|
|
506
|
+
];
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/tools/control.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { IncomingMessage as NodeIncomingMessage, ServerResponse as NodeServerResponse } from 'node:http';
|
|
2
|
+
export type PluginToolParameterSchema = Record<string, unknown>;
|
|
3
|
+
export type PluginToolResult = {
|
|
4
|
+
content?: Array<{
|
|
5
|
+
type: 'text';
|
|
6
|
+
text: string;
|
|
7
|
+
}>;
|
|
8
|
+
structuredContent?: Record<string, unknown> | Array<unknown>;
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type PluginToolDefinition = {
|
|
12
|
+
name: string;
|
|
13
|
+
label?: string;
|
|
14
|
+
description: string;
|
|
15
|
+
parameters: PluginToolParameterSchema;
|
|
16
|
+
execute: (toolCallId: string, params: unknown, signal?: AbortSignal, onUpdate?: (chunk: unknown) => void) => Promise<PluginToolResult>;
|
|
17
|
+
};
|
|
18
|
+
export type PluginToolFactory = (ctx: PluginToolContext) => PluginToolDefinition | null;
|
|
19
|
+
export type PluginToolContext = {
|
|
20
|
+
readonly [key: string]: unknown;
|
|
21
|
+
};
|
|
22
|
+
export type PluginServiceContext = {
|
|
23
|
+
logger: PluginLogger;
|
|
24
|
+
signal?: AbortSignal;
|
|
25
|
+
readonly [key: string]: unknown;
|
|
26
|
+
};
|
|
27
|
+
export type PluginServiceDefinition = {
|
|
28
|
+
id: string;
|
|
29
|
+
start: (ctx: PluginServiceContext) => Promise<void> | void;
|
|
30
|
+
stop?: (ctx: PluginServiceContext) => Promise<void> | void;
|
|
31
|
+
};
|
|
32
|
+
export type PluginHttpRouteHandler = (req: NodeIncomingMessage, res: NodeServerResponse) => Promise<void> | boolean | void;
|
|
33
|
+
export type PluginHttpRouteDefinition = {
|
|
34
|
+
path: string;
|
|
35
|
+
auth: 'plugin' | 'gateway';
|
|
36
|
+
match?: 'exact' | 'prefix';
|
|
37
|
+
handler: PluginHttpRouteHandler;
|
|
38
|
+
};
|
|
39
|
+
export type PluginLogger = {
|
|
40
|
+
info?(msg: string, meta?: unknown): void;
|
|
41
|
+
warn?(msg: string, meta?: unknown): void;
|
|
42
|
+
error?(msg: string, meta?: unknown): void;
|
|
43
|
+
debug?(msg: string, meta?: unknown): void;
|
|
44
|
+
};
|
|
45
|
+
export type PluginRegisterApi = {
|
|
46
|
+
pluginConfig?: HiOpenClawPluginConfig;
|
|
47
|
+
logger?: PluginLogger;
|
|
48
|
+
registerTool?(factory: PluginToolFactory, options?: {
|
|
49
|
+
names?: string[];
|
|
50
|
+
optional?: boolean;
|
|
51
|
+
}): void;
|
|
52
|
+
registerService?(service: PluginServiceDefinition): void;
|
|
53
|
+
registerHttpRoute?(route: PluginHttpRouteDefinition): void;
|
|
54
|
+
};
|
|
55
|
+
export type HiOpenClawPluginConfig = {
|
|
56
|
+
platformBaseUrl?: string;
|
|
57
|
+
profile?: string;
|
|
58
|
+
stateDir?: string;
|
|
59
|
+
webhookPath?: string;
|
|
60
|
+
claimPollIntervalMs?: number;
|
|
61
|
+
claimLeaseMs?: number;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// OpenClaw plugin SDK 的稳定接口在 @openclaw/plugin-sdk 内部包里(monorepo 私有,不发 npm),
|
|
2
|
+
// 所以社区 plugin 的标准做法是自己 mirror 一份本地最小类型表面。我们这里只声明 hi-openclaw-plugin
|
|
3
|
+
// 实际用到的字段——register 入口、registerTool / registerService / registerHttpRoute 这三个能力
|
|
4
|
+
// 加上 logger / pluginConfig 这两个 context 入口。其他能力(registerHook / registerCli / registerChannel
|
|
5
|
+
// 等)等以后真用上再补。
|
|
6
|
+
//
|
|
7
|
+
// duck-typing 设计:plugin loader 在运行时只看 shape,不看类型名;我们这里类型名 PluginRegisterApi
|
|
8
|
+
// 是给 TS 用的,host 端跟它无关。
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oEAAoE;AACpE,gFAAgF;AAChF,4FAA4F;AAC5F,cAAc;AACd,EAAE;AACF,4EAA4E;AAC5E,uBAAuB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const OPENCLAW_CONFIG_PATH: string;
|
|
2
|
+
export type OpenClawHooksConfigShape = {
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
path?: string;
|
|
5
|
+
token?: string;
|
|
6
|
+
allowRequestSessionKey?: boolean;
|
|
7
|
+
allowedSessionKeyPrefixes?: string[];
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
};
|
|
10
|
+
export type EnsureHooksResult = {
|
|
11
|
+
hooks_token: string;
|
|
12
|
+
hooks_path: string;
|
|
13
|
+
hooks_file: string;
|
|
14
|
+
changed: boolean;
|
|
15
|
+
previous_hooks: OpenClawHooksConfigShape | null;
|
|
16
|
+
next_hooks: OpenClawHooksConfigShape;
|
|
17
|
+
};
|
|
18
|
+
export declare function ensureOpenClawHooksConfigured(args: {
|
|
19
|
+
hooksPath?: string;
|
|
20
|
+
activeAgentPrefix?: string;
|
|
21
|
+
preferredToken?: string | null;
|
|
22
|
+
}): Promise<EnsureHooksResult>;
|
|
23
|
+
export declare function ensurePluginToolsAlsoAllowed(): Promise<{
|
|
24
|
+
changed: boolean;
|
|
25
|
+
also_allow_before: string[];
|
|
26
|
+
also_allow_after: string[];
|
|
27
|
+
}>;
|
|
28
|
+
export declare function resolveGatewayPort(root: Record<string, unknown>): number;
|
|
29
|
+
export declare function readGatewayPort(): Promise<number>;
|
|
30
|
+
//# sourceMappingURL=openclaw-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw-config.d.ts","sourceRoot":"","sources":["../../src/utils/openclaw-config.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,oBAAoB,QAAwD,CAAC;AAK1F,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAChD,UAAU,EAAE,wBAAwB,CAAC;CACtC,CAAC;AAmFF,wBAAsB,6BAA6B,CAAC,IAAI,EAAE;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+B7B;AASD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC,CAiBD;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAKxE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAGvD"}
|