[Init] Initial commit - NetMesh terminal manager
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
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
This commit is contained in:
111
electron/capabilities/registry.cjs
Normal file
111
electron/capabilities/registry.cjs
Normal file
@@ -0,0 +1,111 @@
|
||||
"use strict";
|
||||
|
||||
const { ALL_CAPABILITIES } = require("./catalog/index.cjs");
|
||||
const { CAPABILITY_STATUS, CAPABILITY_SURFACES } = require("./constants.cjs");
|
||||
|
||||
function buildRegistryIndex(capabilities) {
|
||||
const byId = new Map();
|
||||
const byRpcMethod = new Map();
|
||||
const byMcpTool = new Map();
|
||||
const byCliCommand = new Map();
|
||||
const byDomain = new Map();
|
||||
const byCattyTool = new Map();
|
||||
|
||||
for (const capability of capabilities) {
|
||||
byId.set(capability.id, capability);
|
||||
|
||||
const domainList = byDomain.get(capability.domain) || [];
|
||||
domainList.push(capability);
|
||||
byDomain.set(capability.domain, domainList);
|
||||
|
||||
for (const [surfaceName, binding] of Object.entries(capability.surfaces || {})) {
|
||||
if (binding?.rpcMethod) {
|
||||
byRpcMethod.set(`${surfaceName}:${binding.rpcMethod}`, capability);
|
||||
}
|
||||
if (binding?.mcpTool) {
|
||||
byMcpTool.set(`${surfaceName}:${binding.mcpTool}`, capability);
|
||||
}
|
||||
if (Array.isArray(binding?.command) && binding.command.length > 0) {
|
||||
byCliCommand.set(binding.command.join(" "), capability);
|
||||
}
|
||||
if (binding?.toolName) {
|
||||
byCattyTool.set(binding.toolName, capability);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
capabilities,
|
||||
byId,
|
||||
byRpcMethod,
|
||||
byMcpTool,
|
||||
byCliCommand,
|
||||
byCattyTool,
|
||||
byDomain,
|
||||
};
|
||||
}
|
||||
|
||||
const registryIndex = buildRegistryIndex(ALL_CAPABILITIES);
|
||||
|
||||
function listCapabilities(options = {}) {
|
||||
const { status, domain, surface } = options;
|
||||
return registryIndex.capabilities.filter((capability) => {
|
||||
if (status && capability.status !== status) return false;
|
||||
if (domain && capability.domain !== domain) return false;
|
||||
if (surface && !capability.surfaces?.[surface]) return false;
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
function getCapabilityById(id) {
|
||||
return registryIndex.byId.get(id) || null;
|
||||
}
|
||||
|
||||
function getCapabilityByRpcMethod(rpcMethod, surface = CAPABILITY_SURFACES.BUILTIN) {
|
||||
return registryIndex.byRpcMethod.get(`${surface}:${rpcMethod}`) || null;
|
||||
}
|
||||
|
||||
function getCapabilityByMcpTool(toolName, surface = CAPABILITY_SURFACES.BUILTIN) {
|
||||
return registryIndex.byMcpTool.get(`${surface}:${toolName}`) || null;
|
||||
}
|
||||
|
||||
function getCapabilityByCliCommand(commandParts) {
|
||||
const key = Array.isArray(commandParts) ? commandParts.join(" ") : String(commandParts || "");
|
||||
return registryIndex.byCliCommand.get(key) || null;
|
||||
}
|
||||
|
||||
function getCapabilityByCattyToolName(toolName) {
|
||||
return registryIndex.byCattyTool.get(toolName) || null;
|
||||
}
|
||||
|
||||
function getRpcMethodsForSurface(surface, filter = {}) {
|
||||
const methods = new Set();
|
||||
for (const capability of registryIndex.capabilities) {
|
||||
const binding = capability.surfaces?.[surface];
|
||||
if (!binding?.rpcMethod) continue;
|
||||
if (filter.status && capability.status !== filter.status) continue;
|
||||
if (filter.write === true && !capability.policy.write) continue;
|
||||
if (filter.write === false && capability.policy.write) continue;
|
||||
if (filter.longRunning === true && !capability.policy.longRunning) continue;
|
||||
if (filter.longRunning === false && capability.policy.longRunning) continue;
|
||||
methods.add(binding.rpcMethod);
|
||||
}
|
||||
return methods;
|
||||
}
|
||||
|
||||
function getImplementedRpcMethodsForSurface(surface) {
|
||||
return getRpcMethodsForSurface(surface, { status: CAPABILITY_STATUS.IMPLEMENTED });
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
ALL_CAPABILITIES,
|
||||
listCapabilities,
|
||||
getCapabilityById,
|
||||
getCapabilityByRpcMethod,
|
||||
getCapabilityByMcpTool,
|
||||
getCapabilityByCliCommand,
|
||||
getCapabilityByCattyToolName,
|
||||
getRpcMethodsForSurface,
|
||||
getImplementedRpcMethodsForSurface,
|
||||
buildRegistryIndex,
|
||||
};
|
||||
Reference in New Issue
Block a user