@zcloak/ai-agent 1.0.53 → 1.0.55
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/SKILL.md +6 -7
- package/dist/onboard.d.ts +1 -3
- package/dist/onboard.js +70 -12
- package/dist/onboard.js.map +1 -1
- package/dist/pre-check.d.ts +2 -2
- package/dist/pre-check.js +13 -55
- package/dist/pre-check.js.map +1 -1
- package/dist/workspace.d.ts +12 -0
- package/dist/workspace.js +74 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +1 -1
package/SKILL.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
version: v1.0.
|
|
2
|
+
version: v1.0.55
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# zCloak.ai SKILL
|
|
@@ -29,16 +29,15 @@ Read `principal_id` from the result. If empty → name doesn't exist. If `princi
|
|
|
29
29
|
|
|
30
30
|
## 1. Quickstart
|
|
31
31
|
|
|
32
|
-
Run
|
|
32
|
+
Run once, parse the output, then immediately reply to the user.
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
36
|
-
&& zcloak-ai identity show 2>/dev/null \
|
|
37
|
-
|| zcloak-ai identity generate \
|
|
38
|
-
&& zcloak-ai zmail register
|
|
35
|
+
npx @zcloak/ai-agent@latest onboard
|
|
39
36
|
```
|
|
40
37
|
|
|
41
|
-
|
|
38
|
+
This single command installs/upgrades the CLI, initializes identity, registers zMail, and refreshes the local skill file. Do NOT pre-fetch any sub-skill files during onboarding.
|
|
39
|
+
|
|
40
|
+
Report: AI ID · zMail status · owner binding status.
|
|
42
41
|
- No owner bound → ask for their `.ai` name or AI ID to start binding.
|
|
43
42
|
- No Agent AI Name → recommend registering one (e.g. `runner#8939.agent`).
|
|
44
43
|
- Fetch sub-skill files only when the user confirms the next action.
|
package/dist/onboard.d.ts
CHANGED
|
@@ -5,13 +5,11 @@
|
|
|
5
5
|
* 1. Resolve OpenClaw workspace path
|
|
6
6
|
* 2. Install SKILL.md into workspace/skills/zcloak-ai-agent/
|
|
7
7
|
* 3. Update TOOLS.md in the workspace
|
|
8
|
-
* 4. Initialize identity (
|
|
8
|
+
* 4. Initialize identity (load existing or generate new)
|
|
9
9
|
* 5. Register with zMail
|
|
10
10
|
*
|
|
11
11
|
* Invoked via:
|
|
12
12
|
* npx @zcloak/ai-agent@latest onboard
|
|
13
|
-
*
|
|
14
|
-
* Workspace resolution is shared with runPostUpgradeActions() in pre-check.ts.
|
|
15
13
|
*/
|
|
16
14
|
export declare function runOnboard(): Promise<void>;
|
|
17
15
|
//# sourceMappingURL=onboard.d.ts.map
|
package/dist/onboard.js
CHANGED
|
@@ -5,26 +5,69 @@
|
|
|
5
5
|
* 1. Resolve OpenClaw workspace path
|
|
6
6
|
* 2. Install SKILL.md into workspace/skills/zcloak-ai-agent/
|
|
7
7
|
* 3. Update TOOLS.md in the workspace
|
|
8
|
-
* 4. Initialize identity (
|
|
8
|
+
* 4. Initialize identity (load existing or generate new)
|
|
9
9
|
* 5. Register with zMail
|
|
10
10
|
*
|
|
11
11
|
* Invoked via:
|
|
12
12
|
* npx @zcloak/ai-agent@latest onboard
|
|
13
|
-
*
|
|
14
|
-
* Workspace resolution is shared with runPostUpgradeActions() in pre-check.ts.
|
|
15
13
|
*/
|
|
14
|
+
import { createHash } from "crypto";
|
|
15
|
+
import { schnorr } from "@noble/curves/secp256k1";
|
|
16
|
+
import { bytesToHex } from "@noble/hashes/utils";
|
|
16
17
|
import * as log from "./log.js";
|
|
17
|
-
import { resolveOpenClawWorkspace
|
|
18
|
+
import { resolveOpenClawWorkspace } from "./workspace.js";
|
|
19
|
+
import { refreshSkill, updateToolsMd } from "./pre-check.js";
|
|
20
|
+
import { ensureIdentityFile, loadIdentityFromPath, DEFAULT_PEM_PATH } from "./identity.js";
|
|
21
|
+
import { schnorrPubkeyFromSpki } from "./vetkey.js";
|
|
22
|
+
import config from "./config.js";
|
|
18
23
|
// ---------------------------------------------------------------------------
|
|
19
|
-
//
|
|
24
|
+
// Step 4 — Initialize identity
|
|
20
25
|
// ---------------------------------------------------------------------------
|
|
21
|
-
/**
|
|
26
|
+
/** Load existing identity or generate a new one. Returns pemPath and principal. */
|
|
22
27
|
async function initIdentity() {
|
|
23
|
-
|
|
28
|
+
const { path: pemPath, created } = ensureIdentityFile(DEFAULT_PEM_PATH);
|
|
29
|
+
const identity = loadIdentityFromPath(pemPath);
|
|
30
|
+
const principal = identity.getPrincipal().toText();
|
|
31
|
+
if (created) {
|
|
32
|
+
log.info(`[zcloak-ai] onboard [4/5] identity generated: ${principal}`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
log.info(`[zcloak-ai] onboard [4/5] identity loaded: ${principal}`);
|
|
36
|
+
}
|
|
37
|
+
return { pemPath, principal };
|
|
24
38
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// Step 5 — Register with zMail
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
/** Register this agent with the zMail server. Returns zMail status string. */
|
|
43
|
+
async function registerZmail(pemPath) {
|
|
44
|
+
const identity = loadIdentityFromPath(pemPath);
|
|
45
|
+
const principal = identity.getPrincipal().toText();
|
|
46
|
+
const spkiHex = Buffer.from(identity.getPublicKey().toDer()).toString("hex");
|
|
47
|
+
const schnorrPubkey = schnorrPubkeyFromSpki(spkiHex);
|
|
48
|
+
const privateKeyHex = (identity.toJSON())[1];
|
|
49
|
+
const zmailUrl = (process.env["ZMAIL_URL"] ?? config.zmail_url).replace(/\/+$/, "");
|
|
50
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
51
|
+
const challenge = `register:${principal}:${spkiHex}:${schnorrPubkey}:${timestamp}`;
|
|
52
|
+
const msgHash = createHash("sha256").update(challenge, "utf8").digest("hex");
|
|
53
|
+
const sig = bytesToHex(schnorr.sign(msgHash, privateKeyHex));
|
|
54
|
+
const res = await fetch(`${zmailUrl}/v1/register`, {
|
|
55
|
+
method: "POST",
|
|
56
|
+
headers: { "Content-Type": "application/json" },
|
|
57
|
+
body: JSON.stringify({ ai_id: principal, public_key_spki: spkiHex, schnorr_pubkey: schnorrPubkey, timestamp, sig }),
|
|
58
|
+
});
|
|
59
|
+
if (res.status === 201) {
|
|
60
|
+
log.info(`[zcloak-ai] onboard [5/5] zMail registered: ${principal}`);
|
|
61
|
+
return "registered";
|
|
62
|
+
}
|
|
63
|
+
else if (res.status === 409) {
|
|
64
|
+
log.info(`[zcloak-ai] onboard [5/5] zMail already registered`);
|
|
65
|
+
return "already registered";
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const body = await res.json();
|
|
69
|
+
throw new Error(`zMail registration failed: ${String(body["error"] ?? `HTTP ${res.status}`)}`);
|
|
70
|
+
}
|
|
28
71
|
}
|
|
29
72
|
// ---------------------------------------------------------------------------
|
|
30
73
|
// Entry point
|
|
@@ -34,8 +77,23 @@ export async function runOnboard() {
|
|
|
34
77
|
const workspace = resolveOpenClawWorkspace();
|
|
35
78
|
await refreshSkill(workspace);
|
|
36
79
|
await updateToolsMd(workspace);
|
|
37
|
-
await initIdentity();
|
|
38
|
-
await registerZmail();
|
|
80
|
+
const { pemPath, principal } = await initIdentity();
|
|
81
|
+
const zmailStatus = await registerZmail(pemPath);
|
|
39
82
|
log.info("[zcloak-ai] onboard complete.");
|
|
83
|
+
// Print structured summary to stdout so the agent knows exactly what to do next.
|
|
84
|
+
console.log([
|
|
85
|
+
"",
|
|
86
|
+
"=== zCloak.ai Onboard Complete ===",
|
|
87
|
+
`AI ID: ${principal}`,
|
|
88
|
+
`zMail: ${zmailStatus}`,
|
|
89
|
+
`Skill: ${workspace}/skills/zcloak-ai-agent/SKILL.md`,
|
|
90
|
+
"",
|
|
91
|
+
"Next steps for agent:",
|
|
92
|
+
"1. Check owner binding: zcloak-ai register get-owner",
|
|
93
|
+
" - No owner bound → ask user for their .ai name or AI ID to start binding.",
|
|
94
|
+
"2. Check Agent AI Name: zcloak-ai register lookup --ai-id=" + principal,
|
|
95
|
+
" - No Agent AI Name → recommend registering one (e.g. runner#8939.agent).",
|
|
96
|
+
"",
|
|
97
|
+
].join("\n"));
|
|
40
98
|
}
|
|
41
99
|
//# sourceMappingURL=onboard.js.map
|
package/dist/onboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
|
package/dist/pre-check.d.ts
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* - All output goes to stderr (never pollute stdout / command output)
|
|
20
20
|
* - Timeout on npm commands (10s for version query, 60s for install)
|
|
21
21
|
*/
|
|
22
|
+
import { resolveOpenClawWorkspace } from "./workspace.js";
|
|
22
23
|
/** Result returned by preCheck() to the caller (cli.ts) */
|
|
23
24
|
export interface PreCheckResult {
|
|
24
25
|
/** Whether the CLI package was successfully updated (requires re-execution) */
|
|
@@ -26,8 +27,7 @@ export interface PreCheckResult {
|
|
|
26
27
|
/** Human / agent-readable message (empty string when nothing noteworthy happened) */
|
|
27
28
|
message: string;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
export declare function resolveOpenClawWorkspace(): string;
|
|
30
|
+
export { resolveOpenClawWorkspace };
|
|
31
31
|
/** Fetch latest SKILL.md from GitHub and write to <workspace>/skills/zcloak-ai-agent/SKILL.md. */
|
|
32
32
|
export declare function refreshSkill(workspace: string): Promise<void>;
|
|
33
33
|
/** Add or update the zCloak.ai SKILL section in <workspace>/TOOLS.md. */
|
package/dist/pre-check.js
CHANGED
|
@@ -25,6 +25,7 @@ import { execSync, spawnSync } from "child_process";
|
|
|
25
25
|
import { fileURLToPath } from "url";
|
|
26
26
|
import { debug, info } from "./log.js";
|
|
27
27
|
import { configDir as getConfigDir, lastUpdateCheckPath } from "./paths.js";
|
|
28
|
+
import { resolveOpenClawWorkspace } from "./workspace.js";
|
|
28
29
|
/** Environment variable set when a new process is spawned after a CLI upgrade */
|
|
29
30
|
const JUST_UPGRADED_ENV = "ZCLOAK_JUST_UPGRADED";
|
|
30
31
|
// ---------------------------------------------------------------------------
|
|
@@ -184,64 +185,19 @@ const TOOLS_MD_SECTION = [
|
|
|
184
185
|
"- Upgrade URL: https://raw.githubusercontent.com/zCloak-Network/ai-agent/refs/heads/main/SKILL.md",
|
|
185
186
|
"- Used for all zCloak-related operations: zMail, identity creation, signing, 2FA-protected delete, on-chain actions, encryption, etc.",
|
|
186
187
|
].join("\n");
|
|
187
|
-
|
|
188
|
-
export function resolveOpenClawWorkspace() {
|
|
189
|
-
const workspace = process.cwd();
|
|
190
|
-
info(`[zcloak-ai] workspace: ${workspace}`);
|
|
191
|
-
return workspace;
|
|
192
|
-
}
|
|
193
|
-
// ---------------------------------------------------------------------------
|
|
194
|
-
// Reserved: config-file / cwd-walk workspace resolution (may be needed later)
|
|
195
|
-
// ---------------------------------------------------------------------------
|
|
196
|
-
// const OPENCLAW_CONFIG_CANDIDATES = [
|
|
197
|
-
// path.join(homedir(), ".openclaw", "openclaw.json"),
|
|
198
|
-
// path.join(homedir(), ".clawdbot", "clawdbot.json"), // legacy
|
|
199
|
-
// ];
|
|
200
|
-
// const DEFAULT_WORKSPACE = path.join(homedir(), ".openclaw", "workspace");
|
|
201
|
-
//
|
|
202
|
-
// function readWorkspaceFromConfig(configPath: string): string | null {
|
|
203
|
-
// try {
|
|
204
|
-
// const raw = fs.readFileSync(configPath, "utf-8");
|
|
205
|
-
// const json = JSON.parse(raw) as Record<string, unknown>;
|
|
206
|
-
// const agents = json["agents"] as Record<string, unknown> | undefined;
|
|
207
|
-
// const defaults = agents?.["defaults"] as Record<string, unknown> | undefined;
|
|
208
|
-
// const workspace = defaults?.["workspace"];
|
|
209
|
-
// if (typeof workspace === "string" && workspace.length > 0) return workspace;
|
|
210
|
-
// return null;
|
|
211
|
-
// } catch { return null; }
|
|
212
|
-
// }
|
|
213
|
-
//
|
|
214
|
-
// function resolveWorkspaceFromCwd(): string | null {
|
|
215
|
-
// const MARKERS = [".clawhub", ".clawdhub"];
|
|
216
|
-
// let dir = process.cwd();
|
|
217
|
-
// while (true) {
|
|
218
|
-
// for (const marker of MARKERS) {
|
|
219
|
-
// if (fs.existsSync(path.join(dir, marker))) return dir;
|
|
220
|
-
// }
|
|
221
|
-
// const parent = path.dirname(dir);
|
|
222
|
-
// if (parent === dir) break;
|
|
223
|
-
// dir = parent;
|
|
224
|
-
// }
|
|
225
|
-
// return null;
|
|
226
|
-
// }
|
|
227
|
-
//
|
|
228
|
-
// Full priority chain when process.cwd() is not sufficient:
|
|
229
|
-
// 1. OPENCLAW_WORKDIR / CLAWHUB_WORKDIR env var
|
|
230
|
-
// 2. resolveWorkspaceFromCwd() — walk up from cwd looking for .clawhub/
|
|
231
|
-
// 3. readWorkspaceFromConfig() — ~/.openclaw/openclaw.json → agents.defaults.workspace
|
|
232
|
-
// 4. readWorkspaceFromConfig() — ~/.clawdbot/clawdbot.json (legacy)
|
|
233
|
-
// 5. DEFAULT_WORKSPACE — ~/.openclaw/workspace
|
|
188
|
+
export { resolveOpenClawWorkspace };
|
|
234
189
|
/** Fetch latest SKILL.md from GitHub and write to <workspace>/skills/zcloak-ai-agent/SKILL.md. */
|
|
235
190
|
export async function refreshSkill(workspace) {
|
|
236
191
|
const targetDir = path.join(workspace, "skills", "zcloak-ai-agent");
|
|
237
192
|
const targetFile = path.join(targetDir, "SKILL.md");
|
|
193
|
+
debug("post-upgrade refreshSkill fetching", SKILL_REMOTE_URL);
|
|
238
194
|
const res = await fetch(SKILL_REMOTE_URL);
|
|
239
195
|
if (!res.ok)
|
|
240
196
|
throw new Error(`Failed to fetch SKILL.md: ${res.status}`);
|
|
241
197
|
const content = await res.text();
|
|
242
198
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
243
199
|
fs.writeFileSync(targetFile, content, "utf-8");
|
|
244
|
-
info(`[zcloak-ai] SKILL.md → ${targetFile}`);
|
|
200
|
+
info(`[zcloak-ai] SKILL.md written (${content.length} bytes) → ${targetFile}`);
|
|
245
201
|
}
|
|
246
202
|
/** Add or update the zCloak.ai SKILL section in <workspace>/TOOLS.md. */
|
|
247
203
|
export async function updateToolsMd(workspace) {
|
|
@@ -251,11 +207,12 @@ export async function updateToolsMd(workspace) {
|
|
|
251
207
|
existing = fs.readFileSync(toolsPath, "utf-8");
|
|
252
208
|
}
|
|
253
209
|
catch { /* not yet created */ }
|
|
254
|
-
const
|
|
210
|
+
const hadSection = existing.includes("## zCloak.ai SKILL");
|
|
211
|
+
const updated = hadSection
|
|
255
212
|
? existing.replace(/## zCloak\.ai SKILL[\s\S]*?(?=\n## |\s*$)/, TOOLS_MD_SECTION)
|
|
256
213
|
: (existing ? `${existing.trimEnd()}\n\n${TOOLS_MD_SECTION}\n` : `${TOOLS_MD_SECTION}\n`);
|
|
257
214
|
fs.writeFileSync(toolsPath, updated, "utf-8");
|
|
258
|
-
info(`[zcloak-ai] TOOLS.md → ${toolsPath}`);
|
|
215
|
+
info(`[zcloak-ai] TOOLS.md ${hadSection ? "updated" : "created"} → ${toolsPath}`);
|
|
259
216
|
}
|
|
260
217
|
// ---------------------------------------------------------------------------
|
|
261
218
|
// Post-upgrade entry point
|
|
@@ -268,22 +225,23 @@ export async function updateToolsMd(workspace) {
|
|
|
268
225
|
* newly installed version, never on stale code.
|
|
269
226
|
*/
|
|
270
227
|
async function runPostUpgradeActions() {
|
|
271
|
-
|
|
228
|
+
info("[zcloak-ai] post-upgrade [1/3] workspace: resolving...");
|
|
272
229
|
const workspace = resolveOpenClawWorkspace();
|
|
273
|
-
info(
|
|
230
|
+
info("[zcloak-ai] post-upgrade [2/3] SKILL.md: refreshing...");
|
|
274
231
|
try {
|
|
275
232
|
await refreshSkill(workspace);
|
|
276
233
|
}
|
|
277
234
|
catch (e) {
|
|
278
|
-
|
|
235
|
+
info(`[zcloak-ai] post-upgrade [2/3] SKILL.md: failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
279
236
|
}
|
|
237
|
+
info("[zcloak-ai] post-upgrade [3/3] TOOLS.md: updating...");
|
|
280
238
|
try {
|
|
281
239
|
await updateToolsMd(workspace);
|
|
282
240
|
}
|
|
283
241
|
catch (e) {
|
|
284
|
-
|
|
242
|
+
info(`[zcloak-ai] post-upgrade [3/3] TOOLS.md: failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
285
243
|
}
|
|
286
|
-
|
|
244
|
+
info("[zcloak-ai] post-upgrade done.");
|
|
287
245
|
}
|
|
288
246
|
/**
|
|
289
247
|
* Run the pre-flight update check.
|
package/dist/pre-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-check.js","sourceRoot":"","sources":["../src/pre-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pre-check.js","sourceRoot":"","sources":["../src/pre-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Workspace Resolution
|
|
3
|
+
*
|
|
4
|
+
* Locates the OpenClaw workspace directory using the following priority:
|
|
5
|
+
* 1. OPENCLAW_WORKDIR / CLAWHUB_WORKDIR env var
|
|
6
|
+
* 2. Walk up from cwd looking for .clawhub/ marker (agent-spawned processes)
|
|
7
|
+
* 3. ~/.openclaw/openclaw.json → agents.defaults.workspace (direct terminal use)
|
|
8
|
+
* 4. ~/.clawdbot/clawdbot.json → agents.defaults.workspace (legacy)
|
|
9
|
+
* 5. ~/.openclaw/workspace (fallback)
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveOpenClawWorkspace(): string;
|
|
12
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Workspace Resolution
|
|
3
|
+
*
|
|
4
|
+
* Locates the OpenClaw workspace directory using the following priority:
|
|
5
|
+
* 1. OPENCLAW_WORKDIR / CLAWHUB_WORKDIR env var
|
|
6
|
+
* 2. Walk up from cwd looking for .clawhub/ marker (agent-spawned processes)
|
|
7
|
+
* 3. ~/.openclaw/openclaw.json → agents.defaults.workspace (direct terminal use)
|
|
8
|
+
* 4. ~/.clawdbot/clawdbot.json → agents.defaults.workspace (legacy)
|
|
9
|
+
* 5. ~/.openclaw/workspace (fallback)
|
|
10
|
+
*/
|
|
11
|
+
import fs from "fs";
|
|
12
|
+
import path from "path";
|
|
13
|
+
import { homedir } from "os";
|
|
14
|
+
import { info } from "./log.js";
|
|
15
|
+
const OPENCLAW_CONFIG_CANDIDATES = [
|
|
16
|
+
path.join(homedir(), ".openclaw", "openclaw.json"),
|
|
17
|
+
path.join(homedir(), ".clawdbot", "clawdbot.json"), // legacy
|
|
18
|
+
];
|
|
19
|
+
const DEFAULT_WORKSPACE = path.join(homedir(), ".openclaw", "workspace");
|
|
20
|
+
function readWorkspaceFromConfig(configPath) {
|
|
21
|
+
try {
|
|
22
|
+
const raw = fs.readFileSync(configPath, "utf-8");
|
|
23
|
+
const json = JSON.parse(raw);
|
|
24
|
+
const agents = json["agents"];
|
|
25
|
+
const defaults = agents?.["defaults"];
|
|
26
|
+
const workspace = defaults?.["workspace"];
|
|
27
|
+
if (typeof workspace === "string" && workspace.length > 0)
|
|
28
|
+
return workspace;
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Walk up from cwd looking for a .clawhub/.clawdhub marker directory. */
|
|
36
|
+
function resolveWorkspaceFromCwd() {
|
|
37
|
+
const MARKERS = [".clawhub", ".clawdhub"];
|
|
38
|
+
let dir = process.cwd();
|
|
39
|
+
while (true) {
|
|
40
|
+
for (const marker of MARKERS) {
|
|
41
|
+
if (fs.existsSync(path.join(dir, marker)))
|
|
42
|
+
return dir;
|
|
43
|
+
}
|
|
44
|
+
const parent = path.dirname(dir);
|
|
45
|
+
if (parent === dir)
|
|
46
|
+
break;
|
|
47
|
+
dir = parent;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
export function resolveOpenClawWorkspace() {
|
|
52
|
+
const envWorkdir = process.env["OPENCLAW_WORKDIR"] ??
|
|
53
|
+
process.env["CLAWHUB_WORKDIR"] ??
|
|
54
|
+
process.env["CLAWDHUB_WORKDIR"];
|
|
55
|
+
if (envWorkdir) {
|
|
56
|
+
info(`[zcloak-ai] workspace (env): ${envWorkdir}`);
|
|
57
|
+
return envWorkdir;
|
|
58
|
+
}
|
|
59
|
+
const cwdWorkspace = resolveWorkspaceFromCwd();
|
|
60
|
+
if (cwdWorkspace) {
|
|
61
|
+
info(`[zcloak-ai] workspace (cwd): ${cwdWorkspace}`);
|
|
62
|
+
return cwdWorkspace;
|
|
63
|
+
}
|
|
64
|
+
for (const configPath of OPENCLAW_CONFIG_CANDIDATES) {
|
|
65
|
+
const workspace = readWorkspaceFromConfig(configPath);
|
|
66
|
+
if (workspace) {
|
|
67
|
+
info(`[zcloak-ai] workspace (config): ${workspace}`);
|
|
68
|
+
return workspace;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
info(`[zcloak-ai] workspace (fallback): ${DEFAULT_WORKSPACE}`);
|
|
72
|
+
return DEFAULT_WORKSPACE;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|