claw-zero 0.1.1 → 0.1.3
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/config.d.ts +6 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -3
- package/dist/config.js.map +1 -1
- package/dist/container.d.ts +2 -0
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +22 -5
- package/dist/container.js.map +1 -1
- package/dist/docker.d.ts +7 -1
- package/dist/docker.d.ts.map +1 -1
- package/dist/docker.js +19 -8
- package/dist/docker.js.map +1 -1
- package/dist/index.js +169 -15
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +5 -0
- package/dist/logger.js.map +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { SecurityProfileKey } from './types.js';
|
|
1
|
+
import type { SecurityProfileKey, ClawdbotConfig } from './types.js';
|
|
2
2
|
export declare const WORKSPACE_PATH: string;
|
|
3
3
|
export declare const CONFIG_FILENAME = "clawdbot.json";
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Generates clawdbot.json and writes it to the workspace directory.
|
|
6
|
+
* Pass `overrideConfig` to use custom values instead of the profile defaults.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateConfig(profileKey: SecurityProfileKey, apiKey: string, overrideConfig?: ClawdbotConfig): Promise<void>;
|
|
6
9
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGrE,eAAO,MAAM,cAAc,QAAmD,CAAC;AAC/E,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C;;;GAGG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,IAAI,CAAC,CAef"}
|
package/dist/config.js
CHANGED
|
@@ -4,13 +4,16 @@ import { homedir } from 'node:os';
|
|
|
4
4
|
import { PROFILES } from './profiles.js';
|
|
5
5
|
export const WORKSPACE_PATH = join(homedir(), 'Desktop', 'OpenClaw_Workspace');
|
|
6
6
|
export const CONFIG_FILENAME = 'clawdbot.json';
|
|
7
|
-
/**
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Generates clawdbot.json and writes it to the workspace directory.
|
|
9
|
+
* Pass `overrideConfig` to use custom values instead of the profile defaults.
|
|
10
|
+
*/
|
|
11
|
+
export async function generateConfig(profileKey, apiKey, overrideConfig) {
|
|
9
12
|
const profile = PROFILES[profileKey];
|
|
10
13
|
if (!profile)
|
|
11
14
|
throw new Error(`Unknown profile: ${profileKey}`);
|
|
12
15
|
const configData = {
|
|
13
|
-
...profile.config,
|
|
16
|
+
...(overrideConfig ?? profile.config),
|
|
14
17
|
api_key: apiKey,
|
|
15
18
|
};
|
|
16
19
|
await mkdir(WORKSPACE_PATH, { recursive: true });
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAA8B,EAC9B,MAAc,EACd,cAA+B;IAE/B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE,MAAM;KAChB,CAAC;IAEF,MAAM,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,SAAS,CACb,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EACnC,OAAO,CACR,CAAC;AACJ,CAAC"}
|
package/dist/container.d.ts
CHANGED
|
@@ -12,4 +12,6 @@ export declare function pullContainerImage(): Promise<{
|
|
|
12
12
|
export declare function launchContainer(apiKey: string, _profileKey: SecurityProfileKey): Promise<{
|
|
13
13
|
port: number;
|
|
14
14
|
}>;
|
|
15
|
+
/** Stops the running OpenClaw container; no-op if it isn't running. */
|
|
16
|
+
export declare function stopContainer(): Promise<void>;
|
|
15
17
|
//# sourceMappingURL=container.d.ts.map
|
package/dist/container.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AASrD,yEAAyE;AACzE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBpE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA+B3B;AAED,uEAAuE;AACvE,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAMnD"}
|
package/dist/container.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
+
const CONTAINER_NAME = 'openclaw_sandbox';
|
|
4
5
|
const WORKSPACE_PATH = join(homedir(), 'Desktop', 'OpenClaw_Workspace');
|
|
5
6
|
const IMAGE = 'ghcr.io/openclaw/openclaw:latest';
|
|
6
|
-
const
|
|
7
|
+
const GATEWAY_PORT = 18789; // Control UI + WebSocket gateway
|
|
8
|
+
const EXPOSED_PORT = 3845; // Image's declared EXPOSE (kept for compatibility)
|
|
7
9
|
/** Pulls the OpenClaw container image; returns the pulled image size. */
|
|
8
10
|
export async function pullContainerImage() {
|
|
9
11
|
try {
|
|
@@ -33,13 +35,16 @@ export async function pullContainerImage() {
|
|
|
33
35
|
* - Passes the API key as ANTHROPIC_API_KEY env var
|
|
34
36
|
*/
|
|
35
37
|
export async function launchContainer(apiKey, _profileKey) {
|
|
38
|
+
// Silently remove any stale container with the same name (exit code 125 conflict fix)
|
|
39
|
+
await execa('docker', ['rm', '-f', CONTAINER_NAME], { stdio: 'pipe' }).catch(() => { });
|
|
36
40
|
try {
|
|
37
41
|
await execa('docker', [
|
|
38
42
|
'run',
|
|
39
43
|
'--detach',
|
|
40
44
|
'--rm',
|
|
41
|
-
'--name',
|
|
42
|
-
'--publish', `${
|
|
45
|
+
'--name', CONTAINER_NAME,
|
|
46
|
+
'--publish', `${GATEWAY_PORT}:${GATEWAY_PORT}`,
|
|
47
|
+
'--publish', `${EXPOSED_PORT}:${EXPOSED_PORT}`,
|
|
43
48
|
'--volume', `${WORKSPACE_PATH}:/workspace`,
|
|
44
49
|
'--env', `ANTHROPIC_API_KEY=${apiKey}`,
|
|
45
50
|
IMAGE,
|
|
@@ -49,8 +54,20 @@ export async function launchContainer(apiKey, _profileKey) {
|
|
|
49
54
|
if (err.timedOut) {
|
|
50
55
|
throw new Error('docker run timed out after 30s — check your internet connection');
|
|
51
56
|
}
|
|
52
|
-
|
|
57
|
+
// Mask API key in any error message before rethrowing
|
|
58
|
+
const raw = err instanceof Error ? err.message : String(err);
|
|
59
|
+
const masked = raw.replaceAll(apiKey, 'sk-***');
|
|
60
|
+
throw new Error(masked);
|
|
61
|
+
}
|
|
62
|
+
return { port: GATEWAY_PORT };
|
|
63
|
+
}
|
|
64
|
+
/** Stops the running OpenClaw container; no-op if it isn't running. */
|
|
65
|
+
export async function stopContainer() {
|
|
66
|
+
try {
|
|
67
|
+
await execa('docker', ['stop', CONTAINER_NAME], { stdio: 'pipe', timeout: 15_000 });
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Container not running or already stopped — ignore
|
|
53
71
|
}
|
|
54
|
-
return { port: PORT };
|
|
55
72
|
}
|
|
56
73
|
//# sourceMappingURL=container.js.map
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACxE,MAAM,KAAK,GAAG,kCAAkC,CAAC;AACjD,MAAM,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/docker.d.ts
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
export declare function checkDocker(): Promise<boolean>;
|
|
7
7
|
/** Install Docker Desktop via Homebrew Cask. Captures output — does not bleed into Listr spinner. */
|
|
8
8
|
export declare function installDocker(): Promise<void>;
|
|
9
|
-
/**
|
|
9
|
+
/** Returns true if the Docker daemon is currently responding. */
|
|
10
|
+
export declare function isDaemonRunning(): Promise<boolean>;
|
|
11
|
+
/** Open Docker.app without waiting — caller is responsible for waiting via pollDaemonReady(). */
|
|
12
|
+
export declare function launchDockerApp(): Promise<void>;
|
|
13
|
+
/** Poll `docker info` until the daemon responds or the timeout elapses. */
|
|
14
|
+
export declare function pollDaemonReady(timeoutMs?: number): Promise<void>;
|
|
15
|
+
/** @deprecated Use isDaemonRunning() + launchDockerApp() + pollDaemonReady() instead. */
|
|
10
16
|
export declare function startDockerDaemon(): Promise<void>;
|
|
11
17
|
//# sourceMappingURL=docker.d.ts.map
|
package/dist/docker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAQpD;AAED,qGAAqG;AACrG,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD;AAED,
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAQpD;AAED,qGAAqG;AACrG,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD;AAED,iEAAiE;AACjE,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED,iGAAiG;AACjG,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,2EAA2E;AAC3E,wBAAsB,eAAe,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAevE;AAED,yFAAyF;AACzF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIvD"}
|
package/dist/docker.js
CHANGED
|
@@ -27,21 +27,25 @@ export async function installDocker() {
|
|
|
27
27
|
throw new Error(lastLine);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
export async function
|
|
32
|
-
// Check if daemon is already running
|
|
30
|
+
/** Returns true if the Docker daemon is currently responding. */
|
|
31
|
+
export async function isDaemonRunning() {
|
|
33
32
|
try {
|
|
34
33
|
await execa('docker', ['info'], { stdio: 'ignore' });
|
|
35
|
-
return;
|
|
34
|
+
return true;
|
|
36
35
|
}
|
|
37
36
|
catch {
|
|
38
|
-
|
|
37
|
+
return false;
|
|
39
38
|
}
|
|
39
|
+
}
|
|
40
|
+
/** Open Docker.app without waiting — caller is responsible for waiting via pollDaemonReady(). */
|
|
41
|
+
export async function launchDockerApp() {
|
|
40
42
|
await execa('open', ['-a', 'Docker']);
|
|
43
|
+
}
|
|
44
|
+
/** Poll `docker info` until the daemon responds or the timeout elapses. */
|
|
45
|
+
export async function pollDaemonReady(timeoutMs = 30_000) {
|
|
41
46
|
const POLL_INTERVAL_MS = 2000;
|
|
42
|
-
const MAX_WAIT_MS = 60_000;
|
|
43
47
|
const start = Date.now();
|
|
44
|
-
while (Date.now() - start <
|
|
48
|
+
while (Date.now() - start < timeoutMs) {
|
|
45
49
|
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
46
50
|
try {
|
|
47
51
|
await execa('docker', ['info'], { stdio: 'ignore' });
|
|
@@ -51,6 +55,13 @@ export async function startDockerDaemon() {
|
|
|
51
55
|
// Still starting — keep polling
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
|
-
throw new Error('
|
|
58
|
+
throw new Error('Docker daemon did not respond within 30s — try again once Docker is fully started');
|
|
59
|
+
}
|
|
60
|
+
/** @deprecated Use isDaemonRunning() + launchDockerApp() + pollDaemonReady() instead. */
|
|
61
|
+
export async function startDockerDaemon() {
|
|
62
|
+
if (await isDaemonRunning())
|
|
63
|
+
return;
|
|
64
|
+
await launchDockerApp();
|
|
65
|
+
await pollDaemonReady();
|
|
55
66
|
}
|
|
56
67
|
//# sourceMappingURL=docker.js.map
|
package/dist/docker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,UAAU,CAAC,0BAA0B,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,IAAI,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,qBAAqB,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,UAAU,CAAC,0BAA0B,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,IAAI,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,qBAAqB,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAS,GAAG,MAAM;IACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,eAAe;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;AACvG,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,MAAM,eAAe,EAAE;QAAE,OAAO;IACpC,MAAM,eAAe,EAAE,CAAC;IACxB,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,11 +5,11 @@ import { Listr } from 'listr2';
|
|
|
5
5
|
import { PROFILES } from './profiles.js';
|
|
6
6
|
import { generateConfig, WORKSPACE_PATH } from './config.js';
|
|
7
7
|
import { execa } from 'execa';
|
|
8
|
-
import { checkDocker, installDocker,
|
|
8
|
+
import { checkDocker, installDocker, isDaemonRunning, launchDockerApp, pollDaemonReady } from './docker.js';
|
|
9
9
|
import { createWorkspace } from './workspace.js';
|
|
10
|
-
import { pullContainerImage, launchContainer } from './container.js';
|
|
10
|
+
import { pullContainerImage, launchContainer, stopContainer } from './container.js';
|
|
11
11
|
import { checkInternetSpeed, buildDownloadManifest, formatManifestTable } from './network.js';
|
|
12
|
-
import { initLog, log, getLogPath } from './logger.js';
|
|
12
|
+
import { initLog, log, logError, getLogPath } from './logger.js';
|
|
13
13
|
/** Formats API key for inline confirmation: first 7 + last 4 chars. */
|
|
14
14
|
function maskApiKey(key) {
|
|
15
15
|
if (key.length <= 11)
|
|
@@ -30,6 +30,124 @@ function highlightJson(obj) {
|
|
|
30
30
|
})
|
|
31
31
|
.join('\n');
|
|
32
32
|
}
|
|
33
|
+
/** Formats a config value for display in the settings table. */
|
|
34
|
+
function formatConfigValue(key, config) {
|
|
35
|
+
switch (key) {
|
|
36
|
+
case 'sandbox.mode': return config.sandbox.mode;
|
|
37
|
+
case 'workspaceAccess': return config.workspaceAccess;
|
|
38
|
+
case 'skill_registry_trust': return config.skill_registry_trust;
|
|
39
|
+
case 'max_budget': return config.max_budget === 0 ? 'unlimited' : String(config.max_budget);
|
|
40
|
+
case 'require_human_approval':
|
|
41
|
+
return config.require_human_approval.length === 0
|
|
42
|
+
? '(none)'
|
|
43
|
+
: config.require_human_approval.join(', ');
|
|
44
|
+
default: return '';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Displays the active config as a summary table and optionally lets the user
|
|
49
|
+
* change individual settings. Returns the (possibly updated) config.
|
|
50
|
+
*/
|
|
51
|
+
async function settingsReview(config, profileLabel, apiKey, profileKey, currentPort) {
|
|
52
|
+
const SETTINGS = [
|
|
53
|
+
{ key: 'sandbox.mode', label: 'Sandbox mode' },
|
|
54
|
+
{ key: 'workspaceAccess', label: 'Workspace access' },
|
|
55
|
+
{ key: 'skill_registry_trust', label: 'Skill registry trust' },
|
|
56
|
+
{ key: 'max_budget', label: 'Max budget (tokens)' },
|
|
57
|
+
{ key: 'require_human_approval', label: 'Require human approval' },
|
|
58
|
+
];
|
|
59
|
+
const colW = 28;
|
|
60
|
+
const table = [
|
|
61
|
+
pc.dim(' Setting Value'),
|
|
62
|
+
pc.dim(' ' + '─'.repeat(44)),
|
|
63
|
+
...SETTINGS.map((s) => ` ${pc.cyan(s.label.padEnd(colW))} ${pc.white(formatConfigValue(s.key, config))}`),
|
|
64
|
+
].join('\n');
|
|
65
|
+
console.log(`\n${pc.dim('◇')} ${pc.bold(`Active profile: ${profileLabel}`)}\n${table}\n`);
|
|
66
|
+
const wantChange = await p.confirm({ message: 'Would you like to change any settings?' });
|
|
67
|
+
if (p.isCancel(wantChange) || !wantChange)
|
|
68
|
+
return { config, port: currentPort };
|
|
69
|
+
let updated = { ...config, sandbox: { ...config.sandbox } };
|
|
70
|
+
const settingToChange = await p.select({
|
|
71
|
+
message: 'Which setting would you like to change?',
|
|
72
|
+
options: SETTINGS.map((s) => ({
|
|
73
|
+
value: s.key,
|
|
74
|
+
label: s.label,
|
|
75
|
+
hint: formatConfigValue(s.key, config),
|
|
76
|
+
})),
|
|
77
|
+
});
|
|
78
|
+
if (p.isCancel(settingToChange))
|
|
79
|
+
return { config, port: currentPort };
|
|
80
|
+
if (settingToChange === 'sandbox.mode') {
|
|
81
|
+
const val = await p.select({
|
|
82
|
+
message: 'Sandbox mode',
|
|
83
|
+
options: [
|
|
84
|
+
{ value: 'all', label: 'all', hint: 'Full sandbox — all commands intercepted' },
|
|
85
|
+
{ value: 'non-main', label: 'non-main', hint: 'Sandbox non-critical commands only' },
|
|
86
|
+
{ value: 'off', label: 'off', hint: 'No sandboxing' },
|
|
87
|
+
],
|
|
88
|
+
initialValue: updated.sandbox.mode,
|
|
89
|
+
});
|
|
90
|
+
if (!p.isCancel(val))
|
|
91
|
+
updated.sandbox.mode = val;
|
|
92
|
+
}
|
|
93
|
+
else if (settingToChange === 'workspaceAccess') {
|
|
94
|
+
const val = await p.select({
|
|
95
|
+
message: 'Workspace access',
|
|
96
|
+
options: [
|
|
97
|
+
{ value: 'ro', label: 'ro', hint: 'Read-only' },
|
|
98
|
+
{ value: 'scoped', label: 'scoped', hint: 'Scoped read/write' },
|
|
99
|
+
{ value: 'rw', label: 'rw', hint: 'Full read/write' },
|
|
100
|
+
],
|
|
101
|
+
initialValue: updated.workspaceAccess,
|
|
102
|
+
});
|
|
103
|
+
if (!p.isCancel(val))
|
|
104
|
+
updated.workspaceAccess = val;
|
|
105
|
+
}
|
|
106
|
+
else if (settingToChange === 'skill_registry_trust') {
|
|
107
|
+
const val = await p.select({
|
|
108
|
+
message: 'Skill registry trust',
|
|
109
|
+
options: [
|
|
110
|
+
{ value: 'none', label: 'none', hint: 'No external skills allowed' },
|
|
111
|
+
{ value: 'verified_only', label: 'verified_only', hint: 'Only verified skills' },
|
|
112
|
+
{ value: 'all', label: 'all', hint: 'All skills allowed' },
|
|
113
|
+
],
|
|
114
|
+
initialValue: updated.skill_registry_trust,
|
|
115
|
+
});
|
|
116
|
+
if (!p.isCancel(val))
|
|
117
|
+
updated.skill_registry_trust = val;
|
|
118
|
+
}
|
|
119
|
+
else if (settingToChange === 'max_budget') {
|
|
120
|
+
const val = await p.text({
|
|
121
|
+
message: 'Max budget (tokens). Enter 0 for unlimited.',
|
|
122
|
+
initialValue: String(updated.max_budget),
|
|
123
|
+
validate: (v) => {
|
|
124
|
+
if (!/^\d+$/.test(v))
|
|
125
|
+
return 'Must be a non-negative integer.';
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
if (!p.isCancel(val))
|
|
129
|
+
updated.max_budget = parseInt(val, 10);
|
|
130
|
+
}
|
|
131
|
+
else if (settingToChange === 'require_human_approval') {
|
|
132
|
+
const val = await p.text({
|
|
133
|
+
message: 'Commands requiring human approval (comma-separated). Leave empty for none.',
|
|
134
|
+
initialValue: updated.require_human_approval.join(', '),
|
|
135
|
+
});
|
|
136
|
+
if (!p.isCancel(val)) {
|
|
137
|
+
updated.require_human_approval = val
|
|
138
|
+
.split(',')
|
|
139
|
+
.map((s) => s.trim())
|
|
140
|
+
.filter(Boolean);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Rewrite clawdbot.json and restart container with updated config
|
|
144
|
+
console.log(pc.dim('\n Applying changes...'));
|
|
145
|
+
await generateConfig(profileKey, apiKey, updated);
|
|
146
|
+
await stopContainer();
|
|
147
|
+
const { port } = await launchContainer(apiKey, profileKey);
|
|
148
|
+
console.log(pc.green(' ✔ Settings applied and container restarted.\n'));
|
|
149
|
+
return { config: updated, port };
|
|
150
|
+
}
|
|
33
151
|
async function main() {
|
|
34
152
|
// ── 3.2 Welcome intro ───────────────────────────────────────────────────────
|
|
35
153
|
console.clear();
|
|
@@ -75,6 +193,34 @@ async function main() {
|
|
|
75
193
|
console.log();
|
|
76
194
|
// ── 8.5 Pre-flight gate ──────────────────────────────────────────────────────
|
|
77
195
|
const dockerInstalled = await checkDocker();
|
|
196
|
+
// ── 9.1 Docker daemon wait with user guidance ────────────────────────────────
|
|
197
|
+
if (dockerInstalled && !(await isDaemonRunning())) {
|
|
198
|
+
await launchDockerApp();
|
|
199
|
+
p.note([
|
|
200
|
+
'Docker Desktop is launching.',
|
|
201
|
+
'',
|
|
202
|
+
' 1. Complete sign-in or registration in the Docker window.',
|
|
203
|
+
' 2. Accept the license agreement if prompted.',
|
|
204
|
+
' 3. Wait for the Docker menu-bar icon to show "Engine running".',
|
|
205
|
+
'',
|
|
206
|
+
'Press Enter below once Docker is fully started.',
|
|
207
|
+
].join('\n'), 'Docker setup required');
|
|
208
|
+
const ready = await p.confirm({ message: 'Is Docker running and ready?' });
|
|
209
|
+
if (p.isCancel(ready) || !ready) {
|
|
210
|
+
p.cancel('Setup cancelled — restart once Docker is running.');
|
|
211
|
+
process.exit(0);
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
await pollDaemonReady(30_000);
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
logError('Docker daemon poll timed out', err);
|
|
218
|
+
const lp = getLogPath();
|
|
219
|
+
const logHint = lp ? `\n Log: ${lp}` : '';
|
|
220
|
+
p.cancel(`Docker is not responding. Start Docker Desktop and try again.${logHint}`);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
78
224
|
let speedMbps = 0;
|
|
79
225
|
try {
|
|
80
226
|
process.stdout.write(pc.dim(' Measuring download speed...'));
|
|
@@ -82,7 +228,8 @@ async function main() {
|
|
|
82
228
|
speedMbps = speedResult.mbps;
|
|
83
229
|
process.stdout.write(`\r${' '.repeat(40)}\r`); // clear the line
|
|
84
230
|
}
|
|
85
|
-
catch {
|
|
231
|
+
catch (err) {
|
|
232
|
+
logError('Internet speed check failed (non-fatal)', err);
|
|
86
233
|
process.stdout.write(`\r${' '.repeat(40)}\r`);
|
|
87
234
|
// Non-fatal — proceed without estimate
|
|
88
235
|
}
|
|
@@ -120,7 +267,6 @@ async function main() {
|
|
|
120
267
|
await installDocker();
|
|
121
268
|
log('INFO', 'Docker installed via Homebrew');
|
|
122
269
|
}
|
|
123
|
-
await startDockerDaemon();
|
|
124
270
|
try {
|
|
125
271
|
const { stdout } = await execa('docker', ['--version']);
|
|
126
272
|
dockerVersion = stdout.trim();
|
|
@@ -177,31 +323,39 @@ async function main() {
|
|
|
177
323
|
await tasks.run();
|
|
178
324
|
}
|
|
179
325
|
catch (err) {
|
|
180
|
-
|
|
181
|
-
|
|
326
|
+
logError('Setup failed during install tasks', err);
|
|
327
|
+
const firstLine = (err instanceof Error ? err.message : String(err)).split('\n')[0];
|
|
182
328
|
const lp = getLogPath();
|
|
183
329
|
const logHint = lp ? `\n Log: ${lp}` : '';
|
|
184
|
-
p.cancel(`Setup failed: ${
|
|
330
|
+
p.cancel(`Setup failed: ${firstLine}${logHint}`);
|
|
185
331
|
process.exit(1);
|
|
186
332
|
}
|
|
187
|
-
// ──
|
|
333
|
+
// ── 9.4 Settings review ──────────────────────────────────────────────────────
|
|
334
|
+
const reviewResult = await settingsReview(selectedProfile.config, selectedProfile.label, apiKey, profileKey, containerPort);
|
|
335
|
+
containerPort = reviewResult.port;
|
|
336
|
+
// ── 9.5 Outro ────────────────────────────────────────────────────────────────
|
|
188
337
|
const box = [
|
|
189
|
-
` ${pc.dim('│')} ☕
|
|
338
|
+
` ${pc.dim('│')} ☕ Your AI sandbox is ready.`,
|
|
190
339
|
` ${pc.dim('│')}`,
|
|
191
340
|
` ${pc.dim('│')} Workspace → ${pc.cyan(WORKSPACE_PATH)}`,
|
|
192
|
-
` ${pc.dim('│')} Access → ${pc.cyan(`localhost:${containerPort}`)}`,
|
|
193
341
|
` ${pc.dim('│')} Profile → ${pc.yellow(selectedProfile.label)}`,
|
|
342
|
+
` ${pc.dim('│')} Control UI → ${pc.cyan(`http://127.0.0.1:${containerPort}/`)}`,
|
|
343
|
+
` ${pc.dim('│')}`,
|
|
344
|
+
` ${pc.dim('│')} ${pc.bold('Next steps')}`,
|
|
345
|
+
` ${pc.dim('│')} 1. Open ${pc.cyan(`http://127.0.0.1:${containerPort}/`)} in your browser`,
|
|
346
|
+
` ${pc.dim('│')} 2. Paste your ${pc.yellow('gateway token')} into Settings to authenticate`,
|
|
347
|
+
` ${pc.dim('│')} (run ${pc.dim('docker logs openclaw_sandbox')} to find it)`,
|
|
348
|
+
` ${pc.dim('│')} 3. Drop files into the workspace folder to share with the agent`,
|
|
194
349
|
` ${pc.dim('│')}`,
|
|
195
|
-
` ${pc.dim('│')}
|
|
350
|
+
` ${pc.dim('│')} Health check: ${pc.dim(`http://127.0.0.1:${containerPort}/readyz`)}`,
|
|
196
351
|
].join('\n');
|
|
197
352
|
p.outro(`${pc.green('✔')} Sandbox successfully booted!\n\n${box}`);
|
|
198
353
|
}
|
|
199
354
|
main().catch((err) => {
|
|
200
|
-
|
|
201
|
-
log('ERROR', `Unexpected error: ${message}`);
|
|
355
|
+
logError('Unexpected top-level error', err);
|
|
202
356
|
const lp = getLogPath();
|
|
203
357
|
const logHint = lp ? `\n Log: ${lp}` : '';
|
|
204
|
-
p.cancel(`
|
|
358
|
+
p.cancel(`An unexpected error occurred.${logHint}`);
|
|
205
359
|
process.exit(1);
|
|
206
360
|
});
|
|
207
361
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
export declare function initLog(): string;
|
|
3
3
|
/** Appends a timestamped line to the session log. No-op if initLog() hasn't been called. */
|
|
4
4
|
export declare function log(level: 'INFO' | 'WARN' | 'ERROR', message: string): void;
|
|
5
|
+
/** Logs the full error stack to the session log; does NOT surface details to the user. */
|
|
6
|
+
export declare function logError(context: string, err: unknown): void;
|
|
5
7
|
/** Returns the current log file path, or null if not initialised. */
|
|
6
8
|
export declare function getLogPath(): string | null;
|
|
7
9
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAQA,2FAA2F;AAC3F,wBAAgB,OAAO,IAAI,MAAM,CAYhC;AAED,4FAA4F;AAC5F,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI3E;AAED,qEAAqE;AACrE,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1C"}
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAQA,2FAA2F;AAC3F,wBAAgB,OAAO,IAAI,MAAM,CAYhC;AAED,4FAA4F;AAC5F,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI3E;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAG5D;AAED,qEAAqE;AACrE,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAE1C"}
|
package/dist/logger.js
CHANGED
|
@@ -22,6 +22,11 @@ export function log(level, message) {
|
|
|
22
22
|
const time = new Date().toTimeString().slice(0, 8); // HH:MM:SS
|
|
23
23
|
appendFileSync(logPath, `[${time}] [${level}] ${message}\n`);
|
|
24
24
|
}
|
|
25
|
+
/** Logs the full error stack to the session log; does NOT surface details to the user. */
|
|
26
|
+
export function logError(context, err) {
|
|
27
|
+
const stack = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
28
|
+
log('ERROR', `${context}\n${stack}`);
|
|
29
|
+
}
|
|
25
30
|
/** Returns the current log file path, or null if not initialised. */
|
|
26
31
|
export function getLogPath() {
|
|
27
32
|
return logPath;
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAExE,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,2FAA2F;AAC3F,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;IAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;IAC5E,MAAM,QAAQ,GAAG,aAAa,QAAQ,IAAI,QAAQ,MAAM,CAAC;IAEzD,oDAAoD;IACpD,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACzC,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,GAAG,CAAC,KAAgC,EAAE,OAAe;IACnE,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;IAC/D,cAAc,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAExE,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,2FAA2F;AAC3F,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;IAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;IAC5E,MAAM,QAAQ,GAAG,aAAa,QAAQ,IAAI,QAAQ,MAAM,CAAC;IAEzD,oDAAoD;IACpD,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACzC,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,GAAG,CAAC,KAAgC,EAAE,OAAe;IACnE,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;IAC/D,cAAc,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAY;IACpD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9E,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|