@openclaw-cloud/agent-controller 0.7.1 → 0.7.2
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/connection.d.ts +2 -0
- package/dist/connection.js +88 -58
- package/dist/connection.js.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/connection.d.ts
CHANGED
|
@@ -8,7 +8,9 @@ export interface ConnectionOptions {
|
|
|
8
8
|
api: AgentApi;
|
|
9
9
|
version: string;
|
|
10
10
|
}
|
|
11
|
+
declare function subscribeToChannel(client: Centrifuge, channel: string, opts: ConnectionOptions): Subscription;
|
|
11
12
|
export declare function createConnection(opts: ConnectionOptions): {
|
|
12
13
|
client: Centrifuge;
|
|
13
14
|
commandSub: Subscription;
|
|
14
15
|
};
|
|
16
|
+
export { subscribeToChannel };
|
package/dist/connection.js
CHANGED
|
@@ -15,6 +15,9 @@ import { handleFileDelete } from './handlers/file-delete.js';
|
|
|
15
15
|
import { handleOnboardingComplete } from './handlers/onboarding.js';
|
|
16
16
|
import { handleKnowledgeSync } from './handlers/knowledge-sync.js';
|
|
17
17
|
import { selfUpdate } from './commands/self-update.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Handlers
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
18
21
|
function buildHandlers(version) {
|
|
19
22
|
return {
|
|
20
23
|
exec: handleExec,
|
|
@@ -39,7 +42,11 @@ function buildHandlers(version) {
|
|
|
39
42
|
})),
|
|
40
43
|
};
|
|
41
44
|
}
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// Token helpers
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
42
48
|
async function fetchConnectionToken(backendUrl, agentToken, agentId) {
|
|
49
|
+
debugLog('api', '→ POST /api/internal/centrifugo-token', JSON.stringify({ agentId }));
|
|
43
50
|
const controller = new AbortController();
|
|
44
51
|
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
45
52
|
try {
|
|
@@ -52,10 +59,12 @@ async function fetchConnectionToken(backendUrl, agentToken, agentId) {
|
|
|
52
59
|
body: JSON.stringify({ agentId }),
|
|
53
60
|
signal: controller.signal,
|
|
54
61
|
});
|
|
62
|
+
const body = await res.text();
|
|
63
|
+
debugLog('api', `← POST /api/internal/centrifugo-token ${res.status}`, body.slice(0, 200));
|
|
55
64
|
if (!res.ok) {
|
|
56
|
-
throw new Error(`HTTP ${res.status}: ${
|
|
65
|
+
throw new Error(`HTTP ${res.status}: ${body}`);
|
|
57
66
|
}
|
|
58
|
-
const data =
|
|
67
|
+
const data = JSON.parse(body);
|
|
59
68
|
return data.token;
|
|
60
69
|
}
|
|
61
70
|
finally {
|
|
@@ -63,7 +72,6 @@ async function fetchConnectionToken(backendUrl, agentToken, agentId) {
|
|
|
63
72
|
}
|
|
64
73
|
}
|
|
65
74
|
async function fetchSubscriptionToken(backendUrl, agentToken, agentId, channels) {
|
|
66
|
-
console.log('Fetching subscription token...', { channels });
|
|
67
75
|
debugLog('api', '→ POST /api/internal/centrifugo-subscribe-token', JSON.stringify({ agentId, channels }));
|
|
68
76
|
const controller = new AbortController();
|
|
69
77
|
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
@@ -83,7 +91,6 @@ async function fetchSubscriptionToken(backendUrl, agentToken, agentId, channels)
|
|
|
83
91
|
throw new Error(`HTTP ${res.status}: ${body}`);
|
|
84
92
|
}
|
|
85
93
|
const data = JSON.parse(body);
|
|
86
|
-
console.log('Got subscription token for', channels.join(', '));
|
|
87
94
|
return data.subscriptions;
|
|
88
95
|
}
|
|
89
96
|
catch (err) {
|
|
@@ -94,55 +101,90 @@ async function fetchSubscriptionToken(backendUrl, agentToken, agentId, channels)
|
|
|
94
101
|
clearTimeout(timeout);
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// Step 1: Create Centrifuge client (no subscriptions yet)
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
function createClient(opts) {
|
|
100
108
|
const getToken = async () => {
|
|
101
|
-
console.log('Fetching
|
|
109
|
+
console.log('Fetching connection token...');
|
|
102
110
|
try {
|
|
103
111
|
const token = await fetchConnectionToken(opts.backendUrl, opts.token, opts.agentId);
|
|
104
|
-
console.log('Got
|
|
112
|
+
console.log('Got connection token');
|
|
105
113
|
return token;
|
|
106
114
|
}
|
|
107
115
|
catch (err) {
|
|
108
|
-
console.error('
|
|
109
|
-
|
|
110
|
-
try {
|
|
111
|
-
const token = await fetchConnectionToken(opts.backendUrl, opts.token, opts.agentId);
|
|
112
|
-
console.log('Got Centrifugo JWT (retry)');
|
|
113
|
-
return token;
|
|
114
|
-
}
|
|
115
|
-
catch (retryErr) {
|
|
116
|
-
console.error('JWT fetch retry failed:', retryErr instanceof Error ? retryErr.message : retryErr);
|
|
117
|
-
throw retryErr;
|
|
118
|
-
}
|
|
116
|
+
console.error('Connection token failed:', err instanceof Error ? err.message : err);
|
|
117
|
+
throw err;
|
|
119
118
|
}
|
|
120
119
|
};
|
|
121
|
-
const
|
|
120
|
+
const client = new Centrifuge(opts.url, {
|
|
122
121
|
websocket: WebSocket,
|
|
123
122
|
name: 'agent-controller',
|
|
124
123
|
getToken,
|
|
125
124
|
minReconnectDelay: 1000,
|
|
126
125
|
maxReconnectDelay: 30000,
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
});
|
|
127
|
+
client.on('connected', (ctx) => {
|
|
128
|
+
console.log(`Connected to Centrifugo via ${ctx.transport}`);
|
|
129
|
+
debugLog('connection', 'connected', ctx);
|
|
130
|
+
});
|
|
131
|
+
client.on('disconnected', (ctx) => {
|
|
132
|
+
console.log(`Disconnected: ${ctx.reason} (code ${ctx.code})`);
|
|
133
|
+
debugLog('connection', 'disconnected', ctx);
|
|
134
|
+
});
|
|
135
|
+
client.on('connecting', (ctx) => {
|
|
136
|
+
console.log(`Connecting: ${ctx.reason} (code ${ctx.code})`);
|
|
137
|
+
debugLog('connection', 'connecting', ctx);
|
|
138
|
+
});
|
|
139
|
+
return client;
|
|
140
|
+
}
|
|
141
|
+
// ---------------------------------------------------------------------------
|
|
142
|
+
// Step 2: Subscribe to a channel with subscription token auth
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
function subscribeToChannel(client, channel, opts) {
|
|
145
|
+
const sub = client.newSubscription(channel, {
|
|
130
146
|
getToken: async () => {
|
|
131
|
-
console.log(
|
|
132
|
-
const subs = await fetchSubscriptionToken(opts.backendUrl, opts.token, opts.agentId, [
|
|
133
|
-
|
|
147
|
+
console.log(`Fetching subscription token for ${channel}...`);
|
|
148
|
+
const subs = await fetchSubscriptionToken(opts.backendUrl, opts.token, opts.agentId, [channel]);
|
|
149
|
+
const token = subs[channel];
|
|
150
|
+
if (!token) {
|
|
151
|
+
throw new Error(`No subscription token returned for ${channel}`);
|
|
152
|
+
}
|
|
153
|
+
console.log(`Got subscription token for ${channel}`);
|
|
154
|
+
return token;
|
|
134
155
|
},
|
|
135
156
|
});
|
|
157
|
+
sub.on('subscribed', (ctx) => {
|
|
158
|
+
console.log(`[WS] Subscribed to ${channel} (recovered=${ctx.wasRecovering})`);
|
|
159
|
+
debugLog('connection', 'subscribed', channel, ctx);
|
|
160
|
+
});
|
|
161
|
+
sub.on('subscribing', (ctx) => {
|
|
162
|
+
console.log(`[WS] Subscribing to ${channel}: ${ctx.reason} (code ${ctx.code})`);
|
|
163
|
+
debugLog('connection', 'subscribing', channel, ctx);
|
|
164
|
+
});
|
|
165
|
+
sub.on('error', (ctx) => {
|
|
166
|
+
console.error(`[WS] Subscription error on ${channel}:`, ctx.error);
|
|
167
|
+
});
|
|
168
|
+
sub.on('unsubscribed', (ctx) => {
|
|
169
|
+
console.log(`[WS] Unsubscribed from ${channel}: ${ctx.reason} (code ${ctx.code})`);
|
|
170
|
+
});
|
|
171
|
+
sub.subscribe();
|
|
172
|
+
return sub;
|
|
173
|
+
}
|
|
174
|
+
// ---------------------------------------------------------------------------
|
|
175
|
+
// Step 3: Wire up agent command channel
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
function attachCommandHandlers(sub, channel, opts) {
|
|
136
178
|
const handlers = buildHandlers(opts.version);
|
|
137
|
-
|
|
138
|
-
console.log(`[WS] Received message on ${
|
|
139
|
-
debugLog('connection', 'publication',
|
|
179
|
+
sub.on('publication', async (ctx) => {
|
|
180
|
+
console.log(`[WS] Received message on ${channel}:`, JSON.stringify(ctx.data));
|
|
181
|
+
debugLog('connection', 'publication', channel, JSON.stringify(ctx.data).slice(0, 500));
|
|
140
182
|
const command = ctx.data;
|
|
141
183
|
if (!command || !command.type) {
|
|
142
184
|
console.warn('[WS] Ignoring message without type:', JSON.stringify(ctx.data));
|
|
143
185
|
return;
|
|
144
186
|
}
|
|
145
|
-
// Chat commands
|
|
187
|
+
// Chat commands
|
|
146
188
|
if (command.type === 'chat_list_sessions' || command.type === 'chat_history' || command.type === 'chat_send') {
|
|
147
189
|
const publishFn = async (data) => { await opts.api.publishResponse(opts.agentId, data); };
|
|
148
190
|
console.log(`[WS] Handling chat command: type=${command.type} id=${command.id}`);
|
|
@@ -179,34 +221,22 @@ export function createConnection(opts) {
|
|
|
179
221
|
await opts.api.publishResponse(opts.agentId, errorResponse);
|
|
180
222
|
}
|
|
181
223
|
});
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
console.log(`[WS] Subscribed to ${commandChannel} (recovered=${ctx.wasRecovering})`);
|
|
196
|
-
debugLog('connection', 'subscribed', commandChannel, ctx);
|
|
197
|
-
});
|
|
198
|
-
commandSub.on('subscribing', (ctx) => {
|
|
199
|
-
console.log(`[WS] Subscribing to ${commandChannel}: ${ctx.reason} (code ${ctx.code})`);
|
|
200
|
-
debugLog('connection', 'subscribing', commandChannel, ctx);
|
|
201
|
-
});
|
|
202
|
-
commandSub.on('error', (ctx) => {
|
|
203
|
-
console.error(`[WS] Subscription error on ${commandChannel}:`, ctx.error);
|
|
204
|
-
});
|
|
205
|
-
commandSub.on('unsubscribed', (ctx) => {
|
|
206
|
-
console.log(`[WS] Unsubscribed from ${commandChannel}: ${ctx.reason} (code ${ctx.code})`);
|
|
207
|
-
});
|
|
208
|
-
commandSub.subscribe();
|
|
224
|
+
}
|
|
225
|
+
// ---------------------------------------------------------------------------
|
|
226
|
+
// Public API
|
|
227
|
+
// ---------------------------------------------------------------------------
|
|
228
|
+
export function createConnection(opts) {
|
|
229
|
+
const commandChannel = `agent:${opts.agentId}`;
|
|
230
|
+
// Step 1: Create client
|
|
231
|
+
const client = createClient(opts);
|
|
232
|
+
// Step 2: Subscribe to agent command channel
|
|
233
|
+
const commandSub = subscribeToChannel(client, commandChannel, opts);
|
|
234
|
+
// Step 3: Wire up command handlers
|
|
235
|
+
attachCommandHandlers(commandSub, commandChannel, opts);
|
|
236
|
+
// Step 4: Connect
|
|
209
237
|
client.connect();
|
|
210
238
|
return { client, commandSub };
|
|
211
239
|
}
|
|
240
|
+
// Re-export for use in index.ts (board subscription)
|
|
241
|
+
export { subscribeToChannel };
|
|
212
242
|
//# sourceMappingURL=connection.js.map
|
package/dist/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AACtD,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAWvD,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,eAAe,EAAE,oBAAoB;QACrC,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,gBAAgB;QAC7B,mBAAmB,EAAE,wBAAwB;QAC7C,cAAc,EAAE,mBAAmB;QACnC,WAAW,EAAE,CAAC,GAAiB,EAAE,EAAE,CACjC,UAAU,CAAC,OAAO,CAAC;aAChB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;aACrE,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,UAAkB,EAClB,UAAkB,EAClB,OAAe;IAEf,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,gCAAgC,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,UAAU,EAAE;aACxC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
|
-
import { createConnection } from './connection.js';
|
|
4
|
+
import { createConnection, subscribeToChannel } from './connection.js';
|
|
5
5
|
import { startHeartbeat } from './heartbeat.js';
|
|
6
6
|
import { createAgentApi } from './api.js';
|
|
7
7
|
import { BoardHandler } from './handlers/board-handler.js';
|
|
@@ -53,7 +53,7 @@ export function main() {
|
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
55
|
const boardChannel = `board:${workspaceId}`;
|
|
56
|
-
const boardSub = client
|
|
56
|
+
const boardSub = subscribeToChannel(client, boardChannel, { url, token, agentId, backendUrl, api, version: CONTROLLER_VERSION });
|
|
57
57
|
boardSub.on('publication', (ctx) => {
|
|
58
58
|
const event = ctx.data;
|
|
59
59
|
if (!event || !event.event)
|
|
@@ -62,7 +62,6 @@ export function main() {
|
|
|
62
62
|
console.error('Board event handler error:', err instanceof Error ? err.message : err);
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
|
-
boardSub.subscribe();
|
|
66
65
|
console.log(`Subscribed to board channel: ${boardChannel}`);
|
|
67
66
|
}).catch((err) => {
|
|
68
67
|
console.error('Board handler init error:', err instanceof Error ? err.message : err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|