Files
NetMesh/electron/capabilities/catalog/integrity.test.cjs
zhaolei 3c72efcb7f
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
[Init] Initial commit - NetMesh terminal manager
2026-09-13 18:24:01 +08:00

87 lines
2.6 KiB
JavaScript

"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const { ALL_CAPABILITIES } = require("../index.cjs");
const { CAPABILITY_STATUS, CAPABILITY_SURFACES } = require("../constants.cjs");
const { getCliRpcMethod } = require("../adapters/cliAdapter.cjs");
const IMPLEMENTED_CLI_COMMANDS = [
["status"],
["env"],
["session"],
["exec"],
["job-start"],
["job-poll"],
["job-stop"],
["sftp", "list"],
["sftp", "read"],
["sftp", "write"],
["sftp", "download"],
["sftp", "upload"],
["sftp", "mkdir"],
["sftp", "delete"],
["sftp", "rename"],
["sftp", "stat"],
["sftp", "chmod"],
["sftp", "home"],
["cancel"],
["resume"],
["vault", "host", "get"],
["vault", "host", "open"],
["vault", "host-notes", "get"],
["vault", "host-notes", "set"],
["snippets", "list"],
["snippets", "get"],
["snippets", "run"],
["snippets", "create"],
["snippets", "update"],
["snippets", "delete"],
["scripts", "list"],
["scripts", "get"],
["scripts", "run"],
["scripts", "create"],
["scripts", "update"],
["scripts", "delete"],
["scripts", "reference"],
["scripts", "runs", "list"],
["scripts", "run", "stop"],
["scripts", "run", "pause"],
["scripts", "run", "resume"],
["scripts", "targets", "set"],
["vault", "host", "connect-scripts", "list"],
["vault", "host", "connect-scripts", "set"],
["portforward", "rules", "list"],
["portforward", "tunnels", "list"],
["portforward", "start"],
["portforward", "stop"],
];
test("every implemented cli command maps to an rpc method", () => {
for (const command of IMPLEMENTED_CLI_COMMANDS) {
const rpcMethod = getCliRpcMethod(command);
assert.ok(rpcMethod, `missing rpc mapping for ${command.join(" ")}`);
}
});
test("implemented capabilities expose at least one surface binding", () => {
for (const capability of ALL_CAPABILITIES) {
if (capability.status !== CAPABILITY_STATUS.IMPLEMENTED) continue;
const surfaces = Object.keys(capability.surfaces || {});
assert.ok(surfaces.length > 0, `${capability.id} has no surfaces`);
const hasRpc = surfaces.some((surface) => capability.surfaces[surface]?.rpcMethod);
const hasCli = surfaces.some((surface) => capability.surfaces[surface]?.command);
const hasCatty = Boolean(capability.surfaces[CAPABILITY_SURFACES.CATTY]?.toolName);
assert.ok(
hasRpc || hasCli || hasCatty || capability.surfaces[CAPABILITY_SURFACES.BUILTIN]?.mcpTool,
`${capability.id} has no rpc/cli/catty/mcp binding`,
);
}
});
test("capability ids are unique", () => {
const ids = ALL_CAPABILITIES.map((capability) => capability.id);
assert.equal(new Set(ids).size, ids.length);
});