@burdenoff/mcp-libs 2026.525.1 → 2026.626.1

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.
@@ -1,4 +1,4 @@
1
- import { LIST_SANDBOXES, GET_SANDBOX, CREATE_SANDBOX, DELETE_SANDBOX, STOP_SANDBOX, EXTEND_SANDBOX_TTL, LIST_SANDBOX_TEMPLATES, GET_SANDBOX_TEMPLATE, CREATE_SANDBOX_TEMPLATE, UPDATE_SANDBOX_TEMPLATE, DELETE_SANDBOX_TEMPLATE, AVAILABLE_SANDBOX_TAGS, GET_SANDBOX_TAGS, CREATE_SANDBOX_TAG, TAG_SANDBOX, UNTAG_SANDBOX, REPLACE_SANDBOX_TAGS, LIST_ALL_SANDBOXES, LIST_SANDBOX_NODES, GET_ACTIVE_SANDBOXES, GET_RECENT_SANDBOX_ACTIVITY, GET_SANDBOX_STATS, GET_SANDBOX_LOGS, GET_SANDBOX_CONFIG, UPDATE_SANDBOX_CONFIG, EXPORT_SANDBOXES, GET_SANDBOX_EXPORT_JOB, LIST_SANDBOX_EXPORT_JOBS, GET_SANDBOX_ARTIFACT_BYTES, PROXY_SANDBOX_REQUEST } from '../../chunk-HRWIDQJE.js';
1
+ import { LIST_SANDBOXES, GET_SANDBOX, CREATE_SANDBOX, DELETE_SANDBOX, STOP_SANDBOX, START_SANDBOX, EXTEND_SANDBOX_TTL, LIST_SANDBOX_TEMPLATES, GET_SANDBOX_TEMPLATE, CREATE_SANDBOX_TEMPLATE, UPDATE_SANDBOX_TEMPLATE, DELETE_SANDBOX_TEMPLATE, AVAILABLE_SANDBOX_TAGS, GET_SANDBOX_TAGS, CREATE_SANDBOX_TAG, TAG_SANDBOX, UNTAG_SANDBOX, REPLACE_SANDBOX_TAGS, LIST_ALL_SANDBOXES, LIST_SANDBOX_NODES, GET_ACTIVE_SANDBOXES, GET_RECENT_SANDBOX_ACTIVITY, GET_SANDBOX_STATS, GET_SANDBOX_LOGS, GET_SANDBOX_CONFIG, UPDATE_SANDBOX_CONFIG, EXPORT_SANDBOXES, GET_SANDBOX_EXPORT_JOB, LIST_SANDBOX_EXPORT_JOBS, GET_SANDBOX_ARTIFACT_BYTES, PROXY_SANDBOX_REQUEST } from '../../chunk-XITZQYB2.js';
2
2
  import { mcpToolName, jsonResult, errorResult } from '../../chunk-H2OYWLOA.js';
3
3
  import { z } from 'zod';
4
4
 
@@ -172,6 +172,27 @@ function registerSandboxTools(server, ctx, track) {
172
172
  }
173
173
  }
174
174
  );
175
+ server.registerTool(
176
+ track(mcpToolName(ctx.productName, "sandbox_start")),
177
+ {
178
+ title: "Start Sandbox",
179
+ description: "Start a stopped sandbox.",
180
+ inputSchema: { id: z.string().describe("Sandbox ID") }
181
+ },
182
+ async ({ id }) => {
183
+ try {
184
+ const data = await ctx.gql.workspace.request(START_SANDBOX, {
185
+ id
186
+ });
187
+ return jsonResult(data.startSandbox);
188
+ } catch (error) {
189
+ ctx.logger.error("vibecontrols_sandbox_start failed", { error });
190
+ return errorResult(
191
+ `Failed to start sandbox: ${error instanceof Error ? error.message : String(error)}`
192
+ );
193
+ }
194
+ }
195
+ );
175
196
  server.registerTool(
176
197
  track(mcpToolName(ctx.productName, "sandbox_extend")),
177
198
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/modules/sandbox/tools.ts","../../../src/modules/sandbox/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport {\n LIST_SANDBOXES,\n GET_SANDBOX,\n CREATE_SANDBOX,\n DELETE_SANDBOX,\n STOP_SANDBOX,\n EXTEND_SANDBOX_TTL,\n LIST_SANDBOX_TEMPLATES,\n GET_SANDBOX_TEMPLATE,\n CREATE_SANDBOX_TEMPLATE,\n UPDATE_SANDBOX_TEMPLATE,\n DELETE_SANDBOX_TEMPLATE,\n AVAILABLE_SANDBOX_TAGS,\n GET_SANDBOX_TAGS,\n CREATE_SANDBOX_TAG,\n TAG_SANDBOX,\n UNTAG_SANDBOX,\n REPLACE_SANDBOX_TAGS,\n LIST_ALL_SANDBOXES,\n LIST_SANDBOX_NODES,\n GET_ACTIVE_SANDBOXES,\n GET_RECENT_SANDBOX_ACTIVITY,\n GET_SANDBOX_STATS,\n GET_SANDBOX_LOGS,\n GET_SANDBOX_CONFIG,\n UPDATE_SANDBOX_CONFIG,\n EXPORT_SANDBOXES,\n GET_SANDBOX_EXPORT_JOB,\n LIST_SANDBOX_EXPORT_JOBS,\n GET_SANDBOX_ARTIFACT_BYTES,\n PROXY_SANDBOX_REQUEST,\n} from '../vibecontrols/operations.js';\n\nexport function registerSandboxTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_list')),\n {\n title: 'List Sandboxes',\n description: 'List Kubernetes-native sandboxes with optional filters and pagination.',\n inputSchema: {\n status: z\n .string()\n .optional()\n .describe(\n 'Filter by status (PENDING, PROVISIONING, RUNNING, STOPPING, STOPPED, EXPIRED, FAILED)',\n ),\n template: z\n .string()\n .optional()\n .describe(\n 'Filter by template (VIBECONTROLS, AI_BUILDER, WORKFLOW_MULTI_NODE, MISC_SHELL, CUSTOM)',\n ),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Skip results'),\n },\n },\n async ({ status, template, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (template !== undefined) filter.template = template;\n\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n\n const data = await ctx.gql.workspace.request<{ listSandboxes: unknown }>(LIST_SANDBOXES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.listSandboxes);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_list failed', { error });\n return errorResult(\n `Failed to list sandboxes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_get')),\n {\n title: 'Get Sandbox',\n description: 'Get a sandbox by its ID.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandbox: unknown }>(GET_SANDBOX, { id });\n return jsonResult(data.getSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_get failed', { error });\n return errorResult(\n `Failed to get sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_create')),\n {\n title: 'Create Sandbox',\n description:\n 'Create a new Kubernetes-native sandbox environment with Kata Containers isolation.',\n inputSchema: {\n name: z.string().describe('Sandbox name'),\n template: z\n .enum(['VIBECONTROLS', 'AI_BUILDER', 'WORKFLOW_MULTI_NODE', 'MISC_SHELL', 'CUSTOM'])\n .describe('Sandbox template type'),\n mode: z\n .enum(['DEPLOYMENT', 'JOB'])\n .optional()\n .describe('Run mode: DEPLOYMENT (long-running) or JOB (run-to-completion)'),\n containers: z\n .array(\n z.object({\n name: z.string().describe('Container name'),\n image: z.string().describe('Container image'),\n ports: z\n .array(\n z.object({\n containerPort: z.number().describe('Container port'),\n name: z.string().optional().describe('Port name'),\n protocol: z.string().optional().describe('Protocol (TCP, UDP)'),\n }),\n )\n .optional()\n .describe('Exposed ports'),\n env: z\n .array(\n z.object({\n name: z.string().describe('Env var name'),\n value: z.string().describe('Env var value'),\n }),\n )\n .optional()\n .describe('Environment variables'),\n command: z.array(z.string()).optional().describe('Container entrypoint command'),\n args: z.array(z.string()).optional().describe('Container arguments'),\n }),\n )\n .optional()\n .describe('Container specifications (uses template defaults if omitted)'),\n ttlSeconds: z.number().optional().describe('Time-to-live in seconds'),\n resources: z\n .object({\n cpuRequest: z.string().optional(),\n cpuLimit: z.string().optional(),\n memoryRequest: z.string().optional(),\n memoryLimit: z.string().optional(),\n })\n .optional()\n .describe('Resource requests/limits'),\n description: z.string().optional().describe('Sandbox description'),\n templateId: z.string().optional().describe('Sandbox template config ID to use'),\n },\n },\n async ({\n name,\n template,\n mode,\n containers,\n ttlSeconds,\n resources,\n description,\n templateId,\n }) => {\n try {\n const input: Record<string, unknown> = { name, template };\n if (mode !== undefined) input.mode = mode;\n if (containers !== undefined) input.containers = containers;\n if (ttlSeconds !== undefined) input.ttlSeconds = ttlSeconds;\n if (resources !== undefined) input.resources = resources;\n if (description !== undefined) input.description = description;\n if (templateId !== undefined) input.templateId = templateId;\n\n const data = await ctx.gql.workspace.request<{ createSandbox: unknown }>(CREATE_SANDBOX, {\n input,\n });\n return jsonResult(data.createSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_create failed', { error });\n return errorResult(\n `Failed to create sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_delete')),\n {\n title: 'Delete Sandbox',\n description: 'Delete a sandbox and its Kubernetes resources.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSandbox: unknown }>(DELETE_SANDBOX, {\n id,\n });\n return jsonResult({ deleted: data.deleteSandbox, sandboxId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_delete failed', { error });\n return errorResult(\n `Failed to delete sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_stop')),\n {\n title: 'Stop Sandbox',\n description: 'Stop a running sandbox.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopSandbox: unknown }>(STOP_SANDBOX, {\n id,\n });\n return jsonResult(data.stopSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_stop failed', { error });\n return errorResult(\n `Failed to stop sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_extend')),\n {\n title: 'Extend Sandbox TTL',\n description: 'Extend the time-to-live of a sandbox.',\n inputSchema: {\n id: z.string().describe('Sandbox ID'),\n additionalSeconds: z.number().describe('Number of seconds to add to the TTL'),\n },\n },\n async ({ id, additionalSeconds }) => {\n try {\n const data = await ctx.gql.workspace.request<{ extendSandboxTTL: unknown }>(\n EXTEND_SANDBOX_TTL,\n {\n id,\n additionalSeconds,\n },\n );\n return jsonResult(data.extendSandboxTTL);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_extend failed', { error });\n return errorResult(\n `Failed to extend sandbox TTL: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Templates ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_list')),\n {\n title: 'List Sandbox Templates',\n description: 'List sandbox template configurations available in this workspace.',\n inputSchema: {\n template: z.string().optional().describe('Filter by template kind'),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ template, limit, offset }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await ctx.gql.workspace.request<{ listSandboxTemplates: unknown }>(\n LIST_SANDBOX_TEMPLATES,\n {\n template,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.listSandboxTemplates);\n } catch (error) {\n ctx.logger.error('sandbox_templates_list failed', { error });\n return errorResult(\n `Failed to list templates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_get')),\n {\n title: 'Get Sandbox Template',\n description: 'Get a sandbox template by ID.',\n inputSchema: { id: z.string().describe('Template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxTemplate: unknown }>(\n GET_SANDBOX_TEMPLATE,\n { id },\n );\n return jsonResult(data.getSandboxTemplate);\n } catch (error) {\n ctx.logger.error('sandbox_templates_get failed', { error });\n return errorResult(\n `Failed to get template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_create')),\n {\n title: 'Create Sandbox Template',\n description: 'Create a new sandbox template configuration.',\n inputSchema: {\n name: z.string(),\n template: z.enum([\n 'VIBECONTROLS',\n 'AI_BUILDER',\n 'WORKFLOW_MULTI_NODE',\n 'MISC_SHELL',\n 'CUSTOM',\n 'DOCS_BUILDER',\n ]),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n ttlSeconds: z.number().optional(),\n },\n },\n async ({ name, template, description, isDefault, ttlSeconds }) => {\n try {\n const input: Record<string, unknown> = { name, template };\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n if (ttlSeconds !== undefined) input.ttlSeconds = ttlSeconds;\n const data = await ctx.gql.workspace.request<{ createSandboxTemplate: unknown }>(\n CREATE_SANDBOX_TEMPLATE,\n { input },\n );\n return jsonResult(data.createSandboxTemplate);\n } catch (error) {\n ctx.logger.error('sandbox_templates_create failed', { error });\n return errorResult(\n `Failed to create template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_update')),\n {\n title: 'Update Sandbox Template',\n description: 'Update a sandbox template configuration.',\n inputSchema: {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n ttlSeconds: z.number().optional(),\n },\n },\n async ({ id, name, description, isDefault, ttlSeconds }) => {\n try {\n const input: Record<string, unknown> = { id };\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n if (ttlSeconds !== undefined) input.ttlSeconds = ttlSeconds;\n const data = await ctx.gql.workspace.request<{ updateSandboxTemplate: unknown }>(\n UPDATE_SANDBOX_TEMPLATE,\n { input },\n );\n return jsonResult(data.updateSandboxTemplate);\n } catch (error) {\n ctx.logger.error('sandbox_templates_update failed', { error });\n return errorResult(\n `Failed to update template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_delete')),\n {\n title: 'Delete Sandbox Template',\n description: 'Delete a sandbox template configuration.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSandboxTemplate: unknown }>(\n DELETE_SANDBOX_TEMPLATE,\n { id },\n );\n return jsonResult({ deleted: data.deleteSandboxTemplate, templateId: id });\n } catch (error) {\n ctx.logger.error('sandbox_templates_delete failed', { error });\n return errorResult(\n `Failed to delete template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Tags ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_list')),\n {\n title: 'List Available Sandbox Tags',\n description: 'List available sandbox tags in the workspace.',\n inputSchema: {\n query: z.string().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ query, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ availableSandboxTags: unknown }>(\n AVAILABLE_SANDBOX_TAGS,\n { query, limit },\n );\n return jsonResult(data.availableSandboxTags);\n } catch (error) {\n ctx.logger.error('sandbox_tags_list failed', { error });\n return errorResult(\n `Failed to list tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_get')),\n {\n title: 'Get Sandbox Tags',\n description: 'Get tag assignments for a sandbox.',\n inputSchema: { sandboxId: z.string() },\n },\n async ({ sandboxId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxTags: unknown }>(\n GET_SANDBOX_TAGS,\n { input: { sandboxId } },\n );\n return jsonResult(data.getSandboxTags);\n } catch (error) {\n ctx.logger.error('sandbox_tags_get failed', { error });\n return errorResult(\n `Failed to get tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_create')),\n {\n title: 'Create Sandbox Tag',\n description: 'Create a new sandbox tag.',\n inputSchema: {\n label: z.string(),\n color: z.string().optional(),\n },\n },\n async ({ label, color }) => {\n try {\n const input: Record<string, unknown> = { label };\n if (color !== undefined) input.color = color;\n const data = await ctx.gql.workspace.request<{ createSandboxTag: unknown }>(\n CREATE_SANDBOX_TAG,\n { input },\n );\n return jsonResult(data.createSandboxTag);\n } catch (error) {\n ctx.logger.error('sandbox_tags_create failed', { error });\n return errorResult(\n `Failed to create tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_attach')),\n {\n title: 'Attach Tag to Sandbox',\n description: 'Attach a tag to a sandbox.',\n inputSchema: {\n sandboxId: z.string(),\n tagId: z.string(),\n source: z.string().optional(),\n },\n },\n async ({ sandboxId, tagId, source }) => {\n try {\n const input: Record<string, unknown> = { sandboxId, tagId };\n if (source !== undefined) input.source = source;\n const data = await ctx.gql.workspace.request<{ tagSandbox: unknown }>(TAG_SANDBOX, {\n input,\n });\n return jsonResult(data.tagSandbox);\n } catch (error) {\n ctx.logger.error('sandbox_tags_attach failed', { error });\n return errorResult(\n `Failed to attach tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_detach')),\n {\n title: 'Detach Tag from Sandbox',\n description: 'Detach a tag from a sandbox.',\n inputSchema: {\n sandboxId: z.string(),\n tagId: z.string(),\n },\n },\n async ({ sandboxId, tagId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ untagSandbox: unknown }>(UNTAG_SANDBOX, {\n input: { sandboxId, tagId },\n });\n return jsonResult({ detached: data.untagSandbox, sandboxId, tagId });\n } catch (error) {\n ctx.logger.error('sandbox_tags_detach failed', { error });\n return errorResult(\n `Failed to detach tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_replace')),\n {\n title: 'Replace Sandbox Tags',\n description: 'Replace the full set of tags on a sandbox.',\n inputSchema: {\n sandboxId: z.string(),\n tagIds: z.array(z.string()),\n },\n },\n async ({ sandboxId, tagIds }) => {\n try {\n const data = await ctx.gql.workspace.request<{ replaceSandboxTags: unknown }>(\n REPLACE_SANDBOX_TAGS,\n { input: { sandboxId, tagIds } },\n );\n return jsonResult(data.replaceSandboxTags);\n } catch (error) {\n ctx.logger.error('sandbox_tags_replace failed', { error });\n return errorResult(\n `Failed to replace tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Admin / observability ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_list_all')),\n {\n title: 'List All Sandboxes (admin)',\n description: 'Admin-only list across the entire workspace including internal sandboxes.',\n inputSchema: {\n status: z.string().optional(),\n template: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ status, template, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (template !== undefined) filter.template = template;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await ctx.gql.workspace.request<{ listAllSandboxes: unknown }>(\n LIST_ALL_SANDBOXES,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.listAllSandboxes);\n } catch (error) {\n ctx.logger.error('sandbox_admin_list_all failed', { error });\n return errorResult(\n `Failed to list all sandboxes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_nodes_list')),\n {\n title: 'List Sandbox Nodes',\n description: 'List Kubernetes nodes hosting sandbox workloads with capacity info.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ listSandboxNodes: unknown }>(\n LIST_SANDBOX_NODES,\n {},\n );\n return jsonResult(data.listSandboxNodes);\n } catch (error) {\n ctx.logger.error('sandbox_admin_nodes_list failed', { error });\n return errorResult(\n `Failed to list nodes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_active')),\n {\n title: 'Get Active Sandboxes',\n description: 'Get currently active sandboxes in the workspace.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ getActiveSandboxes: unknown }>(\n GET_ACTIVE_SANDBOXES,\n {},\n );\n return jsonResult(data.getActiveSandboxes);\n } catch (error) {\n ctx.logger.error('sandbox_admin_active failed', { error });\n return errorResult(\n `Failed to get active sandboxes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_activity')),\n {\n title: 'Recent Sandbox Activity',\n description: 'Get recent sandbox lifecycle activity (create/stop/delete/extend).',\n inputSchema: { limit: z.number().optional() },\n },\n async ({ limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getRecentSandboxActivity: unknown }>(\n GET_RECENT_SANDBOX_ACTIVITY,\n { limit },\n );\n return jsonResult(data.getRecentSandboxActivity);\n } catch (error) {\n ctx.logger.error('sandbox_admin_activity failed', { error });\n return errorResult(\n `Failed to get activity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_stats')),\n {\n title: 'Sandbox Stats',\n description: 'Get aggregate sandbox usage statistics for the workspace.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxStats: unknown }>(\n GET_SANDBOX_STATS,\n {},\n );\n return jsonResult(data.getSandboxStats);\n } catch (error) {\n ctx.logger.error('sandbox_admin_stats failed', { error });\n return errorResult(\n `Failed to get stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_logs')),\n {\n title: 'Get Sandbox Logs',\n description: 'Fetch logs for a sandbox container.',\n inputSchema: {\n id: z.string(),\n containerName: z.string(),\n tailLines: z.number().optional(),\n },\n },\n async ({ id, containerName, tailLines }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxLogs: string }>(GET_SANDBOX_LOGS, {\n id,\n containerName,\n tailLines,\n });\n return jsonResult({ logs: data.getSandboxLogs });\n } catch (error) {\n ctx.logger.error('sandbox_admin_logs failed', { error });\n return errorResult(\n `Failed to get logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_config_get')),\n {\n title: 'Get Sandbox Config',\n description: 'Get the per-workspace sandbox configuration limits.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxConfig: unknown }>(\n GET_SANDBOX_CONFIG,\n {},\n );\n return jsonResult(data.getSandboxConfig);\n } catch (error) {\n ctx.logger.error('sandbox_admin_config_get failed', { error });\n return errorResult(\n `Failed to get config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_config_set')),\n {\n title: 'Update Sandbox Config',\n description: 'Update the per-workspace sandbox configuration limits.',\n inputSchema: {\n defaultTtlSeconds: z.number().optional(),\n maxTtlSeconds: z.number().optional(),\n maxConcurrentPerUser: z.number().optional(),\n maxConcurrentPerWorkspace: z.number().optional(),\n },\n },\n async ({\n defaultTtlSeconds,\n maxTtlSeconds,\n maxConcurrentPerUser,\n maxConcurrentPerWorkspace,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (defaultTtlSeconds !== undefined) input.defaultTtlSeconds = defaultTtlSeconds;\n if (maxTtlSeconds !== undefined) input.maxTtlSeconds = maxTtlSeconds;\n if (maxConcurrentPerUser !== undefined) input.maxConcurrentPerUser = maxConcurrentPerUser;\n if (maxConcurrentPerWorkspace !== undefined)\n input.maxConcurrentPerWorkspace = maxConcurrentPerWorkspace;\n const data = await ctx.gql.workspace.request<{ updateSandboxConfig: unknown }>(\n UPDATE_SANDBOX_CONFIG,\n { input },\n );\n return jsonResult(data.updateSandboxConfig);\n } catch (error) {\n ctx.logger.error('sandbox_admin_config_set failed', { error });\n return errorResult(\n `Failed to update config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Export ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_create')),\n {\n title: 'Create Sandbox Export Job',\n description: 'Kick off an async job to export sandboxes for the workspace.',\n inputSchema: {\n workspaceId: z.string(),\n format: z.enum(['CSV', 'JSON']),\n includeUsageEvents: z.boolean().optional(),\n },\n },\n async ({ workspaceId, format, includeUsageEvents }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, format };\n if (includeUsageEvents !== undefined) input.includeUsageEvents = includeUsageEvents;\n const data = await ctx.gql.workspace.request<{ exportSandboxes: unknown }>(\n EXPORT_SANDBOXES,\n { input },\n );\n return jsonResult(data.exportSandboxes);\n } catch (error) {\n ctx.logger.error('sandbox_export_create failed', { error });\n return errorResult(\n `Failed to create export: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_get')),\n {\n title: 'Get Sandbox Export Job',\n description:\n 'Get a sandbox export job by ID. Poll this to track progress (MCP has no subscriptions).',\n inputSchema: {\n workspaceId: z.string(),\n jobId: z.string(),\n },\n },\n async ({ workspaceId, jobId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxExportJob: unknown }>(\n GET_SANDBOX_EXPORT_JOB,\n { workspaceId, jobId },\n );\n return jsonResult(data.getSandboxExportJob);\n } catch (error) {\n ctx.logger.error('sandbox_export_get failed', { error });\n return errorResult(\n `Failed to get export job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_list')),\n {\n title: 'List Sandbox Export Jobs',\n description: 'List sandbox export jobs for a workspace.',\n inputSchema: {\n workspaceId: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ workspaceId, limit, offset }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await ctx.gql.workspace.request<{ listSandboxExportJobs: unknown }>(\n LIST_SANDBOX_EXPORT_JOBS,\n {\n workspaceId,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.listSandboxExportJobs);\n } catch (error) {\n ctx.logger.error('sandbox_export_list failed', { error });\n return errorResult(\n `Failed to list export jobs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_get_artifact_bytes')),\n {\n title: 'Get Sandbox Artifact Bytes',\n description: 'Fetch raw artifact bytes for a sandbox session (base64-encoded, 50 MB cap).',\n inputSchema: {\n sandboxId: z.string(),\n sessionId: z.string(),\n path: z.string(),\n onBehalfOfUserId: z.string().optional(),\n },\n },\n async ({ sandboxId, sessionId, path, onBehalfOfUserId }) => {\n try {\n const input: Record<string, unknown> = { sandboxId, sessionId, path };\n if (onBehalfOfUserId !== undefined) input.onBehalfOfUserId = onBehalfOfUserId;\n const data = await ctx.gql.workspace.request<{ getSandboxArtifactBytes: unknown }>(\n GET_SANDBOX_ARTIFACT_BYTES,\n { input },\n );\n return jsonResult(data.getSandboxArtifactBytes);\n } catch (error) {\n ctx.logger.error('sandbox_export_get_artifact_bytes failed', { error });\n return errorResult(\n `Failed to get artifact bytes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Proxy ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_proxy_request')),\n {\n title: 'Proxy HTTP Request to Sandbox',\n description: 'Proxy an HTTP request to a service running inside a sandbox container.',\n inputSchema: {\n sandboxId: z.string(),\n method: z.string(),\n path: z.string(),\n body: z.unknown().optional(),\n containerName: z.string().optional(),\n },\n },\n async ({ sandboxId, method, path, body, containerName }) => {\n try {\n const input: Record<string, unknown> = { sandboxId, method, path };\n if (body !== undefined) input.body = body;\n if (containerName !== undefined) input.containerName = containerName;\n const data = await ctx.gql.workspace.request<{ proxySandboxRequest: unknown }>(\n PROXY_SANDBOX_REQUEST,\n { input },\n );\n return jsonResult(data.proxySandboxRequest);\n } catch (error) {\n ctx.logger.error('sandbox_proxy_request failed', { error });\n return errorResult(\n `Failed to proxy request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Subscription proxies (MCP has no subscriptions — use polling instead) ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_check')),\n {\n title: 'Check Sandbox State',\n description:\n 'Poll a sandbox by ID. MCP has no subscription protocol — call this in a loop to track lifecycle.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandbox: unknown }>(GET_SANDBOX, { id });\n return jsonResult(data.getSandbox);\n } catch (error) {\n ctx.logger.error('sandbox_check failed', { error });\n return errorResult(\n `Failed to poll sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_check')),\n {\n title: 'Check Sandbox Export Job',\n description:\n 'Poll an export job by ID. MCP has no subscription protocol — call this in a loop to track progress.',\n inputSchema: {\n workspaceId: z.string(),\n jobId: z.string(),\n },\n },\n async ({ workspaceId, jobId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxExportJob: unknown }>(\n GET_SANDBOX_EXPORT_JOB,\n { workspaceId, jobId },\n );\n return jsonResult(data.getSandboxExportJob);\n } catch (error) {\n ctx.logger.error('sandbox_export_check failed', { error });\n return errorResult(\n `Failed to poll export job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Sandbox module — Kubernetes-native sandbox management\n * (<product>_sandbox_{list,get,create,delete,stop,extend}).\n *\n * Backend: ~/products/wspace/sandbox/wspace-sandbox-svc/.\n * Lifted verbatim from vibecontrols-mcp/src/tools/sandboxes.ts.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSandboxTools } from './tools.js';\n\nconst sandboxModule: McpModule = {\n id: 'sandbox',\n version: '0.0.1',\n displayName: 'Sandbox',\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerSandboxTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default sandboxModule;\n"]}
1
+ {"version":3,"sources":["../../../src/modules/sandbox/tools.ts","../../../src/modules/sandbox/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport {\n LIST_SANDBOXES,\n GET_SANDBOX,\n CREATE_SANDBOX,\n DELETE_SANDBOX,\n STOP_SANDBOX,\n START_SANDBOX,\n EXTEND_SANDBOX_TTL,\n LIST_SANDBOX_TEMPLATES,\n GET_SANDBOX_TEMPLATE,\n CREATE_SANDBOX_TEMPLATE,\n UPDATE_SANDBOX_TEMPLATE,\n DELETE_SANDBOX_TEMPLATE,\n AVAILABLE_SANDBOX_TAGS,\n GET_SANDBOX_TAGS,\n CREATE_SANDBOX_TAG,\n TAG_SANDBOX,\n UNTAG_SANDBOX,\n REPLACE_SANDBOX_TAGS,\n LIST_ALL_SANDBOXES,\n LIST_SANDBOX_NODES,\n GET_ACTIVE_SANDBOXES,\n GET_RECENT_SANDBOX_ACTIVITY,\n GET_SANDBOX_STATS,\n GET_SANDBOX_LOGS,\n GET_SANDBOX_CONFIG,\n UPDATE_SANDBOX_CONFIG,\n EXPORT_SANDBOXES,\n GET_SANDBOX_EXPORT_JOB,\n LIST_SANDBOX_EXPORT_JOBS,\n GET_SANDBOX_ARTIFACT_BYTES,\n PROXY_SANDBOX_REQUEST,\n} from '../vibecontrols/operations.js';\n\nexport function registerSandboxTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_list')),\n {\n title: 'List Sandboxes',\n description: 'List Kubernetes-native sandboxes with optional filters and pagination.',\n inputSchema: {\n status: z\n .string()\n .optional()\n .describe(\n 'Filter by status (PENDING, PROVISIONING, RUNNING, STOPPING, STOPPED, EXPIRED, FAILED)',\n ),\n template: z\n .string()\n .optional()\n .describe(\n 'Filter by template (VIBECONTROLS, AI_BUILDER, WORKFLOW_MULTI_NODE, MISC_SHELL, CUSTOM)',\n ),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Skip results'),\n },\n },\n async ({ status, template, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (template !== undefined) filter.template = template;\n\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n\n const data = await ctx.gql.workspace.request<{ listSandboxes: unknown }>(LIST_SANDBOXES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.listSandboxes);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_list failed', { error });\n return errorResult(\n `Failed to list sandboxes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_get')),\n {\n title: 'Get Sandbox',\n description: 'Get a sandbox by its ID.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandbox: unknown }>(GET_SANDBOX, { id });\n return jsonResult(data.getSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_get failed', { error });\n return errorResult(\n `Failed to get sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_create')),\n {\n title: 'Create Sandbox',\n description:\n 'Create a new Kubernetes-native sandbox environment with Kata Containers isolation.',\n inputSchema: {\n name: z.string().describe('Sandbox name'),\n template: z\n .enum(['VIBECONTROLS', 'AI_BUILDER', 'WORKFLOW_MULTI_NODE', 'MISC_SHELL', 'CUSTOM'])\n .describe('Sandbox template type'),\n mode: z\n .enum(['DEPLOYMENT', 'JOB'])\n .optional()\n .describe('Run mode: DEPLOYMENT (long-running) or JOB (run-to-completion)'),\n containers: z\n .array(\n z.object({\n name: z.string().describe('Container name'),\n image: z.string().describe('Container image'),\n ports: z\n .array(\n z.object({\n containerPort: z.number().describe('Container port'),\n name: z.string().optional().describe('Port name'),\n protocol: z.string().optional().describe('Protocol (TCP, UDP)'),\n }),\n )\n .optional()\n .describe('Exposed ports'),\n env: z\n .array(\n z.object({\n name: z.string().describe('Env var name'),\n value: z.string().describe('Env var value'),\n }),\n )\n .optional()\n .describe('Environment variables'),\n command: z.array(z.string()).optional().describe('Container entrypoint command'),\n args: z.array(z.string()).optional().describe('Container arguments'),\n }),\n )\n .optional()\n .describe('Container specifications (uses template defaults if omitted)'),\n ttlSeconds: z.number().optional().describe('Time-to-live in seconds'),\n resources: z\n .object({\n cpuRequest: z.string().optional(),\n cpuLimit: z.string().optional(),\n memoryRequest: z.string().optional(),\n memoryLimit: z.string().optional(),\n })\n .optional()\n .describe('Resource requests/limits'),\n description: z.string().optional().describe('Sandbox description'),\n templateId: z.string().optional().describe('Sandbox template config ID to use'),\n },\n },\n async ({\n name,\n template,\n mode,\n containers,\n ttlSeconds,\n resources,\n description,\n templateId,\n }) => {\n try {\n const input: Record<string, unknown> = { name, template };\n if (mode !== undefined) input.mode = mode;\n if (containers !== undefined) input.containers = containers;\n if (ttlSeconds !== undefined) input.ttlSeconds = ttlSeconds;\n if (resources !== undefined) input.resources = resources;\n if (description !== undefined) input.description = description;\n if (templateId !== undefined) input.templateId = templateId;\n\n const data = await ctx.gql.workspace.request<{ createSandbox: unknown }>(CREATE_SANDBOX, {\n input,\n });\n return jsonResult(data.createSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_create failed', { error });\n return errorResult(\n `Failed to create sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_delete')),\n {\n title: 'Delete Sandbox',\n description: 'Delete a sandbox and its Kubernetes resources.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSandbox: unknown }>(DELETE_SANDBOX, {\n id,\n });\n return jsonResult({ deleted: data.deleteSandbox, sandboxId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_delete failed', { error });\n return errorResult(\n `Failed to delete sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_stop')),\n {\n title: 'Stop Sandbox',\n description: 'Stop a running sandbox.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopSandbox: unknown }>(STOP_SANDBOX, {\n id,\n });\n return jsonResult(data.stopSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_stop failed', { error });\n return errorResult(\n `Failed to stop sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_start')),\n {\n title: 'Start Sandbox',\n description: 'Start a stopped sandbox.',\n inputSchema: { id: z.string().describe('Sandbox ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startSandbox: unknown }>(START_SANDBOX, {\n id,\n });\n return jsonResult(data.startSandbox);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_start failed', { error });\n return errorResult(\n `Failed to start sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_extend')),\n {\n title: 'Extend Sandbox TTL',\n description: 'Extend the time-to-live of a sandbox.',\n inputSchema: {\n id: z.string().describe('Sandbox ID'),\n additionalSeconds: z.number().describe('Number of seconds to add to the TTL'),\n },\n },\n async ({ id, additionalSeconds }) => {\n try {\n const data = await ctx.gql.workspace.request<{ extendSandboxTTL: unknown }>(\n EXTEND_SANDBOX_TTL,\n {\n id,\n additionalSeconds,\n },\n );\n return jsonResult(data.extendSandboxTTL);\n } catch (error) {\n ctx.logger.error('vibecontrols_sandbox_extend failed', { error });\n return errorResult(\n `Failed to extend sandbox TTL: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Templates ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_list')),\n {\n title: 'List Sandbox Templates',\n description: 'List sandbox template configurations available in this workspace.',\n inputSchema: {\n template: z.string().optional().describe('Filter by template kind'),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ template, limit, offset }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await ctx.gql.workspace.request<{ listSandboxTemplates: unknown }>(\n LIST_SANDBOX_TEMPLATES,\n {\n template,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.listSandboxTemplates);\n } catch (error) {\n ctx.logger.error('sandbox_templates_list failed', { error });\n return errorResult(\n `Failed to list templates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_get')),\n {\n title: 'Get Sandbox Template',\n description: 'Get a sandbox template by ID.',\n inputSchema: { id: z.string().describe('Template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxTemplate: unknown }>(\n GET_SANDBOX_TEMPLATE,\n { id },\n );\n return jsonResult(data.getSandboxTemplate);\n } catch (error) {\n ctx.logger.error('sandbox_templates_get failed', { error });\n return errorResult(\n `Failed to get template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_create')),\n {\n title: 'Create Sandbox Template',\n description: 'Create a new sandbox template configuration.',\n inputSchema: {\n name: z.string(),\n template: z.enum([\n 'VIBECONTROLS',\n 'AI_BUILDER',\n 'WORKFLOW_MULTI_NODE',\n 'MISC_SHELL',\n 'CUSTOM',\n 'DOCS_BUILDER',\n ]),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n ttlSeconds: z.number().optional(),\n },\n },\n async ({ name, template, description, isDefault, ttlSeconds }) => {\n try {\n const input: Record<string, unknown> = { name, template };\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n if (ttlSeconds !== undefined) input.ttlSeconds = ttlSeconds;\n const data = await ctx.gql.workspace.request<{ createSandboxTemplate: unknown }>(\n CREATE_SANDBOX_TEMPLATE,\n { input },\n );\n return jsonResult(data.createSandboxTemplate);\n } catch (error) {\n ctx.logger.error('sandbox_templates_create failed', { error });\n return errorResult(\n `Failed to create template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_update')),\n {\n title: 'Update Sandbox Template',\n description: 'Update a sandbox template configuration.',\n inputSchema: {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n ttlSeconds: z.number().optional(),\n },\n },\n async ({ id, name, description, isDefault, ttlSeconds }) => {\n try {\n const input: Record<string, unknown> = { id };\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n if (ttlSeconds !== undefined) input.ttlSeconds = ttlSeconds;\n const data = await ctx.gql.workspace.request<{ updateSandboxTemplate: unknown }>(\n UPDATE_SANDBOX_TEMPLATE,\n { input },\n );\n return jsonResult(data.updateSandboxTemplate);\n } catch (error) {\n ctx.logger.error('sandbox_templates_update failed', { error });\n return errorResult(\n `Failed to update template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_templates_delete')),\n {\n title: 'Delete Sandbox Template',\n description: 'Delete a sandbox template configuration.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSandboxTemplate: unknown }>(\n DELETE_SANDBOX_TEMPLATE,\n { id },\n );\n return jsonResult({ deleted: data.deleteSandboxTemplate, templateId: id });\n } catch (error) {\n ctx.logger.error('sandbox_templates_delete failed', { error });\n return errorResult(\n `Failed to delete template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Tags ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_list')),\n {\n title: 'List Available Sandbox Tags',\n description: 'List available sandbox tags in the workspace.',\n inputSchema: {\n query: z.string().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ query, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ availableSandboxTags: unknown }>(\n AVAILABLE_SANDBOX_TAGS,\n { query, limit },\n );\n return jsonResult(data.availableSandboxTags);\n } catch (error) {\n ctx.logger.error('sandbox_tags_list failed', { error });\n return errorResult(\n `Failed to list tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_get')),\n {\n title: 'Get Sandbox Tags',\n description: 'Get tag assignments for a sandbox.',\n inputSchema: { sandboxId: z.string() },\n },\n async ({ sandboxId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxTags: unknown }>(\n GET_SANDBOX_TAGS,\n { input: { sandboxId } },\n );\n return jsonResult(data.getSandboxTags);\n } catch (error) {\n ctx.logger.error('sandbox_tags_get failed', { error });\n return errorResult(\n `Failed to get tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_create')),\n {\n title: 'Create Sandbox Tag',\n description: 'Create a new sandbox tag.',\n inputSchema: {\n label: z.string(),\n color: z.string().optional(),\n },\n },\n async ({ label, color }) => {\n try {\n const input: Record<string, unknown> = { label };\n if (color !== undefined) input.color = color;\n const data = await ctx.gql.workspace.request<{ createSandboxTag: unknown }>(\n CREATE_SANDBOX_TAG,\n { input },\n );\n return jsonResult(data.createSandboxTag);\n } catch (error) {\n ctx.logger.error('sandbox_tags_create failed', { error });\n return errorResult(\n `Failed to create tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_attach')),\n {\n title: 'Attach Tag to Sandbox',\n description: 'Attach a tag to a sandbox.',\n inputSchema: {\n sandboxId: z.string(),\n tagId: z.string(),\n source: z.string().optional(),\n },\n },\n async ({ sandboxId, tagId, source }) => {\n try {\n const input: Record<string, unknown> = { sandboxId, tagId };\n if (source !== undefined) input.source = source;\n const data = await ctx.gql.workspace.request<{ tagSandbox: unknown }>(TAG_SANDBOX, {\n input,\n });\n return jsonResult(data.tagSandbox);\n } catch (error) {\n ctx.logger.error('sandbox_tags_attach failed', { error });\n return errorResult(\n `Failed to attach tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_detach')),\n {\n title: 'Detach Tag from Sandbox',\n description: 'Detach a tag from a sandbox.',\n inputSchema: {\n sandboxId: z.string(),\n tagId: z.string(),\n },\n },\n async ({ sandboxId, tagId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ untagSandbox: unknown }>(UNTAG_SANDBOX, {\n input: { sandboxId, tagId },\n });\n return jsonResult({ detached: data.untagSandbox, sandboxId, tagId });\n } catch (error) {\n ctx.logger.error('sandbox_tags_detach failed', { error });\n return errorResult(\n `Failed to detach tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_tags_replace')),\n {\n title: 'Replace Sandbox Tags',\n description: 'Replace the full set of tags on a sandbox.',\n inputSchema: {\n sandboxId: z.string(),\n tagIds: z.array(z.string()),\n },\n },\n async ({ sandboxId, tagIds }) => {\n try {\n const data = await ctx.gql.workspace.request<{ replaceSandboxTags: unknown }>(\n REPLACE_SANDBOX_TAGS,\n { input: { sandboxId, tagIds } },\n );\n return jsonResult(data.replaceSandboxTags);\n } catch (error) {\n ctx.logger.error('sandbox_tags_replace failed', { error });\n return errorResult(\n `Failed to replace tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Admin / observability ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_list_all')),\n {\n title: 'List All Sandboxes (admin)',\n description: 'Admin-only list across the entire workspace including internal sandboxes.',\n inputSchema: {\n status: z.string().optional(),\n template: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ status, template, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (template !== undefined) filter.template = template;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await ctx.gql.workspace.request<{ listAllSandboxes: unknown }>(\n LIST_ALL_SANDBOXES,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.listAllSandboxes);\n } catch (error) {\n ctx.logger.error('sandbox_admin_list_all failed', { error });\n return errorResult(\n `Failed to list all sandboxes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_nodes_list')),\n {\n title: 'List Sandbox Nodes',\n description: 'List Kubernetes nodes hosting sandbox workloads with capacity info.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ listSandboxNodes: unknown }>(\n LIST_SANDBOX_NODES,\n {},\n );\n return jsonResult(data.listSandboxNodes);\n } catch (error) {\n ctx.logger.error('sandbox_admin_nodes_list failed', { error });\n return errorResult(\n `Failed to list nodes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_active')),\n {\n title: 'Get Active Sandboxes',\n description: 'Get currently active sandboxes in the workspace.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ getActiveSandboxes: unknown }>(\n GET_ACTIVE_SANDBOXES,\n {},\n );\n return jsonResult(data.getActiveSandboxes);\n } catch (error) {\n ctx.logger.error('sandbox_admin_active failed', { error });\n return errorResult(\n `Failed to get active sandboxes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_activity')),\n {\n title: 'Recent Sandbox Activity',\n description: 'Get recent sandbox lifecycle activity (create/stop/delete/extend).',\n inputSchema: { limit: z.number().optional() },\n },\n async ({ limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getRecentSandboxActivity: unknown }>(\n GET_RECENT_SANDBOX_ACTIVITY,\n { limit },\n );\n return jsonResult(data.getRecentSandboxActivity);\n } catch (error) {\n ctx.logger.error('sandbox_admin_activity failed', { error });\n return errorResult(\n `Failed to get activity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_stats')),\n {\n title: 'Sandbox Stats',\n description: 'Get aggregate sandbox usage statistics for the workspace.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxStats: unknown }>(\n GET_SANDBOX_STATS,\n {},\n );\n return jsonResult(data.getSandboxStats);\n } catch (error) {\n ctx.logger.error('sandbox_admin_stats failed', { error });\n return errorResult(\n `Failed to get stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_logs')),\n {\n title: 'Get Sandbox Logs',\n description: 'Fetch logs for a sandbox container.',\n inputSchema: {\n id: z.string(),\n containerName: z.string(),\n tailLines: z.number().optional(),\n },\n },\n async ({ id, containerName, tailLines }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxLogs: string }>(GET_SANDBOX_LOGS, {\n id,\n containerName,\n tailLines,\n });\n return jsonResult({ logs: data.getSandboxLogs });\n } catch (error) {\n ctx.logger.error('sandbox_admin_logs failed', { error });\n return errorResult(\n `Failed to get logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_config_get')),\n {\n title: 'Get Sandbox Config',\n description: 'Get the per-workspace sandbox configuration limits.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxConfig: unknown }>(\n GET_SANDBOX_CONFIG,\n {},\n );\n return jsonResult(data.getSandboxConfig);\n } catch (error) {\n ctx.logger.error('sandbox_admin_config_get failed', { error });\n return errorResult(\n `Failed to get config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_admin_config_set')),\n {\n title: 'Update Sandbox Config',\n description: 'Update the per-workspace sandbox configuration limits.',\n inputSchema: {\n defaultTtlSeconds: z.number().optional(),\n maxTtlSeconds: z.number().optional(),\n maxConcurrentPerUser: z.number().optional(),\n maxConcurrentPerWorkspace: z.number().optional(),\n },\n },\n async ({\n defaultTtlSeconds,\n maxTtlSeconds,\n maxConcurrentPerUser,\n maxConcurrentPerWorkspace,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (defaultTtlSeconds !== undefined) input.defaultTtlSeconds = defaultTtlSeconds;\n if (maxTtlSeconds !== undefined) input.maxTtlSeconds = maxTtlSeconds;\n if (maxConcurrentPerUser !== undefined) input.maxConcurrentPerUser = maxConcurrentPerUser;\n if (maxConcurrentPerWorkspace !== undefined)\n input.maxConcurrentPerWorkspace = maxConcurrentPerWorkspace;\n const data = await ctx.gql.workspace.request<{ updateSandboxConfig: unknown }>(\n UPDATE_SANDBOX_CONFIG,\n { input },\n );\n return jsonResult(data.updateSandboxConfig);\n } catch (error) {\n ctx.logger.error('sandbox_admin_config_set failed', { error });\n return errorResult(\n `Failed to update config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Export ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_create')),\n {\n title: 'Create Sandbox Export Job',\n description: 'Kick off an async job to export sandboxes for the workspace.',\n inputSchema: {\n workspaceId: z.string(),\n format: z.enum(['CSV', 'JSON']),\n includeUsageEvents: z.boolean().optional(),\n },\n },\n async ({ workspaceId, format, includeUsageEvents }) => {\n try {\n const input: Record<string, unknown> = { workspaceId, format };\n if (includeUsageEvents !== undefined) input.includeUsageEvents = includeUsageEvents;\n const data = await ctx.gql.workspace.request<{ exportSandboxes: unknown }>(\n EXPORT_SANDBOXES,\n { input },\n );\n return jsonResult(data.exportSandboxes);\n } catch (error) {\n ctx.logger.error('sandbox_export_create failed', { error });\n return errorResult(\n `Failed to create export: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_get')),\n {\n title: 'Get Sandbox Export Job',\n description:\n 'Get a sandbox export job by ID. Poll this to track progress (MCP has no subscriptions).',\n inputSchema: {\n workspaceId: z.string(),\n jobId: z.string(),\n },\n },\n async ({ workspaceId, jobId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxExportJob: unknown }>(\n GET_SANDBOX_EXPORT_JOB,\n { workspaceId, jobId },\n );\n return jsonResult(data.getSandboxExportJob);\n } catch (error) {\n ctx.logger.error('sandbox_export_get failed', { error });\n return errorResult(\n `Failed to get export job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_list')),\n {\n title: 'List Sandbox Export Jobs',\n description: 'List sandbox export jobs for a workspace.',\n inputSchema: {\n workspaceId: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ workspaceId, limit, offset }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await ctx.gql.workspace.request<{ listSandboxExportJobs: unknown }>(\n LIST_SANDBOX_EXPORT_JOBS,\n {\n workspaceId,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.listSandboxExportJobs);\n } catch (error) {\n ctx.logger.error('sandbox_export_list failed', { error });\n return errorResult(\n `Failed to list export jobs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_get_artifact_bytes')),\n {\n title: 'Get Sandbox Artifact Bytes',\n description: 'Fetch raw artifact bytes for a sandbox session (base64-encoded, 50 MB cap).',\n inputSchema: {\n sandboxId: z.string(),\n sessionId: z.string(),\n path: z.string(),\n onBehalfOfUserId: z.string().optional(),\n },\n },\n async ({ sandboxId, sessionId, path, onBehalfOfUserId }) => {\n try {\n const input: Record<string, unknown> = { sandboxId, sessionId, path };\n if (onBehalfOfUserId !== undefined) input.onBehalfOfUserId = onBehalfOfUserId;\n const data = await ctx.gql.workspace.request<{ getSandboxArtifactBytes: unknown }>(\n GET_SANDBOX_ARTIFACT_BYTES,\n { input },\n );\n return jsonResult(data.getSandboxArtifactBytes);\n } catch (error) {\n ctx.logger.error('sandbox_export_get_artifact_bytes failed', { error });\n return errorResult(\n `Failed to get artifact bytes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Proxy ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_proxy_request')),\n {\n title: 'Proxy HTTP Request to Sandbox',\n description: 'Proxy an HTTP request to a service running inside a sandbox container.',\n inputSchema: {\n sandboxId: z.string(),\n method: z.string(),\n path: z.string(),\n body: z.unknown().optional(),\n containerName: z.string().optional(),\n },\n },\n async ({ sandboxId, method, path, body, containerName }) => {\n try {\n const input: Record<string, unknown> = { sandboxId, method, path };\n if (body !== undefined) input.body = body;\n if (containerName !== undefined) input.containerName = containerName;\n const data = await ctx.gql.workspace.request<{ proxySandboxRequest: unknown }>(\n PROXY_SANDBOX_REQUEST,\n { input },\n );\n return jsonResult(data.proxySandboxRequest);\n } catch (error) {\n ctx.logger.error('sandbox_proxy_request failed', { error });\n return errorResult(\n `Failed to proxy request: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ---------- Subscription proxies (MCP has no subscriptions — use polling instead) ----------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_check')),\n {\n title: 'Check Sandbox State',\n description:\n 'Poll a sandbox by ID. MCP has no subscription protocol — call this in a loop to track lifecycle.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandbox: unknown }>(GET_SANDBOX, { id });\n return jsonResult(data.getSandbox);\n } catch (error) {\n ctx.logger.error('sandbox_check failed', { error });\n return errorResult(\n `Failed to poll sandbox: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sandbox_export_check')),\n {\n title: 'Check Sandbox Export Job',\n description:\n 'Poll an export job by ID. MCP has no subscription protocol — call this in a loop to track progress.',\n inputSchema: {\n workspaceId: z.string(),\n jobId: z.string(),\n },\n },\n async ({ workspaceId, jobId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getSandboxExportJob: unknown }>(\n GET_SANDBOX_EXPORT_JOB,\n { workspaceId, jobId },\n );\n return jsonResult(data.getSandboxExportJob);\n } catch (error) {\n ctx.logger.error('sandbox_export_check failed', { error });\n return errorResult(\n `Failed to poll export job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Sandbox module — Kubernetes-native sandbox management\n * (<product>_sandbox_{list,get,create,delete,stop,extend}).\n *\n * Backend: ~/products/wspace/sandbox/wspace-sandbox-svc/.\n * Lifted verbatim from vibecontrols-mcp/src/tools/sandboxes.ts.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSandboxTools } from './tools.js';\n\nconst sandboxModule: McpModule = {\n id: 'sandbox',\n version: '0.0.1',\n displayName: 'Sandbox',\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerSandboxTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default sandboxModule;\n"]}