@hirey/hi-mcp-server 0.1.5 → 0.1.7
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 +1 -0
- package/dist/openclaw-session-key.d.ts +13 -0
- package/dist/openclaw-session-key.d.ts.map +1 -0
- package/dist/openclaw-session-key.js +76 -0
- package/dist/server.js +233 -40
- package/node_modules/@hirey/hi-agent-sdk/README.md +2 -2
- package/node_modules/@hirey/hi-agent-sdk/dist/client.d.ts.map +1 -1
- package/node_modules/@hirey/hi-agent-sdk/dist/client.js +12 -3
- package/node_modules/@hirey/hi-agent-sdk/package.json +2 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -179,6 +179,7 @@ hi-mcp-server
|
|
|
179
179
|
- 工具接入主路径:仍然是 `hi-mcp-server`
|
|
180
180
|
- 普通用户主路径:本地 `stdio` child process
|
|
181
181
|
- 推荐先通过公开 npm 安装 `@hirey/hi-mcp-server`,再把它注册到 `openclaw mcp set`
|
|
182
|
+
- 如果 OpenClaw 侧启用 hooks,`hooks.path` 应保持 base path `"/hooks"`;Hi/receiver 使用的完整 agent endpoint 仍然是 `http://127.0.0.1:18789/hooks/agent`,不要把 `hooks.path` 直接写成 `/hooks/agent`
|
|
182
183
|
- 有公网 ingress:
|
|
183
184
|
- 事件主路径:gateway endpoint `openclaw.hooks.agent.v1`
|
|
184
185
|
- 补充路径:`openresponses.v1`
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type OpenClawSessionKeyValidation = {
|
|
2
|
+
ok: true;
|
|
3
|
+
normalized: string;
|
|
4
|
+
agentId: string;
|
|
5
|
+
rest: string;
|
|
6
|
+
} | {
|
|
7
|
+
ok: false;
|
|
8
|
+
reason: 'status_display_value' | 'sessions_display_value' | 'non_canonical';
|
|
9
|
+
input: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function looksLikeOpenClawSessionKey(input: unknown): boolean;
|
|
12
|
+
export declare function validateOpenClawSessionKey(input: unknown): OpenClawSessionKeyValidation | null;
|
|
13
|
+
//# sourceMappingURL=openclaw-session-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openclaw-session-key.d.ts","sourceRoot":"","sources":["../src/openclaw-session-key.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GACpC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,sBAAsB,GAAG,wBAAwB,GAAG,eAAe,CAAC;IAC5E,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA0CN,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQnE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,GAAG,IAAI,CAiC9F"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
function parseCanonicalAgentSessionKey(input) {
|
|
2
|
+
const raw = input.trim().toLowerCase();
|
|
3
|
+
if (!raw) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const parts = raw.split(':').filter(Boolean);
|
|
7
|
+
if (parts.length < 3 || parts[0] !== 'agent') {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const agentId = parts[1]?.trim();
|
|
11
|
+
const rest = parts.slice(2).join(':');
|
|
12
|
+
if (!agentId || !rest) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
normalized: `agent:${agentId}:${rest}`,
|
|
17
|
+
agentId,
|
|
18
|
+
rest,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function looksLikeStatusDisplayValue(input) {
|
|
22
|
+
// `openclaw status` textual tables shorten long keys with a trailing Unicode ellipsis.
|
|
23
|
+
return input.includes('…');
|
|
24
|
+
}
|
|
25
|
+
function looksLikeSessionsDisplayValue(input) {
|
|
26
|
+
// `openclaw sessions` currently renders long keys as:
|
|
27
|
+
// <16-char head>...<6-char tail>
|
|
28
|
+
// Keep the detector tight so we only reject the known display artifact.
|
|
29
|
+
const trimmed = input.trim();
|
|
30
|
+
return trimmed.toLowerCase().startsWith('agent:')
|
|
31
|
+
&& trimmed.length === 25
|
|
32
|
+
&& trimmed.slice(16, 19) === '...';
|
|
33
|
+
}
|
|
34
|
+
export function looksLikeOpenClawSessionKey(input) {
|
|
35
|
+
const trimmed = String(input ?? '').trim();
|
|
36
|
+
if (!trimmed) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return trimmed.toLowerCase().startsWith('agent:')
|
|
40
|
+
|| looksLikeStatusDisplayValue(trimmed)
|
|
41
|
+
|| looksLikeSessionsDisplayValue(trimmed);
|
|
42
|
+
}
|
|
43
|
+
export function validateOpenClawSessionKey(input) {
|
|
44
|
+
const trimmed = String(input ?? '').trim();
|
|
45
|
+
if (!trimmed) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
if (looksLikeStatusDisplayValue(trimmed)) {
|
|
49
|
+
return {
|
|
50
|
+
ok: false,
|
|
51
|
+
reason: 'status_display_value',
|
|
52
|
+
input: trimmed,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (looksLikeSessionsDisplayValue(trimmed)) {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
reason: 'sessions_display_value',
|
|
59
|
+
input: trimmed,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const parsed = parseCanonicalAgentSessionKey(trimmed);
|
|
63
|
+
if (!parsed) {
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
reason: 'non_canonical',
|
|
67
|
+
input: trimmed,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
ok: true,
|
|
72
|
+
normalized: parsed.normalized,
|
|
73
|
+
agentId: parsed.agentId,
|
|
74
|
+
rest: parsed.rest,
|
|
75
|
+
};
|
|
76
|
+
}
|
package/dist/server.js
CHANGED
|
@@ -12,6 +12,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextpro
|
|
|
12
12
|
import { AGENT_GATEWAY_EVENT_TOPICS, normalizeAgentEndpointList, normalizeAgentInstallationDeliveryDeclaration, normalizeAgentSubscriptionList, normalizeText, } from '@hirey/hi-agent-contracts';
|
|
13
13
|
import { createHiAgentClients, exchangeHiAgentClientCredentialsToken, HiAgentGatewayClient, HiAgentPlatformClient, } from '@hirey/hi-agent-sdk';
|
|
14
14
|
import { readState, resolveCanonicalOpenClawStateDir, resolveDefaultStateDir, resolveLegacyStateFiles, resolveStateFile, updateState, normalizeStateProfile, } from './state.js';
|
|
15
|
+
import { looksLikeOpenClawSessionKey, validateOpenClawSessionKey, } from './openclaw-session-key.js';
|
|
15
16
|
const CAPABILITY_CACHE_TTL_MS = 30_000;
|
|
16
17
|
const resolvedProfile = normalizeStateProfile(process.env.HI_MCP_PROFILE);
|
|
17
18
|
const config = {
|
|
@@ -104,10 +105,10 @@ function controlTools() {
|
|
|
104
105
|
items: { type: 'string' },
|
|
105
106
|
},
|
|
106
107
|
host_adapter_kind: { type: 'string', description: "enable_local_receiver=true 时可选:'openclaw_hooks'|'openresponses'。OpenClaw 默认 openclaw_hooks。" },
|
|
107
|
-
host_adapter_url: { type: 'string', description: 'enable_local_receiver=true 时可选:宿主本地接收入口。OpenClaw 默认 http://127.0.0.1:18789/hooks/agent。' },
|
|
108
|
+
host_adapter_url: { type: 'string', description: 'enable_local_receiver=true 时可选:宿主本地接收入口。OpenClaw 默认 full endpoint 为 http://127.0.0.1:18789/hooks/agent;注意 OpenClaw 配置里的 hooks.path 应保持 /hooks,而不是 /hooks/agent。' },
|
|
108
109
|
host_adapter_bearer_token: { type: 'string', description: 'host_adapter_kind=openclaw_hooks 时必填:本地 hooks bearer token。' },
|
|
109
110
|
openresponses_model: { type: 'string', description: 'host_adapter_kind=openresponses 时必填:receiver 发给本地入口使用的 model。' },
|
|
110
|
-
host_session_key: { type: 'string', description: '可选:把当前 OpenClaw
|
|
111
|
+
host_session_key: { type: 'string', description: '可选:把当前 OpenClaw 当前会话显式设为 default continuation route 的 canonical full session_key。只能使用结构化宿主来源返回的完整 key;不要从 openclaw status / openclaw sessions / TUI footer 这类展示文本里抄值。' },
|
|
111
112
|
route_missing_policy: { type: 'string', description: "可选:'use_explicit_default_route'|'fail_closed'。默认在提供 host_session_key/default_reply_* 时使用 use_explicit_default_route,否则为 null。" },
|
|
112
113
|
default_reply_channel: { type: 'string', description: '可选:default continuation route 的 channel。' },
|
|
113
114
|
default_reply_to: { type: 'string', description: '可选:default continuation route 的宿主 target。' },
|
|
@@ -358,11 +359,21 @@ async function loadCapabilities() {
|
|
|
358
359
|
};
|
|
359
360
|
return items;
|
|
360
361
|
}
|
|
362
|
+
function buildPlatformSnapshot(wellKnown) {
|
|
363
|
+
return {
|
|
364
|
+
platform_base_url: normalizeText(wellKnown?.platform?.platform_base_url) || config.platformBaseUrl,
|
|
365
|
+
registry_base_url: normalizeText(wellKnown?.platform?.registry_base_url) || config.platformBaseUrl,
|
|
366
|
+
fetched_at: new Date().toISOString(),
|
|
367
|
+
};
|
|
368
|
+
}
|
|
361
369
|
async function createBootstrapClients() {
|
|
362
370
|
const wellKnown = await loadWellKnown();
|
|
363
|
-
const
|
|
371
|
+
const platformSnapshot = buildPlatformSnapshot(wellKnown);
|
|
372
|
+
const platform = new HiAgentPlatformClient({
|
|
373
|
+
baseUrl: platformSnapshot.platform_base_url,
|
|
374
|
+
});
|
|
364
375
|
const gateway = new HiAgentGatewayClient({
|
|
365
|
-
baseUrl:
|
|
376
|
+
baseUrl: platformSnapshot.registry_base_url,
|
|
366
377
|
token: '',
|
|
367
378
|
});
|
|
368
379
|
return {
|
|
@@ -385,7 +396,7 @@ async function persistState(updater) {
|
|
|
385
396
|
});
|
|
386
397
|
}
|
|
387
398
|
async function createAuthorizedClients() {
|
|
388
|
-
|
|
399
|
+
let state = await loadPersistedState();
|
|
389
400
|
if (!state.identity)
|
|
390
401
|
throw new Error('missing_agent_identity');
|
|
391
402
|
const token = await exchangeHiAgentClientCredentialsToken({
|
|
@@ -394,9 +405,19 @@ async function createAuthorizedClients() {
|
|
|
394
405
|
clientSecret: state.identity.client_secret,
|
|
395
406
|
});
|
|
396
407
|
const clients = await createHiAgentClients({
|
|
397
|
-
|
|
408
|
+
// 当前 env 才是用户刚配置/修正过的 discovery 入口;旧 state 里的 platform snapshot 只作为历史记录,
|
|
409
|
+
// 不能反过来把 runtime 锁死在旧入口上。
|
|
410
|
+
platformBaseUrl: config.platformBaseUrl,
|
|
398
411
|
token: token.access_token,
|
|
399
412
|
});
|
|
413
|
+
const nextPlatform = buildPlatformSnapshot(clients.wellKnown);
|
|
414
|
+
if (state.platform?.platform_base_url !== nextPlatform.platform_base_url
|
|
415
|
+
|| state.platform?.registry_base_url !== nextPlatform.registry_base_url) {
|
|
416
|
+
state = await persistState((current) => ({
|
|
417
|
+
...current,
|
|
418
|
+
platform: nextPlatform,
|
|
419
|
+
}));
|
|
420
|
+
}
|
|
400
421
|
return {
|
|
401
422
|
state,
|
|
402
423
|
accessToken: token.access_token,
|
|
@@ -515,30 +536,91 @@ function buildInstallationDeliveryDeclaration(args) {
|
|
|
515
536
|
function hasActiveInstallationCapability(declaration, kind) {
|
|
516
537
|
return !!declaration?.capabilities?.some((entry) => entry.kind === kind && entry.status !== 'disabled');
|
|
517
538
|
}
|
|
518
|
-
function
|
|
539
|
+
function buildInvalidOpenClawSessionKeyError(reason, input) {
|
|
540
|
+
const error = new Error('invalid_openclaw_host_session_key');
|
|
541
|
+
const hint = reason === 'status_display_value'
|
|
542
|
+
? 'Use a structured host source for the full session key; do not copy the truncated key shown by openclaw status.'
|
|
543
|
+
: reason === 'sessions_display_value'
|
|
544
|
+
? 'Use a structured host source for the full session key; do not copy the truncated key shown by openclaw sessions.'
|
|
545
|
+
: 'Expected an OpenClaw canonical full session key shaped like agent:<agent_id>:<rest>.';
|
|
546
|
+
error.detail = {
|
|
547
|
+
reason,
|
|
548
|
+
input,
|
|
549
|
+
hint,
|
|
550
|
+
};
|
|
551
|
+
return error;
|
|
552
|
+
}
|
|
553
|
+
function normalizeReplyRouteSessionKey(input, options = {}) {
|
|
554
|
+
const sessionKey = normalizeText(input) || null;
|
|
555
|
+
if (!sessionKey) {
|
|
556
|
+
return null;
|
|
557
|
+
}
|
|
558
|
+
const shouldValidateAsOpenClaw = options.requireOpenClawSessionKey || looksLikeOpenClawSessionKey(sessionKey);
|
|
559
|
+
if (!shouldValidateAsOpenClaw) {
|
|
560
|
+
return sessionKey;
|
|
561
|
+
}
|
|
562
|
+
const validation = validateOpenClawSessionKey(sessionKey);
|
|
563
|
+
if (!validation) {
|
|
564
|
+
return null;
|
|
565
|
+
}
|
|
566
|
+
if (!validation.ok) {
|
|
567
|
+
throw buildInvalidOpenClawSessionKeyError(validation.reason, validation.input);
|
|
568
|
+
}
|
|
569
|
+
return validation.normalized;
|
|
570
|
+
}
|
|
571
|
+
function normalizeReplyRouteWithInstallationId(input, installationId, options = {}) {
|
|
519
572
|
if (!isPlainObject(input))
|
|
520
573
|
return null;
|
|
521
574
|
const normalizedInstallationId = normalizeText(installationId) || null;
|
|
522
575
|
const existingInstallationId = normalizeText(input.installation_id) || null;
|
|
523
|
-
|
|
576
|
+
const hasSessionKey = Object.prototype.hasOwnProperty.call(input, 'session_key')
|
|
577
|
+
|| Object.prototype.hasOwnProperty.call(input, 'sessionKey');
|
|
578
|
+
const normalizedSessionKey = hasSessionKey
|
|
579
|
+
? normalizeReplyRouteSessionKey(Object.prototype.hasOwnProperty.call(input, 'session_key')
|
|
580
|
+
? input.session_key
|
|
581
|
+
: input.sessionKey, options)
|
|
582
|
+
: undefined;
|
|
583
|
+
if (!normalizedInstallationId && !hasSessionKey)
|
|
524
584
|
return input;
|
|
525
|
-
|
|
585
|
+
const output = {
|
|
526
586
|
...input,
|
|
527
|
-
installation_id: normalizedInstallationId,
|
|
528
587
|
};
|
|
588
|
+
if (normalizedInstallationId && !existingInstallationId) {
|
|
589
|
+
output.installation_id = normalizedInstallationId;
|
|
590
|
+
}
|
|
591
|
+
if (hasSessionKey) {
|
|
592
|
+
if (Object.prototype.hasOwnProperty.call(output, 'session_key')) {
|
|
593
|
+
output.session_key = normalizedSessionKey;
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
output.sessionKey = normalizedSessionKey;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
return output;
|
|
529
600
|
}
|
|
530
|
-
function
|
|
531
|
-
if (!
|
|
532
|
-
return
|
|
601
|
+
function applyNormalizedDefaultReplyRoute(input, installationId, options = {}) {
|
|
602
|
+
if (!Object.prototype.hasOwnProperty.call(input, 'default_reply_route')) {
|
|
603
|
+
return input;
|
|
533
604
|
}
|
|
534
|
-
|
|
605
|
+
return {
|
|
535
606
|
...input,
|
|
536
|
-
default_reply_route:
|
|
607
|
+
default_reply_route: normalizeReplyRouteWithInstallationId(input.default_reply_route, installationId, options),
|
|
537
608
|
};
|
|
538
|
-
return normalizeAgentInstallationDeliveryDeclaration(hydrated);
|
|
539
609
|
}
|
|
540
|
-
function
|
|
541
|
-
|
|
610
|
+
function normalizeDeliveryCapabilitiesWithInstallationId(input, installationId) {
|
|
611
|
+
if (isPlainObject(input)) {
|
|
612
|
+
return applyNormalizedDefaultReplyRoute(input, installationId);
|
|
613
|
+
}
|
|
614
|
+
const normalized = normalizeAgentInstallationDeliveryDeclaration(input);
|
|
615
|
+
if (!isPlainObject(normalized)) {
|
|
616
|
+
return normalized;
|
|
617
|
+
}
|
|
618
|
+
return applyNormalizedDefaultReplyRoute(normalized, installationId);
|
|
619
|
+
}
|
|
620
|
+
function buildDefaultReplyRoute(args, options = {}) {
|
|
621
|
+
const sessionKey = normalizeReplyRouteSessionKey(args.host_session_key, {
|
|
622
|
+
requireOpenClawSessionKey: options.requireOpenClawSessionKey,
|
|
623
|
+
});
|
|
542
624
|
const deliveryContext = {
|
|
543
625
|
channel: normalizeText(args.default_reply_channel) || null,
|
|
544
626
|
to: normalizeText(args.default_reply_to) || null,
|
|
@@ -552,7 +634,7 @@ function buildDefaultReplyRoute(args, installationId) {
|
|
|
552
634
|
if (!sessionKey && !hasDeliveryContext)
|
|
553
635
|
return null;
|
|
554
636
|
return {
|
|
555
|
-
installation_id: normalizeText(installationId) || null,
|
|
637
|
+
installation_id: normalizeText(options.installationId) || null,
|
|
556
638
|
session_key: sessionKey,
|
|
557
639
|
delivery_context: hasDeliveryContext ? deliveryContext : null,
|
|
558
640
|
};
|
|
@@ -673,9 +755,11 @@ function buildDoctorSummary(args) {
|
|
|
673
755
|
const defaultReplyRoute = isPlainObject(deliveryDeclaration?.default_reply_route)
|
|
674
756
|
? deliveryDeclaration.default_reply_route
|
|
675
757
|
: null;
|
|
676
|
-
const continuityState = defaultReplyRoute
|
|
677
|
-
? '
|
|
678
|
-
:
|
|
758
|
+
const continuityState = defaultReplyRoute && !args.defaultReplyRouteValidation.ok
|
|
759
|
+
? 'explicit_default_route_invalid'
|
|
760
|
+
: defaultReplyRoute
|
|
761
|
+
? 'explicit_default_route_ready'
|
|
762
|
+
: (routeMissingPolicy === 'fail_closed' ? 'origin_capture_only' : 'continuity_not_ready');
|
|
679
763
|
return {
|
|
680
764
|
ok: args.blockers.length === 0,
|
|
681
765
|
profile: config.profile,
|
|
@@ -695,7 +779,79 @@ function buildDoctorSummary(args) {
|
|
|
695
779
|
delivery_capabilities: deliveryDeclaration,
|
|
696
780
|
route_missing_policy: routeMissingPolicy,
|
|
697
781
|
default_reply_route: defaultReplyRoute,
|
|
782
|
+
default_reply_route_validation: args.defaultReplyRouteValidation,
|
|
698
783
|
delivery_probe: args.deliveryProbe,
|
|
784
|
+
delivery_probe_diagnostics: args.deliveryProbeDiagnostics,
|
|
785
|
+
};
|
|
786
|
+
}
|
|
787
|
+
async function readReceiverConfigSnapshot(receiverConfigPath) {
|
|
788
|
+
try {
|
|
789
|
+
const raw = await fs.readFile(receiverConfigPath, 'utf8');
|
|
790
|
+
const parsed = JSON.parse(raw);
|
|
791
|
+
return isPlainObject(parsed) ? parsed : null;
|
|
792
|
+
}
|
|
793
|
+
catch {
|
|
794
|
+
return null;
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
async function diagnoseOpenClawHookBasePathMismatch(args) {
|
|
798
|
+
const installState = stateInstallSnapshot(args.state.runtime);
|
|
799
|
+
if (normalizeText(installState.host_kind) !== 'openclaw')
|
|
800
|
+
return null;
|
|
801
|
+
const probeResults = Array.isArray(args.deliveryProbe?.results)
|
|
802
|
+
? args.deliveryProbe.results
|
|
803
|
+
: [];
|
|
804
|
+
if (!probeResults.some((entry) => String(entry?.error || '').includes('host_adapter_http_404'))) {
|
|
805
|
+
return null;
|
|
806
|
+
}
|
|
807
|
+
const receiverConfigPath = installState.receiver_config_path || resolveReceiverConfigPath(args.state);
|
|
808
|
+
const receiverConfig = await readReceiverConfigSnapshot(receiverConfigPath);
|
|
809
|
+
const hostAdapter = isPlainObject(receiverConfig?.host_adapter)
|
|
810
|
+
? receiverConfig.host_adapter
|
|
811
|
+
: null;
|
|
812
|
+
if (normalizeText(hostAdapter?.kind) !== 'openclaw_hooks')
|
|
813
|
+
return null;
|
|
814
|
+
const configuredEndpoint = normalizeText(hostAdapter?.url);
|
|
815
|
+
const bearerToken = normalizeText((hostAdapter?.auth || {}).token);
|
|
816
|
+
if (!configuredEndpoint || !bearerToken)
|
|
817
|
+
return null;
|
|
818
|
+
let currentUrl;
|
|
819
|
+
try {
|
|
820
|
+
currentUrl = new URL(configuredEndpoint);
|
|
821
|
+
}
|
|
822
|
+
catch {
|
|
823
|
+
return null;
|
|
824
|
+
}
|
|
825
|
+
if (!currentUrl.pathname.endsWith('/agent'))
|
|
826
|
+
return null;
|
|
827
|
+
// OpenClaw's hooks.path is a base prefix; the actual agent ingress lives at <hooks.path>/agent.
|
|
828
|
+
const candidateUrl = new URL(currentUrl.toString());
|
|
829
|
+
candidateUrl.pathname = `${currentUrl.pathname.replace(/\/+$/, '')}/agent`;
|
|
830
|
+
if (candidateUrl.toString() === currentUrl.toString())
|
|
831
|
+
return null;
|
|
832
|
+
try {
|
|
833
|
+
const response = await fetch(candidateUrl, {
|
|
834
|
+
method: 'POST',
|
|
835
|
+
headers: {
|
|
836
|
+
authorization: `Bearer ${bearerToken}`,
|
|
837
|
+
'content-type': 'application/json',
|
|
838
|
+
},
|
|
839
|
+
body: '{}',
|
|
840
|
+
});
|
|
841
|
+
const bodyText = await response.text();
|
|
842
|
+
if (response.status !== 400 || !bodyText.includes('message required')) {
|
|
843
|
+
return null;
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
catch {
|
|
847
|
+
return null;
|
|
848
|
+
}
|
|
849
|
+
return {
|
|
850
|
+
kind: 'openclaw_hooks_base_path_misconfigured',
|
|
851
|
+
configured_host_adapter_url: configuredEndpoint,
|
|
852
|
+
live_agent_subroute_url: candidateUrl.toString(),
|
|
853
|
+
suggested_hooks_base_path: currentUrl.pathname.replace(/\/agent\/?$/, '') || '/hooks',
|
|
854
|
+
explanation: 'OpenClaw treats hooks.path as a base path, and the agent hook lives at <hooks.path>/agent. This host likely set hooks.path to /hooks/agent instead of /hooks.',
|
|
699
855
|
};
|
|
700
856
|
}
|
|
701
857
|
async function handleRegister(args) {
|
|
@@ -715,10 +871,8 @@ async function handleRegister(args) {
|
|
|
715
871
|
capabilities: args.capabilities,
|
|
716
872
|
metadata: isPlainObject(args.metadata) ? args.metadata : null,
|
|
717
873
|
// register 阶段 installation_id 由 gateway 正式生成;
|
|
718
|
-
//
|
|
719
|
-
delivery_capabilities:
|
|
720
|
-
? args.delivery_capabilities
|
|
721
|
-
: normalizeAgentInstallationDeliveryDeclaration(args.delivery_capabilities),
|
|
874
|
+
// 这里仍然保留 default_reply_route / route_missing_policy,但会先做 reply route 校验。
|
|
875
|
+
delivery_capabilities: normalizeDeliveryCapabilitiesWithInstallationId(args.delivery_capabilities, null),
|
|
722
876
|
status: normalizeText(args.status) || undefined,
|
|
723
877
|
};
|
|
724
878
|
if (agentId)
|
|
@@ -726,13 +880,10 @@ async function handleRegister(args) {
|
|
|
726
880
|
// gateway 现在会在省略 agent_id 时正式生成 canonical ag_ id;
|
|
727
881
|
// 这里保持请求与网关 contract 一致,不再人为制造一个本地占位 id。
|
|
728
882
|
const registered = await gateway.register(request);
|
|
883
|
+
const platformSnapshot = buildPlatformSnapshot(wellKnown);
|
|
729
884
|
await persistState(() => ({
|
|
730
885
|
profile: config.profile,
|
|
731
|
-
platform:
|
|
732
|
-
platform_base_url: config.platformBaseUrl,
|
|
733
|
-
registry_base_url: wellKnown.platform.registry_base_url,
|
|
734
|
-
fetched_at: new Date().toISOString(),
|
|
735
|
-
},
|
|
886
|
+
platform: platformSnapshot,
|
|
736
887
|
identity: {
|
|
737
888
|
agent_id: registered.agent.agent_id,
|
|
738
889
|
installation_id: registered.installation.installation_id,
|
|
@@ -874,6 +1025,12 @@ async function handleDoctor(args) {
|
|
|
874
1025
|
const installState = stateInstallSnapshot(state.runtime);
|
|
875
1026
|
let remote = null;
|
|
876
1027
|
let deliveryProbe = null;
|
|
1028
|
+
let deliveryProbeDiagnostics = null;
|
|
1029
|
+
let defaultReplyRouteValidation = {
|
|
1030
|
+
ok: true,
|
|
1031
|
+
reason: null,
|
|
1032
|
+
session_key: null,
|
|
1033
|
+
};
|
|
877
1034
|
if (!state.identity) {
|
|
878
1035
|
blockers.push('missing_agent_identity');
|
|
879
1036
|
}
|
|
@@ -896,6 +1053,35 @@ async function handleDoctor(args) {
|
|
|
896
1053
|
subscriptions: subscriptions.subscriptions,
|
|
897
1054
|
};
|
|
898
1055
|
const declaration = installation.installation.delivery_capabilities || null;
|
|
1056
|
+
const defaultReplyRoute = isPlainObject(declaration?.default_reply_route)
|
|
1057
|
+
? declaration.default_reply_route
|
|
1058
|
+
: null;
|
|
1059
|
+
const defaultReplyRouteSessionKey = normalizeText(defaultReplyRoute?.session_key || defaultReplyRoute?.sessionKey) || null;
|
|
1060
|
+
if (defaultReplyRouteSessionKey && looksLikeOpenClawSessionKey(defaultReplyRouteSessionKey)) {
|
|
1061
|
+
const validation = validateOpenClawSessionKey(defaultReplyRouteSessionKey);
|
|
1062
|
+
if (validation?.ok) {
|
|
1063
|
+
defaultReplyRouteValidation = {
|
|
1064
|
+
ok: true,
|
|
1065
|
+
reason: null,
|
|
1066
|
+
session_key: validation.normalized,
|
|
1067
|
+
};
|
|
1068
|
+
}
|
|
1069
|
+
else if (validation) {
|
|
1070
|
+
defaultReplyRouteValidation = {
|
|
1071
|
+
ok: false,
|
|
1072
|
+
reason: validation.reason,
|
|
1073
|
+
session_key: validation.input,
|
|
1074
|
+
};
|
|
1075
|
+
blockers.push(`openclaw_default_reply_route_session_key_invalid:${validation.reason}`);
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
else {
|
|
1079
|
+
defaultReplyRouteValidation = {
|
|
1080
|
+
ok: true,
|
|
1081
|
+
reason: null,
|
|
1082
|
+
session_key: defaultReplyRouteSessionKey,
|
|
1083
|
+
};
|
|
1084
|
+
}
|
|
899
1085
|
const activeTopics = new Set((subscriptions.subscriptions || [])
|
|
900
1086
|
.filter((entry) => normalizeText(entry?.status) === 'active')
|
|
901
1087
|
.map((entry) => normalizeText(entry?.topic))
|
|
@@ -926,6 +1112,13 @@ async function handleDoctor(args) {
|
|
|
926
1112
|
deliveryProbe = probe;
|
|
927
1113
|
if (!(probe.results || []).some((entry) => entry.ok)) {
|
|
928
1114
|
blockers.push('local_receiver_delivery_probe_failed');
|
|
1115
|
+
deliveryProbeDiagnostics = await diagnoseOpenClawHookBasePathMismatch({
|
|
1116
|
+
state,
|
|
1117
|
+
deliveryProbe,
|
|
1118
|
+
});
|
|
1119
|
+
if (deliveryProbeDiagnostics?.kind === 'openclaw_hooks_base_path_misconfigured') {
|
|
1120
|
+
blockers.push('openclaw_hooks_base_path_misconfigured');
|
|
1121
|
+
}
|
|
929
1122
|
}
|
|
930
1123
|
}
|
|
931
1124
|
catch (error) {
|
|
@@ -947,6 +1140,8 @@ async function handleDoctor(args) {
|
|
|
947
1140
|
blockers,
|
|
948
1141
|
warnings,
|
|
949
1142
|
deliveryProbe,
|
|
1143
|
+
deliveryProbeDiagnostics,
|
|
1144
|
+
defaultReplyRouteValidation,
|
|
950
1145
|
}));
|
|
951
1146
|
}
|
|
952
1147
|
async function handleInstall(args) {
|
|
@@ -1006,7 +1201,10 @@ async function handleInstall(args) {
|
|
|
1006
1201
|
state = await loadPersistedState();
|
|
1007
1202
|
}
|
|
1008
1203
|
const { gateway } = await createAuthorizedClients();
|
|
1009
|
-
const defaultReplyRoute = buildDefaultReplyRoute(args,
|
|
1204
|
+
const defaultReplyRoute = buildDefaultReplyRoute(args, {
|
|
1205
|
+
installationId: state.identity?.installation_id || null,
|
|
1206
|
+
requireOpenClawSessionKey: hostKind === 'openclaw',
|
|
1207
|
+
});
|
|
1010
1208
|
const routeMissingPolicy = normalizeText(args.route_missing_policy)
|
|
1011
1209
|
|| (defaultReplyRoute ? 'use_explicit_default_route' : '');
|
|
1012
1210
|
const desiredDeliveryCapabilities = buildInstallationDeliveryDeclaration({
|
|
@@ -1192,13 +1390,8 @@ async function handleInstallationUpdate(args) {
|
|
|
1192
1390
|
: {}),
|
|
1193
1391
|
...(Object.prototype.hasOwnProperty.call(args, 'delivery_capabilities')
|
|
1194
1392
|
// installation_update 需要保留 default_reply_route / route_missing_policy 这类扩展字段,
|
|
1195
|
-
//
|
|
1196
|
-
? { delivery_capabilities: (
|
|
1197
|
-
? {
|
|
1198
|
-
...args.delivery_capabilities,
|
|
1199
|
-
default_reply_route: withInstallationIdOnReplyRoute(args.delivery_capabilities.default_reply_route, state.identity?.installation_id || null),
|
|
1200
|
-
}
|
|
1201
|
-
: normalizeDeliveryCapabilitiesWithInstallationId(args.delivery_capabilities, state.identity?.installation_id || null)) }
|
|
1393
|
+
// 但 reply route 里的 session_key 仍然必须先过 canonical 校验。
|
|
1394
|
+
? { delivery_capabilities: normalizeDeliveryCapabilitiesWithInstallationId(args.delivery_capabilities, state.identity?.installation_id || null) }
|
|
1202
1395
|
: {}),
|
|
1203
1396
|
};
|
|
1204
1397
|
const updated = await gateway.updateInstallation(updateRequest);
|
|
@@ -1430,7 +1623,7 @@ async function listTools() {
|
|
|
1430
1623
|
function createMcpServer() {
|
|
1431
1624
|
const server = new Server({
|
|
1432
1625
|
name: 'hi-mcp-server',
|
|
1433
|
-
version: '0.1.
|
|
1626
|
+
version: '0.1.7',
|
|
1434
1627
|
}, {
|
|
1435
1628
|
capabilities: {
|
|
1436
1629
|
tools: {},
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
- `HiAgentPlatformClient`:well-known、skills、capabilities、capability call
|
|
8
8
|
- `HiAgentGatewayClient`:register / connect / activate / me / installation / endpoints / subscriptions / test-delivery / claim / fetch / ack
|
|
9
|
-
- `createHiAgentClients()`:先读 well-known,再自动构造 platform + gateway client
|
|
9
|
+
- `createHiAgentClients()`:先读 well-known,再自动构造 platform + gateway client;后续调用会切到 well-known 返回的 canonical service URL,而不是死守初始 discovery URL
|
|
10
10
|
- `exchangeHiAgentClientCredentialsToken()`:用 register 返回的 `client_id/client_secret` 向 gateway `oauth_token_url` 交换短期 access token
|
|
11
11
|
- SSE stream helper
|
|
12
12
|
|
|
13
13
|
## 使用顺序
|
|
14
14
|
|
|
15
15
|
- 先读取 `/.well-known/hi-agent-platform.json`
|
|
16
|
-
- 再按服务目录访问 skills / capabilities / registry / delivery
|
|
16
|
+
- 再按服务目录访问 skills / capabilities / registry / delivery;如果 discovery URL 和实际业务入口分离(例如 CDN 只负责 discover,auth-required capability call 走 canonical origin),SDK 会自动切到 well-known 返回的正式 base URL
|
|
17
17
|
- 首次 `register` 时 `agent_id` 可以省略;gateway 会正式生成 canonical `ag_...`,之后再用返回/查询到的 agent 身份继续 `activate` 或 `connect`
|
|
18
18
|
- 如果宿主需要声明自己的收消息方式,使用 register/connect 的 `delivery_capabilities`,或后续调用 `GET/PUT /v1/agents/me/installation`
|
|
19
19
|
- push profile 与 subscription/claim/fetch/ack 可以并行配置,但正式消费确认仍然建议走 claim/fetch/ack
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -171,14 +171,23 @@ export async function exchangeHiAgentClientCredentialsToken(options) {
|
|
|
171
171
|
return body;
|
|
172
172
|
}
|
|
173
173
|
export async function createHiAgentClients(options) {
|
|
174
|
-
const
|
|
174
|
+
const bootstrapPlatform = new HiAgentPlatformClient({
|
|
175
175
|
baseUrl: options.platformBaseUrl,
|
|
176
176
|
token: options.token,
|
|
177
177
|
fetchImpl: options.fetchImpl,
|
|
178
178
|
});
|
|
179
|
-
const wellKnown = await
|
|
179
|
+
const wellKnown = await bootstrapPlatform.wellKnown();
|
|
180
|
+
// well-known 允许 discovery host 和实际 capability host 分离;
|
|
181
|
+
// 后续业务调用必须切到 canonical service URL,避免把带 Authorization 的请求继续打到只适合 discovery/CDN 的入口。
|
|
182
|
+
const canonicalPlatformBaseUrl = String(wellKnown?.platform?.platform_base_url || '').trim() || options.platformBaseUrl;
|
|
183
|
+
const canonicalGatewayBaseUrl = String(wellKnown?.platform?.registry_base_url || '').trim() || options.platformBaseUrl;
|
|
184
|
+
const platform = new HiAgentPlatformClient({
|
|
185
|
+
baseUrl: canonicalPlatformBaseUrl,
|
|
186
|
+
token: options.token,
|
|
187
|
+
fetchImpl: options.fetchImpl,
|
|
188
|
+
});
|
|
180
189
|
const gateway = new HiAgentGatewayClient({
|
|
181
|
-
baseUrl:
|
|
190
|
+
baseUrl: canonicalGatewayBaseUrl,
|
|
182
191
|
token: options.token,
|
|
183
192
|
fetchImpl: options.fetchImpl,
|
|
184
193
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hirey/hi-agent-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
20
20
|
"build": "npm run clean && tsc -p tsconfig.json",
|
|
21
|
+
"test": "npm run build && node --test test/**/*.test.mjs",
|
|
21
22
|
"prepack": "npm run build"
|
|
22
23
|
},
|
|
23
24
|
"publishConfig": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hirey/hi-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/server.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@hirey/hi-agent-contracts": "^0.1.12",
|
|
38
|
-
"@hirey/hi-agent-sdk": "^0.1.
|
|
38
|
+
"@hirey/hi-agent-sdk": "^0.1.7",
|
|
39
39
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
40
40
|
"express": "^5.2.1",
|
|
41
41
|
"zod": "^4.3.6"
|