@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 CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- version: v1.0.50
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 this batch script once, parse the combined output, then immediately reply to the user. Do NOT pre-fetch any sub-skill files during onboarding.
32
+ Run once, parse the output, then immediately reply to the user.
33
33
 
34
34
  ```bash
35
- command -v zcloak-ai >/dev/null 2>&1 || npm install -g @zcloak/ai-agent@latest \
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
- Report: AI ID (from identity output) · zMail status · owner binding status.
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 (show existing or generate new)
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 (show existing or generate new)
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, refreshSkill, updateToolsMd } from "./pre-check.js";
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
- // Steps (stubsimplement one by one)
24
+ // Step 4Initialize identity
20
25
  // ---------------------------------------------------------------------------
21
- /** Show existing identity or generate a new one. TODO: implement */
26
+ /** Load existing identity or generate a new one. Returns pemPath and principal. */
22
27
  async function initIdentity() {
23
- // TODO
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
- /** Register this agent with the zMail server. TODO: implement */
26
- async function registerZmail() {
27
- // TODO
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
@@ -1 +1 @@
1
- {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEvF,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,oEAAoE;AACpE,KAAK,UAAU,YAAY;IACzB,OAAO;AACT,CAAC;AAED,iEAAiE;AACjE,KAAK,UAAU,aAAa;IAC1B,OAAO;AACT,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,wBAAwB,EAAE,CAAC;IAE7C,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9B,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,aAAa,EAAE,CAAC;IAEtB,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"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"}
@@ -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
- /** Returns the OpenClaw workspace — inherited cwd from the agent process. */
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
- /** Returns the OpenClaw workspace — inherited cwd from the agent process. */
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 updated = existing.includes("## zCloak.ai SKILL")
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
- debug("pre-check running post-upgrade actions (new version)");
228
+ info("[zcloak-ai] post-upgrade [1/3] workspace: resolving...");
272
229
  const workspace = resolveOpenClawWorkspace();
273
- info(`[zcloak-ai] post-upgrade workspace: ${workspace}`);
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
- debug("post-upgrade refreshSkill failed", e);
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
- debug("post-upgrade updateToolsMd failed", e);
242
+ info(`[zcloak-ai] post-upgrade [3/3] TOOLS.md: failed — ${e instanceof Error ? e.message : String(e)}`);
285
243
  }
286
- debug("pre-check post-upgrade actions completed");
244
+ info("[zcloak-ai] post-upgrade done.");
287
245
  }
288
246
  /**
289
247
  * Run the pre-flight update check.
@@ -1 +1 @@
1
- {"version":3,"file":"pre-check.js","sourceRoot":"","sources":["../src/pre-check.ts"],"names":[],"mappings":"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"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zcloak/ai-agent",
3
- "version": "1.0.53",
3
+ "version": "1.0.55",
4
4
  "description": "zCloak.ai Agent CLI — sign, verify, register",
5
5
  "bin": {
6
6
  "zcloak-ai": "./dist/cli.js"