@openclaw-cloud/agent-controller 3.0.0-beta.2 → 3.0.0-beta.20
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/bin/agent-controller.js +5 -9
- package/dist/api.d.ts +16 -0
- package/dist/api.js.map +1 -1
- package/dist/commands/agent-update-cli.js +23 -38
- package/dist/commands/agent-update-cli.js.map +1 -1
- package/dist/commands/backup-cli.js +6 -4
- package/dist/commands/backup-cli.js.map +1 -1
- package/dist/commands/bootstrap.d.ts +10 -1
- package/dist/commands/bootstrap.js +33 -73
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/channel-server.js +4 -3
- package/dist/commands/channel-server.js.map +1 -1
- package/dist/commands/heartbeat-cli.js +2 -6
- package/dist/commands/heartbeat-cli.js.map +1 -1
- package/dist/commands/install-deps.d.ts +10 -0
- package/dist/commands/install-deps.js +33 -43
- package/dist/commands/install-deps.js.map +1 -1
- package/dist/commands/knowledge-sync-cli.js +6 -4
- package/dist/commands/knowledge-sync-cli.js.map +1 -1
- package/dist/commands/plugin-update-cli.js +4 -8
- package/dist/commands/plugin-update-cli.js.map +1 -1
- package/dist/commands/self-update.d.ts +1 -0
- package/dist/commands/self-update.js +76 -37
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/update-skills.js +7 -6
- package/dist/commands/update-skills.js.map +1 -1
- package/dist/config-file.d.ts +24 -0
- package/dist/config-file.js +56 -20
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +4 -0
- package/dist/connection.js +50 -5
- package/dist/connection.js.map +1 -1
- package/dist/handlers/agent-update.d.ts +4 -0
- package/dist/handlers/agent-update.js +16 -44
- package/dist/handlers/agent-update.js.map +1 -1
- package/dist/handlers/deploy.d.ts +1 -2
- package/dist/handlers/deploy.js +4 -20
- package/dist/handlers/deploy.js.map +1 -1
- package/dist/handlers/diagnostics.js +0 -12
- package/dist/handlers/diagnostics.js.map +1 -1
- package/dist/handlers/file-delete.js +4 -5
- package/dist/handlers/file-delete.js.map +1 -1
- package/dist/handlers/file-write.js +4 -4
- package/dist/handlers/file-write.js.map +1 -1
- package/dist/handlers/knowledge-sync.js +2 -14
- package/dist/handlers/knowledge-sync.js.map +1 -1
- package/dist/handlers/memory.d.ts +11 -1
- package/dist/handlers/memory.js.map +1 -1
- package/dist/handlers/onboarding.d.ts +1 -2
- package/dist/handlers/onboarding.js +3 -20
- package/dist/handlers/onboarding.js.map +1 -1
- package/dist/handlers/package-install.js +1 -1
- package/dist/handlers/package-install.js.map +1 -1
- package/dist/handlers/pair.js +0 -12
- package/dist/handlers/pair.js.map +1 -1
- package/dist/handlers/restart.d.ts +1 -2
- package/dist/handlers/restart.js +3 -8
- package/dist/handlers/restart.js.map +1 -1
- package/dist/handlers/slack-event.d.ts +13 -0
- package/dist/handlers/slack-event.js +40 -0
- package/dist/handlers/slack-event.js.map +1 -0
- package/dist/handlers/stop.js +0 -7
- package/dist/handlers/stop.js.map +1 -1
- package/dist/handlers/telegram-webhook.js +3 -22
- package/dist/handlers/telegram-webhook.js.map +1 -1
- package/dist/handlers/update-config.js +4 -13
- package/dist/handlers/update-config.js.map +1 -1
- package/dist/heartbeat.d.ts +7 -1
- package/dist/heartbeat.js +35 -6
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.js +87 -119
- package/dist/index.js.map +1 -1
- package/dist/lockfile.js +2 -1
- package/dist/lockfile.js.map +1 -1
- package/dist/platform/linux.js +6 -5
- package/dist/platform/linux.js.map +1 -1
- package/dist/platform/macos.js +3 -2
- package/dist/platform/macos.js.map +1 -1
- package/dist/platform/windows.js +3 -2
- package/dist/platform/windows.js.map +1 -1
- package/dist/providers/claude-code/channel-server.js +2 -1
- package/dist/providers/claude-code/channel-server.js.map +1 -1
- package/dist/providers/claude-code/settings-writer.d.ts +3 -2
- package/dist/providers/claude-code/settings-writer.js +6 -15
- package/dist/providers/claude-code/settings-writer.js.map +1 -1
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.js +25 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openclaw/gateway-adapter.js +2 -0
- package/dist/providers/openclaw/gateway-adapter.js.map +1 -1
- package/dist/providers/openclaw/gateway-client.js +6 -1
- package/dist/providers/openclaw/gateway-client.js.map +1 -1
- package/dist/providers/openclaw/index.js +11 -13
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/slack-relay-server.d.ts +48 -0
- package/dist/slack-relay-server.js +197 -0
- package/dist/slack-relay-server.js.map +1 -0
- package/dist/types.d.ts +16 -1
- package/dist/utils/anthropic-auth.d.ts +14 -0
- package/dist/utils/anthropic-auth.js +24 -0
- package/dist/utils/anthropic-auth.js.map +1 -1
- package/dist/utils/apply-config.d.ts +65 -12
- package/dist/utils/apply-config.js +295 -100
- package/dist/utils/apply-config.js.map +1 -1
- package/dist/utils/claude-env.d.ts +6 -0
- package/dist/utils/claude-env.js +29 -28
- package/dist/utils/claude-env.js.map +1 -1
- package/dist/utils/config-merge-paths.d.ts +15 -1
- package/dist/utils/config-merge-paths.js +17 -3
- package/dist/utils/config-merge-paths.js.map +1 -1
- package/dist/utils/deploy-type.d.ts +16 -0
- package/dist/utils/deploy-type.js +34 -0
- package/dist/utils/deploy-type.js.map +1 -0
- package/dist/utils/env.d.ts +0 -1
- package/dist/utils/env.js +0 -8
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/exec.d.ts +11 -0
- package/dist/utils/exec.js +47 -1
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gateway-restart-handler.d.ts +6 -2
- package/dist/utils/gateway-restart-handler.js +11 -2
- package/dist/utils/gateway-restart-handler.js.map +1 -1
- package/dist/utils/gateway-restart.d.ts +7 -0
- package/dist/utils/gateway-restart.js +12 -4
- package/dist/utils/gateway-restart.js.map +1 -1
- package/dist/utils/knowledge-graph.d.ts +13 -1
- package/dist/utils/knowledge-graph.js +75 -29
- package/dist/utils/knowledge-graph.js.map +1 -1
- package/dist/utils/legacy-mcp-servers.d.ts +12 -0
- package/dist/utils/legacy-mcp-servers.js +37 -0
- package/dist/utils/legacy-mcp-servers.js.map +1 -0
- package/dist/utils/log-collector.js +2 -1
- package/dist/utils/log-collector.js.map +1 -1
- package/dist/utils/openclaw-ops.d.ts +45 -3
- package/dist/utils/openclaw-ops.js +94 -15
- package/dist/utils/openclaw-ops.js.map +1 -1
- package/dist/utils/openclaw-stack-update.d.ts +31 -0
- package/dist/utils/openclaw-stack-update.js +50 -0
- package/dist/utils/openclaw-stack-update.js.map +1 -0
- package/dist/utils/package-install.js +4 -12
- package/dist/utils/package-install.js.map +1 -1
- package/dist/utils/package-version.d.ts +10 -0
- package/dist/utils/package-version.js +18 -0
- package/dist/utils/package-version.js.map +1 -0
- package/dist/utils/parse-id-at-version.d.ts +15 -0
- package/dist/utils/parse-id-at-version.js +22 -0
- package/dist/utils/parse-id-at-version.js.map +1 -0
- package/dist/utils/plugin-reconcile.d.ts +46 -0
- package/dist/utils/plugin-reconcile.js +201 -0
- package/dist/utils/plugin-reconcile.js.map +1 -0
- package/dist/utils/response.js +1 -0
- package/dist/utils/response.js.map +1 -1
- package/dist/utils/write-home-files.d.ts +27 -0
- package/dist/utils/write-home-files.js +72 -0
- package/dist/utils/write-home-files.js.map +1 -0
- package/dist/utils/write-workspace-files.d.ts +1 -1
- package/dist/utils/write-workspace-files.js +19 -7
- package/dist/utils/write-workspace-files.js.map +1 -1
- package/dist/workspace.d.ts +11 -0
- package/dist/workspace.js +20 -0
- package/dist/workspace.js.map +1 -1
- package/package.json +9 -4
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { createAgentApi } from '../api.js';
|
|
2
|
-
import { getBackendUrl
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
|
+
import { requireConfig } from '../config.js';
|
|
3
4
|
import { pushKnowledgeToBackend } from '../utils/knowledge-push.js';
|
|
5
|
+
import { toErrorMessage } from '../utils/response.js';
|
|
4
6
|
export async function runKnowledgeSync() {
|
|
5
7
|
console.log('Starting knowledge sync...');
|
|
6
|
-
const api = createAgentApi(getBackendUrl(),
|
|
7
|
-
const agentId =
|
|
8
|
+
const api = createAgentApi(getBackendUrl(), requireConfig('agentToken'));
|
|
9
|
+
const agentId = requireConfig('agentId');
|
|
8
10
|
try {
|
|
9
11
|
const { filesRead, filesUpdated } = await pushKnowledgeToBackend(api, agentId);
|
|
10
12
|
console.log(`Knowledge sync complete — ${filesUpdated}/${filesRead} files updated.`);
|
|
11
13
|
}
|
|
12
14
|
catch (e) {
|
|
13
|
-
console.error(
|
|
15
|
+
console.error(toErrorMessage(e));
|
|
14
16
|
process.exit(1);
|
|
15
17
|
}
|
|
16
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-sync-cli.js","sourceRoot":"","sources":["../../src/commands/knowledge-sync-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"knowledge-sync-cli.js","sourceRoot":"","sources":["../../src/commands/knowledge-sync-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,cAAc,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,IAAI,SAAS,iBAAiB,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { installPlugin } from '../utils/openclaw-ops.js';
|
|
2
|
+
import { parseIdAtVersion } from '../utils/parse-id-at-version.js';
|
|
2
3
|
import { logCollector } from '../connection.js';
|
|
3
4
|
import { toErrorMessage } from '../utils/response.js';
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
@@ -12,15 +13,10 @@ const USAGE = 'Usage: agent-controller plugin-update <id> <version>\n' +
|
|
|
12
13
|
' agent-controller plugin-update <id>@<version>';
|
|
13
14
|
function parseArgs(args) {
|
|
14
15
|
if (args.length === 1) {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
if (at <= 0)
|
|
16
|
+
const combined = args[0];
|
|
17
|
+
if (!combined)
|
|
18
18
|
return null;
|
|
19
|
-
|
|
20
|
-
const version = args[0].slice(at + 1).trim();
|
|
21
|
-
if (!id || !version)
|
|
22
|
-
return null;
|
|
23
|
-
return { id, version };
|
|
19
|
+
return parseIdAtVersion(combined);
|
|
24
20
|
}
|
|
25
21
|
if (args.length === 2) {
|
|
26
22
|
const id = args[0]?.trim() ?? '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-update-cli.js","sourceRoot":"","sources":["../../src/commands/plugin-update-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8EAA8E;AAC9E,qEAAqE;AACrE,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,8EAA8E;AAE9E,MAAM,KAAK,GACT,wDAAwD;IACxD,sDAAsD,CAAC;AAOzD,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin-update-cli.js","sourceRoot":"","sources":["../../src/commands/plugin-update-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8EAA8E;AAC9E,qEAAqE;AACrE,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,8EAA8E;AAE9E,MAAM,KAAK,GACT,wDAAwD;IACxD,sDAAsD,CAAC;AAOzD,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAc;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE/B,YAAY,EAAE,IAAI,CAAC,yBAAyB,EAAE,MAAM,EAAE,2BAA2B,EAAE;QACjF,EAAE;QACF,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,OAAO,KAAK,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,OAAO,mCAAmC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QAChD,YAAY,EAAE,IAAI,CAAC,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE;YAClF,EAAE;YACF,OAAO;YACP,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -33,6 +33,7 @@ export interface RunExplicitSelfUpdateResult {
|
|
|
33
33
|
*/
|
|
34
34
|
export declare function runExplicitSelfUpdate(currentVersion: string, payload: SelfUpdatePayload): Promise<RunExplicitSelfUpdateResult>;
|
|
35
35
|
export declare function selfUpdate(currentVersion: string): Promise<void>;
|
|
36
|
+
export declare function fetchRuntimeTargets(): Promise<SelfUpdatePayload | null>;
|
|
36
37
|
/**
|
|
37
38
|
* Top-level CLI entrypoint invoked by `agent-controller self-update`.
|
|
38
39
|
* Tries the new explicit-payload flow first; falls back to legacy when
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { execAsync } from '../utils/exec.js';
|
|
2
2
|
import { removeLockFile } from '../lockfile.js';
|
|
3
3
|
import { getReleaseChannel } from '../utils/release-channel.js';
|
|
4
|
+
import { createAgentApi } from '../api.js';
|
|
4
5
|
import { config } from '../config.js';
|
|
5
|
-
import { withEaccesRetry,
|
|
6
|
-
import {
|
|
6
|
+
import { withEaccesRetry, installAcSelf, AC_PACKAGE, } from '../utils/openclaw-ops.js';
|
|
7
|
+
import { runOpenclawStackUpdate } from '../utils/openclaw-stack-update.js';
|
|
7
8
|
import { logCollector } from '../connection.js';
|
|
8
|
-
import { toErrorMessage } from '../utils/response.js';
|
|
9
9
|
/**
|
|
10
10
|
* Run the explicit-version self-update flow. Throws when `installOpenclaw`
|
|
11
11
|
* or `installAcSelf` fail outright — per-plugin failures are recorded in
|
|
@@ -33,30 +33,14 @@ export async function runExplicitSelfUpdate(currentVersion, payload) {
|
|
|
33
33
|
});
|
|
34
34
|
// 1) openclaw runtime + plugins (one gateway restart at the end)
|
|
35
35
|
if (payload.openclaw) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
installed: pluginSummary.installed,
|
|
45
|
-
skipped: pluginSummary.skipped,
|
|
46
|
-
failed: pluginSummary.failed,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const anyChanged = runtimeChanged || (pluginSummary?.installed.length ?? 0) > 0;
|
|
50
|
-
if (anyChanged) {
|
|
51
|
-
try {
|
|
52
|
-
await restartGateway();
|
|
53
|
-
gatewayRestarted = true;
|
|
54
|
-
logCollector?.push('self_update_gateway_restarted', 'info', 'Gateway restarted after openclaw stack update', {});
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
logCollector?.push('self_update_gateway_restart_failed', 'warn', `Gateway restart after openclaw stack update failed: ${toErrorMessage(err)}`, { error: toErrorMessage(err) });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
36
|
+
const stack = await runOpenclawStackUpdate({
|
|
37
|
+
version: payload.openclaw.version,
|
|
38
|
+
plugins: payload.openclaw.plugins,
|
|
39
|
+
eventPrefix: 'self_update',
|
|
40
|
+
});
|
|
41
|
+
runtimeChanged = stack.runtimeChanged;
|
|
42
|
+
pluginSummary = stack.pluginSummary;
|
|
43
|
+
gatewayRestarted = stack.gatewayRestarted;
|
|
60
44
|
}
|
|
61
45
|
// 2) agent-controller swap LAST. Note: we run `npm install -g` here but
|
|
62
46
|
// do NOT remove the lockfile or sleep — the WS handler defers that
|
|
@@ -95,20 +79,24 @@ export async function selfUpdate(currentVersion) {
|
|
|
95
79
|
// CLI entrypoint — try the new on-demand /api/agent/runtime-targets path
|
|
96
80
|
// first; fall back to the legacy channel-based path if the backend is
|
|
97
81
|
// unreachable, returns an empty payload, or returns a non-2xx response.
|
|
82
|
+
//
|
|
83
|
+
// `fetchRuntimeTargets` is exported because it is the ONE implementation of
|
|
84
|
+
// "ask the backend what this agent should be running"; utils/plugin-reconcile.ts
|
|
85
|
+
// reuses it so a reconcile install picks the same plugin version a self-update
|
|
86
|
+
// would.
|
|
98
87
|
// ---------------------------------------------------------------------------
|
|
99
|
-
async function fetchRuntimeTargets() {
|
|
88
|
+
export async function fetchRuntimeTargets() {
|
|
100
89
|
const backendUrl = config.backendUrl;
|
|
101
90
|
const token = config.agentToken;
|
|
102
91
|
if (!backendUrl || !token)
|
|
103
92
|
return null;
|
|
104
93
|
try {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const data = (await res.json());
|
|
94
|
+
// Through AgentApi rather than a hand-rolled fetch, so this request shows
|
|
95
|
+
// up in debugLog tracing like every other backend call. The swallow is
|
|
96
|
+
// deliberate: any failure (401, 500, network, empty body) means "no
|
|
97
|
+
// explicit targets", and the caller falls back to the channel-based path.
|
|
98
|
+
const api = createAgentApi(backendUrl, token);
|
|
99
|
+
const data = (await api.get('/api/agent/runtime-targets'));
|
|
112
100
|
if (!data || (!data.openclaw && !data.agentController))
|
|
113
101
|
return null;
|
|
114
102
|
return data;
|
|
@@ -130,10 +118,61 @@ async function fetchRuntimeTargets() {
|
|
|
130
118
|
export async function runSelfUpdateCli(currentVersion) {
|
|
131
119
|
const targets = await fetchRuntimeTargets();
|
|
132
120
|
if (targets) {
|
|
133
|
-
|
|
121
|
+
const channel = getReleaseChannel();
|
|
122
|
+
console.log(`Current version: ${currentVersion} (channel: ${channel})`);
|
|
123
|
+
// Summary line — describe what the backend wants us to install, skipping
|
|
124
|
+
// subparts the payload didn't include.
|
|
125
|
+
const pluginCount = targets.openclaw?.plugins?.length ?? 0;
|
|
126
|
+
const summaryParts = [];
|
|
127
|
+
if (targets.openclaw) {
|
|
128
|
+
summaryParts.push(pluginCount > 0
|
|
129
|
+
? `openclaw=${targets.openclaw.version} (${pluginCount} plugin(s))`
|
|
130
|
+
: `openclaw=${targets.openclaw.version}`);
|
|
131
|
+
}
|
|
132
|
+
if (targets.agentController) {
|
|
133
|
+
summaryParts.push(`agent-controller=${targets.agentController.version}`);
|
|
134
|
+
}
|
|
135
|
+
if (summaryParts.length > 0) {
|
|
136
|
+
console.log(`Backend targets: ${summaryParts.join(', ')}`);
|
|
137
|
+
}
|
|
138
|
+
// Intent lines — printed BEFORE runExplicitSelfUpdate runs. The runtime
|
|
139
|
+
// step may end up being a no-op (skip); the post-call result lines below
|
|
140
|
+
// resolve that ambiguity.
|
|
141
|
+
if (targets.openclaw) {
|
|
142
|
+
console.log(`Installing openclaw runtime ${targets.openclaw.version}...`);
|
|
143
|
+
}
|
|
144
|
+
if (pluginCount > 0) {
|
|
145
|
+
console.log(`Installing ${pluginCount} plugin(s)...`);
|
|
146
|
+
}
|
|
147
|
+
if (targets.agentController) {
|
|
148
|
+
console.log(`Installing agent-controller ${targets.agentController.version}...`);
|
|
149
|
+
}
|
|
134
150
|
const result = await runExplicitSelfUpdate(currentVersion, targets);
|
|
151
|
+
// Result lines — what actually happened.
|
|
152
|
+
if (targets.openclaw) {
|
|
153
|
+
if (result.runtimeChanged) {
|
|
154
|
+
console.log(`openclaw runtime installed at ${targets.openclaw.version}`);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
console.log(`openclaw runtime already at ${targets.openclaw.version}, skipped`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (result.pluginSummary) {
|
|
161
|
+
const s = result.pluginSummary;
|
|
162
|
+
console.log(`Plugin install complete: ${s.installed.length} installed, ${s.skipped.length} skipped, ${s.failed.length} failed`);
|
|
163
|
+
}
|
|
164
|
+
if (result.gatewayRestarted) {
|
|
165
|
+
console.log('Gateway restarted after openclaw stack update');
|
|
166
|
+
}
|
|
167
|
+
if (targets.agentController) {
|
|
168
|
+
if (result.acChanged) {
|
|
169
|
+
console.log(`Successfully updated to ${targets.agentController.version}. Removing lock file for graceful restart...`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.log(`agent-controller already at ${targets.agentController.version}, skipped`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
135
175
|
if (result.acChanged) {
|
|
136
|
-
console.log(`Successfully updated agent-controller to ${targets.agentController?.version}. Removing lock file for graceful restart...`);
|
|
137
176
|
removeLockFile();
|
|
138
177
|
await new Promise((resolve) => setTimeout(resolve, 30_000));
|
|
139
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createAgentApi } from '../api.js';
|
|
2
|
-
import { getBackendUrl
|
|
2
|
+
import { getBackendUrl } from '../utils/env.js';
|
|
3
|
+
import { requireConfig } from '../config.js';
|
|
3
4
|
import { getWorkspaceDir } from '../workspace.js';
|
|
4
|
-
import {
|
|
5
|
+
import { writeWorkspaceFiles } from '../utils/write-workspace-files.js';
|
|
5
6
|
export async function updateSkills() {
|
|
6
7
|
const backendUrl = getBackendUrl();
|
|
7
|
-
const agentToken =
|
|
8
|
-
const agentId =
|
|
8
|
+
const agentToken = requireConfig('agentToken');
|
|
9
|
+
const agentId = requireConfig('agentId');
|
|
9
10
|
const workspaceDir = getWorkspaceDir();
|
|
10
11
|
const api = createAgentApi(backendUrl, agentToken);
|
|
11
12
|
const data = await api.agentBootstrap(agentId);
|
|
@@ -14,7 +15,7 @@ export async function updateSkills() {
|
|
|
14
15
|
console.log('update_skills: no skills in bootstrap response, nothing to write');
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
|
-
await
|
|
18
|
-
console.log(`update_skills: wrote ${
|
|
18
|
+
const wrote = await writeWorkspaceFiles(skills, workspaceDir);
|
|
19
|
+
console.log(`update_skills: wrote ${wrote} skill files`);
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=update-skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-skills.js","sourceRoot":"","sources":["../../src/commands/update-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"update-skills.js","sourceRoot":"","sources":["../../src/commands/update-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,cAAc,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/config-file.d.ts
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
export declare const VM_ENV_PATH = "/opt/openclaw-cloud/agent-controller/.env";
|
|
3
3
|
export declare function getConfigDir(): string;
|
|
4
4
|
export declare function getConfigPath(): string;
|
|
5
|
+
/**
|
|
6
|
+
* Serialize a dict to `KEY=VALUE` lines and write it 0600, creating the parent
|
|
7
|
+
* directory. The one writer for every env file we own (`agent.env` and the VM
|
|
8
|
+
* provisioner's `.env`) — these files carry AGENT_TOKEN and provider API keys,
|
|
9
|
+
* so the mode is not optional.
|
|
10
|
+
*/
|
|
11
|
+
export declare function writeEnvFile(filePath: string, vars: Record<string, string>): Promise<void>;
|
|
5
12
|
export declare function saveEnvFile(config: {
|
|
6
13
|
centrifugoUrl: string;
|
|
7
14
|
agentToken: string;
|
|
@@ -9,4 +16,21 @@ export declare function saveEnvFile(config: {
|
|
|
9
16
|
backendInternalUrl: string;
|
|
10
17
|
gatewayToken?: string | null;
|
|
11
18
|
}): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Parse `KEY=VALUE` lines into a dict. Blank lines, `#` comments and lines
|
|
21
|
+
* without `=` are skipped; only the first `=` separates, so values may contain
|
|
22
|
+
* more. On a duplicate key the FIRST occurrence wins, mirroring `loadEnvFile`'s
|
|
23
|
+
* "already set, don't overwrite" precedence.
|
|
24
|
+
*
|
|
25
|
+
* Deliberately does NOT filter through `ENV_KEYS`: that allowlist governs what
|
|
26
|
+
* this process imports into `process.env`, not what is allowed to live in the
|
|
27
|
+
* file. Callers that rewrite an env file must see every key, or they would drop
|
|
28
|
+
* the ones only systemd or `apiKeyHelper` read.
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseEnvContent(content: string): Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Read and parse an env file. A missing or unreadable file yields `{}` — the
|
|
33
|
+
* caller decides what that means. The counterpart to `writeEnvFile`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function readEnvFile(filePath: string): Promise<Record<string, string>>;
|
|
12
36
|
export declare function loadEnvFile(): Promise<void>;
|
package/dist/config-file.js
CHANGED
|
@@ -13,12 +13,15 @@ const ENV_KEYS = [
|
|
|
13
13
|
'AC_RELEASE_CHANNEL',
|
|
14
14
|
'AC_DEBUG',
|
|
15
15
|
'AGENT_PROVIDER',
|
|
16
|
+
'AGENT_DEPLOY_TYPE',
|
|
16
17
|
'ANTHROPIC_API_KEY',
|
|
17
18
|
'ANTHROPIC_AUTH_TOKEN',
|
|
18
19
|
'CLAUDE_CODE_OAUTH_TOKEN',
|
|
19
20
|
'CLAUDE_WORKSPACE_DIR',
|
|
20
21
|
'CLAUDE_MD_CONTENT',
|
|
21
22
|
'AC_RUN_BOOTSTRAP',
|
|
23
|
+
'SLACK_RELAY_AUTH_TOKEN',
|
|
24
|
+
'SLACK_RELAY_PORT',
|
|
22
25
|
];
|
|
23
26
|
/** VM provisioner writes env here */
|
|
24
27
|
export const VM_ENV_PATH = '/opt/openclaw-cloud/agent-controller/.env';
|
|
@@ -28,30 +31,45 @@ export function getConfigDir() {
|
|
|
28
31
|
export function getConfigPath() {
|
|
29
32
|
return path.join(getConfigDir(), 'agent.env');
|
|
30
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Serialize a dict to `KEY=VALUE` lines and write it 0600, creating the parent
|
|
36
|
+
* directory. The one writer for every env file we own (`agent.env` and the VM
|
|
37
|
+
* provisioner's `.env`) — these files carry AGENT_TOKEN and provider API keys,
|
|
38
|
+
* so the mode is not optional.
|
|
39
|
+
*/
|
|
40
|
+
export async function writeEnvFile(filePath, vars) {
|
|
41
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
42
|
+
const content = Object.entries(vars)
|
|
43
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
44
|
+
.join('\n') + '\n';
|
|
45
|
+
await fs.writeFile(filePath, content, { mode: 0o600 });
|
|
46
|
+
}
|
|
31
47
|
export async function saveEnvFile(config) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
`BACKEND_URL=${config.backendInternalUrl}`,
|
|
39
|
-
];
|
|
48
|
+
const vars = {
|
|
49
|
+
CENTRIFUGO_URL: config.centrifugoUrl,
|
|
50
|
+
AGENT_TOKEN: config.agentToken,
|
|
51
|
+
AGENT_ID: config.agentId,
|
|
52
|
+
BACKEND_URL: config.backendInternalUrl,
|
|
53
|
+
};
|
|
40
54
|
if (config.gatewayToken) {
|
|
41
|
-
|
|
55
|
+
vars.OPENCLAW_GATEWAY_TOKEN = config.gatewayToken;
|
|
42
56
|
}
|
|
43
|
-
|
|
44
|
-
await fs.writeFile(getConfigPath(), content, { mode: 0o600 });
|
|
57
|
+
await writeEnvFile(getConfigPath(), vars);
|
|
45
58
|
console.log(` Config saved to ${getConfigPath()}`);
|
|
46
59
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Parse `KEY=VALUE` lines into a dict. Blank lines, `#` comments and lines
|
|
62
|
+
* without `=` are skipped; only the first `=` separates, so values may contain
|
|
63
|
+
* more. On a duplicate key the FIRST occurrence wins, mirroring `loadEnvFile`'s
|
|
64
|
+
* "already set, don't overwrite" precedence.
|
|
65
|
+
*
|
|
66
|
+
* Deliberately does NOT filter through `ENV_KEYS`: that allowlist governs what
|
|
67
|
+
* this process imports into `process.env`, not what is allowed to live in the
|
|
68
|
+
* file. Callers that rewrite an env file must see every key, or they would drop
|
|
69
|
+
* the ones only systemd or `apiKeyHelper` read.
|
|
70
|
+
*/
|
|
71
|
+
export function parseEnvContent(content) {
|
|
72
|
+
const vars = {};
|
|
55
73
|
for (const line of content.split('\n')) {
|
|
56
74
|
const trimmed = line.trim();
|
|
57
75
|
if (!trimmed || trimmed.startsWith('#'))
|
|
@@ -60,7 +78,25 @@ async function loadFile(filePath) {
|
|
|
60
78
|
if (eq === -1)
|
|
61
79
|
continue;
|
|
62
80
|
const key = trimmed.slice(0, eq).trim();
|
|
63
|
-
|
|
81
|
+
if (!(key in vars))
|
|
82
|
+
vars[key] = trimmed.slice(eq + 1).trim();
|
|
83
|
+
}
|
|
84
|
+
return vars;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Read and parse an env file. A missing or unreadable file yields `{}` — the
|
|
88
|
+
* caller decides what that means. The counterpart to `writeEnvFile`.
|
|
89
|
+
*/
|
|
90
|
+
export async function readEnvFile(filePath) {
|
|
91
|
+
try {
|
|
92
|
+
return parseEnvContent(await fs.readFile(filePath, 'utf-8'));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function loadFile(filePath) {
|
|
99
|
+
for (const [key, value] of Object.entries(await readEnvFile(filePath))) {
|
|
64
100
|
if (ENV_KEYS.includes(key) && !process.env[key]) {
|
|
65
101
|
process.env[key] = value;
|
|
66
102
|
}
|
package/dist/config-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,QAAQ,GAAG;IACf,gBAAgB;IAChB,aAAa;IACb,UAAU;IACV,sBAAsB;IACtB,aAAa;IACb,SAAS;IACT,cAAc;IACd,wBAAwB;IACxB,oBAAoB;IACpB,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,sBAAsB;IACtB,yBAAyB;IACzB,sBAAsB;IACtB,mBAAmB;IACnB,kBAAkB;CACV,CAAC;AAEX,qCAAqC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,2CAA2C,CAAC;AAEvE,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -35,5 +35,9 @@ export declare const config: {
|
|
|
35
35
|
readonly claudeWorkspaceDir: string;
|
|
36
36
|
/** Optional CLAUDE.md content for the claude-code workspace (set by bootstrap). */
|
|
37
37
|
readonly claudeMdContent: string | undefined;
|
|
38
|
+
/** Bearer token the openclaw Slack relay client must present (defense-in-depth on loopback). */
|
|
39
|
+
readonly slackRelayAuthToken: string | undefined;
|
|
40
|
+
/** Optional port override for the local Slack relay WS server (default 8788). */
|
|
41
|
+
readonly slackRelayPort: number | undefined;
|
|
38
42
|
};
|
|
39
43
|
export declare function requireConfig<K extends keyof typeof config>(key: K): NonNullable<(typeof config)[K]>;
|
package/dist/config.js
CHANGED
|
@@ -88,6 +88,18 @@ export const config = {
|
|
|
88
88
|
get claudeMdContent() {
|
|
89
89
|
return process.env.CLAUDE_MD_CONTENT?.trim() || undefined;
|
|
90
90
|
},
|
|
91
|
+
/** Bearer token the openclaw Slack relay client must present (defense-in-depth on loopback). */
|
|
92
|
+
get slackRelayAuthToken() {
|
|
93
|
+
return process.env.SLACK_RELAY_AUTH_TOKEN?.trim() || undefined;
|
|
94
|
+
},
|
|
95
|
+
/** Optional port override for the local Slack relay WS server (default 8788). */
|
|
96
|
+
get slackRelayPort() {
|
|
97
|
+
const raw = process.env.SLACK_RELAY_PORT?.trim();
|
|
98
|
+
if (!raw)
|
|
99
|
+
return undefined;
|
|
100
|
+
const parsed = Number.parseInt(raw, 10);
|
|
101
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
102
|
+
},
|
|
91
103
|
};
|
|
92
104
|
/* ── Strict accessors (throw on missing) ────────────────────── */
|
|
93
105
|
export function requireConfig(key) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AgentApi } from './api.js';
|
|
2
2
|
import { Centrifuge, Subscription } from 'centrifuge';
|
|
3
|
+
import type { CentrifugoStatus } from './types.js';
|
|
3
4
|
import { LogCollector } from './utils/log-collector.js';
|
|
4
5
|
import type { KnowledgeGraphManager } from './utils/knowledge-graph.js';
|
|
5
6
|
export interface ConnectionOptions {
|
|
@@ -12,10 +13,13 @@ export interface ConnectionOptions {
|
|
|
12
13
|
knowledgeGraphManager?: KnowledgeGraphManager;
|
|
13
14
|
}
|
|
14
15
|
export declare let logCollector: LogCollector;
|
|
16
|
+
export declare function mapClientState(raw: unknown): CentrifugoStatus['state'];
|
|
17
|
+
export declare function mapSubState(raw: unknown): CentrifugoStatus['commandSubState'];
|
|
15
18
|
declare function subscribeToChannel(client: Centrifuge, channel: string, opts: ConnectionOptions): Subscription;
|
|
16
19
|
export declare function createConnection(opts: ConnectionOptions): {
|
|
17
20
|
client: Centrifuge;
|
|
18
21
|
drainCommands: () => Promise<void>;
|
|
19
22
|
logCollector: LogCollector;
|
|
23
|
+
getCentrifugoStatus: () => CentrifugoStatus;
|
|
20
24
|
};
|
|
21
25
|
export { subscribeToChannel };
|