@yesod/cli 0.0.1 → 0.1.0

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/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @yesod/cli
2
+
3
+ CLI for [Yesod](https://github.com/eryv-ai/yesod) — orchestration toolkit that makes AI agents delegate better and lets humans see why.
4
+
5
+ ## Commands
6
+
7
+ - `yesod init` — generate device identity, detect OpenClaw gateway, write MCP server configuration
8
+ - `yesod run` — start the Yesod MCP server process (connects to gateway, exposes tools over stdio)
9
+ - `yesod status` — connect to gateway and show active sessions and cost summary
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ npm install -g @yesod/cli
15
+ yesod init --gateway ws://127.0.0.1:3578
16
+ yesod run
17
+ ```
18
+
19
+ ## Status
20
+
21
+ Phase 0 complete. All commands implemented.
22
+
23
+ ## License
24
+
25
+ MIT
package/dist/index.js CHANGED
@@ -4,23 +4,135 @@
4
4
  import { Command } from "commander";
5
5
 
6
6
  // src/commands/init.ts
7
+ import { existsSync, writeFileSync, mkdirSync } from "fs";
8
+ import { join } from "path";
9
+ import { homedir } from "os";
7
10
  function registerInitCommand(program2) {
8
- program2.command("init").description("Initialize yesod in the current project").action(() => {
9
- console.log("yesod init \u2014 not yet implemented");
11
+ program2.command("init").description("Initialize yesod in the current project").option("-g, --gateway <url>", "OpenClaw gateway URL", "ws://127.0.0.1:3578").option("-a, --agent <id>", "Default agent ID", "orchestrator").action(async (opts) => {
12
+ console.log("[yesod] Initializing...");
13
+ const gatewayUrl = opts.gateway;
14
+ console.log(`[yesod] Gateway: ${gatewayUrl}`);
15
+ try {
16
+ const { loadOrCreateIdentity } = await import("@yesod/openclaw");
17
+ const yesodDir2 = join(homedir(), ".yesod");
18
+ if (!existsSync(yesodDir2)) {
19
+ mkdirSync(yesodDir2, { recursive: true });
20
+ }
21
+ const identityPath = join(yesodDir2, "device.json");
22
+ const identity = loadOrCreateIdentity(identityPath);
23
+ console.log(`[yesod] Device identity: ${identity.deviceId.slice(0, 16)}...`);
24
+ console.log(`[yesod] Identity saved to: ${identityPath}`);
25
+ } catch (err) {
26
+ console.error(
27
+ "[yesod] Failed to generate device identity:",
28
+ err instanceof Error ? err.message : err
29
+ );
30
+ }
31
+ const yesodDir = join(homedir(), ".yesod");
32
+ const mcpConfig = {
33
+ yesod: {
34
+ command: "node",
35
+ args: [join(__dirname, "..", "node_modules", "@yesod", "openclaw", "dist", "mcp-entry.js")],
36
+ env: {
37
+ YESOD_GATEWAY_URL: gatewayUrl,
38
+ YESOD_AGENT_ID: opts.agent
39
+ }
40
+ }
41
+ };
42
+ const mcpConfigPath = join(yesodDir, "mcp.json");
43
+ writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
44
+ console.log(`[yesod] MCP config written to: ${mcpConfigPath}`);
45
+ console.log("[yesod] Done! Use 'yesod run' to start the MCP server.");
10
46
  });
11
47
  }
12
48
 
13
49
  // src/commands/run.ts
50
+ import { fork } from "child_process";
51
+ import { join as join2 } from "path";
52
+ import { existsSync as existsSync2, readFileSync } from "fs";
53
+ import { homedir as homedir2 } from "os";
14
54
  function registerRunCommand(program2) {
15
- program2.command("run").description("Run a yesod workflow or replay").action(() => {
16
- console.log("yesod run \u2014 not yet implemented");
55
+ program2.command("run").description("Start the Yesod MCP server").option("-g, --gateway <url>", "OpenClaw gateway URL").action(async (opts) => {
56
+ const configPath = join2(homedir2(), ".yesod", "mcp.json");
57
+ let config = {};
58
+ if (existsSync2(configPath)) {
59
+ config = JSON.parse(readFileSync(configPath, "utf-8"));
60
+ }
61
+ const mcpEntry = join2(
62
+ __dirname,
63
+ "..",
64
+ "node_modules",
65
+ "@yesod",
66
+ "openclaw",
67
+ "dist",
68
+ "mcp-entry.js"
69
+ );
70
+ if (!existsSync2(mcpEntry)) {
71
+ console.error("[yesod] MCP entry point not found. Run 'yesod init' first.");
72
+ process.exit(1);
73
+ }
74
+ const gatewayUrl = opts.gateway ?? config?.yesod?.env?.YESOD_GATEWAY_URL ?? "ws://127.0.0.1:3578";
75
+ console.log("[yesod] Starting MCP server...");
76
+ console.log(`[yesod] Gateway: ${gatewayUrl}`);
77
+ const child = fork(mcpEntry, [], {
78
+ env: {
79
+ ...process.env,
80
+ YESOD_GATEWAY_URL: gatewayUrl
81
+ },
82
+ stdio: ["pipe", "pipe", "pipe", "ipc"]
83
+ });
84
+ child.stdout?.pipe(process.stdout);
85
+ child.stderr?.pipe(process.stderr);
86
+ child.on("exit", (code) => {
87
+ console.log(`[yesod] MCP server exited with code ${code}`);
88
+ process.exit(code ?? 0);
89
+ });
90
+ process.on("SIGINT", () => {
91
+ child.kill("SIGINT");
92
+ });
93
+ process.on("SIGTERM", () => {
94
+ child.kill("SIGTERM");
95
+ });
17
96
  });
18
97
  }
19
98
 
20
99
  // src/commands/status.ts
21
100
  function registerStatusCommand(program2) {
22
- program2.command("status").description("Show status of active yesod sessions and workflows").action(() => {
23
- console.log("yesod status \u2014 not yet implemented");
101
+ program2.command("status").description("Show status of active yesod sessions and workflows").option("-g, --gateway <url>", "OpenClaw gateway URL", "ws://127.0.0.1:3578").action(async (opts) => {
102
+ console.log("[yesod] Connecting to gateway...");
103
+ try {
104
+ const { GatewayWebSocketClient } = await import("@yesod/openclaw");
105
+ const client = new GatewayWebSocketClient({
106
+ gatewayUrl: opts.gateway
107
+ });
108
+ await client.connect();
109
+ console.log("[yesod] Connected.\n");
110
+ const sessionsRes = await client.request("sessions.list");
111
+ const sessions = sessionsRes.payload?.sessions ?? [];
112
+ console.log(`Active sessions: ${sessions.length}`);
113
+ for (const s of sessions) {
114
+ console.log(
115
+ ` - ${s.id ?? s.sessionId} (${s.status ?? "unknown"})`
116
+ );
117
+ }
118
+ const costRes = await client.request("usage.cost");
119
+ if (costRes.ok && costRes.payload) {
120
+ const totals = costRes.payload.totals;
121
+ if (totals) {
122
+ console.log(
123
+ `
124
+ Cost: $${(totals.totalCost ?? 0).toFixed(4)} | ${(totals.totalTokens ?? 0).toLocaleString()} tokens`
125
+ );
126
+ }
127
+ }
128
+ await client.disconnect();
129
+ } catch (err) {
130
+ console.error(
131
+ "[yesod] Failed to connect:",
132
+ err instanceof Error ? err.message : err
133
+ );
134
+ process.exit(1);
135
+ }
24
136
  });
25
137
  }
26
138
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/commands/init.ts","../src/commands/run.ts","../src/commands/status.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { registerInitCommand } from \"./commands/init.js\";\nimport { registerRunCommand } from \"./commands/run.js\";\nimport { registerStatusCommand } from \"./commands/status.js\";\n\nconst program = new Command();\n\nprogram\n .name(\"yesod\")\n .description(\"Orchestration and observability for AI agent workflows\")\n .version(\"0.0.1\");\n\nregisterInitCommand(program);\nregisterRunCommand(program);\nregisterStatusCommand(program);\n\nprogram.parse();\n","import type { Command } from \"commander\";\n\nexport function registerInitCommand(program: Command): void {\n program\n .command(\"init\")\n .description(\"Initialize yesod in the current project\")\n .action(() => {\n console.log(\"yesod init — not yet implemented\");\n });\n}\n","import type { Command } from \"commander\";\n\nexport function registerRunCommand(program: Command): void {\n program\n .command(\"run\")\n .description(\"Run a yesod workflow or replay\")\n .action(() => {\n console.log(\"yesod run — not yet implemented\");\n });\n}\n","import type { Command } from \"commander\";\n\nexport function registerStatusCommand(program: Command): void {\n program\n .command(\"status\")\n .description(\"Show status of active yesod sessions and workflows\")\n .action(() => {\n console.log(\"yesod status — not yet implemented\");\n });\n}\n"],"mappings":";;;AAAA,SAAS,eAAe;;;ACEjB,SAAS,oBAAoBA,UAAwB;AAC1D,EAAAA,SACG,QAAQ,MAAM,EACd,YAAY,yCAAyC,EACrD,OAAO,MAAM;AACZ,YAAQ,IAAI,uCAAkC;AAAA,EAChD,CAAC;AACL;;;ACPO,SAAS,mBAAmBC,UAAwB;AACzD,EAAAA,SACG,QAAQ,KAAK,EACb,YAAY,gCAAgC,EAC5C,OAAO,MAAM;AACZ,YAAQ,IAAI,sCAAiC;AAAA,EAC/C,CAAC;AACL;;;ACPO,SAAS,sBAAsBC,UAAwB;AAC5D,EAAAA,SACG,QAAQ,QAAQ,EAChB,YAAY,oDAAoD,EAChE,OAAO,MAAM;AACZ,YAAQ,IAAI,yCAAoC;AAAA,EAClD,CAAC;AACL;;;AHJA,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,OAAO,EACZ,YAAY,wDAAwD,EACpE,QAAQ,OAAO;AAElB,oBAAoB,OAAO;AAC3B,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAE7B,QAAQ,MAAM;","names":["program","program","program"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/commands/init.ts","../src/commands/run.ts","../src/commands/status.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { registerInitCommand } from \"./commands/init.js\";\nimport { registerRunCommand } from \"./commands/run.js\";\nimport { registerStatusCommand } from \"./commands/status.js\";\n\nconst program = new Command();\n\nprogram\n .name(\"yesod\")\n .description(\"Orchestration and observability for AI agent workflows\")\n .version(\"0.0.1\");\n\nregisterInitCommand(program);\nregisterRunCommand(program);\nregisterStatusCommand(program);\n\nprogram.parse();\n","import type { Command } from \"commander\";\nimport { existsSync, writeFileSync, mkdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nexport function registerInitCommand(program: Command): void {\n program\n .command(\"init\")\n .description(\"Initialize yesod in the current project\")\n .option(\"-g, --gateway <url>\", \"OpenClaw gateway URL\", \"ws://127.0.0.1:3578\")\n .option(\"-a, --agent <id>\", \"Default agent ID\", \"orchestrator\")\n .action(async (opts) => {\n console.log(\"[yesod] Initializing...\");\n\n // 1. Check for gateway connection\n const gatewayUrl = opts.gateway;\n console.log(`[yesod] Gateway: ${gatewayUrl}`);\n\n // 2. Generate device identity\n try {\n const { loadOrCreateIdentity } = await import(\"@yesod/openclaw\");\n const yesodDir = join(homedir(), \".yesod\");\n if (!existsSync(yesodDir)) {\n mkdirSync(yesodDir, { recursive: true });\n }\n\n const identityPath = join(yesodDir, \"device.json\");\n const identity = loadOrCreateIdentity(identityPath);\n console.log(`[yesod] Device identity: ${identity.deviceId.slice(0, 16)}...`);\n console.log(`[yesod] Identity saved to: ${identityPath}`);\n } catch (err) {\n console.error(\n \"[yesod] Failed to generate device identity:\",\n err instanceof Error ? err.message : err,\n );\n }\n\n // 3. Write MCP configuration\n const yesodDir = join(homedir(), \".yesod\");\n const mcpConfig = {\n yesod: {\n command: \"node\",\n args: [join(__dirname, \"..\", \"node_modules\", \"@yesod\", \"openclaw\", \"dist\", \"mcp-entry.js\")],\n env: {\n YESOD_GATEWAY_URL: gatewayUrl,\n YESOD_AGENT_ID: opts.agent,\n },\n },\n };\n\n const mcpConfigPath = join(yesodDir, \"mcp.json\");\n writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));\n console.log(`[yesod] MCP config written to: ${mcpConfigPath}`);\n console.log(\"[yesod] Done! Use 'yesod run' to start the MCP server.\");\n });\n}\n","import type { Command } from \"commander\";\nimport { fork } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\n\nexport function registerRunCommand(program: Command): void {\n program\n .command(\"run\")\n .description(\"Start the Yesod MCP server\")\n .option(\"-g, --gateway <url>\", \"OpenClaw gateway URL\")\n .action(async (opts) => {\n // Load config\n const configPath = join(homedir(), \".yesod\", \"mcp.json\");\n let config: Record<string, unknown> = {};\n if (existsSync(configPath)) {\n config = JSON.parse(readFileSync(configPath, \"utf-8\"));\n }\n\n const mcpEntry = join(\n __dirname,\n \"..\",\n \"node_modules\",\n \"@yesod\",\n \"openclaw\",\n \"dist\",\n \"mcp-entry.js\",\n );\n\n if (!existsSync(mcpEntry)) {\n console.error(\"[yesod] MCP entry point not found. Run 'yesod init' first.\");\n process.exit(1);\n }\n\n const gatewayUrl =\n opts.gateway ??\n (config as Record<string, Record<string, Record<string, string>>>)\n ?.yesod?.env?.YESOD_GATEWAY_URL ??\n \"ws://127.0.0.1:3578\";\n\n console.log(\"[yesod] Starting MCP server...\");\n console.log(`[yesod] Gateway: ${gatewayUrl}`);\n\n const child = fork(mcpEntry, [], {\n env: {\n ...process.env,\n YESOD_GATEWAY_URL: gatewayUrl,\n },\n stdio: [\"pipe\", \"pipe\", \"pipe\", \"ipc\"],\n });\n\n child.stdout?.pipe(process.stdout);\n child.stderr?.pipe(process.stderr);\n\n child.on(\"exit\", (code) => {\n console.log(`[yesod] MCP server exited with code ${code}`);\n process.exit(code ?? 0);\n });\n\n process.on(\"SIGINT\", () => {\n child.kill(\"SIGINT\");\n });\n\n process.on(\"SIGTERM\", () => {\n child.kill(\"SIGTERM\");\n });\n });\n}\n","import type { Command } from \"commander\";\n\nexport function registerStatusCommand(program: Command): void {\n program\n .command(\"status\")\n .description(\"Show status of active yesod sessions and workflows\")\n .option(\"-g, --gateway <url>\", \"OpenClaw gateway URL\", \"ws://127.0.0.1:3578\")\n .action(async (opts) => {\n console.log(\"[yesod] Connecting to gateway...\");\n\n try {\n const { GatewayWebSocketClient } = await import(\"@yesod/openclaw\");\n const client = new GatewayWebSocketClient({\n gatewayUrl: opts.gateway,\n });\n\n await client.connect();\n console.log(\"[yesod] Connected.\\n\");\n\n // Get sessions\n const sessionsRes = await client.request(\"sessions.list\");\n const sessions = (sessionsRes.payload?.sessions ?? []) as Array<\n Record<string, unknown>\n >;\n console.log(`Active sessions: ${sessions.length}`);\n for (const s of sessions) {\n console.log(\n ` - ${s.id ?? s.sessionId} (${s.status ?? \"unknown\"})`,\n );\n }\n\n // Get cost\n const costRes = await client.request(\"usage.cost\");\n if (costRes.ok && costRes.payload) {\n const totals = costRes.payload.totals as Record<string, number>;\n if (totals) {\n console.log(\n `\\nCost: $${(totals.totalCost ?? 0).toFixed(4)} | ${(totals.totalTokens ?? 0).toLocaleString()} tokens`,\n );\n }\n }\n\n await client.disconnect();\n } catch (err) {\n console.error(\n \"[yesod] Failed to connect:\",\n err instanceof Error ? err.message : err,\n );\n process.exit(1);\n }\n });\n}\n"],"mappings":"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","names":["program","yesodDir","join","existsSync","homedir","program","program"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yesod/cli",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/eryv-ai/yesod.git",
@@ -10,19 +10,22 @@
10
10
  "bin": {
11
11
  "yesod": "./dist/index.js"
12
12
  },
13
- "files": ["dist"],
13
+ "files": [
14
+ "dist"
15
+ ],
14
16
  "publishConfig": {
15
17
  "access": "public"
16
18
  },
17
19
  "scripts": {
18
20
  "build": "tsup",
19
21
  "dev": "tsup --watch",
20
- "test": "vitest run",
22
+ "test": "vitest run --passWithNoTests",
21
23
  "clean": "rm -rf dist"
22
24
  },
23
25
  "dependencies": {
24
26
  "@yesod/core": "workspace:*",
25
27
  "@yesod/observer": "workspace:*",
28
+ "@yesod/openclaw": "workspace:*",
26
29
  "commander": "^13.1.0"
27
30
  },
28
31
  "devDependencies": {