Skip to main content
Glama
siFuncs.ts3.58 kB
import { FuncSpec } from "../bindings/FuncSpec.ts"; import { FuncArgumentSpec } from "../bindings/FuncArgumentSpec.ts"; import { FuncArgumentKind } from "../bindings/FuncArgumentKind.ts"; import { createFunc } from "./funcs.ts"; import { FuncSpecBackendKind } from "../bindings/FuncSpecBackendKind.ts"; import { FuncSpecBackendResponseType } from "../bindings/FuncSpecBackendResponseType.ts"; interface FuncSpecInfo { id: string; kind: string; } const funcSpecs: Record<string, FuncSpecInfo> = { "si:identity": { id: "c6938e12287ab65f8ba8234559178413f2e2c02c44ea08384ed6687a36ec4f50", kind: "identity", }, "si:setArray": { id: "51049a590fb64860f159972012ac2657c629479a244d6bcc4b1b73ba4b29f87f", kind: "array", }, "si:setBoolean": { id: "577a7deea25cfad0d4b2dd1e1f3d96b86b8b1578605137b8c4128d644c86964b", kind: "boolean", }, "si:setInteger": { id: "7d384b237852f20b8dec2fbd2e644ffc6bde901d7dc937bd77f50a0d57e642a9", kind: "integer", }, "si:setJson": { id: "c48ahif4739799f3ab84bcb88495f93b27b47c31a341f8005a60ca39308909fd", kind: "json", }, "si:setMap": { id: "dea5084fbf6e7fe8328ac725852b96f4b5869b14d0fe9dd63a285fa876772496", kind: "map", }, "si:setObject": { id: "cb9bf94739799f3a8b84bcb88495f93b27b47c31a341f8005a60ca39308909fd", kind: "object", }, "si:setString": { id: "bbe86d1a2b92c3e34b72a407cca424878d3466d29ca60e56a251a52a0840bfbd", kind: "string", }, "si:unset": { id: "8143ff98fbe8954bb3ab89ee521335d45ba9a42b7b79289eff53b503c4392c37", kind: "unset", }, "si:validation": { id: "039ff70bc7922338978ab52a39156992b7d8e3390f0ef7e99d5b6ffd43141d8a", kind: "validation", }, "si:normalizeToArray": { id: "750b9044cd250a5f0e952dabe4150fa61450992e04e688be47096d50a4759d4f", kind: "object", }, "si:resourcePayloadToValue": { id: "bc58dae4f4e1361840ec8f081350d7ec6b177ee8dc5a6a55155767c92efe1850", kind: "object", }, "si:setFloat": { id: "ab9875b8d5987e3f41e9d5a3c2cc00896338d89b084ca570fa22202c8da0ec55", kind: "float", }, }; function createArgument(funcName: string, kind: string): FuncArgumentSpec[] { if (kind === "unset") { return []; } const arg: FuncArgumentSpec = { // For the identity function, use "identity" as the argument name name: funcName === "si:identity" ? "identity" : "value", // For identity and validation functions, use "any" as the kind kind: funcName === "si:identity" || funcName === "si:validation" ? "any" : (kind as FuncArgumentKind), elementKind: kind === "array" || kind === "map" ? "any" : null, uniqueId: null, deleted: false, }; return [arg]; } export function createSiFunc(name: string): FuncSpec { const func = funcSpecs[name]; if (!func) { throw new Error(`Unknown function: ${name}`); } return createFunc( name, func.kind as FuncSpecBackendKind, func.kind as FuncSpecBackendResponseType, "", func.id, createArgument(name, func.kind), ); } export function getSiFuncId(kind: string): string { return funcSpecs[kind].id; } export function createSiFuncs(): FuncSpec[] { const ret: FuncSpec[] = []; const siFuncs = [ "si:identity", "si:setArray", "si:setBoolean", "si:setInteger", "si:setJson", "si:setMap", "si:setObject", "si:setString", "si:unset", "si:validation", "si:setFloat", "si:normalizeToArray", "si:resourcePayloadToValue", ]; for (const func of siFuncs) { ret.push(createSiFunc(func)); } return ret; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server