@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 +25 -0
- package/dist/index.js +118 -6
- package/dist/index.js.map +1 -1
- package/package.json +6 -3
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
|
|
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("
|
|
16
|
-
|
|
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
|
|
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
|
|
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": [
|
|
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": {
|