@phronesis-io/openclaw-eigenflux 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +169 -0
- package/dist/agent-prompt-templates.d.ts +16 -0
- package/dist/agent-prompt-templates.d.ts.map +1 -0
- package/dist/agent-prompt-templates.js +67 -0
- package/dist/agent-prompt-templates.js.map +1 -0
- package/dist/config.d.ts +161 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +324 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials-loader.d.ts +28 -0
- package/dist/credentials-loader.d.ts.map +1 -0
- package/dist/credentials-loader.js +121 -0
- package/dist/credentials-loader.js.map +1 -0
- package/dist/gateway-rpc-client.d.ts +26 -0
- package/dist/gateway-rpc-client.d.ts.map +1 -0
- package/dist/gateway-rpc-client.js +288 -0
- package/dist/gateway-rpc-client.js.map +1 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +544 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +12 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +25 -0
- package/dist/logger.js.map +1 -0
- package/dist/notification-route-resolver.d.ts +21 -0
- package/dist/notification-route-resolver.d.ts.map +1 -0
- package/dist/notification-route-resolver.js +318 -0
- package/dist/notification-route-resolver.js.map +1 -0
- package/dist/notifier.d.ts +63 -0
- package/dist/notifier.d.ts.map +1 -0
- package/dist/notifier.js +366 -0
- package/dist/notifier.js.map +1 -0
- package/dist/pm-polling-client.d.ts +51 -0
- package/dist/pm-polling-client.d.ts.map +1 -0
- package/dist/pm-polling-client.js +175 -0
- package/dist/pm-polling-client.js.map +1 -0
- package/dist/polling-client.d.ts +73 -0
- package/dist/polling-client.d.ts.map +1 -0
- package/dist/polling-client.js +176 -0
- package/dist/polling-client.js.map +1 -0
- package/dist/session-route-memory.d.ts +13 -0
- package/dist/session-route-memory.d.ts.map +1 -0
- package/dist/session-route-memory.js +114 -0
- package/dist/session-route-memory.js.map +1 -0
- package/index.ts +1 -0
- package/openclaw.plugin.json +90 -0
- package/package.json +50 -0
- package/src/agent-prompt-templates.ts +91 -0
- package/src/config.test.ts +188 -0
- package/src/config.ts +410 -0
- package/src/credentials-loader.test.ts +78 -0
- package/src/credentials-loader.ts +121 -0
- package/src/gateway-rpc-client.test.ts +190 -0
- package/src/gateway-rpc-client.ts +373 -0
- package/src/index.integration.test.ts +437 -0
- package/src/index.test.ts +454 -0
- package/src/index.ts +758 -0
- package/src/logger.ts +27 -0
- package/src/notification-route-resolver.test.ts +136 -0
- package/src/notification-route-resolver.ts +430 -0
- package/src/notifier.test.ts +374 -0
- package/src/notifier.ts +558 -0
- package/src/openclaw-plugin-sdk.d.ts +121 -0
- package/src/pm-polling-client.test.ts +390 -0
- package/src/pm-polling-client.ts +257 -0
- package/src/polling-client.test.ts +279 -0
- package/src/polling-client.ts +283 -0
- package/src/session-route-memory.ts +106 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Internal configuration for the EigenFlux plugin.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.PLUGIN_CONFIG_SCHEMA = exports.PLUGIN_CONFIG = void 0;
|
|
40
|
+
exports.expandHomeDir = expandHomeDir;
|
|
41
|
+
exports.resolveServerSkillPath = resolveServerSkillPath;
|
|
42
|
+
exports.resolvePluginConfig = resolvePluginConfig;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const PLUGIN_VERSION = '0.0.1-alpha.0';
|
|
47
|
+
const DEFAULT_SERVER_NAME = 'eigenflux';
|
|
48
|
+
const DEFAULT_ENDPOINT = 'https://www.eigenflux.ai';
|
|
49
|
+
const DEFAULT_GATEWAY_URL = 'ws://127.0.0.1:18789';
|
|
50
|
+
const DEFAULT_SESSION_KEY = 'main';
|
|
51
|
+
const DEFAULT_AGENT_ID = 'main';
|
|
52
|
+
const DEFAULT_OPENCLAW_CLI_BIN = 'openclaw';
|
|
53
|
+
const DEFAULT_POLL_INTERVAL_SEC = 300;
|
|
54
|
+
const DEFAULT_PM_POLL_INTERVAL_SEC = 60;
|
|
55
|
+
function detectOpenClawVersion() {
|
|
56
|
+
try {
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
58
|
+
const pkg = require('openclaw/package.json');
|
|
59
|
+
return pkg.version;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function buildUserAgent() {
|
|
66
|
+
const parts = [];
|
|
67
|
+
parts.push(`node/${process.version.replace(/^v/, '')}`);
|
|
68
|
+
parts.push(`(${os.platform()}; ${os.arch()}; ${os.release()})`);
|
|
69
|
+
const openclawVersion = detectOpenClawVersion();
|
|
70
|
+
if (openclawVersion) {
|
|
71
|
+
parts.push(`openclaw/${openclawVersion}`);
|
|
72
|
+
}
|
|
73
|
+
parts.push(`eigenflux-plugin/${PLUGIN_VERSION}`);
|
|
74
|
+
return parts.join(' ');
|
|
75
|
+
}
|
|
76
|
+
function isRecord(value) {
|
|
77
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
78
|
+
}
|
|
79
|
+
function readNonEmptyString(value) {
|
|
80
|
+
if (typeof value !== 'string') {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const trimmed = value.trim();
|
|
84
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
85
|
+
}
|
|
86
|
+
function parsePositiveInteger(value, fallback) {
|
|
87
|
+
if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
|
|
88
|
+
return Math.floor(value);
|
|
89
|
+
}
|
|
90
|
+
if (typeof value === 'string') {
|
|
91
|
+
const parsed = parseInt(value, 10);
|
|
92
|
+
if (Number.isFinite(parsed) && parsed > 0) {
|
|
93
|
+
return parsed;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return fallback;
|
|
97
|
+
}
|
|
98
|
+
function isSessionPeerShape(value) {
|
|
99
|
+
const normalized = value?.trim().toLowerCase();
|
|
100
|
+
return (normalized === 'direct' ||
|
|
101
|
+
normalized === 'dm' ||
|
|
102
|
+
normalized === 'group' ||
|
|
103
|
+
normalized === 'channel');
|
|
104
|
+
}
|
|
105
|
+
function deriveNotificationRoute(sessionKey) {
|
|
106
|
+
const trimmed = readNonEmptyString(sessionKey);
|
|
107
|
+
if (!trimmed) {
|
|
108
|
+
return {};
|
|
109
|
+
}
|
|
110
|
+
const parts = trimmed.split(':').filter((part) => part.length > 0);
|
|
111
|
+
if (parts.length < 3 || parts[0]?.toLowerCase() !== 'agent') {
|
|
112
|
+
return {};
|
|
113
|
+
}
|
|
114
|
+
const agentId = readNonEmptyString(parts[1]);
|
|
115
|
+
if (parts.length >= 6 && isSessionPeerShape(parts[4])) {
|
|
116
|
+
return {
|
|
117
|
+
agentId,
|
|
118
|
+
replyChannel: readNonEmptyString(parts[2]),
|
|
119
|
+
replyAccountId: readNonEmptyString(parts[3]),
|
|
120
|
+
replyTo: readNonEmptyString(parts.slice(5).join(':')),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (parts.length >= 5 && isSessionPeerShape(parts[3])) {
|
|
124
|
+
return {
|
|
125
|
+
agentId,
|
|
126
|
+
replyChannel: readNonEmptyString(parts[2]),
|
|
127
|
+
replyTo: readNonEmptyString(parts.slice(4).join(':')),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
return { agentId };
|
|
131
|
+
}
|
|
132
|
+
function createRouteOverrides(normalized) {
|
|
133
|
+
return {
|
|
134
|
+
sessionKey: readNonEmptyString(normalized.sessionKey) !== undefined,
|
|
135
|
+
agentId: readNonEmptyString(normalized.agentId) !== undefined,
|
|
136
|
+
replyChannel: readNonEmptyString(normalized.replyChannel) !== undefined,
|
|
137
|
+
replyTo: readNonEmptyString(normalized.replyTo) !== undefined,
|
|
138
|
+
replyAccountId: readNonEmptyString(normalized.replyAccountId) !== undefined,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function hasExplicitDefaultServer(servers) {
|
|
142
|
+
return servers.some((server) => readNonEmptyString(server.name)?.toLowerCase() === DEFAULT_SERVER_NAME);
|
|
143
|
+
}
|
|
144
|
+
function normalizeServersInput(config) {
|
|
145
|
+
const explicitServers = Array.isArray(config.servers)
|
|
146
|
+
? config.servers.filter(isRecord)
|
|
147
|
+
: [];
|
|
148
|
+
if (!hasExplicitDefaultServer(explicitServers)) {
|
|
149
|
+
return [{}, ...explicitServers];
|
|
150
|
+
}
|
|
151
|
+
return explicitServers;
|
|
152
|
+
}
|
|
153
|
+
function createServerName(baseName, usedNames) {
|
|
154
|
+
if (!usedNames.has(baseName)) {
|
|
155
|
+
usedNames.add(baseName);
|
|
156
|
+
return baseName;
|
|
157
|
+
}
|
|
158
|
+
let suffix = 2;
|
|
159
|
+
while (usedNames.has(`${baseName}-${suffix}`)) {
|
|
160
|
+
suffix += 1;
|
|
161
|
+
}
|
|
162
|
+
const uniqueName = `${baseName}-${suffix}`;
|
|
163
|
+
usedNames.add(uniqueName);
|
|
164
|
+
return uniqueName;
|
|
165
|
+
}
|
|
166
|
+
function resolveServerConfig(serverConfig, index, usedNames) {
|
|
167
|
+
const normalized = isRecord(serverConfig) ? serverConfig : {};
|
|
168
|
+
const rawName = readNonEmptyString(normalized.name) ??
|
|
169
|
+
(index === 0 ? DEFAULT_SERVER_NAME : `server-${index + 1}`);
|
|
170
|
+
const name = createServerName(rawName, usedNames);
|
|
171
|
+
const sessionKey = readNonEmptyString(normalized.sessionKey) ?? DEFAULT_SESSION_KEY;
|
|
172
|
+
const derivedRoute = deriveNotificationRoute(sessionKey);
|
|
173
|
+
const workdir = expandHomeDir(readNonEmptyString(normalized.workdir) ?? `~/.openclaw/${name}`);
|
|
174
|
+
const sessionStorePath = readNonEmptyString(normalized.sessionStorePath);
|
|
175
|
+
return {
|
|
176
|
+
enabled: normalized.enabled !== false,
|
|
177
|
+
name,
|
|
178
|
+
endpoint: readNonEmptyString(normalized.endpoint) ?? DEFAULT_ENDPOINT,
|
|
179
|
+
workdir,
|
|
180
|
+
pollIntervalSec: parsePositiveInteger(normalized.pollInterval, DEFAULT_POLL_INTERVAL_SEC),
|
|
181
|
+
pmPollIntervalSec: parsePositiveInteger(normalized.pmPollInterval, DEFAULT_PM_POLL_INTERVAL_SEC),
|
|
182
|
+
sessionKey,
|
|
183
|
+
agentId: readNonEmptyString(normalized.agentId) ?? derivedRoute.agentId ?? DEFAULT_AGENT_ID,
|
|
184
|
+
replyChannel: readNonEmptyString(normalized.replyChannel) ?? derivedRoute.replyChannel,
|
|
185
|
+
replyTo: readNonEmptyString(normalized.replyTo) ?? derivedRoute.replyTo,
|
|
186
|
+
replyAccountId: readNonEmptyString(normalized.replyAccountId) ?? derivedRoute.replyAccountId,
|
|
187
|
+
routeOverrides: createRouteOverrides(normalized),
|
|
188
|
+
...(sessionStorePath ? { sessionStorePath: expandHomeDir(sessionStorePath) } : {}),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function expandHomeDir(input) {
|
|
192
|
+
if (input === '~') {
|
|
193
|
+
return os.homedir();
|
|
194
|
+
}
|
|
195
|
+
if (input.startsWith('~/')) {
|
|
196
|
+
return path.join(os.homedir(), input.slice(2));
|
|
197
|
+
}
|
|
198
|
+
return input;
|
|
199
|
+
}
|
|
200
|
+
function buildSkillUrl(endpoint) {
|
|
201
|
+
try {
|
|
202
|
+
return new URL('skill.md', endpoint.endsWith('/') ? endpoint : `${endpoint}/`).toString();
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return `${endpoint.replace(/\/+$/u, '')}/skill.md`;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function resolveServerSkillPath(server) {
|
|
209
|
+
const localSkillPath = path.join(server.workdir, 'skill.md');
|
|
210
|
+
if (fs.existsSync(localSkillPath)) {
|
|
211
|
+
return localSkillPath;
|
|
212
|
+
}
|
|
213
|
+
return buildSkillUrl(server.endpoint);
|
|
214
|
+
}
|
|
215
|
+
function resolvePluginConfig(pluginConfig, globalConfig) {
|
|
216
|
+
const normalized = isRecord(pluginConfig) ? pluginConfig : {};
|
|
217
|
+
const usedNames = new Set();
|
|
218
|
+
return {
|
|
219
|
+
gatewayUrl: readNonEmptyString(normalized.gatewayUrl) ?? DEFAULT_GATEWAY_URL,
|
|
220
|
+
gatewayToken: readNonEmptyString(normalized.gatewayToken) ??
|
|
221
|
+
readNonEmptyString(globalConfig?.gateway?.auth?.token),
|
|
222
|
+
openclawCliBin: readNonEmptyString(normalized.openclawCliBin) ?? DEFAULT_OPENCLAW_CLI_BIN,
|
|
223
|
+
servers: normalizeServersInput(normalized).map((server, index) => resolveServerConfig(server, index, usedNames)),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
const SERVER_CONFIG_SCHEMA = {
|
|
227
|
+
type: 'object',
|
|
228
|
+
additionalProperties: false,
|
|
229
|
+
properties: {
|
|
230
|
+
enabled: {
|
|
231
|
+
type: 'boolean',
|
|
232
|
+
description: 'Enable or disable background polling for this server',
|
|
233
|
+
default: true,
|
|
234
|
+
},
|
|
235
|
+
name: {
|
|
236
|
+
type: 'string',
|
|
237
|
+
description: 'Server name used for routing, workdir defaults, and diagnostics',
|
|
238
|
+
default: DEFAULT_SERVER_NAME,
|
|
239
|
+
},
|
|
240
|
+
endpoint: {
|
|
241
|
+
type: 'string',
|
|
242
|
+
description: 'EigenFlux API base URL for this server',
|
|
243
|
+
default: DEFAULT_ENDPOINT,
|
|
244
|
+
},
|
|
245
|
+
workdir: {
|
|
246
|
+
type: 'string',
|
|
247
|
+
description: 'Directory used to store server credentials and remembered session state',
|
|
248
|
+
},
|
|
249
|
+
pollInterval: {
|
|
250
|
+
type: 'integer',
|
|
251
|
+
minimum: 1,
|
|
252
|
+
description: 'Feed polling interval in seconds for this server',
|
|
253
|
+
default: DEFAULT_POLL_INTERVAL_SEC,
|
|
254
|
+
},
|
|
255
|
+
pmPollInterval: {
|
|
256
|
+
type: 'integer',
|
|
257
|
+
minimum: 1,
|
|
258
|
+
description: 'Private message polling interval in seconds for this server',
|
|
259
|
+
default: DEFAULT_PM_POLL_INTERVAL_SEC,
|
|
260
|
+
},
|
|
261
|
+
sessionKey: {
|
|
262
|
+
type: 'string',
|
|
263
|
+
description: 'Target session key used by runtime.subagent and heartbeat fallback',
|
|
264
|
+
default: DEFAULT_SESSION_KEY,
|
|
265
|
+
},
|
|
266
|
+
agentId: {
|
|
267
|
+
type: 'string',
|
|
268
|
+
description: 'Agent id used by Gateway agent and CLI fallbacks',
|
|
269
|
+
default: DEFAULT_AGENT_ID,
|
|
270
|
+
},
|
|
271
|
+
replyChannel: {
|
|
272
|
+
type: 'string',
|
|
273
|
+
description: 'Explicit reply channel used by Gateway agent and CLI fallbacks',
|
|
274
|
+
},
|
|
275
|
+
replyTo: {
|
|
276
|
+
type: 'string',
|
|
277
|
+
description: 'Explicit reply target used by Gateway agent and CLI fallbacks',
|
|
278
|
+
},
|
|
279
|
+
replyAccountId: {
|
|
280
|
+
type: 'string',
|
|
281
|
+
description: 'Optional reply account id for multi-account channel delivery',
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
exports.PLUGIN_CONFIG = {
|
|
286
|
+
DEFAULT_SERVER_NAME,
|
|
287
|
+
DEFAULT_ENDPOINT,
|
|
288
|
+
DEFAULT_GATEWAY_URL,
|
|
289
|
+
DEFAULT_SESSION_KEY,
|
|
290
|
+
DEFAULT_AGENT_ID,
|
|
291
|
+
DEFAULT_OPENCLAW_CLI_BIN,
|
|
292
|
+
DEFAULT_POLL_INTERVAL_SEC,
|
|
293
|
+
DEFAULT_PM_POLL_INTERVAL_SEC,
|
|
294
|
+
CREDENTIALS_FILE: 'credentials.json',
|
|
295
|
+
PLUGIN_VERSION,
|
|
296
|
+
USER_AGENT: buildUserAgent(),
|
|
297
|
+
};
|
|
298
|
+
exports.PLUGIN_CONFIG_SCHEMA = {
|
|
299
|
+
type: 'object',
|
|
300
|
+
additionalProperties: false,
|
|
301
|
+
properties: {
|
|
302
|
+
gatewayUrl: {
|
|
303
|
+
type: 'string',
|
|
304
|
+
description: 'OpenClaw Gateway WebSocket URL used for Gateway RPC fallback',
|
|
305
|
+
default: DEFAULT_GATEWAY_URL,
|
|
306
|
+
},
|
|
307
|
+
gatewayToken: {
|
|
308
|
+
type: 'string',
|
|
309
|
+
description: 'Optional gateway token override used for Gateway RPC fallback',
|
|
310
|
+
},
|
|
311
|
+
openclawCliBin: {
|
|
312
|
+
type: 'string',
|
|
313
|
+
description: 'OpenClaw CLI binary used by runtime command and spawn fallbacks',
|
|
314
|
+
default: DEFAULT_OPENCLAW_CLI_BIN,
|
|
315
|
+
},
|
|
316
|
+
servers: {
|
|
317
|
+
type: 'array',
|
|
318
|
+
description: 'Server list. When empty or when no server named eigenflux is provided, the plugin prepends a default eigenflux server.',
|
|
319
|
+
default: [],
|
|
320
|
+
items: SERVER_CONFIG_SCHEMA,
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credentials loader for the EigenFlux auth token.
|
|
3
|
+
*/
|
|
4
|
+
import { Logger } from './logger';
|
|
5
|
+
export type AuthState = {
|
|
6
|
+
status: 'available';
|
|
7
|
+
accessToken: string;
|
|
8
|
+
source: 'file';
|
|
9
|
+
credentialsPath: string;
|
|
10
|
+
expiresAt?: number;
|
|
11
|
+
email?: string;
|
|
12
|
+
} | {
|
|
13
|
+
status: 'missing' | 'expired';
|
|
14
|
+
source?: 'file';
|
|
15
|
+
credentialsPath: string;
|
|
16
|
+
expiresAt?: number;
|
|
17
|
+
email?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare class CredentialsLoader {
|
|
20
|
+
private readonly logger;
|
|
21
|
+
private readonly workdir;
|
|
22
|
+
constructor(logger: Logger, workdir: string);
|
|
23
|
+
loadAccessToken(): string | null;
|
|
24
|
+
loadAuthState(): AuthState;
|
|
25
|
+
saveAccessToken(token: string, email?: string, expiresAt?: number): void;
|
|
26
|
+
private resolveCredentialsPath;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=credentials-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials-loader.d.ts","sourceRoot":"","sources":["../src/credentials-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AASlC,MAAM,MAAM,SAAS,GACjB;IACE,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK3C,eAAe,IAAI,MAAM,GAAG,IAAI;IAWhC,aAAa,IAAI,SAAS;IA4C1B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBxE,OAAO,CAAC,sBAAsB;CAG/B"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Credentials loader for the EigenFlux auth token.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.CredentialsLoader = void 0;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const config_1 = require("./config");
|
|
43
|
+
class CredentialsLoader {
|
|
44
|
+
constructor(logger, workdir) {
|
|
45
|
+
this.logger = logger;
|
|
46
|
+
this.workdir = workdir;
|
|
47
|
+
}
|
|
48
|
+
loadAccessToken() {
|
|
49
|
+
const authState = this.loadAuthState();
|
|
50
|
+
if (authState.status !== 'available') {
|
|
51
|
+
if (authState.status === 'missing') {
|
|
52
|
+
this.logger.error(`No access token found in ${authState.credentialsPath}`);
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return authState.accessToken;
|
|
57
|
+
}
|
|
58
|
+
loadAuthState() {
|
|
59
|
+
const credentialsPath = this.resolveCredentialsPath();
|
|
60
|
+
if (fs.existsSync(credentialsPath)) {
|
|
61
|
+
try {
|
|
62
|
+
const content = fs.readFileSync(credentialsPath, 'utf-8');
|
|
63
|
+
const credentials = JSON.parse(content);
|
|
64
|
+
if (credentials.access_token) {
|
|
65
|
+
if (credentials.expires_at) {
|
|
66
|
+
const now = Date.now();
|
|
67
|
+
if (now >= credentials.expires_at) {
|
|
68
|
+
this.logger.warn('Access token has expired');
|
|
69
|
+
return {
|
|
70
|
+
status: 'expired',
|
|
71
|
+
source: 'file',
|
|
72
|
+
credentialsPath,
|
|
73
|
+
expiresAt: credentials.expires_at,
|
|
74
|
+
email: credentials.email,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
this.logger.info(`Loaded access token from ${credentialsPath}`);
|
|
79
|
+
return {
|
|
80
|
+
status: 'available',
|
|
81
|
+
accessToken: credentials.access_token,
|
|
82
|
+
source: 'file',
|
|
83
|
+
credentialsPath,
|
|
84
|
+
expiresAt: credentials.expires_at,
|
|
85
|
+
email: credentials.email,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.logger.error(`Failed to read credentials file: ${credentialsPath}`, error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
status: 'missing',
|
|
95
|
+
credentialsPath,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
saveAccessToken(token, email, expiresAt) {
|
|
99
|
+
const credentialsPath = this.resolveCredentialsPath();
|
|
100
|
+
if (!fs.existsSync(this.workdir)) {
|
|
101
|
+
fs.mkdirSync(this.workdir, { recursive: true });
|
|
102
|
+
}
|
|
103
|
+
const credentials = {
|
|
104
|
+
access_token: token,
|
|
105
|
+
email,
|
|
106
|
+
expires_at: expiresAt,
|
|
107
|
+
};
|
|
108
|
+
try {
|
|
109
|
+
fs.writeFileSync(credentialsPath, JSON.stringify(credentials, null, 2), 'utf-8');
|
|
110
|
+
this.logger.info(`Saved access token to ${credentialsPath}`);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
this.logger.error('Failed to save credentials file', error);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
resolveCredentialsPath() {
|
|
117
|
+
return path.join(this.workdir, config_1.PLUGIN_CONFIG.CREDENTIALS_FILE);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.CredentialsLoader = CredentialsLoader;
|
|
121
|
+
//# sourceMappingURL=credentials-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials-loader.js","sourceRoot":"","sources":["../src/credentials-loader.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAE7B,qCAAyC;AAyBzC,MAAa,iBAAiB;IAI5B,YAAY,MAAc,EAAE,OAAe;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,eAAe;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACrC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,SAAS,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,aAAa;QACX,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEtD,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBAC1D,MAAM,WAAW,GAAyB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE9D,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC7B,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;wBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACvB,IAAI,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;4BAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;4BAC7C,OAAO;gCACL,MAAM,EAAE,SAAS;gCACjB,MAAM,EAAE,MAAM;gCACd,eAAe;gCACf,SAAS,EAAE,WAAW,CAAC,UAAU;gCACjC,KAAK,EAAE,WAAW,CAAC,KAAK;6BACzB,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,eAAe,EAAE,CAAC,CAAC;oBAChE,OAAO;wBACL,MAAM,EAAE,WAAW;wBACnB,WAAW,EAAE,WAAW,CAAC,YAAY;wBACrC,MAAM,EAAE,MAAM;wBACd,eAAe;wBACf,SAAS,EAAE,WAAW,CAAC,UAAU;wBACjC,KAAK,EAAE,WAAW,CAAC,KAAK;qBACzB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,eAAe,EAAE,EAAE,KAAK,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,eAAe;SAChB,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,KAAc,EAAE,SAAkB;QAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,WAAW,GAAyB;YACxC,YAAY,EAAE,KAAK;YACnB,KAAK;YACL,UAAU,EAAE,SAAS;SACtB,CAAC;QAEF,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAa,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;CACF;AAxFD,8CAwFC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Logger } from './logger';
|
|
2
|
+
export type OpenClawGatewayRpcClientOptions = {
|
|
3
|
+
gatewayUrl: string;
|
|
4
|
+
gatewayToken?: string;
|
|
5
|
+
sessionKey?: string;
|
|
6
|
+
agentId?: string;
|
|
7
|
+
replyChannel?: string;
|
|
8
|
+
replyTo?: string;
|
|
9
|
+
replyAccountId?: string;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
connectTimeoutMs?: number;
|
|
12
|
+
requestTimeoutMs?: number;
|
|
13
|
+
};
|
|
14
|
+
export declare class OpenClawGatewayRpcClient {
|
|
15
|
+
private readonly options;
|
|
16
|
+
constructor(options: OpenClawGatewayRpcClientOptions);
|
|
17
|
+
sendAgentMessage(message: string): Promise<{
|
|
18
|
+
sessionKey: string;
|
|
19
|
+
runId: string;
|
|
20
|
+
}>;
|
|
21
|
+
private resolveAgentIdFromSessionKey;
|
|
22
|
+
private resolveSessionKey;
|
|
23
|
+
private withConnection;
|
|
24
|
+
private formatError;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=gateway-rpc-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-rpc-client.d.ts","sourceRoot":"","sources":["../src/gateway-rpc-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsClC,MAAM,MAAM,+BAA+B,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE9C,OAAO,EAAE,+BAA+B;IAI9C,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBvF,OAAO,CAAC,4BAA4B;YAStB,iBAAiB;YA0CjB,cAAc;IAiB5B,OAAO,CAAC,WAAW;CAMpB"}
|