@agent-vm/agent-vm 0.0.47 → 0.0.48
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/build/managed-image-dockerfile.d.ts +2 -2
- package/dist/build/managed-image-dockerfile.js +2 -2
- package/dist/operations/openclaw-deployment-doctor.d.ts +1 -10
- package/dist/operations/openclaw-deployment-doctor.d.ts.map +1 -1
- package/dist/operations/openclaw-deployment-doctor.js +0 -45
- package/dist/operations/openclaw-deployment-doctor.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type ManagedImageBase = 'openclaw-gateway' | 'tool-vm' | 'worker-gateway';
|
|
2
|
-
export declare const MANAGED_BASE_IMAGE_VERSION = "0.0.
|
|
2
|
+
export declare const MANAGED_BASE_IMAGE_VERSION = "0.0.48";
|
|
3
3
|
export declare const MANAGED_OPENCLAW_VERSION = "2026.5.2";
|
|
4
|
-
export declare const MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION = "0.0.
|
|
4
|
+
export declare const MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION = "0.0.48";
|
|
5
5
|
export interface ManagedImageSource {
|
|
6
6
|
readonly kind: 'managedBase';
|
|
7
7
|
readonly base: ManagedImageBase;
|
|
@@ -3,9 +3,9 @@ import path from 'node:path';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { loadJsonConfigFile } from '../config/json-config-file.js';
|
|
5
5
|
import { formatZodError } from '../cli/format-zod-error.js';
|
|
6
|
-
export const MANAGED_BASE_IMAGE_VERSION = '0.0.
|
|
6
|
+
export const MANAGED_BASE_IMAGE_VERSION = '0.0.48';
|
|
7
7
|
export const MANAGED_OPENCLAW_VERSION = '2026.5.2';
|
|
8
|
-
export const MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION = '0.0.
|
|
8
|
+
export const MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION = '0.0.48';
|
|
9
9
|
const managedOpenClawAgentVmPluginPackageName = '@agent-vm/openclaw-agent-vm-plugin';
|
|
10
10
|
const managedOpenClawAgentVmPluginPackage = `${managedOpenClawAgentVmPluginPackageName}@${MANAGED_OPENCLAW_AGENT_VM_PLUGIN_VERSION}`;
|
|
11
11
|
const managedOpenClawAgentVmPluginExtensionPath = '/home/openclaw/.openclaw/extensions/gondolin';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { LoadedSystemConfig } from '../config/system-config.js';
|
|
2
2
|
import type { DoctorCheck } from './doctor.js';
|
|
3
3
|
interface OpenClawDeploymentConfig {
|
|
4
|
+
readonly [key: string]: unknown;
|
|
4
5
|
readonly agents?: {
|
|
5
6
|
readonly defaults?: {
|
|
6
7
|
readonly sandbox?: {
|
|
@@ -10,13 +11,6 @@ interface OpenClawDeploymentConfig {
|
|
|
10
11
|
readonly workspace?: unknown;
|
|
11
12
|
};
|
|
12
13
|
};
|
|
13
|
-
readonly bindings?: readonly unknown[];
|
|
14
|
-
readonly channels?: {
|
|
15
|
-
readonly discord?: {
|
|
16
|
-
readonly enabled?: unknown;
|
|
17
|
-
readonly guilds?: Record<string, unknown>;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
14
|
readonly plugins?: {
|
|
21
15
|
readonly allow?: readonly unknown[];
|
|
22
16
|
readonly entries?: Record<string, unknown>;
|
|
@@ -27,9 +21,6 @@ interface OpenClawDeploymentConfig {
|
|
|
27
21
|
readonly memory?: unknown;
|
|
28
22
|
};
|
|
29
23
|
};
|
|
30
|
-
readonly session?: {
|
|
31
|
-
readonly dmScope?: unknown;
|
|
32
|
-
};
|
|
33
24
|
}
|
|
34
25
|
export interface OpenClawDeploymentDoctorTarget {
|
|
35
26
|
readonly config: OpenClawDeploymentConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-deployment-doctor.d.ts","sourceRoot":"","sources":["../../src/operations/openclaw-deployment-doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,UAAU,wBAAwB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACjB,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACnB,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAClB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;gBAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;aACnC,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;SAC7B,CAAC;KACF,CAAC;IACF,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"openclaw-deployment-doctor.d.ts","sourceRoot":"","sources":["../../src/operations/openclaw-deployment-doctor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,UAAU,wBAAwB;IACjC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACjB,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACnB,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAClB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;gBAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;aACnC,CAAC;YACF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;SAC7B,CAAC;KACF,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE;QAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE;YACf,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;SACpC,CAAC;QACF,QAAQ,CAAC,KAAK,CAAC,EAAE;YAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;KACF,CAAC;CACF;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAuBD,wBAAgB,mCAAmC,CAClD,OAAO,EAAE,SAAS,8BAA8B,EAAE,GAChD,SAAS,WAAW,EAAE,CA4CxB;AAED,wBAAsB,qCAAqC,CAC1D,YAAY,EAAE,kBAAkB,GAC9B,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAoBjC"}
|
|
@@ -13,37 +13,13 @@ function parseOpenClawDeploymentConfig(rawConfig) {
|
|
|
13
13
|
const parsedConfig = JSON.parse(rawConfig);
|
|
14
14
|
return isObjectRecord(parsedConfig) ? parsedConfig : {};
|
|
15
15
|
}
|
|
16
|
-
function getDiscordBindingGuildIds(bindings) {
|
|
17
|
-
const guildIds = new Set();
|
|
18
|
-
for (const binding of bindings ?? []) {
|
|
19
|
-
if (!isObjectRecord(binding) || !isObjectRecord(binding.match)) {
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
if (binding.match.channel === 'discord' && typeof binding.match.guildId === 'string') {
|
|
23
|
-
guildIds.add(binding.match.guildId);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return [...guildIds].toSorted();
|
|
27
|
-
}
|
|
28
|
-
function getMissingDiscordGuildIds(config) {
|
|
29
|
-
const configuredGuilds = config.channels?.discord?.guilds ?? {};
|
|
30
|
-
return getDiscordBindingGuildIds(config.bindings).filter((guildId) => !Object.hasOwn(configuredGuilds, guildId));
|
|
31
|
-
}
|
|
32
|
-
function hasIsolatedDmScope(config) {
|
|
33
|
-
return (config.session?.dmScope === 'per-channel-peer' ||
|
|
34
|
-
config.session?.dmScope === 'per-account-channel-peer');
|
|
35
|
-
}
|
|
36
16
|
export function buildOpenClawDeploymentDoctorChecks(targets) {
|
|
37
17
|
return targets.flatMap((target) => {
|
|
38
18
|
const config = target.config;
|
|
39
19
|
const pluginLoadPaths = config.plugins?.load?.paths;
|
|
40
20
|
const hasMemoryCore = includesString(config.plugins?.allow, 'memory-core') ||
|
|
41
21
|
hasEnabledEntry(config.plugins?.entries, 'memory-core');
|
|
42
|
-
const hasDiscordPlugin = includesString(config.plugins?.allow, 'discord') ||
|
|
43
|
-
hasEnabledEntry(config.plugins?.entries, 'discord');
|
|
44
22
|
const workspace = config.agents?.defaults?.workspace;
|
|
45
|
-
const discordEnabled = config.channels?.discord?.enabled === true;
|
|
46
|
-
const missingDiscordGuildIds = getMissingDiscordGuildIds(config);
|
|
47
23
|
return [
|
|
48
24
|
{
|
|
49
25
|
name: `openclaw-workspace-access-${target.zoneId}`,
|
|
@@ -65,13 +41,6 @@ export function buildOpenClawDeploymentDoctorChecks(targets) {
|
|
|
65
41
|
? 'plugins.slots.memory=memory-core'
|
|
66
42
|
: 'Set plugins.slots.memory to "memory-core" when memory-core is enabled.',
|
|
67
43
|
},
|
|
68
|
-
{
|
|
69
|
-
name: `openclaw-stale-discord-plugin-${target.zoneId}`,
|
|
70
|
-
ok: !hasDiscordPlugin,
|
|
71
|
-
hint: hasDiscordPlugin
|
|
72
|
-
? 'Remove Discord from plugins.allow/plugins.entries; configure Discord under channels.discord instead.'
|
|
73
|
-
: 'Discord plugin entries absent',
|
|
74
|
-
},
|
|
75
44
|
{
|
|
76
45
|
name: `openclaw-shared-zone-workspace-${target.zoneId}`,
|
|
77
46
|
ok: workspace !== '/zone',
|
|
@@ -81,20 +50,6 @@ export function buildOpenClawDeploymentDoctorChecks(targets) {
|
|
|
81
50
|
? workspace
|
|
82
51
|
: 'agents.defaults.workspace is unset',
|
|
83
52
|
},
|
|
84
|
-
{
|
|
85
|
-
name: `openclaw-dm-scope-${target.zoneId}`,
|
|
86
|
-
ok: !discordEnabled || hasIsolatedDmScope(config),
|
|
87
|
-
hint: !discordEnabled || hasIsolatedDmScope(config)
|
|
88
|
-
? 'session.dmScope isolates Discord DMs'
|
|
89
|
-
: 'Set session.dmScope to "per-channel-peer" for Discord multi-user isolation.',
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: `openclaw-discord-guild-bindings-${target.zoneId}`,
|
|
93
|
-
ok: !discordEnabled || missingDiscordGuildIds.length === 0,
|
|
94
|
-
hint: !discordEnabled || missingDiscordGuildIds.length === 0
|
|
95
|
-
? 'Discord binding guildIds are present under channels.discord.guilds'
|
|
96
|
-
: `Add channels.discord.guilds entries for binding guildId values: ${missingDiscordGuildIds.join(', ')}.`,
|
|
97
|
-
},
|
|
98
53
|
];
|
|
99
54
|
});
|
|
100
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-deployment-doctor.js","sourceRoot":"","sources":["../../src/operations/openclaw-deployment-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-deployment-doctor.js","sourceRoot":"","sources":["../../src/operations/openclaw-deployment-doctor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-vm/agent-vm",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.48",
|
|
4
4
|
"description": "Controller CLI and HTTP server for sandboxed VM coding agents.",
|
|
5
5
|
"homepage": "https://github.com/ShravanSunder/agent-vm#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"jsonc-parser": "^3.3.1",
|
|
40
40
|
"tasuku": "^2.3.0",
|
|
41
41
|
"zod": "^4",
|
|
42
|
-
"@agent-vm/
|
|
43
|
-
"@agent-vm/gondolin-adapter": "0.0.
|
|
44
|
-
"@agent-vm/worker
|
|
45
|
-
"@agent-vm/openclaw-gateway": "0.0.
|
|
46
|
-
"@agent-vm/gateway
|
|
47
|
-
"@agent-vm/openclaw-agent-vm-plugin": "0.0.
|
|
42
|
+
"@agent-vm/gateway-interface": "0.0.48",
|
|
43
|
+
"@agent-vm/gondolin-adapter": "0.0.48",
|
|
44
|
+
"@agent-vm/agent-vm-worker": "0.0.48",
|
|
45
|
+
"@agent-vm/openclaw-gateway": "0.0.48",
|
|
46
|
+
"@agent-vm/worker-gateway": "0.0.48",
|
|
47
|
+
"@agent-vm/openclaw-agent-vm-plugin": "0.0.48"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|