@wabery/cli 0.19.0 → 0.20.2

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.
@@ -0,0 +1,83 @@
1
+ import assert from "node:assert/strict";
2
+ import { test } from "node:test";
3
+ import { WaberyApiClient } from "./api-client.js";
4
+ import { executeMetaManagementOperation, META_MANAGEMENT_OPERATIONS, } from "./meta-business-agent-operations.js";
5
+ test("management registry covers the canonical operations and orchestration extensions", () => {
6
+ assert.equal(META_MANAGEMENT_OPERATIONS.length, 64);
7
+ assert.equal(new Set(META_MANAGEMENT_OPERATIONS.map((item) => item.name)).size, 64);
8
+ assert.equal(META_MANAGEMENT_OPERATIONS.some((item) => item.method === "DELETE" && item.path === "/business-agents"), false);
9
+ assert.equal(META_MANAGEMENT_OPERATIONS.some((item) => item.method === "GET" && item.path.endsWith("thread-control")), false);
10
+ });
11
+ test("every management operation reaches the real API client with its scoped method", async () => {
12
+ const previous = globalThis.fetch;
13
+ const calls = [];
14
+ globalThis.fetch = async (url, init) => {
15
+ calls.push({ url: new URL(String(url)), init: init ?? {} });
16
+ return new Response(JSON.stringify({ id: "fixture" }), { status: 200 });
17
+ };
18
+ try {
19
+ const client = new WaberyApiClient({
20
+ apiKey: "wab_live_synthetic",
21
+ baseUrl: "http://127.0.0.1:15874/api/v1",
22
+ });
23
+ for (const item of META_MANAGEMENT_OPERATIONS) {
24
+ const file = new FormData();
25
+ file.set("file_name", "guide.pdf");
26
+ file.set("file", new Blob(["synthetic"]), "guide.pdf");
27
+ await executeMetaManagementOperation(client, item.name, {
28
+ operationId: item.requiresOperationId
29
+ ? `operation-${item.name}`
30
+ : undefined,
31
+ parameters: {
32
+ business_agent_id: "ba1",
33
+ connector_id: "c1",
34
+ tool_id: "t1",
35
+ remote_id: "remote1",
36
+ channel_id: "ch1",
37
+ contact_id: "cc1",
38
+ },
39
+ body: item.name === "files.upload" ? file : { marker: "synthetic" },
40
+ });
41
+ const last = calls.at(-1);
42
+ assert.ok(last);
43
+ assert.equal(last.init.method, item.method);
44
+ assert.equal(last.url.origin, "http://127.0.0.1:15874");
45
+ assert.match(last.url.pathname, /^\/api\/v1\/business-agents/);
46
+ assert.equal(last.url.pathname.includes(":"), false);
47
+ if (item.name === "files.upload") {
48
+ assert.ok(last.init.body instanceof FormData);
49
+ assert.equal(new Headers(last.init.headers).has("content-type"), false);
50
+ }
51
+ if (item.requiresOperationId)
52
+ assert.equal(new Headers(last.init.headers).get("idempotency-key"), `operation-${item.name}`);
53
+ }
54
+ assert.equal(calls.length, 64);
55
+ await executeMetaManagementOperation(client, "eval.summary", {
56
+ parameters: { business_agent_id: "ba1" },
57
+ query: { summary_id: "s1,s2" },
58
+ });
59
+ assert.equal(calls.at(-1)?.url.search, "?business_agent_id=ba1&summary_id=s1%2Cs2&operation=summary");
60
+ await executeMetaManagementOperation(client, "skills.create", {
61
+ operationId: "skills-create-body-test",
62
+ parameters: { business_agent_id: "ba1" },
63
+ body: { skill: "Help" },
64
+ });
65
+ assert.deepEqual(JSON.parse(String(calls.at(-1)?.init.body)), {
66
+ skill: "Help",
67
+ business_agent_id: "ba1",
68
+ });
69
+ await assert.rejects(executeMetaManagementOperation(client, "settings.get", {
70
+ parameters: { business_agent_id: ".." },
71
+ }), /Required identifier/);
72
+ await assert.rejects(executeMetaManagementOperation(client, "skills.create", {
73
+ operationId: "skills-create-conflict-test",
74
+ parameters: { business_agent_id: "ba1" },
75
+ body: { business_agent_id: "ba2" },
76
+ }), /Conflicting identifier/);
77
+ await assert.rejects(executeMetaManagementOperation(client, "unknown.remote.call", {}), /Unknown Meta/);
78
+ }
79
+ finally {
80
+ globalThis.fetch = previous;
81
+ }
82
+ });
83
+ //# sourceMappingURL=meta-business-agent-operations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-business-agent-operations.test.js","sourceRoot":"","sources":["../src/meta-business-agent-operations.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "name": "@wabery/cli",
3
3
  "mcpName": "com.wabery/mcp",
4
- "version": "0.19.0",
4
+ "version": "0.20.2",
5
5
  "type": "module",
6
6
  "description": "Wabery CLI and MCP server for building and operating WhatsApp AI agents.",
7
7
  "homepage": "https://wabery.com/docs/mcp/",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/andresfyi/wabery",
11
+ "directory": "packages/wabery-cli"
12
+ },
8
13
  "license": "MIT",
9
14
  "keywords": [
10
15
  "wabery",
@@ -48,18 +53,19 @@
48
53
  },
49
54
  "dependencies": {
50
55
  "@modelcontextprotocol/sdk": "^1.26.0",
51
- "zod": "^3.24.1"
56
+ "zod": "^3.25.76"
52
57
  },
53
58
  "devDependencies": {
54
- "@types/node": "^22.10.5",
55
- "tsx": "^4.20.5",
59
+ "@types/node": "^22.18.8",
60
+ "tsx": "^4.20.6",
56
61
  "typescript": "^7.0.2"
57
62
  },
58
63
  "scripts": {
59
64
  "build": "tsc",
60
65
  "check-types": "tsc --noEmit",
61
66
  "mcp": "tsx src/cli.ts mcp",
62
- "test": "pnpm test:mcp && pnpm test:cli",
67
+ "test": "pnpm test:mcp && pnpm test:cli && pnpm test:meta-contracts",
68
+ "test:meta-contracts": "pnpm build && node --test dist/meta-business-agent-operations.test.js",
63
69
  "test:mcp": "pnpm build && node scripts/smoke-mcp.mjs",
64
70
  "test:cli": "pnpm build && node scripts/smoke-cli.mjs"
65
71
  }