@winmatrix/agent-sdk 0.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/dist/adapters/claude/ClaudeAdapter.d.ts +40 -0
- package/dist/adapters/claude/ClaudeAdapter.d.ts.map +1 -0
- package/dist/adapters/claude/ClaudeAdapter.js +515 -0
- package/dist/adapters/claude/ClaudeAdapter.js.map +1 -0
- package/dist/adapters/claude/ClaudeStreamParser.d.ts +39 -0
- package/dist/adapters/claude/ClaudeStreamParser.d.ts.map +1 -0
- package/dist/adapters/claude/ClaudeStreamParser.js +80 -0
- package/dist/adapters/claude/ClaudeStreamParser.js.map +1 -0
- package/dist/adapters/hermes/HermesAdapter.d.ts +37 -0
- package/dist/adapters/hermes/HermesAdapter.d.ts.map +1 -0
- package/dist/adapters/hermes/HermesAdapter.js +342 -0
- package/dist/adapters/hermes/HermesAdapter.js.map +1 -0
- package/dist/adapters/openclaw/OpenClawAdapter.d.ts +77 -0
- package/dist/adapters/openclaw/OpenClawAdapter.d.ts.map +1 -0
- package/dist/adapters/openclaw/OpenClawAdapter.js +798 -0
- package/dist/adapters/openclaw/OpenClawAdapter.js.map +1 -0
- package/dist/adapters/openclaw/unwrapOpenClawPayloads.d.ts +6 -0
- package/dist/adapters/openclaw/unwrapOpenClawPayloads.d.ts.map +1 -0
- package/dist/adapters/openclaw/unwrapOpenClawPayloads.js +24 -0
- package/dist/adapters/openclaw/unwrapOpenClawPayloads.js.map +1 -0
- package/dist/core/AdapterRegistry.d.ts +21 -0
- package/dist/core/AdapterRegistry.d.ts.map +1 -0
- package/dist/core/AdapterRegistry.js +37 -0
- package/dist/core/AdapterRegistry.js.map +1 -0
- package/dist/core/AgentAdapter.d.ts +165 -0
- package/dist/core/AgentAdapter.d.ts.map +1 -0
- package/dist/core/AgentAdapter.js +23 -0
- package/dist/core/AgentAdapter.js.map +1 -0
- package/dist/core/DaemonClient.d.ts +102 -0
- package/dist/core/DaemonClient.d.ts.map +1 -0
- package/dist/core/DaemonClient.js +225 -0
- package/dist/core/DaemonClient.js.map +1 -0
- package/dist/core/Protocol.d.ts +257 -0
- package/dist/core/Protocol.d.ts.map +1 -0
- package/dist/core/Protocol.js +140 -0
- package/dist/core/Protocol.js.map +1 -0
- package/dist/core/RuntimeDetector.d.ts +7 -0
- package/dist/core/RuntimeDetector.d.ts.map +1 -0
- package/dist/core/RuntimeDetector.js +45 -0
- package/dist/core/RuntimeDetector.js.map +1 -0
- package/dist/core/WinMatrixAgentClient.d.ts +134 -0
- package/dist/core/WinMatrixAgentClient.d.ts.map +1 -0
- package/dist/core/WinMatrixAgentClient.js +382 -0
- package/dist/core/WinMatrixAgentClient.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/DualRuntimeBridge.d.ts +38 -0
- package/dist/runtime/DualRuntimeBridge.d.ts.map +1 -0
- package/dist/runtime/DualRuntimeBridge.js +305 -0
- package/dist/runtime/DualRuntimeBridge.js.map +1 -0
- package/dist/runtime/bridgeConfigLoader.d.ts +14 -0
- package/dist/runtime/bridgeConfigLoader.d.ts.map +1 -0
- package/dist/runtime/bridgeConfigLoader.js +133 -0
- package/dist/runtime/bridgeConfigLoader.js.map +1 -0
- package/dist/runtime/bridgeConfigTypes.d.ts +26 -0
- package/dist/runtime/bridgeConfigTypes.d.ts.map +1 -0
- package/dist/runtime/bridgeConfigTypes.js +6 -0
- package/dist/runtime/bridgeConfigTypes.js.map +1 -0
- package/dist/runtime/bridgeHome.d.ts +19 -0
- package/dist/runtime/bridgeHome.d.ts.map +1 -0
- package/dist/runtime/bridgeHome.js +61 -0
- package/dist/runtime/bridgeHome.js.map +1 -0
- package/dist/runtime/bridgeReconnectPolicy.d.ts +8 -0
- package/dist/runtime/bridgeReconnectPolicy.d.ts.map +1 -0
- package/dist/runtime/bridgeReconnectPolicy.js +16 -0
- package/dist/runtime/bridgeReconnectPolicy.js.map +1 -0
- package/dist/runtime/bridgeTaskJournal.d.ts +7 -0
- package/dist/runtime/bridgeTaskJournal.d.ts.map +1 -0
- package/dist/runtime/bridgeTaskJournal.js +66 -0
- package/dist/runtime/bridgeTaskJournal.js.map +1 -0
- package/dist/runtime/localRuntimeAvailabilityMonitor.d.ts +22 -0
- package/dist/runtime/localRuntimeAvailabilityMonitor.d.ts.map +1 -0
- package/dist/runtime/localRuntimeAvailabilityMonitor.js +81 -0
- package/dist/runtime/localRuntimeAvailabilityMonitor.js.map +1 -0
- package/dist/runtime/runDualRuntimeBridge.d.ts +2 -0
- package/dist/runtime/runDualRuntimeBridge.d.ts.map +1 -0
- package/dist/runtime/runDualRuntimeBridge.js +32 -0
- package/dist/runtime/runDualRuntimeBridge.js.map +1 -0
- package/dist/utils/parseSkillMd.d.ts +10 -0
- package/dist/utils/parseSkillMd.d.ts.map +1 -0
- package/dist/utils/parseSkillMd.js +34 -0
- package/dist/utils/parseSkillMd.js.map +1 -0
- package/dist/utils/processUtils.d.ts +8 -0
- package/dist/utils/processUtils.d.ts.map +1 -0
- package/dist/utils/processUtils.js +31 -0
- package/dist/utils/processUtils.js.map +1 -0
- package/dist/utils/spawnHelper.d.ts +38 -0
- package/dist/utils/spawnHelper.d.ts.map +1 -0
- package/dist/utils/spawnHelper.js +122 -0
- package/dist/utils/spawnHelper.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code stream-json 输出解析器
|
|
3
|
+
*
|
|
4
|
+
* 解析 Claude Code CLI 在 --output-format stream-json --include-partial-messages 模式下的 stdout 输出。
|
|
5
|
+
* 每行是一个独立的 JSON 对象,类型为 stream_event / result / error。
|
|
6
|
+
*/
|
|
7
|
+
export function parseClaudeLine(line) {
|
|
8
|
+
const trimmed = line.trim();
|
|
9
|
+
if (!trimmed)
|
|
10
|
+
return { type: 'skip' };
|
|
11
|
+
let parsed;
|
|
12
|
+
try {
|
|
13
|
+
parsed = JSON.parse(trimmed);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return { type: 'skip' };
|
|
17
|
+
}
|
|
18
|
+
if (!parsed || typeof parsed !== 'object')
|
|
19
|
+
return { type: 'skip' };
|
|
20
|
+
switch (parsed.type) {
|
|
21
|
+
case 'stream_event': {
|
|
22
|
+
const event = parsed.event;
|
|
23
|
+
if (!event)
|
|
24
|
+
return { type: 'skip' };
|
|
25
|
+
if (event.type === 'content_block_delta') {
|
|
26
|
+
const delta = event.delta;
|
|
27
|
+
if (delta?.type === 'text_delta' && typeof delta.text === 'string') {
|
|
28
|
+
return { type: 'delta', text: delta.text };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (event.type === 'content_block_start') {
|
|
32
|
+
const contentBlock = event.content_block;
|
|
33
|
+
if (contentBlock?.type === 'tool_use' && typeof contentBlock.name === 'string') {
|
|
34
|
+
return {
|
|
35
|
+
type: 'tool_use',
|
|
36
|
+
toolName: contentBlock.name,
|
|
37
|
+
toolInput: contentBlock.input,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (event.type === 'tool_use') {
|
|
42
|
+
// Legacy / alternative format
|
|
43
|
+
return {
|
|
44
|
+
type: 'tool_use',
|
|
45
|
+
toolName: typeof event.name === 'string' ? event.name : 'unknown',
|
|
46
|
+
toolInput: event.input,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return { type: 'skip' };
|
|
50
|
+
}
|
|
51
|
+
case 'result': {
|
|
52
|
+
const sessionId = typeof parsed.session_id === 'string' ? parsed.session_id : undefined;
|
|
53
|
+
const result = typeof parsed.result === 'string' ? parsed.result : undefined;
|
|
54
|
+
let usage;
|
|
55
|
+
if (parsed.usage && typeof parsed.usage === 'object') {
|
|
56
|
+
const u = parsed.usage;
|
|
57
|
+
const inputTokens = typeof u.input_tokens === 'number' ? u.input_tokens : 0;
|
|
58
|
+
const outputTokens = typeof u.output_tokens === 'number' ? u.output_tokens : 0;
|
|
59
|
+
if (inputTokens > 0 || outputTokens > 0) {
|
|
60
|
+
usage = { input_tokens: inputTokens, output_tokens: outputTokens };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const durationMs = typeof parsed.duration_ms === 'number' ? parsed.duration_ms : undefined;
|
|
64
|
+
return { type: 'result', sessionId, result, usage, durationMs };
|
|
65
|
+
}
|
|
66
|
+
case 'error': {
|
|
67
|
+
const message = typeof parsed.error === 'string' ? parsed.error : 'Claude Code error';
|
|
68
|
+
return { type: 'error', message };
|
|
69
|
+
}
|
|
70
|
+
default:
|
|
71
|
+
return { type: 'skip' };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function splitLines(buffer, chunk) {
|
|
75
|
+
const merged = buffer + chunk;
|
|
76
|
+
const parts = merged.split('\n');
|
|
77
|
+
const remainder = parts.pop() ?? '';
|
|
78
|
+
return { lines: parts, remainder };
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=ClaudeStreamParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeStreamParser.js","sourceRoot":"","sources":["../../../src/adapters/claude/ClaudeStreamParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HermesAdapter — spawn Hermes CLI,通过 stdout 文本流通信
|
|
3
|
+
*
|
|
4
|
+
* Hermes 原生支持 MCP Client,可直接连接 WinMatrix MCP Bridge。
|
|
5
|
+
* 会话数据存储在 ~/.hermes/state.db SQLite 中。
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentAdapter, AdapterEvent, AdapterMeta, AgentTaskContext, HealthStatus, SessionListOptions, SessionListResult, SessionDetailOptions, SessionDetailResult } from '../../core/AgentAdapter.js';
|
|
8
|
+
export interface HermesAdapterOptions {
|
|
9
|
+
hermesPath?: string;
|
|
10
|
+
/** WinMatrix MCP Bridge URL (Hermes 作为 MCP Client 连接) */
|
|
11
|
+
mcpBridgeUrl?: string;
|
|
12
|
+
/** MCP 认证 token */
|
|
13
|
+
mcpApiKey?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class HermesAdapter implements AgentAdapter {
|
|
16
|
+
readonly meta: AdapterMeta;
|
|
17
|
+
private hermesPath;
|
|
18
|
+
private mcpBridgeUrl?;
|
|
19
|
+
private mcpApiKey?;
|
|
20
|
+
constructor(config?: Record<string, unknown>);
|
|
21
|
+
execute(task: AgentTaskContext, signal?: AbortSignal): AsyncGenerator<AdapterEvent>;
|
|
22
|
+
healthCheck(): Promise<HealthStatus>;
|
|
23
|
+
listSessions(options: SessionListOptions): Promise<SessionListResult>;
|
|
24
|
+
getSession(sessionId: string, options?: SessionDetailOptions): Promise<SessionDetailResult>;
|
|
25
|
+
discoverSkills(_context: {
|
|
26
|
+
workDir?: string;
|
|
27
|
+
}): Promise<Array<{
|
|
28
|
+
name: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
source?: string;
|
|
31
|
+
category?: string;
|
|
32
|
+
}>>;
|
|
33
|
+
private scanSkillDirRecursive;
|
|
34
|
+
private openStateDb;
|
|
35
|
+
private queryStateDb;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=HermesAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HermesAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/hermes/HermesAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAc,YAAW,YAAY;IAChD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAYxB;IAEF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC;IAoJpF,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IA0BpC,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgCrE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4D/F,cAAc,CAAC,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAUhJ,OAAO,CAAC,qBAAqB;YAsBf,WAAW;YAcX,YAAY;CAyB3B"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HermesAdapter — spawn Hermes CLI,通过 stdout 文本流通信
|
|
3
|
+
*
|
|
4
|
+
* Hermes 原生支持 MCP Client,可直接连接 WinMatrix MCP Bridge。
|
|
5
|
+
* 会话数据存储在 ~/.hermes/state.db SQLite 中。
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { parseSkillMd } from '../../utils/parseSkillMd.js';
|
|
12
|
+
import { waitForExit, killProcess } from '../../utils/processUtils.js';
|
|
13
|
+
export class HermesAdapter {
|
|
14
|
+
meta = {
|
|
15
|
+
agentType: 'hermes',
|
|
16
|
+
runtime: 'hermes',
|
|
17
|
+
capabilities: {
|
|
18
|
+
streaming: true,
|
|
19
|
+
toolCall: true,
|
|
20
|
+
session: true,
|
|
21
|
+
cancellation: false,
|
|
22
|
+
},
|
|
23
|
+
tools: [],
|
|
24
|
+
skills: [],
|
|
25
|
+
toolCategories: {},
|
|
26
|
+
};
|
|
27
|
+
hermesPath;
|
|
28
|
+
mcpBridgeUrl;
|
|
29
|
+
mcpApiKey;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
const opts = config;
|
|
32
|
+
this.hermesPath = opts?.hermesPath ?? 'hermes';
|
|
33
|
+
this.mcpBridgeUrl = opts?.mcpBridgeUrl;
|
|
34
|
+
this.mcpApiKey = opts?.mcpApiKey;
|
|
35
|
+
}
|
|
36
|
+
// ── execute ──
|
|
37
|
+
async *execute(task, signal) {
|
|
38
|
+
const workDir = task.workDir;
|
|
39
|
+
if (workDir && !existsSync(workDir)) {
|
|
40
|
+
yield { type: 'error', message: `Work directory does not exist: ${workDir}` };
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const args = ['chat'];
|
|
44
|
+
// Non-interactive prompt:systemPrompt 拼接到 input 前方(Hermes 不支持独立 system prompt 参数)
|
|
45
|
+
const queryInput = task.systemPrompt
|
|
46
|
+
? `${task.systemPrompt}\n\n---\n\n${task.input}`
|
|
47
|
+
: task.input;
|
|
48
|
+
if (queryInput) {
|
|
49
|
+
args.push('--query', queryInput);
|
|
50
|
+
}
|
|
51
|
+
args.push('--verbose');
|
|
52
|
+
// Session management
|
|
53
|
+
let sessionId;
|
|
54
|
+
const isOneshot = task.mode === 'oneshot';
|
|
55
|
+
if (!isOneshot) {
|
|
56
|
+
if (task.resumeSession && task.sessionId) {
|
|
57
|
+
args.push('--resume', task.sessionId);
|
|
58
|
+
sessionId = task.sessionId;
|
|
59
|
+
}
|
|
60
|
+
else if (task.forkSession) {
|
|
61
|
+
// Hermes generates its own session ID; we'll extract from stdout
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// New session or continue latest
|
|
65
|
+
if (task.sessionId) {
|
|
66
|
+
args.push('--resume', task.sessionId);
|
|
67
|
+
sessionId = task.sessionId;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Model selection
|
|
72
|
+
if (task.hermes?.model) {
|
|
73
|
+
args.push('--model', task.hermes.model);
|
|
74
|
+
}
|
|
75
|
+
// Build env with MCP bridge config(per-task token 优先)
|
|
76
|
+
const env = { ...process.env, ...(task.env ?? {}) };
|
|
77
|
+
if (this.mcpBridgeUrl) {
|
|
78
|
+
env.HERMES_MCP_SERVER_URL = this.mcpBridgeUrl;
|
|
79
|
+
const effectiveToken = task.mcpToken ?? this.mcpApiKey;
|
|
80
|
+
if (effectiveToken) {
|
|
81
|
+
env.HERMES_MCP_API_KEY = effectiveToken;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Spawn
|
|
85
|
+
let proc;
|
|
86
|
+
try {
|
|
87
|
+
proc = spawn(this.hermesPath, args, {
|
|
88
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
89
|
+
env,
|
|
90
|
+
cwd: workDir ?? process.cwd(),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
yield { type: 'error', message: `Failed to spawn hermes: ${err instanceof Error ? err.message : String(err)}` };
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
proc.stdin?.end();
|
|
98
|
+
let extractedSessionId;
|
|
99
|
+
let resultText = '';
|
|
100
|
+
let completed = false;
|
|
101
|
+
const onAbort = () => {
|
|
102
|
+
if (!completed) {
|
|
103
|
+
killProcess(proc);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
107
|
+
try {
|
|
108
|
+
let stdoutBuffer = '';
|
|
109
|
+
let stderrBuffer = '';
|
|
110
|
+
// Collect stderr separately
|
|
111
|
+
proc.stderr?.on('data', (chunk) => {
|
|
112
|
+
stderrBuffer += chunk.toString('utf-8');
|
|
113
|
+
});
|
|
114
|
+
for await (const chunk of proc.stdout) {
|
|
115
|
+
if (signal?.aborted)
|
|
116
|
+
break;
|
|
117
|
+
const text = typeof chunk === 'string' ? chunk : chunk.toString('utf-8');
|
|
118
|
+
stdoutBuffer += text;
|
|
119
|
+
// Process complete lines as delta events
|
|
120
|
+
const lines = stdoutBuffer.split('\n');
|
|
121
|
+
stdoutBuffer = lines.pop() ?? '';
|
|
122
|
+
for (const line of lines) {
|
|
123
|
+
const trimmed = line.trim();
|
|
124
|
+
if (!trimmed)
|
|
125
|
+
continue;
|
|
126
|
+
// Try to detect session ID from Hermes output
|
|
127
|
+
const sessionMatch = trimmed.match(/session[:\s]+([\w-]+)/i);
|
|
128
|
+
if (sessionMatch && !extractedSessionId) {
|
|
129
|
+
extractedSessionId = sessionMatch[1];
|
|
130
|
+
}
|
|
131
|
+
// Detect tool use indicators
|
|
132
|
+
if (trimmed.startsWith('[TOOL') || trimmed.includes('🔧') || trimmed.includes('🛠')) {
|
|
133
|
+
yield { type: 'thinking', content: trimmed };
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
resultText += trimmed + '\n';
|
|
137
|
+
yield { type: 'delta', content: trimmed };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Flush remaining buffer
|
|
142
|
+
if (stdoutBuffer.trim()) {
|
|
143
|
+
resultText += stdoutBuffer.trim() + '\n';
|
|
144
|
+
yield { type: 'delta', content: stdoutBuffer.trim() };
|
|
145
|
+
}
|
|
146
|
+
const exitResult = await waitForExit(proc);
|
|
147
|
+
if (!completed) {
|
|
148
|
+
completed = true;
|
|
149
|
+
if (exitResult.code === 0 || resultText.length > 0) {
|
|
150
|
+
yield {
|
|
151
|
+
type: 'result',
|
|
152
|
+
content: resultText.trim(),
|
|
153
|
+
sessionId: isOneshot ? undefined : (extractedSessionId ?? sessionId),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
const errMsg = stderrBuffer.trim() || exitResult.error || `Hermes exited with code ${exitResult.code}`;
|
|
158
|
+
yield { type: 'error', message: errMsg };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
signal?.removeEventListener('abort', onAbort);
|
|
164
|
+
killProcess(proc);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// ── healthCheck ──
|
|
168
|
+
async healthCheck() {
|
|
169
|
+
return new Promise((resolve) => {
|
|
170
|
+
const proc = spawn(this.hermesPath, ['--version'], {
|
|
171
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
172
|
+
timeout: 10_000,
|
|
173
|
+
});
|
|
174
|
+
let output = '';
|
|
175
|
+
proc.stdout?.on('data', (d) => { output += d.toString('utf-8'); });
|
|
176
|
+
proc.on('exit', (code) => {
|
|
177
|
+
if (code === 0) {
|
|
178
|
+
resolve({ available: true, version: output.trim() });
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
resolve({ available: false, error: `hermes --version exited with code ${code}` });
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
proc.on('error', (err) => {
|
|
185
|
+
resolve({ available: false, error: `hermes CLI not found: ${err.message}` });
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
// ── listSessions ──
|
|
190
|
+
async listSessions(options) {
|
|
191
|
+
try {
|
|
192
|
+
const db = await this.openStateDb();
|
|
193
|
+
if (!db) {
|
|
194
|
+
return { sessions: [], error: 'Cannot open ~/.hermes/state.db' };
|
|
195
|
+
}
|
|
196
|
+
const rows = await this.queryStateDb(db, 'list');
|
|
197
|
+
const entries = rows.map((row) => ({
|
|
198
|
+
id: String(row.id ?? row.session_id ?? ''),
|
|
199
|
+
summary: typeof row.summary === 'string' ? row.summary : undefined,
|
|
200
|
+
createdAt: typeof row.created_at === 'string' ? row.created_at : undefined,
|
|
201
|
+
lastActivityAt: typeof row.updated_at === 'string' ? row.updated_at : undefined,
|
|
202
|
+
messageCount: typeof row.message_count === 'number' ? row.message_count : undefined,
|
|
203
|
+
status: typeof row.status === 'string' ? row.status : undefined,
|
|
204
|
+
}));
|
|
205
|
+
const limit = options.limit ?? 50;
|
|
206
|
+
entries.sort((a, b) => {
|
|
207
|
+
const da = a.lastActivityAt ?? a.createdAt ?? '';
|
|
208
|
+
const db2 = b.lastActivityAt ?? b.createdAt ?? '';
|
|
209
|
+
return db2.localeCompare(da);
|
|
210
|
+
});
|
|
211
|
+
return { sessions: entries.slice(0, limit) };
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
return { sessions: [], error: err instanceof Error ? err.message : String(err) };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// ── getSession ──
|
|
218
|
+
async getSession(sessionId, options = {}) {
|
|
219
|
+
try {
|
|
220
|
+
const db = await this.openStateDb();
|
|
221
|
+
if (!db) {
|
|
222
|
+
return {
|
|
223
|
+
session: { id: sessionId },
|
|
224
|
+
messageCount: 0,
|
|
225
|
+
truncated: false,
|
|
226
|
+
userPrompts: [],
|
|
227
|
+
assistantText: '',
|
|
228
|
+
lastAssistantText: '',
|
|
229
|
+
error: 'Cannot open ~/.hermes/state.db',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const rows = await this.queryStateDb(db, 'messages', sessionId);
|
|
233
|
+
const messages = rows;
|
|
234
|
+
const messageLimit = options.messageLimit ?? 100;
|
|
235
|
+
const selected = messages.slice(-messageLimit);
|
|
236
|
+
let assistantText = '';
|
|
237
|
+
let lastAssistantText = '';
|
|
238
|
+
const userPrompts = [];
|
|
239
|
+
for (const msg of selected) {
|
|
240
|
+
const role = String(msg.role ?? '');
|
|
241
|
+
const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
|
|
242
|
+
if (role === 'user') {
|
|
243
|
+
userPrompts.push(content);
|
|
244
|
+
}
|
|
245
|
+
else if (role === 'assistant') {
|
|
246
|
+
assistantText += content + '\n';
|
|
247
|
+
lastAssistantText = content;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
session: { id: sessionId },
|
|
252
|
+
messageCount: selected.length,
|
|
253
|
+
truncated: selected.length >= messageLimit,
|
|
254
|
+
userPrompts,
|
|
255
|
+
assistantText: assistantText.trim(),
|
|
256
|
+
lastAssistantText,
|
|
257
|
+
rawMessages: options.includeRawMessages ? selected : undefined,
|
|
258
|
+
rawMessagesIncluded: options.includeRawMessages === true,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
return {
|
|
263
|
+
session: { id: sessionId },
|
|
264
|
+
messageCount: 0,
|
|
265
|
+
truncated: false,
|
|
266
|
+
userPrompts: [],
|
|
267
|
+
assistantText: '',
|
|
268
|
+
lastAssistantText: '',
|
|
269
|
+
error: err instanceof Error ? err.message : String(err),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// ── discoverSkills ──
|
|
274
|
+
async discoverSkills(_context) {
|
|
275
|
+
const result = [];
|
|
276
|
+
const skillsDir = join(homedir(), '.hermes', 'skills');
|
|
277
|
+
if (!existsSync(skillsDir))
|
|
278
|
+
return result;
|
|
279
|
+
try {
|
|
280
|
+
this.scanSkillDirRecursive(skillsDir, result);
|
|
281
|
+
}
|
|
282
|
+
catch { /* silently skip */ }
|
|
283
|
+
return result;
|
|
284
|
+
}
|
|
285
|
+
scanSkillDirRecursive(dir, out) {
|
|
286
|
+
try {
|
|
287
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
288
|
+
for (const entry of entries) {
|
|
289
|
+
const fullPath = join(dir, entry.name);
|
|
290
|
+
if (entry.isDirectory()) {
|
|
291
|
+
this.scanSkillDirRecursive(fullPath, out);
|
|
292
|
+
}
|
|
293
|
+
else if (entry.isFile() && entry.name === 'SKILL.md') {
|
|
294
|
+
const parsed = parseSkillMd(fullPath);
|
|
295
|
+
if (parsed) {
|
|
296
|
+
out.push({ ...parsed, source: 'bundled' });
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
catch { /* silently skip */ }
|
|
302
|
+
}
|
|
303
|
+
// ── state.db helpers ──
|
|
304
|
+
async openStateDb() {
|
|
305
|
+
const dbPath = join(homedir(), '.hermes', 'state.db');
|
|
306
|
+
if (!existsSync(dbPath))
|
|
307
|
+
return null;
|
|
308
|
+
// Try node:sqlite (Node >= 22.5)
|
|
309
|
+
try {
|
|
310
|
+
const sqlite = await import('node:sqlite');
|
|
311
|
+
const db = new sqlite.DatabaseSync(dbPath);
|
|
312
|
+
return db;
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
async queryStateDb(db, mode, sessionId) {
|
|
319
|
+
// Try node:sqlite interface first
|
|
320
|
+
if (typeof db.prepare === 'function') {
|
|
321
|
+
const nodeDb = db;
|
|
322
|
+
if (mode === 'list') {
|
|
323
|
+
try {
|
|
324
|
+
return nodeDb.prepare('SELECT id, summary, created_at, updated_at, message_count, status FROM sessions ORDER BY updated_at DESC').all();
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return nodeDb.prepare('SELECT * FROM sessions ORDER BY updated_at DESC').all();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
try {
|
|
332
|
+
return nodeDb.prepare('SELECT role, content FROM messages WHERE session_id = ? ORDER BY created_at').all(sessionId);
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return [];
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return [];
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=HermesAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HermesAdapter.js","sourceRoot":"","sources":["../../../src/adapters/hermes/HermesAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClawAdapter — 通过 WebSocket-RPC 连接本地 OpenClaw Gateway (port 18789)
|
|
3
|
+
*
|
|
4
|
+
* OpenClaw 是 Gateway 架构的智能体运行时,通过 WS-RPC 协议通信。
|
|
5
|
+
* 协议:connect.challenge → connect 握手 → chat.send 发消息 → chat/agent 事件流
|
|
6
|
+
*
|
|
7
|
+
* 使用 client.id: 'gateway-client' + client.mode: 'backend' 作为 loopback backend 客户端,
|
|
8
|
+
* 无需 device identity 签名。
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentAdapter, AdapterEvent, AdapterMeta, AgentTaskContext, HealthStatus, SessionListOptions, SessionListResult, SessionDetailOptions, SessionDetailResult } from '../../core/AgentAdapter.js';
|
|
11
|
+
/**
|
|
12
|
+
* 从 agent assistant 事件 data 提取文本。
|
|
13
|
+
* 参照 server 端 extractAgentAssistantText — 覆盖 text/delta/content/chunk/messages/message/payload/result/response/output。
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractAgentAssistantText(data: Record<string, unknown>): string;
|
|
16
|
+
export declare function extractTextFromMessages(messages: unknown): string;
|
|
17
|
+
export declare function extractTextDeep(obj: unknown, depth?: number): string;
|
|
18
|
+
/**
|
|
19
|
+
* sessionKey 编码: agent:<agentId>:direct:<sessionKey>(参照 server toAgentSessionKey)。
|
|
20
|
+
* 若 sessionKey 已是 agent: 格式则不重复编码,避免双重包装。
|
|
21
|
+
*/
|
|
22
|
+
export declare function toAgentSessionKey(sessionKey: string, agentId: string): string;
|
|
23
|
+
export interface OpenClawAdapterOptions {
|
|
24
|
+
gatewayHost?: string;
|
|
25
|
+
gatewayPort?: number;
|
|
26
|
+
token?: string;
|
|
27
|
+
/** WinMatrix MCP Bridge URL */
|
|
28
|
+
mcpBridgeUrl?: string;
|
|
29
|
+
/** MCP Bridge 认证 token(Agent 级长期凭证) */
|
|
30
|
+
mcpApiKey?: string;
|
|
31
|
+
/** Agent ID,用于 sessionKey 路由 */
|
|
32
|
+
agentId?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare class OpenClawAdapter implements AgentAdapter {
|
|
35
|
+
readonly meta: AdapterMeta;
|
|
36
|
+
private gatewayHost;
|
|
37
|
+
private gatewayPort;
|
|
38
|
+
private token?;
|
|
39
|
+
private mcpBridgeUrl?;
|
|
40
|
+
private mcpApiKey?;
|
|
41
|
+
private agentId?;
|
|
42
|
+
constructor(config?: Record<string, unknown>);
|
|
43
|
+
private get gatewayUrl();
|
|
44
|
+
/**
|
|
45
|
+
* Write MCP server config to openclaw.json, merge with existing keys.
|
|
46
|
+
*
|
|
47
|
+
* 注意:本方法直接写 ~/.openclaw/openclaw.json 共享文件,不适用于同一 OpenClaw
|
|
48
|
+
* 实例上并发多任务场景。当前 daemon 方案 B 下每 agent 单任务串行执行,不会出现
|
|
49
|
+
* 并发写入竞态。若未来支持并发任务,需改为 per-task session 级 MCP 注入。
|
|
50
|
+
*/
|
|
51
|
+
private writeMCPConfig;
|
|
52
|
+
execute(task: AgentTaskContext, signal?: AbortSignal): AsyncGenerator<AdapterEvent>;
|
|
53
|
+
discoverSkills(context: {
|
|
54
|
+
workDir?: string;
|
|
55
|
+
}): Promise<Array<{
|
|
56
|
+
name: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
source?: string;
|
|
59
|
+
category?: string;
|
|
60
|
+
}>>;
|
|
61
|
+
private scanSkillDir;
|
|
62
|
+
private authenticatedConnect;
|
|
63
|
+
/**
|
|
64
|
+
* Generic sendRequest — temporary onMessage handler pattern.
|
|
65
|
+
* Used by healthCheck/listSessions/getSession (short-lived connections).
|
|
66
|
+
*/
|
|
67
|
+
private sendRequest;
|
|
68
|
+
/**
|
|
69
|
+
* Send a request using a pendingRequests map (persistent handler multiplexing).
|
|
70
|
+
* Used by execute() to multiplex req/res with event streaming on the same ws.
|
|
71
|
+
*/
|
|
72
|
+
private sendRequestViaMap;
|
|
73
|
+
healthCheck(): Promise<HealthStatus>;
|
|
74
|
+
listSessions(options: SessionListOptions): Promise<SessionListResult>;
|
|
75
|
+
getSession(sessionId: string, options?: SessionDetailOptions): Promise<SessionDetailResult>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=OpenClawAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenClawAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/openclaw/OpenClawAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,4BAA4B,CAAC;AAwGpC;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2B/E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAYjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CAY/D;AAcD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG7E;AAID,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAYxB;IAEF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU5C,OAAO,KAAK,UAAU,GAErB;IAID;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiCf,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC;IAgPpF,cAAc,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA4B/I,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,oBAAoB;IA2F5B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAwCnB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqBnB,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAiBpC,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiCrE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAkEtG"}
|