Skip to main content
Glama
sandbox.ts2.38 kB
import { Buffer } from "node:buffer"; import os from "node:os"; import fs from "node:fs"; import path from "node:path"; import zlib from "node:zlib"; import toml from "npm:toml"; import jsonpatch from "npm:fast-json-patch"; import * as _ from "https://deno.land/x/lodash_es@v0.0.2/mod.ts"; import * as yaml from "npm:js-yaml"; import Joi from "npm:joi"; import { FunctionKind } from "./function.ts"; import { makeExec } from "./sandbox/exec.ts"; import layout from "./sandbox/layout.ts"; import template from "./sandbox/template.ts"; import { extLib } from "./sandbox/extLib.ts"; import * as assetBuilder from "./asset_builder.ts"; import { makeBeforeRequestStorage, makeMainRequestStorage, } from "./sandbox/requestStorage.ts"; export type Sandbox = Record<string, unknown>; function commonSandbox(executionId: string): Sandbox { return { _, Buffer, requestStorage: makeMainRequestStorage(), zlib, siExec: makeExec(executionId), YAML: { stringify: yaml.dump, parse: yaml.load }, os, fs, path, Joi, toml, jsonpatch, layout, template, extLib, }; } function schemaVariantDefinitionSandbox(): Sandbox { return { AssetBuilder: assetBuilder.AssetBuilder, PropBuilder: assetBuilder.PropBuilder, SecretDefinitionBuilder: assetBuilder.SecretDefinitionBuilder, SecretPropBuilder: assetBuilder.SecretPropBuilder, ValueFromBuilder: assetBuilder.ValueFromBuilder, SocketDefinitionBuilder: assetBuilder.SocketDefinitionBuilder, MapKeyFuncBuilder: assetBuilder.MapKeyFuncBuilder, PropWidgetDefinitionBuilder: assetBuilder.PropWidgetDefinitionBuilder, SiPropValueFromDefinitionBuilder: assetBuilder.SiPropValueFromDefinitionBuilder, }; } function beforeFunctionSandbox(executionId: string): Sandbox { return { requestStorage: makeBeforeRequestStorage(executionId), }; } export function createSandbox( kind: FunctionKind, executionId: string, ): Sandbox { let sandbox = commonSandbox(executionId); switch (kind) { case FunctionKind.SchemaVariantDefinition: sandbox = { ...sandbox, ...schemaVariantDefinitionSandbox(), }; break; case FunctionKind.Before: sandbox = { ...sandbox, ...beforeFunctionSandbox(executionId), }; break; default: break; } return sandbox; }

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