@burdenoff/mcp-libs 2026.703.2 → 2026.704.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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/auth/device-code.ts","../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/vibecontrols/operations.ts","../../../src/modules/vibecontrols/tools/actions.ts","../../../src/modules/vibecontrols/tools/agents.ts","../../../src/modules/vibecontrols/tools/ai-prompts.ts","../../../src/modules/vibecontrols/tools/vibedeck-share-links.ts","../../../src/modules/vibecontrols/tools/catalogs.ts","../../../src/modules/vibecontrols/tools/components.ts","../../../src/modules/vibecontrols/tools/scorecards.ts","../../../src/modules/vibecontrols/tools/templates.ts","../../../src/modules/vibecontrols/tools/ai-events.ts","../../../src/modules/vibecontrols/tools/analytics.ts","../../../src/modules/vibecontrols/tools/audit.ts","../../../src/modules/vibecontrols/tools/configuration.ts","../../../src/modules/vibecontrols/tools/config-security.ts","../../../src/modules/vibecontrols/tools/config-ci.ts","../../../src/modules/vibecontrols/tools/config-gitops.ts","../../../src/modules/vibecontrols/tools/config-settings.ts","../../../src/modules/vibecontrols/tools/docs.ts","../../../src/modules/vibecontrols/tools/notes.ts","../../../src/modules/vibecontrols/tools/session-sharing.ts","../../../src/modules/vibecontrols/tools/sessions.ts","../../../src/modules/vibecontrols/tools/targets.ts","../../../src/modules/vibecontrols/tools/tunnels.ts","../../../src/modules/vibecontrols/tools/sandboxes.ts","../../../src/modules/vibecontrols/tools/ui-session.ts","../../../src/modules/vibecontrols/tools/vibedecks.ts","../../../src/modules/vibecontrols/tools/vibes.ts","../../../src/modules/vibecontrols/tools/webhooks.ts","../../../src/modules/auth/legacy-auth.ts","../../../src/modules/vibecontrols/resources.ts","../../../src/modules/vibecontrols/prompts.ts","../../../src/modules/vibecontrols/index.ts"],"names":["fetch","z","TemplateCategoryEnum"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * OAuth2 Device Code flow + Client Credentials flow + workspace token issuance.\n * Pure functions — operate on injected endpoints + client ids, no global state.\n *\n * Mirrors cli-sdk/src/core/auth/device-code.ts so a future shared\n * @burdenoff/auth-core extraction is mechanical.\n */\n\nimport fetch from 'cross-fetch';\n\nexport interface DeviceCodeResponse {\n deviceCode: string;\n userCode: string;\n verificationUri: string;\n verificationUriComplete: string | null;\n expiresIn: number;\n interval: number;\n}\n\nexport interface DeviceCodeTokenResult {\n accessToken: string;\n refreshToken: string;\n expiresIn: number;\n}\n\nexport interface ClientCredentialsResult {\n accessToken: string;\n expiresIn: number;\n scopes: string[];\n}\n\nexport interface OIDCConfig {\n oidcIssuer: string;\n clientId: string;\n}\n\nexport async function startDeviceCodeFlow(config: OIDCConfig): Promise<DeviceCodeResponse> {\n const url = `${config.oidcIssuer}/oidc/device/code`;\n const body = new URLSearchParams({\n client_id: config.clientId,\n scope: 'openid profile email offline_access',\n });\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Device code request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n\n return {\n deviceCode: data['device_code'] as string,\n userCode: data['user_code'] as string,\n verificationUri: data['verification_uri'] as string,\n verificationUriComplete: (data['verification_uri_complete'] as string) ?? null,\n expiresIn: data['expires_in'] as number,\n interval: (data['interval'] as number) ?? 5,\n };\n}\n\nexport type DeviceTokenPollResult =\n | { status: 'authenticated'; tokens: DeviceCodeTokenResult }\n | { status: 'pending' }\n | { status: 'slow_down'; newInterval: number }\n | { status: 'expired' }\n | { status: 'denied' };\n\n/**\n * Single-shot device-code token poll.\n *\n * Unlike cli-sdk's pollForToken which loops until done (suitable for blocking\n * CLI), MCP needs non-blocking semantics: the LLM calls auth_complete tool\n * repeatedly. This helper makes ONE poll attempt and returns a discriminated\n * union the caller can act on.\n */\nexport async function pollDeviceTokenOnce(\n deviceCode: string,\n interval: number,\n config: OIDCConfig,\n): Promise<DeviceTokenPollResult> {\n const url = `${config.oidcIssuer}/oauth/device/token`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceCode,\n client_id: config.clientId,\n }).toString(),\n });\n\n const data = (await response.json()) as Record<string, unknown>;\n\n if (response.ok && data['access_token']) {\n return {\n status: 'authenticated',\n tokens: {\n accessToken: data['access_token'] as string,\n refreshToken: (data['refresh_token'] as string) ?? '',\n expiresIn: (data['expires_in'] as number) ?? 3600,\n },\n };\n }\n\n const errorCode = data['error'] as string | undefined;\n switch (errorCode) {\n case 'authorization_pending':\n return { status: 'pending' };\n case 'slow_down':\n return { status: 'slow_down', newInterval: interval + 5 };\n case 'expired_token':\n return { status: 'expired' };\n case 'access_denied':\n return { status: 'denied' };\n default:\n throw new Error(\n `Device code polling failed: ${(data['error_description'] as string) ?? errorCode ?? 'Unknown error'}`,\n );\n }\n}\n\nexport async function clientCredentialsFlow(\n globalEndpoint: string,\n clientId: string,\n clientSecret: string,\n scopes?: string[],\n): Promise<ClientCredentialsResult> {\n const query = `\n mutation AuthenticateApp($input: AuthenticateAppInput!) {\n authenticateApp(input: $input) {\n accessToken tokenType expiresIn scopes\n }\n }\n `;\n\n const response = await fetch(globalEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n query,\n variables: { input: { clientId, clientSecret, scopes } },\n }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`App authentication failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: { authenticateApp: { accessToken: string; expiresIn: number; scopes: string[] } };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`App authentication failed: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n if (!data.data?.authenticateApp?.accessToken) {\n throw new Error('App authentication failed: no access token returned');\n }\n\n return data.data.authenticateApp;\n}\n\nexport async function issueWorkspaceToken(\n workspaceEndpoint: string,\n authToken: string,\n workspaceId: string,\n organizationId: string,\n): Promise<{ token: string; expiresAt: string; scopes: string[] }> {\n const query = `\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success token expiresAt scopes\n error { code message }\n }\n }\n `;\n\n const response = await fetch(workspaceEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}` },\n body: JSON.stringify({ query, variables: { input: { workspaceId, organizationId } } }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Workspace token request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: {\n issueWorkspaceToken: {\n success: boolean;\n token: string | null;\n expiresAt: string | null;\n scopes: string[] | null;\n error: { code: string; message: string } | null;\n };\n };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`Workspace token failed: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n\n const result = data.data?.issueWorkspaceToken;\n if (!result?.success || !result.token) {\n throw new Error(`Workspace token failed: ${result?.error?.message ?? 'Unknown error'}`);\n }\n\n return { token: result.token, expiresAt: result.expiresAt ?? '', scopes: result.scopes ?? [] };\n}\n\nexport async function fetchWorkspaces(\n globalEndpoint: string,\n authToken: string,\n): Promise<\n Array<{ id: string; name: string; slug: string; tenantId: string; organizationId: string }>\n> {\n const query = `\n query MyWorkspaces($limit: Int) {\n myWorkspaces(limit: $limit) {\n items { id name slug tenantId organizationId }\n }\n }\n `;\n\n const response = await fetch(globalEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}` },\n body: JSON.stringify({ query, variables: { limit: 50 } }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Failed to fetch workspaces (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: {\n myWorkspaces: {\n items: Array<{\n id: string;\n name: string;\n slug: string;\n tenantId: string;\n organizationId: string;\n }>;\n };\n };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`Failed to fetch workspaces: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n\n return data.data?.myWorkspaces?.items ?? [];\n}\n","/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","/**\n * Centralized GraphQL operations for the VibeControls MCP server.\n * Adapted from vibecontrols-cli/src/graphql/operations.ts with superset field selections.\n * Uses template string interpolation pattern (not gql tagged fragments).\n */\n\n// ---------------------------------------------------------------------------\n// Field Fragments (template string constants for interpolation)\n// ---------------------------------------------------------------------------\n\nexport const AGENT_FIELDS = `\n id name hostname platform architecture version\n tunnelUrl tunnelStatus apiUrl agentApiKey appId appClientId\n capabilities configuration isActive lastHeartbeat metadata\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const VIBE_FIELDS = `\n id name description path type status agentId parentId\n gitBranch gitRemote gitStatus environmentVariables tags metadata\n workspaceId archivedAt createdAt updatedAt deletedAt\n`;\n\nexport const SESSION_FIELDS = `\n id name command workingDirectory type status agentId vibeId\n providerSessionName providerWindowId providerPaneId pid exitCode ttydUrl lastOutput\n autoStart environmentVariables metadata startedAt stoppedAt\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const NOTE_FIELDS = `\n id title content tags isPinned vibeId createdBy metadata\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const CONFIG_FIELDS = `\n id key value scope scopeId isSecret\n workspaceId createdAt updatedAt\n`;\n\nexport const WEBHOOK_FIELDS = `\n id name url events agentIds isActive signingKey retryPolicy\n deliveryCount failureCount lastDelivery lastError\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const UI_SESSION_FIELDS = `\n id userId state activeVibeId activeSessionId\n recentVibes recentSessions workspaceId createdAt updatedAt\n`;\n\nexport const TUNNEL_FIELDS = `\n id workspaceId agentId slug name description\n providerKey protocol localHost localPort tlsMode\n status lastError hasBasicAuth basicAuthUser\n primaryDomain { id hostname type verificationStatus isPrimary }\n startedAt stoppedAt createdAt updatedAt\n`;\n\nexport const TUNNEL_DOMAIN_FIELDS_MCP = `\n id workspaceId tunnelId type hostname environment\n verificationStatus challengeRecordName challengeToken\n verifiedAt lastCheckedAt lastCheckError isPrimary\n dnsTargetHint createdAt updatedAt\n`;\n\nexport const TUNNEL_PROVIDER_FIELDS_MCP = `\n id key displayName description isEnabled pluginPackage minAgentVersion\n capabilities {\n platforms supportedVisibilities\n supportsCustomDomains supportsHttp supportsHttps supportsLiveLogs\n supportsManagedSubdomains supportsReservedSubdomain supportsRotateCredentials\n supportsSessionTokens supportsTcp supportsUdp supportsUsageMetrics\n }\n createdAt updatedAt\n`;\n\nexport const TUNNEL_SESSION_FIELDS_MCP = `\n id workspaceId tunnelId shardId agentId status\n tokenFingerprint issuedAt expiresAt connectedAt disconnectedAt\n revokedAt revokedReason clientIp bytesIn bytesOut\n`;\n\nexport const TUNNEL_SHARD_FIELDS_MCP = `\n id name providerId environment publicHost controlPort proxyPortRange\n region status capacity currentLoad metadata createdAt updatedAt\n`;\n\nexport const TARGET_FIELDS = `\n id name type host port username status\n workspaceId createdAt updatedAt\n`;\n\nexport const AGENT_CONNECTION_FIELDS = `\n id sourceAgentId targetId protocol status permissions\n createdAt updatedAt\n`;\n\nexport const VIBEDECK_FIELDS = `\n id name description isDefault\n workspaceId createdAt updatedAt\n`;\n\nexport const VIBEDECK_BUTTON_FIELDS = `\n id vibeDeckId label icon actionType actionId\n action { id name actionType }\n command script webhookUrl\n row column color category tags\n confirmationRequired keyboardShortcut style sortOrder\n createdAt updatedAt\n`;\n\nexport const AI_TOOL_EVENT_FIELDS = `\n id source eventType payload agentId\n workspaceId createdAt\n`;\n\nexport const DOCS_SITE_FIELDS = `\n id vibeId name visibility runtime\n workspaceId createdAt updatedAt\n`;\n\nexport const DOCS_PAGE_FIELDS = `\n id siteId title slug content parentId sidebarPosition status\n createdAt updatedAt\n`;\n\nexport const DOCS_REVISION_FIELDS = `\n id siteId revisionNumber status buildDurationMs artifactSizeBytes\n errorMessage publishedAt\n createdAt updatedAt\n`;\n\nexport const AUDIT_LOG_FIELDS = `\n id action resourceType resourceId actorId actorType\n status description ipAddress userAgent requestId\n workspaceId createdAt\n`;\n\nexport const SESSION_SHARE_FIELDS = `\n id sessionId sharedWithId permission status message\n createdBy createdAt expiresAt lastAccessAt accessCount revokedAt revokedBy\n`;\n\nexport const SESSION_SHARE_LINK_FIELDS = `\n id sessionId token permission expiresAt\n createdAt\n`;\n\n// ---------------------------------------------------------------------------\n// Agent Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_AGENTS = `\n query VibecontrolsAgents($filter: VibecontrolsAgentFilterInput) {\n vibecontrolsAgents(filter: $filter) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const GET_AGENT = `\n query VibecontrolsAgent($id: ID!) {\n vibecontrolsAgent(id: $id) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const CREATE_AGENT = `\n mutation CreateVibecontrolsAgent($input: CreateVibecontrolsAgentInput!) {\n createVibecontrolsAgent(input: $input) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const UPDATE_AGENT = `\n mutation UpdateVibecontrolsAgent($id: ID!, $input: UpdateVibecontrolsAgentInput!) {\n updateVibecontrolsAgent(id: $id, input: $input) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const DELETE_AGENT = `\n mutation DeleteVibecontrolsAgent($id: ID!) {\n deleteVibecontrolsAgent(id: $id)\n }\n`;\n\nexport const PROBE_AGENT_CONNECTION = `\n query ProbeAgentConnection($id: ID!) {\n probeAgentConnection(id: $id) {\n agentId reachable latencyMs error version tunnelUrl\n }\n }\n`;\n\nexport const AGENT_HEALTH_PROBES = `\n query VibecontrolsAgentHealthProbes {\n vibecontrolsAgentHealthProbes {\n agentId agentName healthy agentVersion errorMessage tunnelUrl uptime\n }\n }\n`;\n\nexport const AGENT_PLUGINS = `\n query AgentPlugins($agentId: ID!) {\n agentPlugins(agentId: $agentId) {\n agentId\n plugins {\n name packageName version description isActive tags metadata\n }\n total\n }\n }\n`;\n\nexport const INSTALL_AGENT_PLUGIN = `\n mutation InstallAgentPlugin($agentId: ID!, $packageName: String!) {\n installAgentPlugin(agentId: $agentId, packageName: $packageName) {\n success message\n plugin { name packageName version description isActive tags metadata }\n }\n }\n`;\n\nexport const REMOVE_AGENT_PLUGIN = `\n mutation RemoveAgentPlugin($agentId: ID!, $packageName: String!) {\n removeAgentPlugin(agentId: $agentId, packageName: $packageName) {\n success message\n plugin { name packageName version description isActive tags metadata }\n }\n }\n`;\n\nexport const AGENT_HEARTBEAT = `\n mutation VibecontrolsAgentHeartbeat($id: ID!) {\n vibecontrolsAgentHeartbeat(id: $id) { id isActive lastHeartbeat }\n }\n`;\n\nexport const DEACTIVATE_AGENT = `\n mutation DeactivateVibecontrolsAgent($id: ID!) {\n deactivateVibecontrolsAgent(id: $id) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const AGENT_GRAPH = `\n query AgentGraph($workspaceId: ID!, $rootAgentId: ID) {\n agentGraph(workspaceId: $workspaceId, rootAgentId: $rootAgentId) {\n agents { ${AGENT_FIELDS} }\n connections { ${AGENT_CONNECTION_FIELDS} }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Vibe Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_VIBES = `\n query Vibes($filter: VibeFilterInput, $pagination: PaginationInput) {\n vibes(filter: $filter, pagination: $pagination) {\n items { ${VIBE_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_VIBE = `\n query Vibe($id: ID!) {\n vibe(id: $id) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const CREATE_VIBE = `\n mutation CreateVibe($input: CreateVibeInput!) {\n createVibe(input: $input) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE = `\n mutation UpdateVibe($id: ID!, $input: UpdateVibeInput!) {\n updateVibe(id: $id, input: $input) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const DELETE_VIBE = `\n mutation DeleteVibe($id: ID!) { deleteVibe(id: $id) }\n`;\n\nexport const ARCHIVE_VIBE = `\n mutation ArchiveVibe($id: ID!) {\n archiveVibe(id: $id) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const RESTORE_VIBE = `\n mutation RestoreVibe($id: ID!) {\n restoreVibe(id: $id) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const MOVE_VIBE = `\n mutation MoveVibe($id: ID!, $newParentId: ID) {\n moveVibe(id: $id, newParentId: $newParentId) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE_STATUS = `\n mutation UpdateVibeStatus($id: ID!, $status: VibeStatus!) {\n updateVibeStatus(id: $id, status: $status) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const VIBE_HIERARCHY = `\n query VibeHierarchy($rootId: ID) {\n vibeHierarchy(rootId: $rootId) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const SEARCH_VIBES = `\n query SearchVibes($query: String!, $limit: Int) {\n searchVibes(query: $query, limit: $limit) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE_GIT = `\n mutation UpdateVibeGit($id: ID!, $gitBranch: String, $gitRemote: String, $gitStatus: JSON) {\n updateVibeGit(id: $id, gitBranch: $gitBranch, gitRemote: $gitRemote, gitStatus: $gitStatus) {\n ${VIBE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Session Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_SESSIONS = `\n query Sessions($filter: SessionFilterInput, $pagination: PaginationInput) {\n sessions(filter: $filter, pagination: $pagination) {\n items { ${SESSION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_SESSION = `\n query Session($id: ID!) {\n session(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const CREATE_SESSION = `\n mutation CreateSession($input: CreateSessionInput!) {\n createSession(input: $input) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const START_SESSION = `\n mutation StartSession($id: ID!) {\n startSession(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const STOP_SESSION = `\n mutation StopSession($id: ID!) {\n stopSession(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const RESTART_SESSION = `\n mutation RestartSession($id: ID!) {\n restartSession(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const TERMINATE_SESSION = `\n mutation TerminateSession($id: ID!) {\n terminateSession(id: $id)\n }\n`;\n\nexport const SEND_SESSION_INPUT = `\n mutation SendSessionInput($id: ID!, $input: String!) {\n sendSessionInput(id: $id, input: $input)\n }\n`;\n\nexport const START_SESSION_TERMINAL = `\n mutation StartSessionTerminal($id: ID!) {\n startSessionTerminal(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const SESSION_OUTPUT = `\n query SessionOutput($id: ID!, $lines: Int) {\n sessionOutput(id: $id, lines: $lines)\n }\n`;\n\nexport const ACTIVE_SESSIONS = `\n query ActiveSessions($vibeId: ID) {\n activeSessions(vibeId: $vibeId) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const CHECK_SESSION_HEALTH = `\n mutation CheckSessionHealth {\n checkSessionHealth { checked updated errors }\n }\n`;\n\nexport const BULK_RESTART_SESSIONS = `\n mutation BulkRestartSessions($ids: [ID!]!) {\n bulkRestartSessions(ids: $ids) { succeeded failed }\n }\n`;\n\nexport const BULK_STOP_SESSIONS = `\n mutation BulkStopSessions($ids: [ID!]!) {\n bulkStopSessions(ids: $ids) { succeeded failed }\n }\n`;\n\nexport const BULK_TERMINATE_SESSIONS = `\n mutation BulkTerminateSessions($ids: [ID!]!) {\n bulkTerminateSessions(ids: $ids) { succeeded failed }\n }\n`;\n\nexport const UPDATE_SESSION = `\n mutation UpdateSession($id: ID!, $input: UpdateSessionInput!) {\n updateSession(id: $id, input: $input) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const UPDATE_SESSION_STATUS = `\n mutation UpdateSessionStatus($id: ID!, $status: VibecontrolsSessionStatus!) {\n updateSessionStatus(id: $id, status: $status) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const DELETE_SESSION = `\n mutation DeleteSession($id: ID!) { deleteSession(id: $id) }\n`;\n\nexport const KILL_SESSION = `\n mutation KillSession($id: ID!) { killSession(id: $id) }\n`;\n\n// ---------------------------------------------------------------------------\n// Session Sharing Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const SHARE_SESSION = `\n mutation ShareSession($input: ShareSessionInput!) {\n shareSession(input: $input) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const CREATE_SESSION_SHARE_LINK = `\n mutation CreateSessionShareLink($input: CreateSessionShareLinkInput!) {\n createSessionShareLink(input: $input) { ${SESSION_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const REVOKE_SESSION_SHARE = `\n mutation RevokeSessionShare($id: ID!) {\n revokeSessionShare(id: $id) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const REVOKE_SESSION_SHARE_LINK = `\n mutation RevokeSessionShareLink($id: ID!) {\n revokeSessionShareLink(id: $id) { ${SESSION_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const SESSION_SHARES = `\n query SessionShares($sessionId: ID!) {\n sessionShares(sessionId: $sessionId) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const SESSION_SHARE_LINKS = `\n query SessionShareLinks($sessionId: ID!) {\n sessionShareLinks(sessionId: $sessionId) { ${SESSION_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const SESSION_COLLABORATORS = `\n query SessionCollaborators($sessionId: ID!) {\n sessionCollaborators(sessionId: $sessionId) { userId hasControl joinedAt }\n }\n`;\n\nexport const SESSIONS_SHARED_WITH_ME = `\n query SessionsSharedWithMe($filter: SharedWithMeFilterInput, $pagination: PaginationInput) {\n sessionsSharedWithMe(filter: $filter, pagination: $pagination) {\n totalCount\n edges {\n cursor\n node { ${SESSION_SHARE_FIELDS} }\n }\n }\n }\n`;\n\nexport const UPDATE_SESSION_SHARE = `\n mutation UpdateSessionShare($id: ID!, $input: UpdateSessionShareInput!) {\n updateSessionShare(id: $id, input: $input) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const JOIN_SHARED_SESSION = `\n mutation JoinSharedSession($input: JoinSessionInput!) {\n joinSharedSession(input: $input) { id userId hasControl joinedAt role }\n }\n`;\n\nexport const LEAVE_SHARED_SESSION = `\n mutation LeaveSharedSession($sessionId: ID!) { leaveSharedSession(sessionId: $sessionId) }\n`;\n\nexport const REQUEST_SESSION_CONTROL = `\n mutation RequestSessionControl($sessionId: ID!) { requestSessionControl(sessionId: $sessionId) }\n`;\n\nexport const RELEASE_SESSION_CONTROL = `\n mutation ReleaseSessionControl($sessionId: ID!) { releaseSessionControl(sessionId: $sessionId) }\n`;\n\nexport const TRANSFER_SESSION_CONTROL = `\n mutation TransferSessionControl($sessionId: ID!, $toUserId: ID!) {\n transferSessionControl(sessionId: $sessionId, toUserId: $toUserId)\n }\n`;\n\nexport const STOP_SESSION_TERMINAL = `\n mutation StopSessionTerminal($id: ID!) {\n stopSessionTerminal(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const RESTART_SESSION_TERMINAL = `\n mutation RestartSessionTerminal($id: ID!) {\n restartSessionTerminal(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const START_TARGET_TERMINAL = `\n mutation StartTerminal($targetId: ID!, $shell: String) {\n startTerminal(targetId: $targetId, shell: $shell) {\n connectionId sessionId status host localPort remotePort ttydUrl\n }\n }\n`;\n\nexport const STOP_TARGET_TERMINAL = `\n mutation StopTerminal($sessionId: ID!) { stopTerminal(sessionId: $sessionId) }\n`;\n\nexport const EXPORT_SESSIONS = `\n mutation ExportSessions($input: SessionExportInput!) {\n exportSessions(input: $input) { count data format generatedAt }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// AI Prompts\n// ---------------------------------------------------------------------------\n\nexport const AI_PROMPT_FIELDS = `\n id name description content category status isShared\n tags variables metadata createdBy onBehalfOf updatedBy\n workspaceId usageCount lastUsedAt\n createdAt updatedAt deletedAt\n`;\n\nexport const LIST_AI_PROMPTS = `\n query AiPrompts($filter: AIPromptFilterInput, $pagination: PaginationInput) {\n aiPrompts(filter: $filter, pagination: $pagination) {\n items { ${AI_PROMPT_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_AI_PROMPT = `\n query AiPrompt($id: ID!) { aiPrompt(id: $id) { ${AI_PROMPT_FIELDS} } }\n`;\n\nexport const CREATE_AI_PROMPT = `\n mutation CreateAIPrompt($input: CreateAIPromptInput!) {\n createAIPrompt(input: $input) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\nexport const UPDATE_AI_PROMPT = `\n mutation UpdateAIPrompt($id: ID!, $input: UpdateAIPromptInput!) {\n updateAIPrompt(id: $id, input: $input) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\nexport const DELETE_AI_PROMPT = `\n mutation DeleteAIPrompt($id: ID!) { deleteAIPrompt(id: $id) }\n`;\n\nexport const DUPLICATE_AI_PROMPT = `\n mutation DuplicateAIPrompt($id: ID!, $name: String!) {\n duplicateAIPrompt(id: $id, name: $name) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\nexport const RENDER_AI_PROMPT = `\n mutation RenderAIPrompt($id: ID!, $variables: JSON) {\n renderAIPrompt(id: $id, variables: $variables) { promptId rendered }\n }\n`;\n\nexport const RECORD_AI_PROMPT_USAGE = `\n mutation RecordAIPromptUsage($id: ID!) {\n recordAIPromptUsage(id: $id) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// VibeDeck share-links\n// ---------------------------------------------------------------------------\n\nexport const VIBE_DECK_SHARE_LINK_FIELDS = `\n id vibeDeckId token shareUrl name permission status visibility\n hasPassword allowIframe maxUses useCount expiresAt lastUsedAt\n createdBy createdAt\n`;\n\nexport const LIST_VIBE_DECK_SHARE_LINKS = `\n query VibeDeckShareLinks($vibeDeckId: ID!) {\n vibeDeckShareLinks(vibeDeckId: $vibeDeckId) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const CREATE_VIBE_DECK_SHARE_LINK = `\n mutation CreateVibeDeckShareLink($input: CreateVibeDeckShareLinkInput!) {\n createVibeDeckShareLink(input: $input) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE_DECK_SHARE_LINK = `\n mutation UpdateVibeDeckShareLink($id: ID!, $input: UpdateVibeDeckShareLinkInput!) {\n updateVibeDeckShareLink(id: $id, input: $input) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const REVOKE_VIBE_DECK_SHARE_LINK = `\n mutation RevokeVibeDeckShareLink($id: ID!) {\n revokeVibeDeckShareLink(id: $id) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const VALIDATE_VIBE_DECK_SHARE_LINK = `\n query ValidateVibeDeckShareLink($token: String!) {\n validateVibeDeckShareLink(token: $token) {\n isValid error requiresPassword permission allowIframe\n expiresAt vibeDeckId vibeDeckName ownerName\n }\n }\n`;\n\nexport const SHARED_VIBE_DECK = `\n query SharedVibeDeck($token: String!, $password: String) {\n sharedVibeDeck(token: $token, password: $password) {\n id name description icon buttonSize colorTheme gridColumns gridRows\n permission\n buttons { id label actionType row column rowSpan colSpan icon color category confirmationRequired }\n }\n }\n`;\n\nexport const EXECUTE_SHARED_VIBE_DECK_BUTTON = `\n mutation ExecuteSharedVibeDeckButton($token: String!, $buttonId: ID!, $password: String) {\n executeSharedVibeDeckButton(token: $token, buttonId: $buttonId, password: $password) {\n success output error\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Note Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_NOTES = `\n query Notes($filter: VibecontrolsNoteFilterInput, $pagination: PaginationInput) {\n notes(filter: $filter, pagination: $pagination) {\n items { ${NOTE_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_NOTE = `\n query Note($id: ID!) {\n note(id: $id) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const CREATE_NOTE = `\n mutation CreateNote($input: CreateVibecontrolsNoteInput!) {\n createNote(input: $input) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const UPDATE_NOTE = `\n mutation UpdateNote($id: ID!, $input: UpdateVibecontrolsNoteInput!) {\n updateNote(id: $id, input: $input) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const DELETE_NOTE = `\n mutation DeleteNote($id: ID!) { deleteNote(id: $id) }\n`;\n\nexport const SEARCH_NOTES = `\n query SearchNotes($query: String!, $vibeId: ID, $limit: Int) {\n searchNotes(query: $query, vibeId: $vibeId, limit: $limit) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const PIN_NOTE = `\n mutation PinNote($id: ID!) {\n pinNote(id: $id) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const UNPIN_NOTE = `\n mutation UnpinNote($id: ID!) {\n unpinNote(id: $id) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const PINNED_NOTES = `\n query PinnedNotes($vibeId: ID) {\n pinnedNotes(vibeId: $vibeId) { ${NOTE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_CONFIGURATIONS = `\n query Configurations($filter: ConfigurationFilterInput!, $pagination: PaginationInput) {\n configurations(filter: $filter, pagination: $pagination) {\n items { ${CONFIG_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_CONFIGURATION = `\n query Configuration($key: String!, $scope: ConfigScope!, $scopeId: String) {\n configuration(key: $key, scope: $scope, scopeId: $scopeId) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const CONFIGURATIONS_BY_SCOPE = `\n query ConfigurationsByScope($scope: ConfigScope!, $scopeId: String) {\n configurationsByScope(scope: $scope, scopeId: $scopeId) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const SET_CONFIGURATION = `\n mutation SetConfiguration($key: String!, $scope: ConfigScope!, $scopeId: ID, $value: JSON!, $isSecret: Boolean) {\n setConfiguration(key: $key, scope: $scope, scopeId: $scopeId, value: $value, isSecret: $isSecret) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const DELETE_CONFIGURATION = `\n mutation DeleteConfiguration($key: String!, $scope: ConfigScope!, $scopeId: String) {\n deleteConfiguration(key: $key, scope: $scope, scopeId: $scopeId)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Webhook Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_WEBHOOKS = `\n query Webhooks($filter: WebhookFilterInput, $pagination: PaginationInput) {\n webhooks(filter: $filter, pagination: $pagination) {\n items { ${WEBHOOK_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_WEBHOOK = `\n query Webhook($id: ID!) {\n webhook(id: $id) { ${WEBHOOK_FIELDS} }\n }\n`;\n\nexport const CREATE_WEBHOOK = `\n mutation CreateWebhook($input: CreateWebhookInput!) {\n createWebhook(input: $input) { ${WEBHOOK_FIELDS} }\n }\n`;\n\nexport const UPDATE_WEBHOOK = `\n mutation UpdateWebhook($id: ID!, $input: UpdateWebhookInput!) {\n updateWebhook(id: $id, input: $input) { ${WEBHOOK_FIELDS} }\n }\n`;\n\nexport const DELETE_WEBHOOK = `\n mutation DeleteWebhook($id: ID!) { deleteWebhook(id: $id) }\n`;\n\nexport const TEST_WEBHOOK = `\n mutation TestWebhook($id: ID!) { testWebhook(id: $id) }\n`;\n\nexport const TRIGGER_WEBHOOK = `\n mutation TriggerWebhook($id: ID!, $payload: JSON) {\n triggerWebhook(id: $id, payload: $payload)\n }\n`;\n\nexport const RESET_WEBHOOK_FAILURES = `\n mutation ResetWebhookFailures($id: ID!) {\n resetWebhookFailures(id: $id) { ${WEBHOOK_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Tunnel Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_TUNNELS = `\n query Tunnels($filter: TunnelFilterInput, $pagination: PaginationInput) {\n tunnels(filter: $filter, pagination: $pagination) {\n items { ${TUNNEL_FIELDS} }\n total\n hasMore\n }\n }\n`;\n\nexport const GET_TUNNEL = `\n query Tunnel($id: ID!) { tunnel(id: $id) { ${TUNNEL_FIELDS} } }\n`;\n\nexport const GET_TUNNEL_BY_SLUG = `\n query TunnelBySlug($slug: String!) {\n tunnelBySlug(slug: $slug) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const CREATE_TUNNEL = `\n mutation CreateTunnel($input: CreateTunnelInput!) {\n createTunnel(input: $input) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const UPDATE_TUNNEL = `\n mutation UpdateTunnel($id: ID!, $input: UpdateTunnelInput!) {\n updateTunnel(id: $id, input: $input) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const START_TUNNEL = `\n mutation StartTunnel($id: ID!) { startTunnel(id: $id) { ${TUNNEL_FIELDS} } }\n`;\n\nexport const STOP_TUNNEL = `\n mutation StopTunnel($id: ID!) { stopTunnel(id: $id) { ${TUNNEL_FIELDS} } }\n`;\n\nexport const DELETE_TUNNEL = `\n mutation DeleteTunnel($id: ID!) { deleteTunnel(id: $id) }\n`;\n\nexport const ROTATE_TUNNEL_CREDENTIALS = `\n mutation RotateTunnelCredentials($id: ID!) {\n rotateTunnelCredentials(id: $id) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const ISSUE_TUNNEL_SESSION = `\n mutation IssueTunnelSession($tunnelId: ID!, $ttlSeconds: Int) {\n issueTunnelSession(tunnelId: $tunnelId, ttlSeconds: $ttlSeconds) {\n session { ${TUNNEL_SESSION_FIELDS_MCP} }\n token\n agentConfigHint\n }\n }\n`;\n\nexport const REVOKE_TUNNEL_SESSION = `\n mutation RevokeTunnelSession($sessionId: ID!, $reason: String) {\n revokeTunnelSession(sessionId: $sessionId, reason: $reason)\n }\n`;\n\nexport const LIST_TUNNEL_SESSIONS = `\n query TunnelSessions($tunnelId: ID!, $pagination: PaginationInput) {\n tunnelSessions(tunnelId: $tunnelId, pagination: $pagination) {\n items { ${TUNNEL_SESSION_FIELDS_MCP} }\n total\n hasMore\n }\n }\n`;\n\nexport const LIST_TUNNEL_PROVIDERS = `\n query TunnelProviders { tunnelProviders { ${TUNNEL_PROVIDER_FIELDS_MCP} } }\n`;\n\nexport const GET_TUNNEL_PROVIDER = `\n query TunnelProvider($key: TunnelProviderKey!) {\n tunnelProvider(key: $key) { ${TUNNEL_PROVIDER_FIELDS_MCP} }\n }\n`;\n\nexport const LIST_TUNNEL_SHARDS = `\n query TunnelShards($environment: TunnelEnvironment) {\n tunnelShards(environment: $environment) { ${TUNNEL_SHARD_FIELDS_MCP} }\n }\n`;\n\nexport const TUNNEL_USAGE = `\n query TunnelUsage($tunnelId: ID!, $from: DateTime!, $to: DateTime!) {\n tunnelUsage(tunnelId: $tunnelId, from: $from, to: $to) {\n tunnelId hourBucket bytesIn bytesOut connections requests\n }\n }\n`;\n\nexport const TUNNEL_AUDIT = `\n query TunnelAudit($tunnelId: ID!, $pagination: PaginationInput) {\n tunnelAudit(tunnelId: $tunnelId, pagination: $pagination) {\n items {\n id action resourceType resourceId actorId actorType\n status description ipAddress userAgent requestId\n workspaceId createdAt\n }\n total\n hasMore\n }\n }\n`;\n\nexport const LIST_TUNNEL_DOMAINS = `\n query TunnelDomains($tunnelId: ID, $filter: TunnelDomainFilterInput, $pagination: PaginationInput) {\n tunnelDomains(tunnelId: $tunnelId, filter: $filter, pagination: $pagination) {\n items { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n total\n hasMore\n }\n }\n`;\n\nexport const GET_TUNNEL_DOMAIN = `\n query TunnelDomain($id: ID!) {\n tunnelDomain(id: $id) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const RESERVE_TUNNEL_SUBDOMAIN = `\n mutation ReserveTunnelSubdomain($input: ReserveTunnelSubdomainInput!) {\n reserveTunnelSubdomain(input: $input) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const REGISTER_CUSTOM_TUNNEL_DOMAIN = `\n mutation RegisterCustomTunnelDomain($input: RegisterCustomDomainInput!) {\n registerCustomTunnelDomain(input: $input) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const VERIFY_TUNNEL_DOMAIN = `\n mutation VerifyTunnelDomain($domainId: ID!) {\n verifyTunnelDomain(domainId: $domainId) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const ATTACH_TUNNEL_DOMAIN = `\n mutation AttachTunnelDomain($tunnelId: ID!, $domainId: ID!, $makePrimary: Boolean) {\n attachTunnelDomain(tunnelId: $tunnelId, domainId: $domainId, makePrimary: $makePrimary) {\n ${TUNNEL_FIELDS}\n }\n }\n`;\n\nexport const DETACH_TUNNEL_DOMAIN = `\n mutation DetachTunnelDomain($tunnelId: ID!, $domainId: ID!) {\n detachTunnelDomain(tunnelId: $tunnelId, domainId: $domainId) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const DELETE_TUNNEL_DOMAIN = `\n mutation DeleteTunnelDomain($domainId: ID!) {\n deleteTunnelDomain(domainId: $domainId)\n }\n`;\n\nexport const PROBE_AGENT_TUNNEL = `\n query ProbeAgentTunnel($url: String!, $agentApiKey: String) {\n probeAgentTunnel(url: $url, agentApiKey: $agentApiKey) {\n agentId reachable latencyMs error version tunnelUrl\n }\n }\n`;\n\nexport const ADD_AGENT_FROM_TUNNEL = `\n mutation AddVibecontrolsAgentFromTunnel($input: AddAgentFromTunnelInput!) {\n addVibecontrolsAgentFromTunnel(input: $input) {\n success clientId clientSecret devportalApplicationId error\n agent { id name workspaceId isActive }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// UI Session Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const GET_UI_SESSION = `\n query { uiSession { ${UI_SESSION_FIELDS} } }\n`;\n\nexport const SAVE_UI_SESSION = `\n mutation SaveUISession($input: SaveUISessionInput!) {\n saveUISession(input: $input) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const CLEAR_UI_SESSION = `\n mutation { clearUISession }\n`;\n\n// ---------------------------------------------------------------------------\n// AI Tool Event Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_AI_TOOL_EVENTS = `\n query AiToolEvents($filter: AiToolEventFilterInput, $pagination: PaginationInput) {\n aiToolEvents(filter: $filter, pagination: $pagination) {\n items { ${AI_TOOL_EVENT_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const RECENT_AI_TOOL_EVENTS = `\n query RecentAiToolEvents($agentId: ID!, $limit: Int) {\n recentAiToolEvents(agentId: $agentId, limit: $limit) { ${AI_TOOL_EVENT_FIELDS} }\n }\n`;\n\nexport const CREATE_AI_TOOL_EVENT = `\n mutation CreateAiToolEvent($input: CreateAiToolEventInput!) {\n createAiToolEvent(input: $input) { ${AI_TOOL_EVENT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Target Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_TARGETS = `\n query Targets($workspaceId: ID!, $filter: TargetFilterInput, $limit: Int, $offset: Int) {\n targets(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset) {\n items { ${TARGET_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_TARGET = `\n query Target($id: ID!) {\n target(id: $id) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const CREATE_TARGET = `\n mutation CreateTarget($workspaceId: ID!, $input: CreateTargetInput!) {\n createTarget(workspaceId: $workspaceId, input: $input) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const UPDATE_TARGET = `\n mutation UpdateTarget($id: ID!, $input: UpdateTargetInput!) {\n updateTarget(id: $id, input: $input) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const DELETE_TARGET = `\n mutation DeleteTarget($id: ID!) { deleteTarget(id: $id) }\n`;\n\nexport const TEST_TARGET = `\n query TestTarget($id: ID!) {\n testTarget(id: $id) { success error latencyMs }\n }\n`;\n\nexport const IMPORT_TARGETS_FROM_CONFIG = `\n mutation ImportTargetsFromConfig($agentId: ID!, $hosts: [ConfigHostInput!]!, $workspaceId: ID!) {\n importTargetsFromConfig(agentId: $agentId, hosts: $hosts, workspaceId: $workspaceId) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const SCAN_SSH_CONFIG = `\n mutation ScanSSHConfig($agentId: ID!, $configPath: String) {\n scanSSHConfig(agentId: $agentId, configPath: $configPath) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const INSTALL_AGENT_ON_TARGET = `\n mutation InstallAgentOnTarget($sourceAgentId: ID!, $targetId: ID!, $agentPort: Int) {\n installAgentOnTarget(sourceAgentId: $sourceAgentId, targetId: $targetId, agentPort: $agentPort) { success error }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// VibeDeck Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_VIBEDECKS = `\n query VibeDecks($filter: VibeDeckFilterInput, $pagination: PaginationInput) {\n vibeDecks(filter: $filter, pagination: $pagination) {\n items { ${VIBEDECK_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_VIBEDECK = `\n query VibeDeck($id: ID!) {\n vibeDeck(id: $id) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const DEFAULT_VIBEDECK = `\n query { defaultVibeDeck { ${VIBEDECK_FIELDS} } }\n`;\n\nexport const CREATE_VIBEDECK = `\n mutation CreateVibeDeck($input: CreateVibeDeckInput!) {\n createVibeDeck(input: $input) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBEDECK = `\n mutation UpdateVibeDeck($id: ID!, $input: UpdateVibeDeckInput!) {\n updateVibeDeck(id: $id, input: $input) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const DELETE_VIBEDECK = `\n mutation DeleteVibeDeck($id: ID!) { deleteVibeDeck(id: $id) }\n`;\n\nexport const DUPLICATE_VIBEDECK = `\n mutation DuplicateVibeDeck($id: ID!, $name: String) {\n duplicateVibeDeck(id: $id, name: $name) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const SET_DEFAULT_VIBEDECK = `\n mutation SetDefaultVibeDeck($id: ID!) {\n setDefaultVibeDeck(id: $id) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const LIST_VIBEDECK_BUTTONS = `\n query VibeDeckButtons($filter: VibeDeckButtonFilterInput, $pagination: PaginationInput) {\n vibeDeckButtons(filter: $filter, pagination: $pagination) {\n items { ${VIBEDECK_BUTTON_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_VIBEDECK_BUTTON = `\n query VibeDeckButton($id: ID!) {\n vibeDeckButton(id: $id) { ${VIBEDECK_BUTTON_FIELDS} }\n }\n`;\n\nexport const CREATE_VIBEDECK_BUTTON = `\n mutation CreateVibeDeckButton($input: CreateVibeDeckButtonInput!) {\n createVibeDeckButton(input: $input) { ${VIBEDECK_BUTTON_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBEDECK_BUTTON = `\n mutation UpdateVibeDeckButton($id: ID!, $input: UpdateVibeDeckButtonInput!) {\n updateVibeDeckButton(id: $id, input: $input) { ${VIBEDECK_BUTTON_FIELDS} }\n }\n`;\n\nexport const DELETE_VIBEDECK_BUTTON = `\n mutation DeleteVibeDeckButton($id: ID!) { deleteVibeDeckButton(id: $id) }\n`;\n\nexport const EXECUTE_VIBEDECK_BUTTON = `\n mutation ExecuteVibeDeckButton($id: ID!, $agentId: ID!) {\n executeVibeDeckButton(id: $id, agentId: $agentId) { success output error }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Action Field Fragments\n// ---------------------------------------------------------------------------\n\nexport const ACTION_FIELDS = `\n id name description actionType sourceType triggerType\n command script webhookUrl workflowDefinition\n tags storeItemId storeVersion metadata\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const ACTION_EXECUTION_FIELDS = `\n id actionId status input output error\n startedAt completedAt durationMs triggeredBy metadata\n workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Action Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_ACTIONS = `\n query Actions($filter: ActionFilterInput, $pagination: PaginationInput) {\n actions(filter: $filter, pagination: $pagination) {\n items { ${ACTION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_ACTION = `\n query Action($id: ID!) {\n action(id: $id) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const CREATE_ACTION = `\n mutation CreateAction($input: CreateActionInput!) {\n createAction(input: $input) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const UPDATE_ACTION = `\n mutation UpdateAction($id: ID!, $input: UpdateActionInput!) {\n updateAction(id: $id, input: $input) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const DELETE_ACTION = `\n mutation DeleteAction($id: ID!) { deleteAction(id: $id) }\n`;\n\nexport const DUPLICATE_ACTION = `\n mutation DuplicateAction($id: ID!, $name: String) {\n duplicateAction(id: $id, name: $name) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const EXECUTE_ACTION = `\n mutation ExecuteAction($id: ID!, $input: ExecuteActionInput) {\n executeAction(id: $id, input: $input) { ${ACTION_EXECUTION_FIELDS} }\n }\n`;\n\nexport const INSTALL_ACTION_FROM_STORE = `\n mutation InstallActionFromStore($storeItemId: String!, $version: String, $name: String) {\n installActionFromStore(storeItemId: $storeItemId, version: $version, name: $name) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const CANCEL_ACTION_EXECUTION = `\n mutation CancelActionExecution($id: ID!) {\n cancelActionExecution(id: $id) { ${ACTION_EXECUTION_FIELDS} }\n }\n`;\n\nexport const LIST_ACTION_EXECUTIONS = `\n query ActionExecutions($filter: ActionExecutionFilterInput, $pagination: PaginationInput) {\n actionExecutions(filter: $filter, pagination: $pagination) {\n items { ${ACTION_EXECUTION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_ACTION_EXECUTION = `\n query ActionExecution($id: ID!) {\n actionExecution(id: $id) { ${ACTION_EXECUTION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Scheduled Job Field Fragments\n// ---------------------------------------------------------------------------\n\nexport const SCHEDULED_JOB_FIELDS = `\n id name scheduleType status actionId\n cronExpression timezone scheduledAt\n interval intervalUnit startDate endDate\n nextExecutionAt lastExecutionAt\n priority tags\n`;\n\n// ---------------------------------------------------------------------------\n// Scheduled Job Queries / Mutations (wspace-scheduler-svc via gateway)\n// ---------------------------------------------------------------------------\n\nexport const CREATE_SCHEDULED_JOB = `\n mutation CreateScheduledJob($workspaceId: ID!, $input: CreateScheduledJobInput!) {\n createScheduledJob(workspaceId: $workspaceId, input: $input) { ${SCHEDULED_JOB_FIELDS} }\n }\n`;\n\nexport const DELETE_SCHEDULED_JOB = `\n mutation DeleteScheduledJob($id: ID!) { deleteScheduledJob(id: $id) }\n`;\n\nexport const LIST_SCHEDULED_JOBS = `\n query ScheduledJobs($workspaceId: ID!, $filter: JobFilterInput, $pagination: SchedulerPaginationInput) {\n scheduledJobs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n jobs { ${SCHEDULED_JOB_FIELDS} }\n total hasMore\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Docs Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_DOCS_SITES = `\n query DocsSites($filter: VibecontrolsDocsSiteFilterInput, $pagination: PaginationInput) {\n docsSites(filter: $filter, pagination: $pagination) {\n items { ${DOCS_SITE_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_DOCS_SITE = `\n query DocsSite($vibeId: ID!) {\n docsSite(vibeId: $vibeId) { ${DOCS_SITE_FIELDS} }\n }\n`;\n\nexport const CREATE_DOCS_SITE = `\n mutation CreateDocsSite($input: CreateVibecontrolsDocsSiteInput!) {\n createDocsSite(input: $input) { ${DOCS_SITE_FIELDS} }\n }\n`;\n\nexport const UPDATE_DOCS_SITE = `\n mutation UpdateDocsSite($id: ID!, $input: UpdateVibecontrolsDocsSiteInput!) {\n updateDocsSite(id: $id, input: $input) { ${DOCS_SITE_FIELDS} }\n }\n`;\n\nexport const DELETE_DOCS_SITE = `\n mutation DeleteDocsSite($id: ID!) { deleteDocsSite(id: $id) }\n`;\n\nexport const LIST_DOCS_PAGES = `\n query DocsPages($siteId: ID!, $filter: VibecontrolsDocsPageFilterInput) {\n docsPages(siteId: $siteId, filter: $filter) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const GET_DOCS_PAGE = `\n query DocsPage($id: ID!) {\n docsPage(id: $id) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const CREATE_DOCS_PAGE = `\n mutation CreateDocsPage($input: CreateVibecontrolsDocsPageInput!) {\n createDocsPage(input: $input) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_DOCS_PAGE = `\n mutation UpdateDocsPage($id: ID!, $input: UpdateVibecontrolsDocsPageInput!) {\n updateDocsPage(id: $id, input: $input) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_DOCS_PAGE = `\n mutation DeleteDocsPage($id: ID!) { deleteDocsPage(id: $id) }\n`;\n\nexport const LIST_DOCS_REVISIONS = `\n query DocsRevisions($siteId: ID!, $pagination: PaginationInput) {\n docsRevisions(siteId: $siteId, pagination: $pagination) {\n items { ${DOCS_REVISION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const COMPILE_DOCS_SITE = `\n mutation CompileDocsSite($siteId: ID!, $publish: Boolean) {\n compileDocsSite(siteId: $siteId, publish: $publish) { ${DOCS_REVISION_FIELDS} }\n }\n`;\n\nexport const PUBLISH_DOCS_REVISION = `\n mutation PublishDocsRevision($revisionId: ID!) {\n publishDocsRevision(revisionId: $revisionId) { ${DOCS_REVISION_FIELDS} }\n }\n`;\n\nexport const ROLLBACK_DOCS_REVISION = `\n mutation RollbackDocsRevision($siteId: ID!, $revisionId: ID!) {\n rollbackDocsRevision(siteId: $siteId, revisionId: $revisionId) { ${DOCS_REVISION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Audit Log Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_AUDIT_LOGS = `\n query VibeAuditLogs($filter: VibeAuditLogFilterInput, $pagination: PaginationInput) {\n vibeAuditLogs(filter: $filter, pagination: $pagination) {\n items { ${AUDIT_LOG_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_AUDIT_LOG = `\n query VibeAuditLog($id: ID!) {\n vibeAuditLog(id: $id) { ${AUDIT_LOG_FIELDS} }\n }\n`;\n\nexport const AUDIT_LOG_STATS = `\n query VibeAuditLogStats($filter: VibeAuditLogFilterInput) {\n vibeAuditLogStats(filter: $filter) {\n totalLogs\n logsByAction { action count }\n logsByResourceType { resourceType count }\n logsByStatus { status count }\n }\n }\n`;\n\nexport const EXPORT_AUDIT_LOGS = `\n mutation ExportVibeAuditLogs($filter: VibeAuditLogFilterInput, $format: String) {\n exportVibeAuditLogs(filter: $filter, format: $format)\n }\n`;\n\nexport const DELETE_AUDIT_LOG = `\n mutation DeleteVibeAuditLog($id: ID!, $reason: String) {\n deleteVibeAuditLog(id: $id, reason: $reason)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Auth Operations (Global Gateway)\n// ---------------------------------------------------------------------------\n\nexport const MY_WORKSPACES = `\n query MyWorkspaces($limit: Int) {\n myWorkspaces(limit: $limit) {\n items { id name slug tenantId organizationId }\n }\n }\n`;\n\nexport const ISSUE_WORKSPACE_TOKEN = `\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success token expiresAt scopes\n error { code message }\n }\n }\n`;\n\nexport const REFRESH_TOKEN = `\n mutation RefreshToken($token: String!) {\n refreshToken(token: $token) { accessToken refreshToken expiresIn }\n }\n`;\n\nexport const SIGN_OUT = `mutation { signOut }`;\n\n// ---------------------------------------------------------------------------\n// Analytics\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// Sandbox Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const SANDBOX_FIELDS = `\n id name description template mode status\n crdName podName namespace runtimeClass\n containers { name image ports { containerPort name protocol } env { name value } command args resources { requestsCpu requestsMemory limitsCpu limitsMemory } }\n containerStatuses { name ready port restartCount }\n resources { cpuRequest cpuLimit memoryRequest memoryLimit }\n storage { mode sizeGi mountPath retainOnDelete }\n network { exposeService internalUrl containerUrls serviceName }\n ttlSeconds expiresAt metadata errorMessage\n workspaceId createdBy createdAt updatedAt stoppedAt\n`;\n\nexport const LIST_SANDBOXES = `\n query ListSandboxes($filter: SandboxFilterInput, $pagination: SandboxPaginationInput, $context: ContextInput!) {\n listSandboxes(filter: $filter, pagination: $pagination, context: $context) {\n items { ${SANDBOX_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_SANDBOX = `\n query GetSandbox($id: ID!, $context: ContextInput!) {\n getSandbox(id: $id, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const CREATE_SANDBOX = `\n mutation CreateSandbox($input: CreateSandboxInput!) {\n createSandbox(input: $input) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const DELETE_SANDBOX = `\n mutation DeleteSandbox($id: ID!, $context: ContextInput!) {\n deleteSandbox(id: $id, context: $context)\n }\n`;\n\nexport const STOP_SANDBOX = `\n mutation StopSandbox($id: ID!, $context: ContextInput!) {\n stopSandbox(id: $id, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const START_SANDBOX = `\n mutation StartSandbox($id: ID!, $context: ContextInput!) {\n startSandbox(id: $id, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const EXTEND_SANDBOX_TTL = `\n mutation ExtendSandboxTTL($id: ID!, $additionalSeconds: Int!, $context: ContextInput!) {\n extendSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const SANDBOX_TEMPLATE_FIELDS = `\n id name description template isDefault ttlSeconds\n containers { name image }\n resources { cpuRequest cpuLimit memoryRequest memoryLimit }\n storage { mode sizeGi mountPath retainOnDelete }\n config metadata allowedImages\n workspaceId createdBy createdAt updatedAt\n`;\n\nexport const LIST_SANDBOX_TEMPLATES = `\n query ListSandboxTemplates($context: ContextInput!, $template: SandboxTemplate, $pagination: SandboxPaginationInput) {\n listSandboxTemplates(context: $context, template: $template, pagination: $pagination) {\n items { ${SANDBOX_TEMPLATE_FIELDS} } total hasMore\n }\n }\n`;\n\nexport const GET_SANDBOX_TEMPLATE = `\n query GetSandboxTemplate($context: ContextInput!, $id: ID!) {\n getSandboxTemplate(context: $context, id: $id) { ${SANDBOX_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const CREATE_SANDBOX_TEMPLATE = `\n mutation CreateSandboxTemplate($input: CreateSandboxTemplateInput!) {\n createSandboxTemplate(input: $input) { ${SANDBOX_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const UPDATE_SANDBOX_TEMPLATE = `\n mutation UpdateSandboxTemplate($input: UpdateSandboxTemplateInput!) {\n updateSandboxTemplate(input: $input) { ${SANDBOX_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const DELETE_SANDBOX_TEMPLATE = `\n mutation DeleteSandboxTemplate($context: ContextInput!, $id: ID!) {\n deleteSandboxTemplate(context: $context, id: $id)\n }\n`;\n\nexport const AVAILABLE_SANDBOX_TAGS = `\n query AvailableSandboxTags($query: String, $limit: Int) {\n availableSandboxTags(query: $query, limit: $limit) { id key label color }\n }\n`;\n\nexport const GET_SANDBOX_TAGS = `\n query GetSandboxTags($input: GetSandboxTagsInput!) {\n getSandboxTags(input: $input) {\n id entityId entityType tagId source assignedAt assignedBy\n }\n }\n`;\n\nexport const CREATE_SANDBOX_TAG = `\n mutation CreateSandboxTag($input: CreateSandboxTagInput!) {\n createSandboxTag(input: $input) { id key label color }\n }\n`;\n\nexport const TAG_SANDBOX = `\n mutation TagSandbox($input: TagSandboxInput!) {\n tagSandbox(input: $input) {\n id entityId tagId source assignedAt\n }\n }\n`;\n\nexport const UNTAG_SANDBOX = `\n mutation UntagSandbox($input: UntagSandboxInput!) {\n untagSandbox(input: $input)\n }\n`;\n\nexport const REPLACE_SANDBOX_TAGS = `\n mutation ReplaceSandboxTags($input: ReplaceSandboxTagsInput!) {\n replaceSandboxTags(input: $input) {\n id entityId tagId source assignedAt\n }\n }\n`;\n\nexport const LIST_ALL_SANDBOXES = `\n query ListAllSandboxes($context: ContextInput!, $filter: SandboxFilterInput, $pagination: SandboxPaginationInput) {\n listAllSandboxes(context: $context, filter: $filter, pagination: $pagination) {\n items { ${SANDBOX_FIELDS} } total hasMore\n }\n }\n`;\n\nexport const LIST_SANDBOX_NODES = `\n query ListSandboxNodes($context: ContextInput!) {\n listSandboxNodes(context: $context) {\n name status allocatableCpu allocatableMemory sandboxPodCount labels\n }\n }\n`;\n\nexport const GET_ACTIVE_SANDBOXES = `\n query GetActiveSandboxes($context: ContextInput!) {\n getActiveSandboxes(context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const GET_RECENT_SANDBOX_ACTIVITY = `\n query GetRecentSandboxActivity($context: ContextInput!, $limit: Int) {\n getRecentSandboxActivity(context: $context, limit: $limit) {\n items { id action actorId status sandboxName sandboxId createdAt }\n total\n }\n }\n`;\n\nexport const GET_SANDBOX_STATS = `\n query GetSandboxStats($context: ContextInput!) {\n getSandboxStats(context: $context) {\n activeSandboxes activeUserSandboxes activeInternalSandboxes\n totalCreated totalDeleted totalUserCreated totalInternalCreated\n runningNow provisioningNow stoppedNow expiredCount failedCount\n totalCpuUsed totalMemoryUsed\n }\n }\n`;\n\nexport const GET_SANDBOX_LOGS = `\n query GetSandboxLogs($context: ContextInput!, $id: ID!, $containerName: String!, $tailLines: Int) {\n getSandboxLogs(context: $context, id: $id, containerName: $containerName, tailLines: $tailLines)\n }\n`;\n\nexport const GET_SANDBOX_CONFIG = `\n query GetSandboxConfig($context: ContextInput!) {\n getSandboxConfig(context: $context) {\n id defaultTtlSeconds maxTtlSeconds allowedTemplates\n maxConcurrentPerUser maxConcurrentPerWorkspace\n defaultCpuRequest defaultCpuLimit defaultMemoryRequest defaultMemoryLimit\n workspaceId updatedAt\n }\n }\n`;\n\nexport const UPDATE_SANDBOX_CONFIG = `\n mutation UpdateSandboxConfig($input: UpdateSandboxConfigInput!) {\n updateSandboxConfig(input: $input) {\n id defaultTtlSeconds maxTtlSeconds allowedTemplates\n maxConcurrentPerUser maxConcurrentPerWorkspace\n defaultCpuRequest defaultCpuLimit defaultMemoryRequest defaultMemoryLimit\n workspaceId updatedAt\n }\n }\n`;\n\nexport const SANDBOX_EXPORT_JOB_FIELDS = `\n id workspaceId format status requestedBy rowCount\n downloadUrl errorMessage expiresAt createdAt updatedAt\n`;\n\nexport const EXPORT_SANDBOXES = `\n mutation ExportSandboxes($input: ExportSandboxesInput!) {\n exportSandboxes(input: $input) { ${SANDBOX_EXPORT_JOB_FIELDS} }\n }\n`;\n\nexport const GET_SANDBOX_EXPORT_JOB = `\n query GetSandboxExportJob($workspaceId: ID!, $jobId: ID!, $context: ContextInput!) {\n getSandboxExportJob(workspaceId: $workspaceId, jobId: $jobId, context: $context) {\n ${SANDBOX_EXPORT_JOB_FIELDS}\n }\n }\n`;\n\nexport const LIST_SANDBOX_EXPORT_JOBS = `\n query ListSandboxExportJobs($workspaceId: ID!, $context: ContextInput!, $pagination: SandboxPaginationInput) {\n listSandboxExportJobs(workspaceId: $workspaceId, context: $context, pagination: $pagination) {\n ${SANDBOX_EXPORT_JOB_FIELDS}\n }\n }\n`;\n\nexport const GET_SANDBOX_ARTIFACT_BYTES = `\n query GetSandboxArtifactBytes($input: SandboxArtifactBytesInput!) {\n getSandboxArtifactBytes(input: $input) { filename mimeType size contentBase64 }\n }\n`;\n\nexport const PROXY_SANDBOX_REQUEST = `\n mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {\n proxySandboxRequest(input: $input) { status body }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analytics\n// ---------------------------------------------------------------------------\n\nexport const VIBECONTROLS_ANALYTICS = `\n query VibecontrolsAnalytics($input: VibecontrolsAnalyticsInput!) {\n vibecontrolsAnalytics(input: $input) {\n agents { total active inactive staleHeartbeatCount byPlatform { key count } byArchitecture { key count } createdOverTime { timestamp value } }\n targets { total connectionCount byType { key count } byStatus { key count } }\n sessions { total active avgDurationMs totalCollaborators totalShares totalShareLinks byType { key count } byStatus { key count } createdOverTime { timestamp value } }\n vibes { total withAgent withoutAgent byType { key count } byStatus { key count } createdOverTime { timestamp value } }\n actions { total totalExecutions successRate avgDurationMs byActionType { key count } byTriggerType { key count } bySourceType { key count } executionsByStatus { key count } executionsOverTime { timestamp value } }\n webhooks { total active inactive totalDeliveries totalFailures deliverySuccessRate }\n aiEvents { total bySource { key count } byEventType { key count } eventsOverTime { timestamp value } }\n vibeDecks { totalDecks totalButtons buttonsByActionType { key count } }\n audit { total byAction { key count } byResourceType { key count } byStatus { key count } eventsOverTime { timestamp value } }\n docs { totalSites totalPages totalRevisions buildSuccessRate totalBuildImages pagesByStatus { key count } revisionsByStatus { key count } }\n notes { total pinned unpinned createdOverTime { timestamp value } }\n configurations { total secretCount byScope { key count } }\n executionTimeMs\n cached\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Catalogs / Components / Templates / Scorecards\n// ---------------------------------------------------------------------------\n\nexport const CATALOG_FIELDS = `\n id name description visibility\n ownerId ownerName componentCount vibeCount\n tags metadata workspaceId\n createdAt updatedAt deletedAt\n createdBy updatedBy onBehalfOf\n`;\n\nexport const COMPONENT_FIELDS = `\n id name description type lifecycle version\n language framework repositoryUrl documentationUrl\n dependencies sbomData tags metadata\n ownerId ownerName teamId teamName catalogCount\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const TEMPLATE_FIELDS = `\n id name description category status version\n setupInstructions sourceRepositoryUrl\n fileTree variables componentSnapshot\n cloneCount tags metadata\n createdAt updatedAt\n`;\n\nexport const SCORECARD_METRIC_FIELDS = `\n id name description type status value threshold unit\n iframeUrl iframeHeight lastUpdatedAt createdAt updatedAt\n`;\n\nexport const SCORECARD_FIELDS = `\n id ownerId ownerType overallScore lastEvaluatedAt\n metrics { ${SCORECARD_METRIC_FIELDS} }\n metadata workspaceId createdAt updatedAt\n`;\n\n// catalogs\nexport const LIST_CATALOGS = `\n query VibecontrolsCatalogs($filter: CatalogFilterInput, $pagination: PaginationInput) {\n vibecontrolsCatalogs(filter: $filter, pagination: $pagination) {\n items { ${CATALOG_FIELDS} }\n total hasMore\n }\n }\n`;\nexport const GET_CATALOG = `query VibecontrolsCatalog($id: ID!) { vibecontrolsCatalog(id: $id) { ${CATALOG_FIELDS} } }`;\nexport const GET_CATALOG_DEPENDENCY_GRAPH = `\n query VibecontrolsCatalogDependencyGraph($catalogId: ID!) {\n vibecontrolsCatalogDependencyGraph(catalogId: $catalogId) {\n nodes { id name type version }\n edges { source target version dependencyType }\n }\n }\n`;\nexport const GET_CATALOG_SBOM = `\n query VibecontrolsCatalogSBOM($catalogId: ID!) {\n vibecontrolsCatalogSBOM(catalogId: $catalogId) {\n format generatedAt totalCount\n components { name version type license }\n }\n }\n`;\nexport const CREATE_CATALOG = `mutation CreateVibecontrolsCatalog($input: CreateCatalogInput!) { createVibecontrolsCatalog(input: $input) { ${CATALOG_FIELDS} } }`;\nexport const UPDATE_CATALOG = `mutation UpdateVibecontrolsCatalog($id: ID!, $input: UpdateCatalogInput!) { updateVibecontrolsCatalog(id: $id, input: $input) { ${CATALOG_FIELDS} } }`;\nexport const DELETE_CATALOG = `mutation DeleteVibecontrolsCatalog($id: ID!) { deleteVibecontrolsCatalog(id: $id) }`;\nexport const ADD_COMPONENT_TO_CATALOG = `\n mutation AddComponentToVibecontrolsCatalog($catalogId: ID!, $componentId: ID!) {\n addComponentToVibecontrolsCatalog(catalogId: $catalogId, componentId: $componentId) {\n id catalogId componentId addedAt addedBy metadata workspaceId\n }\n }\n`;\nexport const REMOVE_COMPONENT_FROM_CATALOG = `\n mutation RemoveComponentFromVibecontrolsCatalog($catalogId: ID!, $componentId: ID!) {\n removeComponentFromVibecontrolsCatalog(catalogId: $catalogId, componentId: $componentId)\n }\n`;\nexport const ADD_VIBE_TO_CATALOG = `\n mutation AddVibeToVibecontrolsCatalog($catalogId: ID!, $vibeId: ID!) {\n addVibeToVibecontrolsCatalog(catalogId: $catalogId, vibeId: $vibeId) {\n id catalogId vibeId addedAt addedBy metadata workspaceId\n }\n }\n`;\nexport const REMOVE_VIBE_FROM_CATALOG = `\n mutation RemoveVibeFromVibecontrolsCatalog($catalogId: ID!, $vibeId: ID!) {\n removeVibeFromVibecontrolsCatalog(catalogId: $catalogId, vibeId: $vibeId)\n }\n`;\n\n// components\nexport const LIST_COMPONENTS = `\n query VibecontrolsComponents($filter: ComponentFilterInput, $pagination: PaginationInput) {\n vibecontrolsComponents(filter: $filter, pagination: $pagination) {\n items { ${COMPONENT_FIELDS} }\n total hasMore\n }\n }\n`;\nexport const GET_COMPONENT = `query VibecontrolsComponent($id: ID!) { vibecontrolsComponent(id: $id) { ${COMPONENT_FIELDS} } }`;\nexport const CREATE_COMPONENT = `mutation CreateVibecontrolsComponent($input: CreateComponentInput!) { createVibecontrolsComponent(input: $input) { ${COMPONENT_FIELDS} } }`;\nexport const UPDATE_COMPONENT = `mutation UpdateVibecontrolsComponent($id: ID!, $input: UpdateComponentInput!) { updateVibecontrolsComponent(id: $id, input: $input) { ${COMPONENT_FIELDS} } }`;\nexport const DELETE_COMPONENT = `mutation DeleteVibecontrolsComponent($id: ID!) { deleteVibecontrolsComponent(id: $id) }`;\nexport const FORK_GITHUB_REPO = `\n mutation ForkVibecontrolsGitHubRepo($input: VibecontrolsForkGitHubRepoInput!) {\n forkVibecontrolsGitHubRepo(input: $input) { isForked repoFullName repoUrl }\n }\n`;\nexport const PUBLISH_COMPONENT_AS_TEMPLATE = `\n mutation PublishVibecontrolsComponentAsTemplate(\n $componentId: ID!\n $input: VibecontrolsPublishTemplateInput!\n ) {\n publishVibecontrolsComponentAsTemplate(componentId: $componentId, input: $input) {\n ${TEMPLATE_FIELDS}\n }\n }\n`;\n\n// templates\nexport const LIST_TEMPLATES = `\n query VibecontrolsTemplates($filter: VibecontrolsTemplateFilterInput, $pagination: PaginationInput) {\n vibecontrolsTemplates(filter: $filter, pagination: $pagination) {\n items { ${TEMPLATE_FIELDS} }\n total hasMore\n }\n }\n`;\nexport const GET_TEMPLATE = `query VibecontrolsTemplate($id: ID!) { vibecontrolsTemplate(id: $id) { ${TEMPLATE_FIELDS} } }`;\nexport const UPDATE_TEMPLATE = `mutation UpdateVibecontrolsTemplate($id: ID!, $input: VibecontrolsUpdateTemplateInput!) { updateVibecontrolsTemplate(id: $id, input: $input) { ${TEMPLATE_FIELDS} } }`;\nexport const DELETE_TEMPLATE = `mutation DeleteVibecontrolsTemplate($id: ID!) { deleteVibecontrolsTemplate(id: $id) }`;\nexport const INSTANTIATE_TEMPLATE = `\n mutation InstantiateVibecontrolsTemplate($templateId: ID!, $input: VibecontrolsCloneTemplateInput!) {\n instantiateVibecontrolsTemplate(templateId: $templateId, input: $input) { ${COMPONENT_FIELDS} }\n }\n`;\n\n// scorecards\nexport const GET_SCORECARD = `\n query VibecontrolsScorecard($ownerId: ID!, $ownerType: ScorecardOwnerType!) {\n vibecontrolsScorecard(ownerId: $ownerId, ownerType: $ownerType) { ${SCORECARD_FIELDS} }\n }\n`;\nexport const UPSERT_SCORECARD = `mutation UpsertVibecontrolsScorecard($input: UpsertScorecardInput!) { upsertVibecontrolsScorecard(input: $input) { ${SCORECARD_FIELDS} } }`;\nexport const ADD_SCORECARD_METRIC = `\n mutation AddVibecontrolsScorecardMetric($scorecardId: ID!, $input: AddScorecardMetricInput!) {\n addVibecontrolsScorecardMetric(scorecardId: $scorecardId, input: $input) { ${SCORECARD_METRIC_FIELDS} }\n }\n`;\nexport const UPDATE_SCORECARD_METRIC = `\n mutation UpdateVibecontrolsScorecardMetric($id: ID!, $input: UpdateScorecardMetricInput!) {\n updateVibecontrolsScorecardMetric(id: $id, input: $input) { ${SCORECARD_METRIC_FIELDS} }\n }\n`;\nexport const REMOVE_SCORECARD_METRIC = `mutation RemoveVibecontrolsScorecardMetric($id: ID!) { removeVibecontrolsScorecardMetric(id: $id) }`;\n\n// ---------------------------------------------------------------------------\n// Configuration / Security\n// ---------------------------------------------------------------------------\n\nconst SECURITY_SUMMARY = `summary { critical high medium low info }`;\nconst SECURITY_FINDING_FIELDS = `\n id workspaceId vibeId scanRunId fingerprint\n category severity status ruleId title description\n file line col cve cwe packageName packageVersion fixedVersion\n remediation redactedSample ownerTeam firstSeenAt lastSeenAt dueAt\n`;\nconst SECURITY_EVIDENCE_FIELDS = `\n id workspaceId scanRunId type sha256 sizeBytes\n s3Bucket s3Key retentionDays uploadedAt downloadUrl\n`;\nconst SECURITY_SCAN_RUN_FIELDS = `\n id workspaceId vibeId agentId createdBy providerName\n stage status conclusion policyLevel repoUrl commit\n durationMs errorReason startedAt finishedAt createdAt\n ${SECURITY_SUMMARY}\n findings { ${SECURITY_FINDING_FIELDS} }\n evidence { ${SECURITY_EVIDENCE_FIELDS} }\n`;\nconst SECURITY_PROVIDER_FIELDS = `\n id workspaceId providerName pluginName stage toolVersion\n enabled isDefault config createdAt updatedAt\n`;\nconst REPO_SECURITY_CONFIG_FIELDS = `\n id workspaceId vibeId policyLevel enabledStages\n pluginAssignments profile configYamlEquivalent createdAt updatedAt\n`;\n\nexport const SECURITY_PROVIDERS_Q = `\n query SecurityProviders { securityProviders { ${SECURITY_PROVIDER_FIELDS} } }\n`;\nexport const SECURITY_SCAN_Q = `\n query SecurityScan($id: ID!) { securityScan(id: $id) { ${SECURITY_SCAN_RUN_FIELDS} } }\n`;\nexport const MY_SECURITY_SCANS_Q = `\n query MySecurityScans($filter: SecurityScanFilterInput, $pagination: SecurityPaginationInput) {\n mySecurityScans(filter: $filter, pagination: $pagination) {\n items { ${SECURITY_SCAN_RUN_FIELDS} } total hasMore\n }\n }\n`;\nexport const ALL_SECURITY_SCANS_Q = `\n query AllSecurityScans($filter: SecurityScanFilterInput, $pagination: SecurityPaginationInput) {\n allSecurityScans(filter: $filter, pagination: $pagination) {\n items { ${SECURITY_SCAN_RUN_FIELDS} } total hasMore\n }\n }\n`;\nexport const SECURITY_FINDINGS_Q = `\n query SecurityFindings($filter: SecurityFindingFilterInput, $pagination: SecurityPaginationInput) {\n securityFindings(filter: $filter, pagination: $pagination) {\n items { ${SECURITY_FINDING_FIELDS} } total hasMore\n }\n }\n`;\nexport const SECURITY_POLICY_DECISION_Q = `\n query SecurityPolicyDecision($scanRunId: ID!) {\n securityPolicyDecision(scanRunId: $scanRunId) {\n scanRunId allow denyReasons policyVersion evaluatedAt\n }\n }\n`;\nexport const SECURITY_STATUS_Q = `\n query SecurityStatus($vibeId: ID!) {\n securityStatus(vibeId: $vibeId) {\n vibeId policyLevel perStage lastScanAt\n totals { critical high medium low info }\n }\n }\n`;\nexport const REPOSITORY_SECURITY_CONFIG_Q = `\n query RepositorySecurityConfig($vibeId: ID!) {\n repositorySecurityConfig(vibeId: $vibeId) { ${REPO_SECURITY_CONFIG_FIELDS} }\n }\n`;\nexport const RUN_SECURITY_SCAN_M = `\n mutation RunSecurityScan($vibeId: ID!, $stage: SecurityStage!) {\n runSecurityScan(vibeId: $vibeId, stage: $stage) { ${SECURITY_SCAN_RUN_FIELDS} }\n }\n`;\nexport const CANCEL_SECURITY_SCAN_M = `\n mutation CancelSecurityScan($id: ID!) {\n cancelSecurityScan(id: $id) { ${SECURITY_SCAN_RUN_FIELDS} }\n }\n`;\nexport const CREATE_SECURITY_EXCEPTION_M = `\n mutation CreateSecurityException($input: CreateSecurityExceptionInput!) {\n createSecurityException(input: $input) {\n id workspaceId vibeId findingId reason compensatingControls\n approvedBy expiresAt status createdAt\n }\n }\n`;\nexport const REVOKE_SECURITY_EXCEPTION_M = `\n mutation RevokeSecurityException($id: ID!) { revokeSecurityException(id: $id) }\n`;\nexport const SET_SECURITY_PROVIDER_M = `\n mutation SetSecurityProvider($input: SetSecurityProviderInput!) {\n setSecurityProvider(input: $input) { ${SECURITY_PROVIDER_FIELDS} }\n }\n`;\nexport const UPDATE_SECURITY_FINDING_STATUS_M = `\n mutation UpdateSecurityFindingStatus($id: ID!, $status: SecurityFindingStatus!) {\n updateSecurityFindingStatus(id: $id, status: $status) { ${SECURITY_FINDING_FIELDS} }\n }\n`;\nexport const UPDATE_REPOSITORY_SECURITY_CONFIG_M = `\n mutation UpdateRepositorySecurityConfig(\n $vibeId: ID!, $input: UpdateRepositorySecurityConfigInput!\n ) {\n updateRepositorySecurityConfig(vibeId: $vibeId, input: $input) { ${REPO_SECURITY_CONFIG_FIELDS} }\n }\n`;\nexport const PRESIGN_SECURITY_EVIDENCE_M = `\n mutation PresignSecurityEvidence(\n $scanRunId: ID!, $sha256: String!, $sizeBytes: Int!, $type: SecurityEvidenceType!\n ) {\n presignSecurityEvidence(\n scanRunId: $scanRunId, sha256: $sha256, sizeBytes: $sizeBytes, type: $type\n ) {\n evidenceId uploadUrl method requiredHeaders s3Bucket s3Key expiresAt\n }\n }\n`;\nexport const PUSH_SECURITY_SCAN_RUN_M = `\n mutation PushSecurityScanRun($input: PushSecurityScanRunInput!) {\n pushSecurityScanRun(input: $input) { ${SECURITY_SCAN_RUN_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration / CI status\n// ---------------------------------------------------------------------------\n\nconst CI_RUN_FIELDS = `\n id status conclusion workflowName branch event actor url\n startedAt completedAt durationSeconds\n`;\nconst CI_STATUS_FIELDS = `\n recentRuns { ${CI_RUN_FIELDS} }\n workflows { id name path state }\n averageDurationSeconds successRate totalRunsLast30Days\n`;\nconst CI_DETAILS_FIELDS = `\n ${CI_RUN_FIELDS}\n commitSha commitMessage\n jobs { id name status conclusion startedAt completedAt durationSeconds }\n`;\nconst REPO_STATS_FIELDS = `\n name fullName owner description defaultBranch visibility\n isArchived isFork diskUsageKb stargazerCount watcherCount forkCount\n openIssues openPullRequests dependabotAlerts languages license\n createdAt updatedAt pushedAt\n contributors { login contributions avatarUrl }\n commitActivity { week total additions deletions }\n pullRequests {\n number title state author url createdAt updatedAt\n isDraft labels reviewers\n }\n`;\n\nexport const GET_CI_STATUS_Q = `\n query GetCIStatus($providerId: ID!, $agentId: ID!, $limit: Int) {\n getCIStatus(providerId: $providerId, agentId: $agentId, limit: $limit) { ${CI_STATUS_FIELDS} }\n }\n`;\nexport const GET_CI_PIPELINE_RUNS_Q = `\n query GetCIPipelineRuns($providerId: ID!, $agentId: ID!, $branch: String, $limit: Int) {\n getCIPipelineRuns(providerId: $providerId, agentId: $agentId, branch: $branch, limit: $limit) {\n ${CI_RUN_FIELDS}\n }\n }\n`;\nexport const GET_CI_PIPELINE_DETAILS_Q = `\n query GetCIPipelineDetails($providerId: ID!, $agentId: ID!, $runId: ID!) {\n getCIPipelineDetails(providerId: $providerId, agentId: $agentId, runId: $runId) {\n ${CI_DETAILS_FIELDS}\n }\n }\n`;\nexport const GET_REPO_STATS_Q = `\n query GetRepoStats($providerId: ID!, $agentId: ID!) {\n getRepoStats(providerId: $providerId, agentId: $agentId) { ${REPO_STATS_FIELDS} }\n }\n`;\nexport const REFRESH_CI_STATUS_M = `\n mutation RefreshCIStatus($providerId: ID!, $agentId: ID!) {\n refreshCIStatus(providerId: $providerId, agentId: $agentId) { ${CI_STATUS_FIELDS} }\n }\n`;\nexport const REFRESH_REPO_STATS_M = `\n mutation RefreshRepoStats($providerId: ID!, $agentId: ID!) {\n refreshRepoStats(providerId: $providerId, agentId: $agentId) { ${REPO_STATS_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration / GitOps providers\n// ---------------------------------------------------------------------------\n\nconst GITOPS_FIELDS = `\n id workspaceId createdBy name providerType repoUrl\n isActive vibeId metadata\n context { workspaceId userId appId custom }\n createdAt updatedAt deletedAt\n`;\nexport const LIST_GITOPS_PROVIDERS_Q = `\n query ListGitopsProviders($filter: GitopsProviderFilterInput, $pagination: PaginationInput) {\n listGitopsProviders(filter: $filter, pagination: $pagination) {\n items { ${GITOPS_FIELDS} } total hasMore\n }\n }\n`;\nexport const GET_GITOPS_PROVIDER_Q = `\n query GetGitopsProvider($id: ID!) { getGitopsProvider(id: $id) { ${GITOPS_FIELDS} } }\n`;\nexport const CREATE_GITOPS_PROVIDER_M = `\n mutation CreateGitopsProvider($input: CreateGitopsProviderInput!) {\n createGitopsProvider(input: $input) { ${GITOPS_FIELDS} }\n }\n`;\nexport const UPDATE_GITOPS_PROVIDER_M = `\n mutation UpdateGitopsProvider($id: ID!, $input: UpdateGitopsProviderInput!) {\n updateGitopsProvider(id: $id, input: $input) { ${GITOPS_FIELDS} }\n }\n`;\nexport const DELETE_GITOPS_PROVIDER_M = `\n mutation DeleteGitopsProvider($id: ID!) { deleteGitopsProvider(id: $id) }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration / Settings, preferences, secrets, integration tokens\n// ---------------------------------------------------------------------------\n\nconst PREFS_FIELDS = `\n theme uiDensity sidebarCollapsed codeFont codeFontSize\n preferredIdeCommand defaultAgentForVibe vibeIdeOverrides vibeDetailTabOrder\n`;\nconst NOTIF_FIELDS = `\n emailDigest digestFrequency agentOffline sessionError vibeStatusChange\n`;\nconst DEFAULTS_FIELDS = `\n defaultAgent defaultSessionType defaultVibeType defaultEnvironmentVariables\n autoStartSessions autoGitSync agentHeartbeatInterval agentMaxSessions\n agentAutoReconnect autoUpdate telemetryEnabled logLevel\n`;\nconst BUNDLE_FIELDS = `\n preferences { ${PREFS_FIELDS} }\n notifications { ${NOTIF_FIELDS} }\n workspaceDefaults { ${DEFAULTS_FIELDS} }\n profile { displayName avatar bio language timezone }\n security { mfaEnabled sessionTimeout activeSessions }\n`;\nconst SECRET_FIELDS = `id key value isSecret createdAt updatedAt`;\n\nexport const MY_SETTINGS_Q = `query MySettings { mySettings { ${BUNDLE_FIELDS} } }`;\nexport const MY_SETTINGS_BY_CATEGORY_Q = `\n query MySettingsByCategory($category: SettingsCategory!) {\n mySettingsByCategory(category: $category)\n }\n`;\nexport const LIST_SETTINGS_SECRETS_Q = `\n query ListSettingsSecrets { listSettingsSecrets { ${SECRET_FIELDS} } }\n`;\nexport const SET_SETTINGS_SECRET_M = `\n mutation SetSettingsSecret($input: SetSettingsSecretInput!) {\n setSettingsSecret(input: $input) { ${SECRET_FIELDS} }\n }\n`;\nexport const DELETE_SETTINGS_SECRET_M = `\n mutation DeleteSettingsSecret($key: String!) { deleteSettingsSecret(key: $key) }\n`;\nexport const RESET_SETTINGS_M = `\n mutation ResetSettings($category: SettingsCategory!) { resetSettings(category: $category) }\n`;\nexport const UPDATE_PREFERENCES_M = `\n mutation UpdatePreferences($input: UpdatePreferencesInput!) {\n updatePreferences(input: $input) { ${PREFS_FIELDS} }\n }\n`;\nexport const UPDATE_NOTIFICATION_PREFERENCES_M = `\n mutation UpdateNotificationPreferences($input: UpdateNotificationPreferencesInput!) {\n updateNotificationPreferences(input: $input) { ${NOTIF_FIELDS} }\n }\n`;\nexport const UPDATE_WORKSPACE_DEFAULTS_M = `\n mutation UpdateWorkspaceDefaults($input: UpdateWorkspaceDefaultsInput!) {\n updateWorkspaceDefaults(input: $input) { ${DEFAULTS_FIELDS} }\n }\n`;\nexport const RESOLVE_INTEGRATION_TOKEN_M = `\n mutation VibecontrolsResolveIntegrationToken($connectionId: ID!) {\n vibecontrolsResolveIntegrationToken(connectionId: $connectionId) {\n success connectionStatus wasRefreshed error\n token {\n accessToken refreshToken tokenType providerKey scopes expiresAt metadata\n }\n }\n }\n`;\n","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_ACTIONS,\n GET_ACTION,\n CREATE_ACTION,\n UPDATE_ACTION,\n DELETE_ACTION,\n DUPLICATE_ACTION,\n EXECUTE_ACTION,\n INSTALL_ACTION_FROM_STORE,\n LIST_ACTION_EXECUTIONS,\n CANCEL_ACTION_EXECUTION,\n CREATE_SCHEDULED_JOB,\n DELETE_SCHEDULED_JOB,\n LIST_SCHEDULED_JOBS,\n} from '../operations.js';\n\nexport function registerActionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_list')),\n {\n title: 'List Actions',\n description: 'List all Vibe Actions with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by action name'),\n actionType: z\n .string()\n .optional()\n .describe('Filter by action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)'),\n sourceType: z\n .string()\n .optional()\n .describe('Filter by source type (USER_CREATED, STORE_INSTALLED)'),\n triggerType: z\n .string()\n .optional()\n .describe('Filter by trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)'),\n isActive: z.boolean().optional().describe('Filter by active status'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ name, actionType, sourceType, triggerType, isActive, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (actionType !== undefined) filter.actionType = actionType;\n if (sourceType !== undefined) filter.sourceType = sourceType;\n if (triggerType !== undefined) filter.triggerType = triggerType;\n if (isActive !== undefined) filter.isActive = isActive;\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<{ actions: unknown }>(LIST_ACTIONS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.actions);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_list failed', { error });\n return errorResult(\n `Failed to list Actions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_get')),\n {\n title: 'Get Action',\n description: 'Get a Vibe Action by its ID.',\n inputSchema: { id: z.string().describe('Action ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ action: unknown }>(GET_ACTION, { id });\n return jsonResult(data.action);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_get failed', { error });\n return errorResult(\n `Failed to get Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_create')),\n {\n title: 'Create Action',\n description: 'Create a new Vibe Action.',\n inputSchema: {\n name: z.string().describe('Action name'),\n description: z.string().optional().describe('Action description'),\n actionType: z.string().describe('Action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)'),\n triggerType: z\n .string()\n .optional()\n .describe('Trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)'),\n command: z.string().optional().describe('Command to execute (for COMMAND type)'),\n script: z.string().optional().describe('Script to execute (for SCRIPT type)'),\n webhookUrl: z.string().optional().describe('Webhook URL (for WEBHOOK type)'),\n tags: z.array(z.string()).optional().describe('Tags for categorization'),\n isActive: z.boolean().optional().describe('Whether the action is active'),\n },\n },\n async ({\n name,\n description,\n actionType,\n triggerType,\n command,\n script,\n webhookUrl,\n tags,\n isActive,\n }) => {\n try {\n const input: Record<string, unknown> = { name, actionType };\n if (description !== undefined) input.description = description;\n if (triggerType !== undefined) input.triggerType = triggerType;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (tags !== undefined) input.tags = tags;\n if (isActive !== undefined) input.isActive = isActive;\n\n const data = await ctx.gql.workspace.request<{ createAction: unknown }>(CREATE_ACTION, {\n input,\n });\n return jsonResult(data.createAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_create failed', { error });\n return errorResult(\n `Failed to create Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_update')),\n {\n title: 'Update Action',\n description: 'Update an existing Vibe Action.',\n inputSchema: {\n id: z.string().describe('Action ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n actionType: z\n .string()\n .optional()\n .describe('Updated action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)'),\n triggerType: z\n .string()\n .optional()\n .describe('Updated trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)'),\n command: z.string().optional().describe('Updated command'),\n script: z.string().optional().describe('Updated script'),\n webhookUrl: z.string().optional().describe('Updated webhook URL'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n isActive: z.boolean().optional().describe('Updated active status'),\n },\n },\n async ({\n id,\n name,\n description,\n actionType,\n triggerType,\n command,\n script,\n webhookUrl,\n tags,\n isActive,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (actionType !== undefined) input.actionType = actionType;\n if (triggerType !== undefined) input.triggerType = triggerType;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (tags !== undefined) input.tags = tags;\n if (isActive !== undefined) input.isActive = isActive;\n\n const data = await ctx.gql.workspace.request<{ updateAction: unknown }>(UPDATE_ACTION, {\n id,\n input,\n });\n return jsonResult(data.updateAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_update failed', { error });\n return errorResult(\n `Failed to update Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_delete')),\n {\n title: 'Delete Action',\n description: 'Permanently delete a Vibe Action.',\n inputSchema: { id: z.string().describe('Action ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAction: boolean }>(DELETE_ACTION, {\n id,\n });\n return jsonResult({ deleted: data.deleteAction, actionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_delete failed', { error });\n return errorResult(\n `Failed to delete Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_execute')),\n {\n title: 'Execute Action',\n description: 'Execute a Vibe Action and return the execution result.',\n inputSchema: {\n id: z.string().describe('Action ID to execute'),\n parameters: z.string().optional().describe('JSON string of execution parameters'),\n triggeredBy: z.string().optional().describe('Identifier of who triggered the execution'),\n },\n },\n async ({ id, parameters, triggeredBy }) => {\n try {\n const input: Record<string, unknown> = {};\n if (parameters !== undefined) {\n try {\n input.parameters = JSON.parse(parameters);\n } catch {\n input.parameters = parameters;\n }\n }\n if (triggeredBy !== undefined) input.triggeredBy = triggeredBy;\n\n const data = await ctx.gql.workspace.request<{ executeAction: unknown }>(EXECUTE_ACTION, {\n id,\n input: Object.keys(input).length > 0 ? input : undefined,\n });\n return jsonResult(data.executeAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_execute failed', { error });\n return errorResult(\n `Failed to execute Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_executions_list')),\n {\n title: 'List Action Executions',\n description: 'List action execution history with optional filters and pagination.',\n inputSchema: {\n actionId: z.string().optional().describe('Filter by action ID'),\n status: z\n .string()\n .optional()\n .describe('Filter by status (PENDING, RUNNING, SUCCESS, FAILURE, TIMEOUT, CANCELLED)'),\n triggeredBy: z.string().optional().describe('Filter by who triggered the execution'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ actionId, status, triggeredBy, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (actionId !== undefined) filter.actionId = actionId;\n if (status !== undefined) filter.status = status;\n if (triggeredBy !== undefined) filter.triggeredBy = triggeredBy;\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<{ actionExecutions: unknown }>(\n LIST_ACTION_EXECUTIONS,\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.actionExecutions);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_executions_list failed', { error });\n return errorResult(\n `Failed to list Action Executions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_duplicate')),\n {\n title: 'Duplicate Action',\n description: 'Create a copy of an existing Vibe Action.',\n inputSchema: {\n id: z.string().describe('Action ID to duplicate'),\n name: z.string().optional().describe('Name for the duplicated action'),\n },\n },\n async ({ id, name }) => {\n try {\n const variables: Record<string, unknown> = { id };\n if (name !== undefined) variables.name = name;\n\n const data = await ctx.gql.workspace.request<{ duplicateAction: unknown }>(\n DUPLICATE_ACTION,\n variables,\n );\n return jsonResult(data.duplicateAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_duplicate failed', { error });\n return errorResult(\n `Failed to duplicate Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_install')),\n {\n title: 'Install Action from Store',\n description: 'Install a Vibe Action from the action store.',\n inputSchema: {\n storeItemId: z.string().describe('Store item ID to install'),\n version: z.string().optional().describe('Version to install'),\n name: z.string().optional().describe('Custom name for the installed action'),\n },\n },\n async ({ storeItemId, version, name }) => {\n try {\n const variables: Record<string, unknown> = { storeItemId };\n if (version !== undefined) variables.version = version;\n if (name !== undefined) variables.name = name;\n\n const data = await ctx.gql.workspace.request<{ installActionFromStore: unknown }>(\n INSTALL_ACTION_FROM_STORE,\n variables,\n );\n return jsonResult(data.installActionFromStore);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_install failed', { error });\n return errorResult(\n `Failed to install Action from store: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_cancel_execution')),\n {\n title: 'Cancel Action Execution',\n description: 'Cancel a running Vibe Action execution.',\n inputSchema: {\n id: z.string().describe('Action execution ID to cancel'),\n },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cancelActionExecution: unknown }>(\n CANCEL_ACTION_EXECUTION,\n { id },\n );\n return jsonResult(data.cancelActionExecution);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_cancel_execution failed', { error });\n return errorResult(\n `Failed to cancel Action Execution: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // -------------------------------------------------------------------------\n // Scheduling tools (wspace-scheduler-svc via gateway)\n // -------------------------------------------------------------------------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_schedule')),\n {\n title: 'Schedule Action',\n description: 'Create a scheduled job for a Vibe Action via the scheduler service.',\n inputSchema: {\n actionId: z.string().describe('Action ID to schedule'),\n scheduleType: z.string().describe('Schedule type (CRON, ONE_TIME, FIXED_INTERVAL)'),\n cronExpression: z.string().optional().describe('Cron expression (for CRON type)'),\n timezone: z.string().optional().describe('Timezone (default UTC)'),\n scheduledAt: z.string().optional().describe('ISO date for ONE_TIME schedule'),\n interval: z.number().optional().describe('Interval value (for FIXED_INTERVAL)'),\n intervalUnit: z.string().optional().describe('Interval unit (MINUTES, HOURS, DAYS)'),\n startDate: z.string().optional().describe('Schedule start date (ISO)'),\n endDate: z.string().optional().describe('Schedule end date (ISO)'),\n name: z.string().optional().describe('Name for the scheduled job'),\n },\n },\n async ({\n actionId,\n scheduleType,\n cronExpression,\n timezone,\n scheduledAt,\n interval,\n intervalUnit,\n startDate,\n endDate,\n name,\n }) => {\n try {\n const input: Record<string, unknown> = { actionId, scheduleType };\n if (cronExpression !== undefined) input.cronExpression = cronExpression;\n if (timezone !== undefined) input.timezone = timezone;\n if (scheduledAt !== undefined) input.scheduledAt = scheduledAt;\n if (interval !== undefined) input.interval = interval;\n if (intervalUnit !== undefined) input.intervalUnit = intervalUnit;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (name !== undefined) input.name = name;\n\n const data = await ctx.gql.workspace.request<{ createScheduledJob: unknown }>(\n CREATE_SCHEDULED_JOB,\n {\n input,\n },\n );\n return jsonResult(data.createScheduledJob);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_schedule failed', { error });\n return errorResult(\n `Failed to schedule Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_unschedule')),\n {\n title: 'Unschedule Action',\n description: 'Delete a scheduled job for a Vibe Action.',\n inputSchema: {\n scheduledJobId: z.string().describe('Scheduled job ID to delete'),\n },\n },\n async ({ scheduledJobId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteScheduledJob: boolean }>(\n DELETE_SCHEDULED_JOB,\n {\n id: scheduledJobId,\n },\n );\n return jsonResult({ deleted: data.deleteScheduledJob, scheduledJobId });\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_unschedule failed', { error });\n return errorResult(\n `Failed to unschedule Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_schedules_list')),\n {\n title: 'List Scheduled Jobs',\n description: 'List scheduled jobs for Vibe Actions, optionally filtered by action ID.',\n inputSchema: {\n actionId: z.string().optional().describe('Filter by action ID'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ actionId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (actionId !== undefined) filter.actionId = actionId;\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<{ scheduledJobs: unknown }>(\n LIST_SCHEDULED_JOBS,\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.scheduledJobs);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_schedules_list failed', { error });\n return errorResult(\n `Failed to list scheduled jobs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_AGENTS,\n GET_AGENT,\n CREATE_AGENT,\n UPDATE_AGENT,\n DELETE_AGENT,\n PROBE_AGENT_CONNECTION,\n AGENT_HEALTH_PROBES,\n AGENT_PLUGINS,\n INSTALL_AGENT_PLUGIN,\n REMOVE_AGENT_PLUGIN,\n} from '../operations.js';\n\nexport function registerAgentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_list')),\n {\n title: 'List Agents',\n description: 'List all VibeControls agents with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by agent name'),\n hostname: z.string().optional().describe('Filter by hostname'),\n platform: z.string().optional().describe('Filter by platform'),\n isActive: z.boolean().optional().describe('Filter by active status'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ name, hostname, platform, isActive, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (hostname !== undefined) filter.hostname = hostname;\n if (platform !== undefined) filter.platform = platform;\n if (isActive !== undefined) filter.isActive = isActive;\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<{ vibecontrolsAgents: unknown }>(LIST_AGENTS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibecontrolsAgents);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_list failed', { error });\n return errorResult(\n `Failed to list agents: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_get')),\n {\n title: 'Get Agent',\n description: 'Get a VibeControls agent by its ID.',\n inputSchema: { id: z.string().describe('Agent ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsAgent: unknown }>(GET_AGENT, {\n id,\n });\n return jsonResult(data.vibecontrolsAgent);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_get failed', { error });\n return errorResult(\n `Failed to get agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_create')),\n {\n title: 'Create Agent',\n description: 'Create a new VibeControls agent.',\n inputSchema: {\n name: z.string().describe('Agent name'),\n hostname: z.string().describe('Agent hostname'),\n platform: z.string().optional().describe('Operating system platform'),\n architecture: z.string().optional().describe('CPU architecture'),\n version: z.string().optional().describe('Agent version'),\n tunnelUrl: z.string().optional().describe('Tunnel URL for remote access'),\n apiUrl: z.string().optional().describe('Agent API URL'),\n capabilities: z.array(z.string()).optional().describe('Agent capabilities'),\n },\n },\n async ({\n name,\n hostname,\n platform,\n architecture,\n version,\n tunnelUrl,\n apiUrl,\n capabilities,\n }) => {\n try {\n const input: Record<string, unknown> = { name, hostname };\n if (platform !== undefined) input.platform = platform;\n if (architecture !== undefined) input.architecture = architecture;\n if (version !== undefined) input.version = version;\n if (tunnelUrl !== undefined) input.tunnelUrl = tunnelUrl;\n if (apiUrl !== undefined) input.apiUrl = apiUrl;\n if (capabilities !== undefined) input.capabilities = capabilities;\n\n const data = await ctx.gql.workspace.request<{ createVibecontrolsAgent: unknown }>(\n CREATE_AGENT,\n {\n input,\n },\n );\n return jsonResult(data.createVibecontrolsAgent);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_create failed', { error });\n return errorResult(\n `Failed to create agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_update')),\n {\n title: 'Update Agent',\n description: 'Update an existing VibeControls agent.',\n inputSchema: {\n id: z.string().describe('Agent ID'),\n name: z.string().optional().describe('Updated name'),\n hostname: z.string().optional().describe('Updated hostname'),\n platform: z.string().optional().describe('Updated platform'),\n architecture: z.string().optional().describe('Updated architecture'),\n version: z.string().optional().describe('Updated version'),\n tunnelUrl: z.string().optional().describe('Updated tunnel URL'),\n apiUrl: z.string().optional().describe('Updated API URL'),\n capabilities: z.array(z.string()).optional().describe('Updated capabilities'),\n isActive: z.boolean().optional().describe('Active status'),\n },\n },\n async ({\n id,\n name,\n hostname,\n platform,\n architecture,\n version,\n tunnelUrl,\n apiUrl,\n capabilities,\n isActive,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (hostname !== undefined) input.hostname = hostname;\n if (platform !== undefined) input.platform = platform;\n if (architecture !== undefined) input.architecture = architecture;\n if (version !== undefined) input.version = version;\n if (tunnelUrl !== undefined) input.tunnelUrl = tunnelUrl;\n if (apiUrl !== undefined) input.apiUrl = apiUrl;\n if (capabilities !== undefined) input.capabilities = capabilities;\n if (isActive !== undefined) input.isActive = isActive;\n\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsAgent: unknown }>(\n UPDATE_AGENT,\n {\n id,\n input,\n },\n );\n return jsonResult(data.updateVibecontrolsAgent);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_update failed', { error });\n return errorResult(\n `Failed to update agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_delete')),\n {\n title: 'Delete Agent',\n description: 'Permanently delete a VibeControls agent.',\n inputSchema: { id: z.string().describe('Agent ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsAgent: boolean }>(\n DELETE_AGENT,\n {\n id,\n },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsAgent, agentId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_delete failed', { error });\n return errorResult(\n `Failed to delete agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_probe')),\n {\n title: 'Probe Agent Connection',\n description: 'Probe the connectivity of a specific agent to check if it is reachable.',\n inputSchema: { id: z.string().describe('Agent ID to probe') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ probeAgentConnection: unknown }>(\n PROBE_AGENT_CONNECTION,\n { id },\n );\n return jsonResult(data.probeAgentConnection);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_probe failed', { error });\n return errorResult(\n `Failed to probe agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_health')),\n {\n title: 'Agent Health Probes',\n description:\n 'Run health probes against all registered agents. Returns health status for each agent.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsAgentHealthProbes: unknown }>(\n AGENT_HEALTH_PROBES,\n );\n return jsonResult(data.vibecontrolsAgentHealthProbes);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_health failed', { error });\n return errorResult(\n `Failed to get agent health: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_plugins')),\n {\n title: 'List Agent Plugins',\n description: 'List all plugins installed on a specific agent.',\n inputSchema: { agentId: z.string().describe('Agent ID') },\n },\n async ({ agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ agentPlugins: unknown }>(AGENT_PLUGINS, {\n agentId,\n });\n return jsonResult(data.agentPlugins);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_plugins failed', { error });\n return errorResult(\n `Failed to list agent plugins: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_install_plugin')),\n {\n title: 'Install Agent Plugin',\n description: 'Install a plugin on a specific agent by package name.',\n inputSchema: {\n agentId: z.string().describe('Agent ID'),\n packageName: z.string().describe('NPM package name of the plugin to install'),\n },\n },\n async ({ agentId, packageName }) => {\n try {\n const data = await ctx.gql.workspace.request<{ installAgentPlugin: unknown }>(\n INSTALL_AGENT_PLUGIN,\n {\n agentId,\n packageName,\n },\n );\n return jsonResult(data.installAgentPlugin);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_install_plugin failed', { error });\n return errorResult(\n `Failed to install plugin: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_remove_plugin')),\n {\n title: 'Remove Agent Plugin',\n description: 'Remove a plugin from a specific agent.',\n inputSchema: {\n agentId: z.string().describe('Agent ID'),\n packageName: z.string().describe('NPM package name of the plugin to remove'),\n },\n },\n async ({ agentId, packageName }) => {\n try {\n const data = await ctx.gql.workspace.request<{ removeAgentPlugin: unknown }>(\n REMOVE_AGENT_PLUGIN,\n {\n agentId,\n packageName,\n },\n );\n return jsonResult(data.removeAgentPlugin);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_remove_plugin failed', { error });\n return errorResult(\n `Failed to remove plugin: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_AI_PROMPTS,\n GET_AI_PROMPT,\n CREATE_AI_PROMPT,\n UPDATE_AI_PROMPT,\n DELETE_AI_PROMPT,\n DUPLICATE_AI_PROMPT,\n RENDER_AI_PROMPT,\n RECORD_AI_PROMPT_USAGE,\n} from '../operations.js';\n\nexport function registerAiPromptTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_list')),\n {\n title: 'List AI Prompts',\n description: 'List AI prompt templates with optional filters.',\n inputSchema: {\n category: z.string().optional().describe('Filter by category'),\n status: z.string().optional().describe('Filter by status (ACTIVE, ARCHIVED, DRAFT)'),\n isShared: z.boolean().optional().describe('Only shared prompts'),\n search: z.string().optional().describe('Search text'),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ category, status, isShared, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n if (status !== undefined) filter.status = status;\n if (isShared !== undefined) filter.isShared = isShared;\n if (search !== undefined) filter.search = search;\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<{ aiPrompts: unknown }>(LIST_AI_PROMPTS, {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return jsonResult(data.aiPrompts);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_list failed', { error });\n return errorResult(\n `Failed to list AI prompts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_get')),\n {\n title: 'Get AI Prompt',\n description: 'Fetch a single AI prompt by ID.',\n inputSchema: { id: z.string().describe('Prompt ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ aiPrompt: unknown }>(GET_AI_PROMPT, { id });\n return jsonResult(data.aiPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_get failed', { error });\n return errorResult(\n `Failed to get AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_create')),\n {\n title: 'Create AI Prompt',\n description: 'Create a new AI prompt template.',\n inputSchema: {\n name: z.string().describe('Prompt name'),\n content: z.string().describe('Prompt content/template'),\n description: z.string().optional(),\n category: z.string().optional(),\n status: z.string().optional(),\n isShared: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n variables: z.unknown().optional(),\n metadata: z.unknown().optional(),\n },\n },\n async (input) => {\n try {\n const data = await ctx.gql.workspace.request<{ createAIPrompt: unknown }>(\n CREATE_AI_PROMPT,\n { input },\n );\n return jsonResult(data.createAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_create failed', { error });\n return errorResult(\n `Failed to create AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_update')),\n {\n title: 'Update AI Prompt',\n description: 'Update an existing AI prompt.',\n inputSchema: {\n id: z.string().describe('Prompt ID'),\n name: z.string().optional(),\n content: z.string().optional(),\n description: z.string().optional(),\n category: z.string().optional(),\n status: z.string().optional(),\n isShared: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n variables: z.unknown().optional(),\n metadata: z.unknown().optional(),\n },\n },\n async ({ id, ...rest }) => {\n try {\n const input: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(rest)) {\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateAIPrompt: unknown }>(\n UPDATE_AI_PROMPT,\n { id, input },\n );\n return jsonResult(data.updateAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_update failed', { error });\n return errorResult(\n `Failed to update AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_delete')),\n {\n title: 'Delete AI Prompt',\n description: 'Delete an AI prompt.',\n inputSchema: { id: z.string().describe('Prompt ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAIPrompt: boolean }>(\n DELETE_AI_PROMPT,\n { id },\n );\n return jsonResult({ deleted: data.deleteAIPrompt, id });\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_delete failed', { error });\n return errorResult(\n `Failed to delete AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_duplicate')),\n {\n title: 'Duplicate AI Prompt',\n description: 'Duplicate an AI prompt with a new name.',\n inputSchema: {\n id: z.string().describe('Source prompt ID'),\n name: z.string().describe('Name for the duplicate'),\n },\n },\n async ({ id, name }) => {\n try {\n const data = await ctx.gql.workspace.request<{ duplicateAIPrompt: unknown }>(\n DUPLICATE_AI_PROMPT,\n { id, name },\n );\n return jsonResult(data.duplicateAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_duplicate failed', { error });\n return errorResult(\n `Failed to duplicate AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_render')),\n {\n title: 'Render AI Prompt',\n description: 'Render an AI prompt template with variables substituted.',\n inputSchema: {\n id: z.string().describe('Prompt ID'),\n variables: z.unknown().optional().describe('Variables as JSON'),\n },\n },\n async ({ id, variables }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n renderAIPrompt: { promptId: string; rendered: string };\n }>(RENDER_AI_PROMPT, { id, variables });\n return jsonResult(data.renderAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_render failed', { error });\n return errorResult(\n `Failed to render AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_record_usage')),\n {\n title: 'Record AI Prompt Usage',\n description: 'Increment the usage counter on an AI prompt.',\n inputSchema: { id: z.string().describe('Prompt ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ recordAIPromptUsage: unknown }>(\n RECORD_AI_PROMPT_USAGE,\n { id },\n );\n return jsonResult(data.recordAIPromptUsage);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_record_usage failed', { error });\n return errorResult(\n `Failed to record AI prompt usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_VIBE_DECK_SHARE_LINKS,\n CREATE_VIBE_DECK_SHARE_LINK,\n UPDATE_VIBE_DECK_SHARE_LINK,\n REVOKE_VIBE_DECK_SHARE_LINK,\n VALIDATE_VIBE_DECK_SHARE_LINK,\n SHARED_VIBE_DECK,\n EXECUTE_SHARED_VIBE_DECK_BUTTON,\n} from '../operations.js';\n\nexport function registerVibeDeckShareLinkTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_list')),\n {\n title: 'List VibeDeck Share-Links',\n description: 'List share-links for a VibeDeck.',\n inputSchema: { vibeDeckId: z.string().describe('VibeDeck ID') },\n },\n async ({ vibeDeckId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeDeckShareLinks: unknown[] }>(\n LIST_VIBE_DECK_SHARE_LINKS,\n { vibeDeckId },\n );\n return jsonResult(data.vibeDeckShareLinks);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_list failed', { error });\n return errorResult(\n `Failed to list VibeDeck share-links: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_create')),\n {\n title: 'Create VibeDeck Share-Link',\n description: 'Create a new share-link for a VibeDeck.',\n inputSchema: {\n vibeDeckId: z.string().describe('VibeDeck ID'),\n permission: z.string().optional().describe('EXECUTE or VIEW'),\n visibility: z.string().optional().describe('PUBLIC | RESTRICTED | SIGNED_LINK'),\n name: z.string().optional(),\n password: z.string().optional(),\n maxUses: z.number().optional(),\n expiresInHours: z.number().optional(),\n allowIframe: z.boolean().optional(),\n },\n },\n async (input) => {\n try {\n const data = await ctx.gql.workspace.request<{ createVibeDeckShareLink: unknown }>(\n CREATE_VIBE_DECK_SHARE_LINK,\n { input },\n );\n return jsonResult(data.createVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_create failed', { error });\n return errorResult(\n `Failed to create VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_update')),\n {\n title: 'Update VibeDeck Share-Link',\n description: 'Update an existing VibeDeck share-link.',\n inputSchema: {\n id: z.string().describe('Share-link ID'),\n permission: z.string().optional(),\n visibility: z.string().optional(),\n name: z.string().optional(),\n password: z.string().optional(),\n maxUses: z.number().optional(),\n expiresAt: z.string().optional(),\n allowIframe: z.boolean().optional(),\n },\n },\n async ({ id, ...rest }) => {\n try {\n const input: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(rest)) {\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateVibeDeckShareLink: unknown }>(\n UPDATE_VIBE_DECK_SHARE_LINK,\n { id, input },\n );\n return jsonResult(data.updateVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_update failed', { error });\n return errorResult(\n `Failed to update VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_revoke')),\n {\n title: 'Revoke VibeDeck Share-Link',\n description: 'Revoke a VibeDeck share-link.',\n inputSchema: { id: z.string().describe('Share-link ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeVibeDeckShareLink: unknown }>(\n REVOKE_VIBE_DECK_SHARE_LINK,\n { id },\n );\n return jsonResult(data.revokeVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_revoke failed', { error });\n return errorResult(\n `Failed to revoke VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_validate')),\n {\n title: 'Validate VibeDeck Share-Link',\n description: 'Validate a share-link token (public). Returns access metadata.',\n inputSchema: { token: z.string().describe('Share-link token') },\n },\n async ({ token }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n validateVibeDeckShareLink: unknown;\n }>(VALIDATE_VIBE_DECK_SHARE_LINK, { token });\n return jsonResult(data.validateVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_validate failed', { error });\n return errorResult(\n `Failed to validate VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_get_shared')),\n {\n title: 'Get Shared VibeDeck',\n description: 'Fetch a publicly shared VibeDeck via its token.',\n inputSchema: {\n token: z.string().describe('Share-link token'),\n password: z.string().optional().describe('Password if required'),\n },\n },\n async ({ token, password }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sharedVibeDeck: unknown }>(\n SHARED_VIBE_DECK,\n {\n token,\n password,\n },\n );\n return jsonResult(data.sharedVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_shared_get failed', { error });\n return errorResult(\n `Failed to fetch shared VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_execute_shared_button')),\n {\n title: 'Execute Shared VibeDeck Button',\n description: 'Execute a button on a publicly shared VibeDeck.',\n inputSchema: {\n token: z.string().describe('Share-link token'),\n buttonId: z.string().describe('Button ID'),\n password: z.string().optional().describe('Password if required'),\n },\n },\n async ({ token, buttonId, password }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n executeSharedVibeDeckButton: { success: boolean; output?: string; error?: string };\n }>(EXECUTE_SHARED_VIBE_DECK_BUTTON, { token, buttonId, password });\n return jsonResult(data.executeSharedVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_shared_execute_button failed', { error });\n return errorResult(\n `Failed to execute shared VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_CATALOGS,\n GET_CATALOG,\n GET_CATALOG_DEPENDENCY_GRAPH,\n GET_CATALOG_SBOM,\n CREATE_CATALOG,\n UPDATE_CATALOG,\n DELETE_CATALOG,\n ADD_COMPONENT_TO_CATALOG,\n REMOVE_COMPONENT_FROM_CATALOG,\n ADD_VIBE_TO_CATALOG,\n REMOVE_VIBE_FROM_CATALOG,\n} from '../operations.js';\n\nconst VisibilityEnum = z.enum(['INTERNAL', 'PRIVATE', 'PUBLIC']);\n\nexport function registerCatalogTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_list')),\n {\n title: 'List Catalogs',\n description:\n 'List service catalogs with optional filters. Returns { items, total, hasMore }.',\n inputSchema: {\n search: z.string().optional().describe('Full-text search on name/description'),\n tags: z.array(z.string()).optional().describe('Filter by tags (has-some)'),\n visibility: VisibilityEnum.optional().describe('Filter by visibility'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Pagination offset'),\n },\n },\n async ({ search, tags, visibility, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (tags !== undefined) filter.tags = tags;\n if (visibility !== undefined) filter.visibility = visibility;\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<{ vibecontrolsCatalogs: unknown }>(\n LIST_CATALOGS,\n {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n },\n );\n return jsonResult(data.vibecontrolsCatalogs);\n } catch (error) {\n ctx.logger.error('catalogs_list failed', { error });\n return errorResult(\n `Failed to list catalogs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_get')),\n {\n title: 'Get Catalog',\n description: 'Get a catalog by ID. Returns the catalog object or null.',\n inputSchema: { id: z.string().describe('Catalog ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsCatalog: unknown }>(\n GET_CATALOG,\n { id },\n );\n return jsonResult(data.vibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_get failed', { error });\n return errorResult(\n `Failed to get catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_dependency_graph')),\n {\n title: 'Catalog Dependency Graph',\n description: 'Get the dependency graph for a catalog. Returns { nodes, edges }.',\n inputSchema: { catalogId: z.string().describe('Catalog ID') },\n },\n async ({ catalogId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n vibecontrolsCatalogDependencyGraph: unknown;\n }>(GET_CATALOG_DEPENDENCY_GRAPH, { catalogId });\n return jsonResult(data.vibecontrolsCatalogDependencyGraph);\n } catch (error) {\n ctx.logger.error('catalogs_dependency_graph failed', { error });\n return errorResult(\n `Failed to get dependency graph: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_sbom')),\n {\n title: 'Catalog SBOM',\n description:\n 'Get the SBOM (software bill of materials) for a catalog. Returns { format, generatedAt, totalCount, components }.',\n inputSchema: { catalogId: z.string().describe('Catalog ID') },\n },\n async ({ catalogId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsCatalogSBOM: unknown }>(\n GET_CATALOG_SBOM,\n { catalogId },\n );\n return jsonResult(data.vibecontrolsCatalogSBOM);\n } catch (error) {\n ctx.logger.error('catalogs_sbom failed', { error });\n return errorResult(\n `Failed to get SBOM: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_create')),\n {\n title: 'Create Catalog',\n description: 'Create a new catalog. Returns the created catalog.',\n inputSchema: {\n name: z.string().describe('Catalog name'),\n description: z.string().optional().describe('Catalog description'),\n visibility: VisibilityEnum.optional().describe('Visibility level'),\n ownerId: z.string().optional().describe('Owner actor ID'),\n ownerName: z.string().optional().describe('Owner display name'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({ name, description, visibility, ownerId, ownerName, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (visibility !== undefined) input.visibility = visibility;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (ownerName !== undefined) input.ownerName = ownerName;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ createVibecontrolsCatalog: unknown }>(\n CREATE_CATALOG,\n { input },\n );\n return jsonResult(data.createVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_create failed', { error });\n return errorResult(\n `Failed to create catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_update')),\n {\n title: 'Update Catalog',\n description: 'Update an existing catalog. Returns the updated catalog.',\n inputSchema: {\n id: z.string().describe('Catalog ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n visibility: VisibilityEnum.optional().describe('Visibility'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({ id, name, description, visibility, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (visibility !== undefined) input.visibility = visibility;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsCatalog: unknown }>(\n UPDATE_CATALOG,\n { id, input },\n );\n return jsonResult(data.updateVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_update failed', { error });\n return errorResult(\n `Failed to update catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_delete')),\n {\n title: 'Delete Catalog',\n description: 'Soft-delete a catalog. Returns { deleted: boolean, catalogId: string }.',\n inputSchema: { id: z.string().describe('Catalog ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsCatalog: boolean }>(\n DELETE_CATALOG,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsCatalog, catalogId: id });\n } catch (error) {\n ctx.logger.error('catalogs_delete failed', { error });\n return errorResult(\n `Failed to delete catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_add_component')),\n {\n title: 'Add Component To Catalog',\n description:\n 'Add a component to a catalog. Returns the membership { id, catalogId, componentId, ... }.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n componentId: z.string().describe('Component ID'),\n },\n },\n async ({ catalogId, componentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n addComponentToVibecontrolsCatalog: unknown;\n }>(ADD_COMPONENT_TO_CATALOG, { catalogId, componentId });\n return jsonResult(data.addComponentToVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_add_component failed', { error });\n return errorResult(\n `Failed to add component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_remove_component')),\n {\n title: 'Remove Component From Catalog',\n description: 'Remove a component from a catalog. Returns { removed: boolean }.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n componentId: z.string().describe('Component ID'),\n },\n },\n async ({ catalogId, componentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n removeComponentFromVibecontrolsCatalog: boolean;\n }>(REMOVE_COMPONENT_FROM_CATALOG, { catalogId, componentId });\n return jsonResult({ removed: data.removeComponentFromVibecontrolsCatalog });\n } catch (error) {\n ctx.logger.error('catalogs_remove_component failed', { error });\n return errorResult(\n `Failed to remove component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_add_vibe')),\n {\n title: 'Add Vibe To Catalog',\n description: 'Add a vibe to a catalog. Returns the membership object.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n vibeId: z.string().describe('Vibe ID'),\n },\n },\n async ({ catalogId, vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ addVibeToVibecontrolsCatalog: unknown }>(\n ADD_VIBE_TO_CATALOG,\n { catalogId, vibeId },\n );\n return jsonResult(data.addVibeToVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_add_vibe failed', { error });\n return errorResult(\n `Failed to add vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_remove_vibe')),\n {\n title: 'Remove Vibe From Catalog',\n description: 'Remove a vibe from a catalog. Returns { removed: boolean }.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n vibeId: z.string().describe('Vibe ID'),\n },\n },\n async ({ catalogId, vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n removeVibeFromVibecontrolsCatalog: boolean;\n }>(REMOVE_VIBE_FROM_CATALOG, { catalogId, vibeId });\n return jsonResult({ removed: data.removeVibeFromVibecontrolsCatalog });\n } catch (error) {\n ctx.logger.error('catalogs_remove_vibe failed', { error });\n return errorResult(\n `Failed to remove vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_COMPONENTS,\n GET_COMPONENT,\n CREATE_COMPONENT,\n UPDATE_COMPONENT,\n DELETE_COMPONENT,\n FORK_GITHUB_REPO,\n PUBLISH_COMPONENT_AS_TEMPLATE,\n} from '../operations.js';\n\nconst ComponentTypeEnum = z.enum([\n 'API',\n 'CUSTOM',\n 'DATABASE',\n 'DEPENDENCY',\n 'DOCUMENTATION',\n 'FRONTEND',\n 'INFRASTRUCTURE',\n 'JOB',\n 'LIBRARY',\n 'PACKAGE',\n 'SERVICE',\n 'TOOL',\n 'WORKFLOW',\n]);\n\nconst LifecycleEnum = z.enum(['ACTIVE', 'DEPRECATED', 'END_OF_LIFE', 'EXPERIMENTAL']);\n\nconst TemplateCategoryEnum = z.enum([\n 'BACKEND',\n 'CUSTOM',\n 'FRONTEND',\n 'FULLSTACK',\n 'INFRASTRUCTURE',\n 'LIBRARY',\n 'MICROSERVICE',\n 'STARTER',\n]);\n\nconst ScopeEnum = z.enum(['ORG', 'USER']);\n\nexport function registerComponentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_list')),\n {\n title: 'List Components',\n description: 'List software components. Returns { items, total, hasMore }.',\n inputSchema: {\n search: z.string().optional().describe('Search by name/description'),\n type: ComponentTypeEnum.optional().describe('Filter by component type'),\n lifecycle: LifecycleEnum.optional().describe('Filter by lifecycle stage'),\n teamId: z.string().optional().describe('Filter by team ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags (any)'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Pagination offset'),\n },\n },\n async ({ search, type, lifecycle, teamId, tags, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (type !== undefined) filter.type = type;\n if (lifecycle !== undefined) filter.lifecycle = lifecycle;\n if (teamId !== undefined) filter.teamId = teamId;\n if (tags !== undefined) filter.tags = tags;\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<{ vibecontrolsComponents: unknown }>(\n LIST_COMPONENTS,\n {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n },\n );\n return jsonResult(data.vibecontrolsComponents);\n } catch (error) {\n ctx.logger.error('components_list failed', { error });\n return errorResult(\n `Failed to list components: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_get')),\n {\n title: 'Get Component',\n description: 'Get a component by ID. Returns the component object or null.',\n inputSchema: { id: z.string().describe('Component ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsComponent: unknown }>(\n GET_COMPONENT,\n { id },\n );\n return jsonResult(data.vibecontrolsComponent);\n } catch (error) {\n ctx.logger.error('components_get failed', { error });\n return errorResult(\n `Failed to get component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_create')),\n {\n title: 'Create Component',\n description: 'Create a new component. Returns the created component.',\n inputSchema: {\n name: z.string().describe('Component name'),\n description: z.string().optional().describe('Description'),\n type: ComponentTypeEnum.optional().describe('Component type'),\n lifecycle: LifecycleEnum.optional().describe('Lifecycle stage'),\n version: z.string().optional().describe('Semantic version'),\n language: z.string().optional().describe('Primary language'),\n framework: z.string().optional().describe('Primary framework'),\n repositoryUrl: z.string().optional().describe('Source repository URL'),\n documentationUrl: z.string().optional().describe('Documentation URL'),\n ownerId: z.string().optional().describe('Owner actor ID'),\n ownerName: z.string().optional().describe('Owner display name'),\n teamId: z.string().optional().describe('Team ID'),\n teamName: z.string().optional().describe('Team display name'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { name: args.name };\n for (const k of [\n 'description',\n 'type',\n 'lifecycle',\n 'version',\n 'language',\n 'framework',\n 'repositoryUrl',\n 'documentationUrl',\n 'ownerId',\n 'ownerName',\n 'teamId',\n 'teamName',\n 'tags',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ createVibecontrolsComponent: unknown }>(\n CREATE_COMPONENT,\n { input },\n );\n return jsonResult(data.createVibecontrolsComponent);\n } catch (error) {\n ctx.logger.error('components_create failed', { error });\n return errorResult(\n `Failed to create component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_update')),\n {\n title: 'Update Component',\n description: 'Update an existing component. Returns the updated component.',\n inputSchema: {\n id: z.string().describe('Component ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n lifecycle: LifecycleEnum.optional().describe('Lifecycle'),\n version: z.string().optional().describe('Version'),\n repositoryUrl: z.string().optional().describe('Repository URL'),\n documentationUrl: z.string().optional().describe('Documentation URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n id,\n name,\n description,\n lifecycle,\n version,\n repositoryUrl,\n documentationUrl,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (lifecycle !== undefined) input.lifecycle = lifecycle;\n if (version !== undefined) input.version = version;\n if (repositoryUrl !== undefined) input.repositoryUrl = repositoryUrl;\n if (documentationUrl !== undefined) input.documentationUrl = documentationUrl;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsComponent: unknown }>(\n UPDATE_COMPONENT,\n { id, input },\n );\n return jsonResult(data.updateVibecontrolsComponent);\n } catch (error) {\n ctx.logger.error('components_update failed', { error });\n return errorResult(\n `Failed to update component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_delete')),\n {\n title: 'Delete Component',\n description: 'Soft-delete a component. Returns { deleted, componentId }.',\n inputSchema: { id: z.string().describe('Component ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsComponent: boolean }>(\n DELETE_COMPONENT,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsComponent, componentId: id });\n } catch (error) {\n ctx.logger.error('components_delete failed', { error });\n return errorResult(\n `Failed to delete component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_fork_git_hub_repo')),\n {\n title: 'Fork GitHub Repo',\n description:\n 'Fork or create a GitHub repo for component setup. Returns { isForked, repoFullName, repoUrl }.',\n inputSchema: {\n repoName: z.string().describe('Name of the new repository'),\n scope: ScopeEnum.describe('USER or ORG'),\n orgName: z.string().optional().describe('Org name (required when scope=ORG)'),\n sourceRepoUrl: z.string().optional().describe('Source repo URL to fork'),\n description: z.string().optional().describe('Repository description'),\n connectionId: z.string().optional().describe('OAuth connection ID'),\n token: z.string().optional().describe('Personal access token (if no connection)'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { repoName: args.repoName, scope: args.scope };\n for (const k of [\n 'orgName',\n 'sourceRepoUrl',\n 'description',\n 'connectionId',\n 'token',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ forkVibecontrolsGitHubRepo: unknown }>(\n FORK_GITHUB_REPO,\n { input },\n );\n return jsonResult(data.forkVibecontrolsGitHubRepo);\n } catch (error) {\n ctx.logger.error('components_fork_github_repo failed', { error });\n return errorResult(\n `Failed to fork repo: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_publish_as_template')),\n {\n title: 'Publish Component As Template',\n description:\n 'Publish a component as a reusable template (snapshots the component). Returns the created template.',\n inputSchema: {\n componentId: z.string().describe('Source component ID'),\n name: z.string().describe('Template name'),\n description: z.string().optional().describe('Description'),\n category: TemplateCategoryEnum.optional().describe('Category'),\n version: z.string().optional().describe('Version'),\n setupInstructions: z.string().optional().describe('Markdown setup instructions'),\n sourceRepositoryUrl: z.string().optional().describe('Source repository URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n componentId,\n name,\n description,\n category,\n version,\n setupInstructions,\n sourceRepositoryUrl,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (version !== undefined) input.version = version;\n if (setupInstructions !== undefined) input.setupInstructions = setupInstructions;\n if (sourceRepositoryUrl !== undefined) input.sourceRepositoryUrl = sourceRepositoryUrl;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{\n publishVibecontrolsComponentAsTemplate: unknown;\n }>(PUBLISH_COMPONENT_AS_TEMPLATE, { componentId, input });\n return jsonResult(data.publishVibecontrolsComponentAsTemplate);\n } catch (error) {\n ctx.logger.error('components_publish_as_template failed', { error });\n return errorResult(\n `Failed to publish template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n GET_SCORECARD,\n UPSERT_SCORECARD,\n ADD_SCORECARD_METRIC,\n UPDATE_SCORECARD_METRIC,\n REMOVE_SCORECARD_METRIC,\n} from '../operations.js';\n\nconst OwnerTypeEnum = z.enum(['CATALOG', 'COMPONENT', 'VIBE']);\nconst MetricStatusEnum = z.enum(['FAILING', 'PASSING', 'UNKNOWN', 'WARNING']);\nconst MetricTypeEnum = z.enum([\n 'CICD_HEALTH',\n 'CUSTOM',\n 'DEPENDENCY_FRESHNESS',\n 'DOCUMENTATION_COVERAGE',\n 'INCIDENT_COUNT',\n 'SECURITY_SCORE',\n 'SLO_COMPLIANCE',\n 'TEST_COVERAGE',\n]);\n\nexport function registerScorecardTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_get')),\n {\n title: 'Get Scorecard',\n description:\n 'Get the scorecard for an owner entity (catalog/component/vibe). Returns the scorecard with metrics or null.',\n inputSchema: {\n ownerId: z.string().describe('Owner entity ID'),\n ownerType: OwnerTypeEnum.describe('Owner entity type'),\n },\n },\n async ({ ownerId, ownerType }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsScorecard: unknown }>(\n GET_SCORECARD,\n { ownerId, ownerType },\n );\n return jsonResult(data.vibecontrolsScorecard);\n } catch (error) {\n ctx.logger.error('scorecards_get failed', { error });\n return errorResult(\n `Failed to get scorecard: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_upsert')),\n {\n title: 'Upsert Scorecard',\n description: 'Create or update a scorecard for an owner. Returns the scorecard.',\n inputSchema: {\n ownerId: z.string().describe('Owner entity ID'),\n ownerType: OwnerTypeEnum.describe('Owner entity type'),\n },\n },\n async ({ ownerId, ownerType }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n upsertVibecontrolsScorecard: unknown;\n }>(UPSERT_SCORECARD, { input: { ownerId, ownerType } });\n return jsonResult(data.upsertVibecontrolsScorecard);\n } catch (error) {\n ctx.logger.error('scorecards_upsert failed', { error });\n return errorResult(\n `Failed to upsert scorecard: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_add_metric')),\n {\n title: 'Add Scorecard Metric',\n description: 'Add a new metric to a scorecard. Returns the created metric.',\n inputSchema: {\n scorecardId: z.string().describe('Scorecard ID'),\n name: z.string().describe('Metric display name (unique within scorecard)'),\n description: z.string().optional().describe('Human-readable description'),\n type: MetricTypeEnum.optional().describe('Metric classification'),\n status: MetricStatusEnum.optional().describe('Current status'),\n value: z.number().optional().describe('Current metric value'),\n threshold: z.number().optional().describe('Target threshold'),\n unit: z.string().optional().describe('Unit of measurement (%, count, ms, ...)'),\n iframeUrl: z.string().optional().describe('Optional iframe embed URL'),\n iframeHeight: z.number().optional().describe('Iframe height in pixels'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { name: args.name };\n for (const k of [\n 'description',\n 'type',\n 'status',\n 'value',\n 'threshold',\n 'unit',\n 'iframeUrl',\n 'iframeHeight',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{\n addVibecontrolsScorecardMetric: unknown;\n }>(ADD_SCORECARD_METRIC, { scorecardId: args.scorecardId, input });\n return jsonResult(data.addVibecontrolsScorecardMetric);\n } catch (error) {\n ctx.logger.error('scorecards_add_metric failed', { error });\n return errorResult(\n `Failed to add metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_update_metric')),\n {\n title: 'Update Scorecard Metric',\n description: 'Update an existing scorecard metric. Returns the updated metric.',\n inputSchema: {\n id: z.string().describe('Metric ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n type: MetricTypeEnum.optional().describe('Type'),\n status: MetricStatusEnum.optional().describe('Status'),\n value: z.number().optional().describe('Current value'),\n threshold: z.number().optional().describe('Threshold'),\n unit: z.string().optional().describe('Unit'),\n iframeUrl: z.string().optional().describe('Iframe URL'),\n iframeHeight: z.number().optional().describe('Iframe height'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = {};\n for (const k of [\n 'name',\n 'description',\n 'type',\n 'status',\n 'value',\n 'threshold',\n 'unit',\n 'iframeUrl',\n 'iframeHeight',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{\n updateVibecontrolsScorecardMetric: unknown;\n }>(UPDATE_SCORECARD_METRIC, { id: args.id, input });\n return jsonResult(data.updateVibecontrolsScorecardMetric);\n } catch (error) {\n ctx.logger.error('scorecards_update_metric failed', { error });\n return errorResult(\n `Failed to update metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_remove_metric')),\n {\n title: 'Remove Scorecard Metric',\n description: 'Soft-delete a scorecard metric. Returns { removed: boolean, metricId }.',\n inputSchema: { id: z.string().describe('Metric ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n removeVibecontrolsScorecardMetric: boolean;\n }>(REMOVE_SCORECARD_METRIC, { id });\n return jsonResult({\n removed: data.removeVibecontrolsScorecardMetric,\n metricId: id,\n });\n } catch (error) {\n ctx.logger.error('scorecards_remove_metric failed', { error });\n return errorResult(\n `Failed to remove metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_TEMPLATES,\n GET_TEMPLATE,\n UPDATE_TEMPLATE,\n DELETE_TEMPLATE,\n INSTANTIATE_TEMPLATE,\n} from '../operations.js';\n\nconst TemplateCategoryEnum = z.enum([\n 'BACKEND',\n 'CUSTOM',\n 'FRONTEND',\n 'FULLSTACK',\n 'INFRASTRUCTURE',\n 'LIBRARY',\n 'MICROSERVICE',\n 'STARTER',\n]);\nconst TemplateStatusEnum = z.enum(['ARCHIVED', 'DRAFT', 'PUBLISHED']);\n\nexport function registerTemplateTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'templates_list')),\n {\n title: 'List Templates',\n description: 'List reusable component templates. Returns { items, total, hasMore }.',\n inputSchema: {\n search: z.string().optional().describe('Search by name/description'),\n category: TemplateCategoryEnum.optional().describe('Filter by category'),\n status: TemplateStatusEnum.optional().describe('Filter by status'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Pagination offset'),\n },\n },\n async ({ search, category, status, tags, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (category !== undefined) filter.category = category;\n if (status !== undefined) filter.status = status;\n if (tags !== undefined) filter.tags = tags;\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<{ vibecontrolsTemplates: unknown }>(\n LIST_TEMPLATES,\n {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n },\n );\n return jsonResult(data.vibecontrolsTemplates);\n } catch (error) {\n ctx.logger.error('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, 'templates_get')),\n {\n title: 'Get Template',\n description: 'Get a template by ID. Returns the template object or null.',\n inputSchema: { id: z.string().describe('Template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsTemplate: unknown }>(\n GET_TEMPLATE,\n { id },\n );\n return jsonResult(data.vibecontrolsTemplate);\n } catch (error) {\n ctx.logger.error('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, 'templates_update')),\n {\n title: 'Update Template',\n description: 'Update an existing template. Returns the updated template.',\n inputSchema: {\n id: z.string().describe('Template ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n category: TemplateCategoryEnum.optional().describe('Category'),\n status: TemplateStatusEnum.optional().describe('Status'),\n version: z.string().optional().describe('Version'),\n setupInstructions: z.string().optional().describe('Markdown setup instructions'),\n sourceRepositoryUrl: z.string().optional().describe('Source repository URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n id,\n name,\n description,\n category,\n status,\n version,\n setupInstructions,\n sourceRepositoryUrl,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (status !== undefined) input.status = status;\n if (version !== undefined) input.version = version;\n if (setupInstructions !== undefined) input.setupInstructions = setupInstructions;\n if (sourceRepositoryUrl !== undefined) input.sourceRepositoryUrl = sourceRepositoryUrl;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsTemplate: unknown }>(\n UPDATE_TEMPLATE,\n { id, input },\n );\n return jsonResult(data.updateVibecontrolsTemplate);\n } catch (error) {\n ctx.logger.error('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, 'templates_delete')),\n {\n title: 'Delete Template',\n description: 'Soft-delete a template. Returns { deleted, templateId }.',\n inputSchema: { id: z.string().describe('Template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsTemplate: boolean }>(\n DELETE_TEMPLATE,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsTemplate, templateId: id });\n } catch (error) {\n ctx.logger.error('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 server.registerTool(\n track(mcpToolName(ctx.productName, 'templates_instantiate')),\n {\n title: 'Instantiate Template',\n description: 'Create a new component from a template. Returns the new component.',\n inputSchema: {\n templateId: z.string().describe('Template ID'),\n name: z.string().describe('Name for the new component'),\n description: z.string().optional().describe('Description for the new component'),\n workspaceId: z.string().optional().describe('Target workspace (defaults to current)'),\n variableValues: z\n .record(z.unknown())\n .optional()\n .describe('Variable value overrides as a JSON object'),\n },\n },\n async ({ templateId, name, description, workspaceId, variableValues }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (workspaceId !== undefined) input.workspaceId = workspaceId;\n if (variableValues !== undefined) input.variableValues = variableValues;\n const data = await ctx.gql.workspace.request<{\n instantiateVibecontrolsTemplate: unknown;\n }>(INSTANTIATE_TEMPLATE, { templateId, input });\n return jsonResult(data.instantiateVibecontrolsTemplate);\n } catch (error) {\n ctx.logger.error('templates_instantiate failed', { error });\n return errorResult(\n `Failed to instantiate template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport { LIST_AI_TOOL_EVENTS, CREATE_AI_TOOL_EVENT, RECENT_AI_TOOL_EVENTS } from '../operations.js';\n\nexport function registerAiEventTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_events_list')),\n {\n title: 'List AI Tool Events',\n description: 'List AI tool events with optional filters and pagination.',\n inputSchema: {\n source: z.string().optional().describe('Filter by event source'),\n eventType: z.string().optional().describe('Filter by event type'),\n agentId: z.string().optional().describe('Filter by agent ID'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ source, eventType, agentId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (source !== undefined) filter.source = source;\n if (eventType !== undefined) filter.eventType = eventType;\n if (agentId !== undefined) filter.agentId = agentId;\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<{ aiToolEvents: unknown }>(\n LIST_AI_TOOL_EVENTS,\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.aiToolEvents);\n } catch (error) {\n ctx.logger.error('vibecontrols_ai_events_list failed', { error });\n return errorResult(\n `Failed to list AI events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_events_create')),\n {\n title: 'Create AI Tool Event',\n description: 'Record a new AI tool event.',\n inputSchema: {\n source: z.string().describe('Event source (e.g., mcp, cli, sdk)'),\n eventType: z.string().describe('Event type (e.g., tool_call, completion)'),\n payload: z.string().describe('Event payload as JSON string'),\n agentId: z.string().optional().describe('Associated agent ID'),\n },\n },\n async ({ source, eventType, payload, agentId }) => {\n try {\n const input: Record<string, unknown> = { source, eventType };\n input.payload = JSON.parse(payload);\n if (agentId !== undefined) input.agentId = agentId;\n\n const data = await ctx.gql.workspace.request<{ createAiToolEvent: unknown }>(\n CREATE_AI_TOOL_EVENT,\n {\n input,\n },\n );\n return jsonResult(data.createAiToolEvent);\n } catch (error) {\n ctx.logger.error('vibecontrols_ai_events_create failed', { error });\n return errorResult(\n `Failed to create AI event: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_events_recent')),\n {\n title: 'Recent AI Tool Events',\n description: 'Get recent AI tool events for a specific agent.',\n inputSchema: {\n agentId: z.string().describe('Agent ID'),\n limit: z.number().optional().describe('Maximum events to return'),\n },\n },\n async ({ agentId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ recentAiToolEvents: unknown }>(\n RECENT_AI_TOOL_EVENTS,\n { agentId, limit },\n );\n return jsonResult(data.recentAiToolEvents);\n } catch (error) {\n ctx.logger.error('vibecontrols_ai_events_recent failed', { error });\n return errorResult(\n `Failed to get recent AI events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport { VIBECONTROLS_ANALYTICS } from '../operations.js';\n\nexport function registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_overview')),\n {\n title: 'VibeControls Analytics Overview',\n description:\n 'Get consolidated analytics overview with KPIs, time series, and breakdowns for all VibeControls entities (agents, sessions, vibes, actions, webhooks, AI events, vibe decks, audit, docs, notes, config).',\n inputSchema: {\n startDate: z\n .string()\n .optional()\n .describe('Start date (ISO format). Defaults to 7 days ago.'),\n endDate: z.string().optional().describe('End date (ISO format). Defaults to now.'),\n granularity: z\n .enum(['HOUR', 'DAY', 'WEEK', 'MONTH'])\n .optional()\n .default('DAY')\n .describe('Time series granularity'),\n entityTypes: z\n .array(\n z.enum([\n 'AGENT',\n 'TARGET',\n 'SESSION',\n 'VIBE',\n 'ACTION',\n 'WEBHOOK',\n 'AI_EVENT',\n 'VIBE_DECK',\n 'AUDIT',\n 'DOCS',\n 'NOTE',\n 'CONFIGURATION',\n ]),\n )\n .optional()\n .describe('Filter to specific entity types (null = all)'),\n agentId: z.string().optional().describe('Filter analytics by agent ID'),\n vibeId: z.string().optional().describe('Filter analytics by vibe ID'),\n },\n },\n async ({ startDate, endDate, granularity, entityTypes, agentId, vibeId }) => {\n try {\n const input: Record<string, unknown> = {\n startDate: startDate || new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n endDate: endDate || new Date().toISOString(),\n granularity: granularity || 'DAY',\n };\n if (entityTypes && entityTypes.length > 0) input.entityTypes = entityTypes;\n if (agentId) input.agentId = agentId;\n if (vibeId) input.vibeId = vibeId;\n\n const data = await ctx.gql.workspace.request<{ vibecontrolsAnalytics: unknown }>(\n VIBECONTROLS_ANALYTICS,\n { input },\n );\n return jsonResult(data.vibecontrolsAnalytics);\n } catch (error) {\n ctx.logger.error('vibecontrols_analytics_overview failed', { error });\n return errorResult(\n `Failed to get analytics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_summary')),\n {\n title: 'VibeControls Analytics Summary',\n description:\n 'Get a quick KPI summary of all VibeControls entity counts (agents, sessions, vibes, actions, etc.). Lighter-weight than the full overview.',\n inputSchema: {\n startDate: z\n .string()\n .optional()\n .describe('Start date (ISO format). Defaults to 7 days ago.'),\n endDate: z.string().optional().describe('End date (ISO format). Defaults to now.'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const input = {\n startDate: startDate || new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n endDate: endDate || new Date().toISOString(),\n granularity: 'DAY',\n };\n const data = await ctx.gql.workspace.request<{\n vibecontrolsAnalytics: Record<string, Record<string, number | undefined>>;\n }>(VIBECONTROLS_ANALYTICS, { input });\n const a = data.vibecontrolsAnalytics;\n const summary = {\n agents: { total: a.agents?.total, active: a.agents?.active },\n targets: { total: a.targets?.total },\n sessions: { total: a.sessions?.total, active: a.sessions?.active },\n vibes: { total: a.vibes?.total },\n actions: {\n total: a.actions?.total,\n executions: a.actions?.totalExecutions,\n successRate: a.actions?.successRate,\n },\n webhooks: { total: a.webhooks?.total, active: a.webhooks?.active },\n aiEvents: { total: a.aiEvents?.total },\n vibeDecks: {\n totalDecks: a.vibeDecks?.totalDecks,\n totalButtons: a.vibeDecks?.totalButtons,\n },\n audit: { total: a.audit?.total },\n docs: { sites: a.docs?.totalSites, pages: a.docs?.totalPages },\n notes: { total: a.notes?.total, pinned: a.notes?.pinned },\n configurations: { total: a.configurations?.total },\n executionTimeMs: a.executionTimeMs,\n };\n return jsonResult(summary);\n } catch (error) {\n ctx.logger.error('vibecontrols_analytics_summary failed', { error });\n return errorResult(\n `Failed to get analytics summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_AUDIT_LOGS,\n GET_AUDIT_LOG,\n AUDIT_LOG_STATS,\n EXPORT_AUDIT_LOGS,\n DELETE_AUDIT_LOG,\n} from '../operations.js';\n\nexport function registerAuditTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_list')),\n {\n title: 'List Audit Logs',\n description: 'List audit logs with optional filters and pagination.',\n inputSchema: {\n action: z.string().optional().describe('Filter by action type'),\n resourceType: z.string().optional().describe('Filter by resource type'),\n resourceId: z.string().optional().describe('Filter by resource ID'),\n actorId: z.string().optional().describe('Filter by actor ID'),\n status: z.string().optional().describe('Filter by status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ action, resourceType, resourceId, actorId, status, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (action !== undefined) filter.action = action;\n if (resourceType !== undefined) filter.resourceType = resourceType;\n if (resourceId !== undefined) filter.resourceId = resourceId;\n if (actorId !== undefined) filter.actorId = actorId;\n if (status !== undefined) filter.status = status;\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<{ vibeAuditLogs: unknown }>(LIST_AUDIT_LOGS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibeAuditLogs);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_list failed', { error });\n return errorResult(\n `Failed to list audit logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_get')),\n {\n title: 'Get Audit Log',\n description: 'Get an audit log entry by its ID.',\n inputSchema: { id: z.string().describe('Audit log ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeAuditLog: unknown }>(GET_AUDIT_LOG, {\n id,\n });\n return jsonResult(data.vibeAuditLog);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_get failed', { error });\n return errorResult(\n `Failed to get audit log: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_stats')),\n {\n title: 'Audit Log Stats',\n description: 'Get aggregated statistics for audit logs.',\n inputSchema: {\n action: z.string().optional().describe('Filter stats by action type'),\n resourceType: z.string().optional().describe('Filter stats by resource type'),\n status: z.string().optional().describe('Filter stats by status'),\n },\n },\n async ({ action, resourceType, status }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (action !== undefined) filter.action = action;\n if (resourceType !== undefined) filter.resourceType = resourceType;\n if (status !== undefined) filter.status = status;\n\n const data = await ctx.gql.workspace.request<{ vibeAuditLogStats: unknown }>(\n AUDIT_LOG_STATS,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n },\n );\n return jsonResult(data.vibeAuditLogStats);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_stats failed', { error });\n return errorResult(\n `Failed to get audit log stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_export')),\n {\n title: 'Export Audit Logs',\n description: 'Export audit logs in a specified format.',\n inputSchema: {\n action: z.string().optional().describe('Filter by action type'),\n resourceType: z.string().optional().describe('Filter by resource type'),\n status: z.string().optional().describe('Filter by status'),\n format: z.string().optional().describe('Export format: json or csv'),\n },\n },\n async ({ action, resourceType, status, format }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (action !== undefined) filter.action = action;\n if (resourceType !== undefined) filter.resourceType = resourceType;\n if (status !== undefined) filter.status = status;\n\n const variables: Record<string, unknown> = {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n };\n if (format !== undefined) variables.format = format;\n\n const data = await ctx.gql.workspace.request<{ exportVibeAuditLogs: unknown }>(\n EXPORT_AUDIT_LOGS,\n variables,\n );\n return jsonResult(data.exportVibeAuditLogs);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_export failed', { error });\n return errorResult(\n `Failed to export audit logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_delete')),\n {\n title: 'Delete Audit Log',\n description: 'Delete an audit log entry.',\n inputSchema: {\n id: z.string().describe('Audit log ID to delete'),\n reason: z.string().optional().describe('Reason for deletion'),\n },\n },\n async ({ id, reason }) => {\n try {\n const variables: Record<string, unknown> = { id };\n if (reason !== undefined) variables.reason = reason;\n\n const data = await ctx.gql.workspace.request<{ deleteVibeAuditLog: unknown }>(\n DELETE_AUDIT_LOG,\n variables,\n );\n return jsonResult(data.deleteVibeAuditLog);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_delete failed', { error });\n return errorResult(\n `Failed to delete audit log: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_CONFIGURATIONS,\n GET_CONFIGURATION,\n SET_CONFIGURATION,\n DELETE_CONFIGURATION,\n CONFIGURATIONS_BY_SCOPE,\n} from '../operations.js';\n\nconst ConfigScopeEnum = z.enum(['WORKSPACE', 'VIBE', 'SESSION', 'AGENT', 'USER', 'GLOBAL']);\n\nexport function registerConfigurationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_list')),\n {\n title: 'List Configurations',\n description: 'List configuration key-value pairs with required filter.',\n inputSchema: {\n key: z.string().optional().describe('Filter by key pattern'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Filter by scope entity ID'),\n isSecret: z.boolean().optional().describe('Filter by secret status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ key, scope, scopeId, isSecret, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = { scope };\n if (key !== undefined) filter.key = key;\n if (scopeId !== undefined) filter.scopeId = scopeId;\n if (isSecret !== undefined) filter.isSecret = isSecret;\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<{ configurations: unknown }>(\n LIST_CONFIGURATIONS,\n {\n filter,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.configurations);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_list failed', { error });\n return errorResult(\n `Failed to list configurations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_get')),\n {\n title: 'Get Configuration',\n description: 'Get a configuration value by key and scope.',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ configuration: unknown }>(\n GET_CONFIGURATION,\n {\n key,\n scope,\n scopeId,\n },\n );\n return jsonResult(data.configuration);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_get failed', { error });\n return errorResult(\n `Failed to get configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_set')),\n {\n title: 'Set Configuration',\n description: 'Set (create or update) a configuration value.',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n value: z.string().describe('Configuration value as a JSON string'),\n isSecret: z.boolean().optional().describe('Mark as secret (value will be masked in reads)'),\n },\n },\n async ({ key, scope, scopeId, value, isSecret }) => {\n try {\n const parsedValue = JSON.parse(value);\n\n const variables: Record<string, unknown> = { key, scope, value: parsedValue };\n if (scopeId !== undefined) variables.scopeId = scopeId;\n if (isSecret !== undefined) variables.isSecret = isSecret;\n\n const data = await ctx.gql.workspace.request<{ setConfiguration: unknown }>(\n SET_CONFIGURATION,\n variables,\n );\n return jsonResult(data.setConfiguration);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_set failed', { error });\n return errorResult(\n `Failed to set configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_delete')),\n {\n title: 'Delete Configuration',\n description: 'Delete a configuration by key and scope.',\n inputSchema: {\n key: z.string().describe('Configuration key to delete'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteConfiguration: boolean }>(\n DELETE_CONFIGURATION,\n { key, scope, scopeId },\n );\n return jsonResult({ deleted: data.deleteConfiguration, key, scope });\n } catch (error) {\n ctx.logger.error('vibecontrols_config_delete failed', { error });\n return errorResult(\n `Failed to delete configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_by_scope')),\n {\n title: 'Configurations by Scope',\n description: 'Get all configuration values for a given scope.',\n inputSchema: {\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n },\n },\n async ({ scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ configurationsByScope: unknown }>(\n CONFIGURATIONS_BY_SCOPE,\n { scope, scopeId },\n );\n return jsonResult(data.configurationsByScope);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_by_scope failed', { error });\n return errorResult(\n `Failed to get configurations by scope: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Configuration / Security MCP tools.\n * Surface: scans (list/get/run/cancel), findings (list/update-status), policy decision,\n * status, repository config (get/update), exceptions (create/revoke), providers (list/set),\n * evidence presign, scan-run push.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n ALL_SECURITY_SCANS_Q,\n CANCEL_SECURITY_SCAN_M,\n CREATE_SECURITY_EXCEPTION_M,\n MY_SECURITY_SCANS_Q,\n PRESIGN_SECURITY_EVIDENCE_M,\n PUSH_SECURITY_SCAN_RUN_M,\n REPOSITORY_SECURITY_CONFIG_Q,\n REVOKE_SECURITY_EXCEPTION_M,\n RUN_SECURITY_SCAN_M,\n SECURITY_FINDINGS_Q,\n SECURITY_POLICY_DECISION_Q,\n SECURITY_PROVIDERS_Q,\n SECURITY_SCAN_Q,\n SECURITY_STATUS_Q,\n SET_SECURITY_PROVIDER_M,\n UPDATE_REPOSITORY_SECURITY_CONFIG_M,\n UPDATE_SECURITY_FINDING_STATUS_M,\n} from '../operations.js';\n\nconst StageEnum = z.enum([\n 'ARCHIVE_OFFBOARD',\n 'BUILD',\n 'DEPLOY_ALPHA',\n 'DEPLOY_PREVIEW',\n 'DEVELOPER_LOCAL',\n 'INCIDENT_RESPONSE',\n 'MAIN_MERGE',\n 'PACKAGE_PUBLISH',\n 'PROMOTE_PROD',\n 'PULL_REQUEST_DEEP',\n 'PULL_REQUEST_FAST',\n 'REPO_ONBOARD',\n 'RUNTIME_CONTINUOUS',\n 'SCHEDULED_RESCAN',\n]);\n\nconst SeverityEnum = z.enum(['CRITICAL', 'HIGH', 'MEDIUM', 'LOW', 'INFO']);\nconst ScanStatusEnum = z.enum(['CANCELLED', 'ERRORED', 'FAILED', 'QUEUED', 'RUNNING', 'SUCCEEDED']);\nconst ScanConclusionEnum = z.enum(['FAIL', 'PASS', 'SKIPPED', 'WARN']);\nconst FindingCategoryEnum = z.enum([\n 'CONFIG',\n 'LICENSE',\n 'POLICY',\n 'SAST',\n 'SECRET',\n 'SUPPLYCHAIN',\n 'VULN',\n]);\nconst FindingStatusEnum = z.enum(['ACCEPTED', 'FALSE_POSITIVE', 'FIXED', 'OPEN', 'SUPPRESSED']);\nconst EvidenceTypeEnum = z.enum([\n 'COSIGN_BUNDLE',\n 'GRYPE_JSON',\n 'OPA_DECISION',\n 'PROVENANCE',\n 'SARIF',\n 'SBOM_CYCLONEDX',\n 'SBOM_SPDX',\n]);\nconst PolicyLevelEnum = z.enum(['ADVISORY', 'BLOCK', 'WARN']);\n\nfunction strip<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Partial<T> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v !== undefined) (out as Record<string, unknown>)[k] = v;\n }\n return out;\n}\n\nexport function registerConfigSecurityTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_providers')),\n {\n title: 'List Security Providers',\n description: 'List configured security scanner providers in the current workspace.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ securityProviders: unknown }>(\n SECURITY_PROVIDERS_Q,\n );\n return jsonResult(data.securityProviders);\n } catch (error) {\n ctx.logger.error('config_security_providers_list failed', { error });\n return errorResult(\n `Failed to list security providers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_set_provider')),\n {\n title: 'Set Security Provider',\n description: 'Configure (or update) a security provider for a vibe and stage.',\n inputSchema: {\n vibeId: z.string().describe('Vibe ID this provider applies to'),\n stage: StageEnum.describe('Security stage this provider runs at'),\n providerKey: z.string().describe('Provider plugin key (e.g. trivy, gitleaks, semgrep)'),\n config: z\n .string()\n .optional()\n .describe('Optional provider-specific config as a JSON string'),\n },\n },\n async ({ vibeId, stage, providerKey, config }) => {\n try {\n const input: Record<string, unknown> = { vibeId, stage, providerKey };\n if (config !== undefined) input.config = JSON.parse(config);\n const data = await ctx.gql.workspace.request<{ setSecurityProvider: unknown }>(\n SET_SECURITY_PROVIDER_M,\n { input },\n );\n return jsonResult(data.setSecurityProvider);\n } catch (error) {\n ctx.logger.error('config_security_provider_set failed', { error });\n return errorResult(\n `Failed to set security provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n const scansListSchema = {\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n status: ScanStatusEnum.optional(),\n stage: StageEnum.optional(),\n conclusion: ScanConclusionEnum.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_my_security_scans')),\n {\n title: 'My Security Scans',\n description: 'List security scan runs created by the current user.',\n inputSchema: scansListSchema,\n },\n async ({ vibeId, status, stage, conclusion, limit, offset }) => {\n try {\n const filter = strip({ vibeId, status, stage, conclusion });\n const pagination = strip({ limit, offset });\n const data = await ctx.gql.workspace.request<{ mySecurityScans: unknown }>(\n MY_SECURITY_SCANS_Q,\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.mySecurityScans);\n } catch (error) {\n ctx.logger.error('configuration_security_my_security_scans failed', { error });\n return errorResult(\n `Failed to list my scans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_all_security_scans')),\n {\n title: 'All Security Scans',\n description: 'List all security scan runs in the workspace (requires elevated permissions).',\n inputSchema: scansListSchema,\n },\n async ({ vibeId, status, stage, conclusion, limit, offset }) => {\n try {\n const filter = strip({ vibeId, status, stage, conclusion });\n const pagination = strip({ limit, offset });\n const data = await ctx.gql.workspace.request<{ allSecurityScans: unknown }>(\n ALL_SECURITY_SCANS_Q,\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.allSecurityScans);\n } catch (error) {\n ctx.logger.error('configuration_security_all_security_scans failed', { error });\n return errorResult(\n `Failed to list all scans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_scan')),\n {\n title: 'Get Security Scan',\n description: 'Get a single security scan run including findings and evidence.',\n inputSchema: { id: z.string().describe('Scan run ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ securityScan: unknown }>(SECURITY_SCAN_Q, {\n id,\n });\n return jsonResult(data.securityScan);\n } catch (error) {\n ctx.logger.error('config_security_scan_get failed', { error });\n return errorResult(\n `Failed to get security scan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_run_scan')),\n {\n title: 'Run Security Scan',\n description: 'Trigger a security scan for a vibe at a specific stage.',\n inputSchema: { vibeId: z.string(), stage: StageEnum },\n },\n async ({ vibeId, stage }) => {\n try {\n const data = await ctx.gql.workspace.request<{ runSecurityScan: unknown }>(\n RUN_SECURITY_SCAN_M,\n { vibeId, stage },\n );\n return jsonResult(data.runSecurityScan);\n } catch (error) {\n ctx.logger.error('config_security_scan_run failed', { error });\n return errorResult(\n `Failed to run security scan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_cancel_scan')),\n {\n title: 'Cancel Security Scan',\n description: 'Cancel an in-flight security scan run.',\n inputSchema: { id: z.string().describe('Scan run ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cancelSecurityScan: unknown }>(\n CANCEL_SECURITY_SCAN_M,\n { id },\n );\n return jsonResult(data.cancelSecurityScan);\n } catch (error) {\n ctx.logger.error('config_security_scan_cancel failed', { error });\n return errorResult(\n `Failed to cancel security scan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_findings')),\n {\n title: 'List Security Findings',\n description:\n 'List security findings with optional filters (vibe, severity, category, status).',\n inputSchema: {\n vibeId: z.string().optional(),\n status: FindingStatusEnum.optional(),\n severity: SeverityEnum.optional(),\n category: FindingCategoryEnum.optional(),\n search: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ vibeId, status, severity, category, search, limit, offset }) => {\n try {\n const filter = strip({ vibeId, status, severity, category, search });\n const pagination = strip({ limit, offset });\n const data = await ctx.gql.workspace.request<{ securityFindings: unknown }>(\n SECURITY_FINDINGS_Q,\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.securityFindings);\n } catch (error) {\n ctx.logger.error('config_security_findings_list failed', { error });\n return errorResult(\n `Failed to list security findings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_update_finding_status')),\n {\n title: 'Update Security Finding Status',\n description: 'Update the workflow status of a security finding (e.g. OPEN → SUPPRESSED).',\n inputSchema: { id: z.string(), status: FindingStatusEnum },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateSecurityFindingStatus: unknown }>(\n UPDATE_SECURITY_FINDING_STATUS_M,\n { id, status },\n );\n return jsonResult(data.updateSecurityFindingStatus);\n } catch (error) {\n ctx.logger.error('config_security_finding_update_status failed', { error });\n return errorResult(\n `Failed to update finding status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_policy_decision')),\n {\n title: 'Security Policy Decision',\n description: 'Fetch the OPA policy decision for a security scan run.',\n inputSchema: { scanRunId: z.string() },\n },\n async ({ scanRunId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ securityPolicyDecision: unknown }>(\n SECURITY_POLICY_DECISION_Q,\n { scanRunId },\n );\n return jsonResult(data.securityPolicyDecision);\n } catch (error) {\n ctx.logger.error('config_security_policy_decision failed', { error });\n return errorResult(\n `Failed to get policy decision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_status')),\n {\n title: 'Security Status',\n description: 'Aggregated security posture for a single vibe.',\n inputSchema: { vibeId: z.string() },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ securityStatus: unknown }>(\n SECURITY_STATUS_Q,\n { vibeId },\n );\n return jsonResult(data.securityStatus);\n } catch (error) {\n ctx.logger.error('config_security_status failed', { error });\n return errorResult(\n `Failed to get security status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_repository_config')),\n {\n title: 'Get Repository Security Config',\n description: 'Get the repository-level security policy config for a vibe.',\n inputSchema: { vibeId: z.string() },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ repositorySecurityConfig: unknown }>(\n REPOSITORY_SECURITY_CONFIG_Q,\n { vibeId },\n );\n return jsonResult(data.repositorySecurityConfig);\n } catch (error) {\n ctx.logger.error('config_security_repo_config_get failed', { error });\n return errorResult(\n `Failed to get repo security config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_update_repository_config')),\n {\n title: 'Update Repository Security Config',\n description: 'Update the repository-level security policy config for a vibe.',\n inputSchema: {\n vibeId: z.string(),\n policyLevel: PolicyLevelEnum.optional(),\n enabledStages: z.array(StageEnum).optional(),\n pluginAssignments: z.string().optional().describe('JSON string'),\n configYamlEquivalent: z.string().optional().describe('JSON string'),\n },\n },\n async ({ vibeId, policyLevel, enabledStages, pluginAssignments, configYamlEquivalent }) => {\n try {\n const input: Record<string, unknown> = {};\n if (policyLevel !== undefined) input.policyLevel = policyLevel;\n if (enabledStages !== undefined) input.enabledStages = enabledStages;\n if (pluginAssignments !== undefined)\n input.pluginAssignments = JSON.parse(pluginAssignments);\n if (configYamlEquivalent !== undefined)\n input.configYamlEquivalent = JSON.parse(configYamlEquivalent);\n const data = await ctx.gql.workspace.request<{\n updateRepositorySecurityConfig: unknown;\n }>(UPDATE_REPOSITORY_SECURITY_CONFIG_M, { vibeId, input });\n return jsonResult(data.updateRepositorySecurityConfig);\n } catch (error) {\n ctx.logger.error('config_security_repo_config_update failed', { error });\n return errorResult(\n `Failed to update repo security config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_create_exception')),\n {\n title: 'Create Security Exception',\n description: 'Approve a time-bounded exception (waiver) for a security finding.',\n inputSchema: {\n vibeId: z.string(),\n findingFingerprint: z.string(),\n reason: z.string(),\n expiresAt: z.string().describe('ISO 8601 timestamp'),\n compensatingControls: z.string().optional(),\n },\n },\n async ({ vibeId, findingFingerprint, reason, expiresAt, compensatingControls }) => {\n try {\n const input = strip({\n vibeId,\n findingFingerprint,\n reason,\n expiresAt,\n compensatingControls,\n });\n const data = await ctx.gql.workspace.request<{ createSecurityException: unknown }>(\n CREATE_SECURITY_EXCEPTION_M,\n { input },\n );\n return jsonResult(data.createSecurityException);\n } catch (error) {\n ctx.logger.error('config_security_exception_create failed', { error });\n return errorResult(\n `Failed to create exception: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_revoke_exception')),\n {\n title: 'Revoke Security Exception',\n description: 'Revoke a previously-granted security exception.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeSecurityException: boolean }>(\n REVOKE_SECURITY_EXCEPTION_M,\n { id },\n );\n return jsonResult({ revoked: data.revokeSecurityException, id });\n } catch (error) {\n ctx.logger.error('config_security_exception_revoke failed', { error });\n return errorResult(\n `Failed to revoke exception: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_presign_evidence')),\n {\n title: 'Presign Security Evidence Upload',\n description:\n 'Get a presigned URL for uploading a security evidence artifact (SBOM/SARIF/etc).',\n inputSchema: {\n scanRunId: z.string(),\n sha256: z.string().describe('Hex sha256 digest of the artifact'),\n sizeBytes: z.number().describe('Size of the artifact in bytes'),\n type: EvidenceTypeEnum,\n },\n },\n async ({ scanRunId, sha256, sizeBytes, type }) => {\n try {\n const data = await ctx.gql.workspace.request<{ presignSecurityEvidence: unknown }>(\n PRESIGN_SECURITY_EVIDENCE_M,\n { scanRunId, sha256, sizeBytes, type },\n );\n return jsonResult(data.presignSecurityEvidence);\n } catch (error) {\n ctx.logger.error('config_security_evidence_presign failed', { error });\n return errorResult(\n `Failed to presign evidence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_push_scan_run')),\n {\n title: 'Push Security Scan Run',\n description:\n 'Push a complete security scan run from an agent (provider report + findings + evidence refs).',\n inputSchema: { input: z.string().describe('PushSecurityScanRunInput as a JSON string') },\n },\n async ({ input }) => {\n try {\n const parsed = JSON.parse(input);\n const data = await ctx.gql.workspace.request<{ pushSecurityScanRun: unknown }>(\n PUSH_SECURITY_SCAN_RUN_M,\n { input: parsed },\n );\n return jsonResult(data.pushSecurityScanRun);\n } catch (error) {\n ctx.logger.error('config_security_scan_run_push failed', { error });\n return errorResult(\n `Failed to push scan run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/** Configuration / CI MCP tools. */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n GET_CI_PIPELINE_DETAILS_Q,\n GET_CI_PIPELINE_RUNS_Q,\n GET_CI_STATUS_Q,\n GET_REPO_STATS_Q,\n REFRESH_CI_STATUS_M,\n REFRESH_REPO_STATS_M,\n} from '../operations.js';\n\nexport function registerConfigCITools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_status')),\n {\n title: 'Get CI Status',\n description:\n 'Get the cached CI/CD pipeline status for a GitOps provider on an agent (recent runs + workflows + aggregate metrics).',\n inputSchema: {\n providerId: z.string().describe('GitOps provider ID'),\n agentId: z.string().describe('Agent ID executing the request'),\n limit: z.number().optional().describe('Limit recent runs'),\n },\n },\n async ({ providerId, agentId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getCIStatus: unknown }>(GET_CI_STATUS_Q, {\n providerId,\n agentId,\n limit,\n });\n return jsonResult(data.getCIStatus);\n } catch (error) {\n ctx.logger.error('config_ci_status_get failed', { error });\n return errorResult(\n `Failed to get CI status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_refresh_status')),\n {\n title: 'Refresh CI Status',\n description: 'Force refresh of the cached CI/CD pipeline status snapshot.',\n inputSchema: { providerId: z.string(), agentId: z.string() },\n },\n async ({ providerId, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ refreshCIStatus: unknown }>(\n REFRESH_CI_STATUS_M,\n { providerId, agentId },\n );\n return jsonResult(data.refreshCIStatus);\n } catch (error) {\n ctx.logger.error('config_ci_status_refresh failed', { error });\n return errorResult(\n `Failed to refresh CI status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_pipeline_runs')),\n {\n title: 'List CI Pipeline Runs',\n description:\n 'List recent CI pipeline runs from a GitOps provider, optionally filtered by branch.',\n inputSchema: {\n providerId: z.string(),\n agentId: z.string(),\n branch: z.string().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ providerId, agentId, branch, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getCIPipelineRuns: unknown }>(\n GET_CI_PIPELINE_RUNS_Q,\n { providerId, agentId, branch, limit },\n );\n return jsonResult(data.getCIPipelineRuns);\n } catch (error) {\n ctx.logger.error('config_ci_pipeline_runs_list failed', { error });\n return errorResult(\n `Failed to list CI runs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_pipeline_details')),\n {\n title: 'Get CI Pipeline Details',\n description: 'Get detailed information (commit, jobs) for a single CI pipeline run.',\n inputSchema: {\n providerId: z.string(),\n agentId: z.string(),\n runId: z.string(),\n },\n },\n async ({ providerId, agentId, runId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getCIPipelineDetails: unknown }>(\n GET_CI_PIPELINE_DETAILS_Q,\n { providerId, agentId, runId },\n );\n return jsonResult(data.getCIPipelineDetails);\n } catch (error) {\n ctx.logger.error('config_ci_pipeline_details_get failed', { error });\n return errorResult(\n `Failed to get pipeline details: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_repo_stats')),\n {\n title: 'Get Repository Stats',\n description:\n 'Get cached repository statistics (stars, forks, languages, PRs, contributors, etc) for a GitOps provider.',\n inputSchema: { providerId: z.string(), agentId: z.string() },\n },\n async ({ providerId, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getRepoStats: unknown }>(GET_REPO_STATS_Q, {\n providerId,\n agentId,\n });\n return jsonResult(data.getRepoStats);\n } catch (error) {\n ctx.logger.error('config_ci_repo_stats_get failed', { error });\n return errorResult(\n `Failed to get repo stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_refresh_repo_stats')),\n {\n title: 'Refresh Repository Stats',\n description: 'Force refresh of the cached repository statistics snapshot.',\n inputSchema: { providerId: z.string(), agentId: z.string() },\n },\n async ({ providerId, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ refreshRepoStats: unknown }>(\n REFRESH_REPO_STATS_M,\n { providerId, agentId },\n );\n return jsonResult(data.refreshRepoStats);\n } catch (error) {\n ctx.logger.error('config_ci_repo_stats_refresh failed', { error });\n return errorResult(\n `Failed to refresh repo stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/** Configuration / GitOps providers MCP tools. */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n CREATE_GITOPS_PROVIDER_M,\n DELETE_GITOPS_PROVIDER_M,\n GET_GITOPS_PROVIDER_Q,\n LIST_GITOPS_PROVIDERS_Q,\n UPDATE_GITOPS_PROVIDER_M,\n} from '../operations.js';\n\nconst ProviderTypeEnum = z.enum(['AZURE_DEVOPS', 'BITBUCKET', 'GITHUB', 'GITLAB']);\n\nexport function registerConfigGitopsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_list')),\n {\n title: 'List GitOps Providers',\n description:\n 'List GitOps providers (GitHub/GitLab/Bitbucket/Azure DevOps) in the current workspace.',\n inputSchema: {\n providerType: ProviderTypeEnum.optional(),\n isActive: z.boolean().optional(),\n vibeId: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ providerType, isActive, vibeId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (providerType !== undefined) filter.providerType = providerType;\n if (isActive !== undefined) filter.isActive = isActive;\n if (vibeId !== undefined) filter.vibeId = vibeId;\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<{ listGitopsProviders: unknown }>(\n LIST_GITOPS_PROVIDERS_Q,\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.listGitopsProviders);\n } catch (error) {\n ctx.logger.error('config_gitops_list failed', { error });\n return errorResult(\n `Failed to list gitops providers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_get')),\n {\n title: 'Get GitOps Provider',\n description: 'Get a single GitOps provider by ID.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getGitopsProvider: unknown }>(\n GET_GITOPS_PROVIDER_Q,\n { id },\n );\n return jsonResult(data.getGitopsProvider);\n } catch (error) {\n ctx.logger.error('config_gitops_get failed', { error });\n return errorResult(\n `Failed to get gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_create')),\n {\n title: 'Create GitOps Provider',\n description: 'Create a new GitOps provider connection.',\n inputSchema: {\n name: z.string(),\n providerType: ProviderTypeEnum,\n repoUrl: z.string(),\n vibeId: z.string().optional(),\n isActive: z.boolean().optional(),\n metadata: z.string().optional().describe('Optional JSON-string metadata blob'),\n },\n },\n async ({ name, providerType, repoUrl, vibeId, isActive, metadata }) => {\n try {\n const input: Record<string, unknown> = { name, providerType, repoUrl };\n if (vibeId !== undefined) input.vibeId = vibeId;\n if (isActive !== undefined) input.isActive = isActive;\n if (metadata !== undefined) input.metadata = JSON.parse(metadata);\n const data = await ctx.gql.workspace.request<{ createGitopsProvider: unknown }>(\n CREATE_GITOPS_PROVIDER_M,\n { input },\n );\n return jsonResult(data.createGitopsProvider);\n } catch (error) {\n ctx.logger.error('config_gitops_create failed', { error });\n return errorResult(\n `Failed to create gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_update')),\n {\n title: 'Update GitOps Provider',\n description: 'Update an existing GitOps provider connection.',\n inputSchema: {\n id: z.string(),\n name: z.string().optional(),\n repoUrl: z.string().optional(),\n vibeId: z.string().optional(),\n isActive: z.boolean().optional(),\n metadata: z.string().optional().describe('Optional JSON-string metadata blob'),\n },\n },\n async ({ id, name, repoUrl, vibeId, isActive, metadata }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (repoUrl !== undefined) input.repoUrl = repoUrl;\n if (vibeId !== undefined) input.vibeId = vibeId;\n if (isActive !== undefined) input.isActive = isActive;\n if (metadata !== undefined) input.metadata = JSON.parse(metadata);\n const data = await ctx.gql.workspace.request<{ updateGitopsProvider: unknown }>(\n UPDATE_GITOPS_PROVIDER_M,\n { id, input },\n );\n return jsonResult(data.updateGitopsProvider);\n } catch (error) {\n ctx.logger.error('config_gitops_update failed', { error });\n return errorResult(\n `Failed to update gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_delete')),\n {\n title: 'Delete GitOps Provider',\n description: 'Delete a GitOps provider connection.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteGitopsProvider: boolean }>(\n DELETE_GITOPS_PROVIDER_M,\n { id },\n );\n return jsonResult({ deleted: data.deleteGitopsProvider, id });\n } catch (error) {\n ctx.logger.error('config_gitops_delete failed', { error });\n return errorResult(\n `Failed to delete gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/** Configuration / Settings, preferences, secrets MCP tools. */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n DELETE_SETTINGS_SECRET_M,\n LIST_SETTINGS_SECRETS_Q,\n MY_SETTINGS_BY_CATEGORY_Q,\n MY_SETTINGS_Q,\n RESET_SETTINGS_M,\n RESOLVE_INTEGRATION_TOKEN_M,\n SET_SETTINGS_SECRET_M,\n UPDATE_NOTIFICATION_PREFERENCES_M,\n UPDATE_PREFERENCES_M,\n UPDATE_WORKSPACE_DEFAULTS_M,\n} from '../operations.js';\n\nconst SettingsCategoryEnum = z.enum([\n 'ADVANCED',\n 'NOTIFICATIONS',\n 'PREFERENCES',\n 'PROFILE',\n 'SECURITY',\n 'WORKSPACE_DEFAULTS',\n]);\n\nexport function registerConfigSettingsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_mine')),\n {\n title: 'Get My Settings',\n description:\n 'Get the complete settings bundle for the current user (preferences + notifications + workspace defaults + profile + security).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ mySettings: unknown }>(MY_SETTINGS_Q);\n return jsonResult(data.mySettings);\n } catch (error) {\n ctx.logger.error('config_settings_mine failed', { error });\n return errorResult(\n `Failed to get settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_mine_by_category')),\n {\n title: 'Get My Settings by Category',\n description: 'Get a single settings category as a JSON blob.',\n inputSchema: { category: SettingsCategoryEnum },\n },\n async ({ category }) => {\n try {\n const data = await ctx.gql.workspace.request<{ mySettingsByCategory: unknown }>(\n MY_SETTINGS_BY_CATEGORY_Q,\n { category },\n );\n return jsonResult(data.mySettingsByCategory);\n } catch (error) {\n ctx.logger.error('config_settings_mine_by_category failed', { error });\n return errorResult(\n `Failed to get settings category: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_reset')),\n {\n title: 'Reset Settings Category',\n description: 'Reset a settings category to its workspace defaults.',\n inputSchema: { category: SettingsCategoryEnum },\n },\n async ({ category }) => {\n try {\n const data = await ctx.gql.workspace.request<{ resetSettings: boolean }>(RESET_SETTINGS_M, {\n category,\n });\n return jsonResult({ reset: data.resetSettings, category });\n } catch (error) {\n ctx.logger.error('config_settings_reset failed', { error });\n return errorResult(\n `Failed to reset settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_update_preferences')),\n {\n title: 'Update Preferences',\n description:\n 'Update the current user UI preferences (theme, density, IDE, font, tab order, etc).',\n inputSchema: {\n theme: z.string().optional(),\n uiDensity: z.string().optional(),\n sidebarCollapsed: z.boolean().optional(),\n codeFont: z.string().optional(),\n codeFontSize: z.number().optional(),\n preferredIdeCommand: z.string().nullable().optional(),\n defaultAgentForVibe: z.string().optional().describe('JSON blob'),\n vibeIdeOverrides: z.string().optional().describe('JSON blob'),\n vibeDetailTabOrder: z.string().optional().describe('JSON blob'),\n },\n },\n async ({\n theme,\n uiDensity,\n sidebarCollapsed,\n codeFont,\n codeFontSize,\n preferredIdeCommand,\n defaultAgentForVibe,\n vibeIdeOverrides,\n vibeDetailTabOrder,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (theme !== undefined) input.theme = theme;\n if (uiDensity !== undefined) input.uiDensity = uiDensity;\n if (sidebarCollapsed !== undefined) input.sidebarCollapsed = sidebarCollapsed;\n if (codeFont !== undefined) input.codeFont = codeFont;\n if (codeFontSize !== undefined) input.codeFontSize = codeFontSize;\n if (preferredIdeCommand !== undefined) input.preferredIdeCommand = preferredIdeCommand;\n if (defaultAgentForVibe !== undefined)\n input.defaultAgentForVibe = JSON.parse(defaultAgentForVibe);\n if (vibeIdeOverrides !== undefined) input.vibeIdeOverrides = JSON.parse(vibeIdeOverrides);\n if (vibeDetailTabOrder !== undefined)\n input.vibeDetailTabOrder = JSON.parse(vibeDetailTabOrder);\n const data = await ctx.gql.workspace.request<{ updatePreferences: unknown }>(\n UPDATE_PREFERENCES_M,\n { input },\n );\n return jsonResult(data.updatePreferences);\n } catch (error) {\n ctx.logger.error('config_settings_preferences_update failed', { error });\n return errorResult(\n `Failed to update preferences: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_update_notif_prefs')),\n {\n title: 'Update Notification Preferences',\n description: 'Update notification toggles and digest cadence.',\n inputSchema: {\n emailDigest: z.boolean().optional(),\n digestFrequency: z.string().optional(),\n agentOffline: z.boolean().optional(),\n sessionError: z.boolean().optional(),\n vibeStatusChange: z.boolean().optional(),\n },\n },\n async (input) => {\n try {\n const cleaned: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(input)) {\n if (v !== undefined) cleaned[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateNotificationPreferences: unknown }>(\n UPDATE_NOTIFICATION_PREFERENCES_M,\n { input: cleaned },\n );\n return jsonResult(data.updateNotificationPreferences);\n } catch (error) {\n ctx.logger.error('config_settings_notifications_update failed', { error });\n return errorResult(\n `Failed to update notifications: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_update_workspace_defaults')),\n {\n title: 'Update Workspace Defaults',\n description:\n 'Update workspace-level default settings for agents, sessions, vibes, telemetry.',\n inputSchema: {\n defaultAgent: z.string().optional(),\n defaultSessionType: z.string().optional(),\n defaultVibeType: z.string().optional(),\n defaultEnvironmentVariables: z.string().optional(),\n autoStartSessions: z.boolean().optional(),\n autoGitSync: z.boolean().optional(),\n agentHeartbeatInterval: z.number().optional(),\n agentMaxSessions: z.number().optional(),\n agentAutoReconnect: z.boolean().optional(),\n autoUpdate: z.boolean().optional(),\n telemetryEnabled: z.boolean().optional(),\n logLevel: z.string().optional(),\n },\n },\n async (input) => {\n try {\n const cleaned: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(input)) {\n if (v !== undefined) cleaned[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateWorkspaceDefaults: unknown }>(\n UPDATE_WORKSPACE_DEFAULTS_M,\n { input: cleaned },\n );\n return jsonResult(data.updateWorkspaceDefaults);\n } catch (error) {\n ctx.logger.error('config_settings_workspace_defaults_update failed', { error });\n return errorResult(\n `Failed to update workspace defaults: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_list_secrets')),\n {\n title: 'List Settings Secrets',\n description: 'List stored settings secrets (values are hidden by default).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ listSettingsSecrets: unknown }>(\n LIST_SETTINGS_SECRETS_Q,\n );\n return jsonResult(data.listSettingsSecrets);\n } catch (error) {\n ctx.logger.error('config_settings_secrets_list failed', { error });\n return errorResult(\n `Failed to list secrets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_set_secret')),\n {\n title: 'Set Settings Secret',\n description: 'Create or update a settings secret (value is encrypted at rest).',\n inputSchema: {\n key: z.string(),\n value: z.string(),\n },\n },\n async ({ key, value }) => {\n try {\n const data = await ctx.gql.workspace.request<{ setSettingsSecret: unknown }>(\n SET_SETTINGS_SECRET_M,\n { input: { key, value } },\n );\n return jsonResult(data.setSettingsSecret);\n } catch (error) {\n ctx.logger.error('config_settings_secret_set failed', { error });\n return errorResult(\n `Failed to set secret: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_delete_secret')),\n {\n title: 'Delete Settings Secret',\n description: 'Delete a settings secret by key.',\n inputSchema: { key: z.string() },\n },\n async ({ key }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSettingsSecret: boolean }>(\n DELETE_SETTINGS_SECRET_M,\n { key },\n );\n return jsonResult({ deleted: data.deleteSettingsSecret, key });\n } catch (error) {\n ctx.logger.error('config_settings_secret_delete failed', { error });\n return errorResult(\n `Failed to delete secret: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_resolve_integration_token')),\n {\n title: 'Resolve Integration Token',\n description:\n 'Resolve a decrypted integration token for an agent to call third-party APIs (handles OAuth refresh).',\n inputSchema: { connectionId: z.string() },\n },\n async ({ connectionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n vibecontrolsResolveIntegrationToken: unknown;\n }>(RESOLVE_INTEGRATION_TOKEN_M, { connectionId });\n return jsonResult(data.vibecontrolsResolveIntegrationToken);\n } catch (error) {\n ctx.logger.error('config_settings_integration_token_resolve failed', { error });\n return errorResult(\n `Failed to resolve token: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_DOCS_SITES,\n GET_DOCS_SITE,\n CREATE_DOCS_SITE,\n UPDATE_DOCS_SITE,\n DELETE_DOCS_SITE,\n LIST_DOCS_PAGES,\n GET_DOCS_PAGE,\n CREATE_DOCS_PAGE,\n UPDATE_DOCS_PAGE,\n DELETE_DOCS_PAGE,\n COMPILE_DOCS_SITE,\n PUBLISH_DOCS_REVISION,\n ROLLBACK_DOCS_REVISION,\n} from '../operations.js';\n\nexport function registerDocsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_list')),\n {\n title: 'List Docs Sites',\n description: 'List documentation sites with optional filtering by vibe and pagination.',\n inputSchema: {\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ vibeId, limit, offset }) => {\n try {\n const variables: Record<string, unknown> = {};\n if (vibeId !== undefined) variables.vibeId = vibeId;\n if (limit !== undefined) variables.limit = limit;\n if (offset !== undefined) variables.offset = offset;\n\n const data = await ctx.gql.workspace.request<{ docsSites: unknown }>(\n LIST_DOCS_SITES,\n variables,\n );\n return jsonResult(data.docsSites);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_list failed', { error });\n return errorResult(\n `Failed to list docs sites: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_get')),\n {\n title: 'Get Docs Site',\n description: 'Get a documentation site by its vibe ID.',\n inputSchema: { vibeId: z.string().describe('Vibe ID') },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ docsSite: unknown }>(GET_DOCS_SITE, {\n vibeId,\n });\n return jsonResult(data.docsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_get failed', { error });\n return errorResult(\n `Failed to get docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_create')),\n {\n title: 'Create Docs Site',\n description: 'Create a new documentation site.',\n inputSchema: {\n vibeId: z.string().describe('Vibe ID to associate the docs site with'),\n name: z.string().describe('Docs site name'),\n visibility: z.string().optional().describe('PRIVATE or PUBLIC'),\n runtime: z.string().optional().describe('Docs runtime/framework'),\n },\n },\n async ({ vibeId, name, visibility, runtime }) => {\n try {\n const input: Record<string, unknown> = { vibeId, name };\n if (visibility !== undefined) input.visibility = visibility;\n if (runtime !== undefined) input.runtime = runtime;\n\n const data = await ctx.gql.workspace.request<{ createDocsSite: unknown }>(\n CREATE_DOCS_SITE,\n {\n input,\n },\n );\n return jsonResult(data.createDocsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_create failed', { error });\n return errorResult(\n `Failed to create docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_update')),\n {\n title: 'Update Docs Site',\n description: 'Update an existing documentation site.',\n inputSchema: {\n id: z.string().describe('Docs site ID'),\n name: z.string().optional().describe('Updated name'),\n visibility: z.string().optional().describe('PRIVATE or PUBLIC'),\n runtime: z.string().optional().describe('Updated runtime/framework'),\n },\n },\n async ({ id, name, visibility, runtime }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (visibility !== undefined) input.visibility = visibility;\n if (runtime !== undefined) input.runtime = runtime;\n\n const data = await ctx.gql.workspace.request<{ updateDocsSite: unknown }>(\n UPDATE_DOCS_SITE,\n {\n id,\n input,\n },\n );\n return jsonResult(data.updateDocsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_update failed', { error });\n return errorResult(\n `Failed to update docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_delete')),\n {\n title: 'Delete Docs Site',\n description: 'Delete a documentation site.',\n inputSchema: { id: z.string().describe('Docs site ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteDocsSite: boolean }>(\n DELETE_DOCS_SITE,\n { id },\n );\n return jsonResult({ deleted: data.deleteDocsSite, docsSiteId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_delete failed', { error });\n return errorResult(\n `Failed to delete docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_list')),\n {\n title: 'List Docs Pages',\n description: 'List pages in a documentation site with optional status filter.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID'),\n status: z.string().optional().describe('Filter by page status'),\n },\n },\n async ({ siteId, status }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n\n const data = await ctx.gql.workspace.request<{ docsPages: unknown }>(LIST_DOCS_PAGES, {\n siteId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n });\n return jsonResult(data.docsPages);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_list failed', { error });\n return errorResult(\n `Failed to list docs pages: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_get')),\n {\n title: 'Get Docs Page',\n description: 'Get a documentation page by its ID.',\n inputSchema: { id: z.string().describe('Docs page ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ docsPage: unknown }>(GET_DOCS_PAGE, { id });\n return jsonResult(data.docsPage);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_get failed', { error });\n return errorResult(\n `Failed to get docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_create')),\n {\n title: 'Create Docs Page',\n description: 'Create a new documentation page.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID'),\n title: z.string().describe('Page title'),\n slug: z.string().optional().describe('URL slug for the page'),\n content: z.string().optional().describe('Page content (markdown supported)'),\n parentId: z.string().optional().describe('Parent page ID for nesting'),\n sidebarPosition: z.number().optional().describe('Position in the sidebar'),\n },\n },\n async ({ siteId, title, slug, content, parentId, sidebarPosition }) => {\n try {\n const input: Record<string, unknown> = { siteId, title };\n if (slug !== undefined) input.slug = slug;\n if (content !== undefined) input.content = content;\n if (parentId !== undefined) input.parentId = parentId;\n if (sidebarPosition !== undefined) input.sidebarPosition = sidebarPosition;\n\n const data = await ctx.gql.workspace.request<{ createDocsPage: unknown }>(\n CREATE_DOCS_PAGE,\n {\n input,\n },\n );\n return jsonResult(data.createDocsPage);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_create failed', { error });\n return errorResult(\n `Failed to create docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_update')),\n {\n title: 'Update Docs Page',\n description: 'Update an existing documentation page.',\n inputSchema: {\n id: z.string().describe('Docs page ID'),\n title: z.string().optional().describe('Updated title'),\n slug: z.string().optional().describe('Updated slug'),\n content: z.string().optional().describe('Updated content'),\n parentId: z.string().optional().describe('Updated parent page ID'),\n sidebarPosition: z.number().optional().describe('Updated sidebar position'),\n },\n },\n async ({ id, title, slug, content, parentId, sidebarPosition }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (slug !== undefined) input.slug = slug;\n if (content !== undefined) input.content = content;\n if (parentId !== undefined) input.parentId = parentId;\n if (sidebarPosition !== undefined) input.sidebarPosition = sidebarPosition;\n\n const data = await ctx.gql.workspace.request<{ updateDocsPage: unknown }>(\n UPDATE_DOCS_PAGE,\n {\n id,\n input,\n },\n );\n return jsonResult(data.updateDocsPage);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_update failed', { error });\n return errorResult(\n `Failed to update docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_delete')),\n {\n title: 'Delete Docs Page',\n description: 'Delete a documentation page.',\n inputSchema: { id: z.string().describe('Docs page ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteDocsPage: boolean }>(\n DELETE_DOCS_PAGE,\n { id },\n );\n return jsonResult({ deleted: data.deleteDocsPage, docsPageId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_delete failed', { error });\n return errorResult(\n `Failed to delete docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_compile')),\n {\n title: 'Compile Docs Site',\n description: 'Compile a documentation site, optionally publishing it.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID to compile'),\n publish: z.boolean().optional().describe('Publish after compilation'),\n },\n },\n async ({ siteId, publish }) => {\n try {\n const variables: Record<string, unknown> = { siteId };\n if (publish !== undefined) variables.publish = publish;\n\n const data = await ctx.gql.workspace.request<{ compileDocsSite: unknown }>(\n COMPILE_DOCS_SITE,\n variables,\n );\n return jsonResult(data.compileDocsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_compile failed', { error });\n return errorResult(\n `Failed to compile docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_publish')),\n {\n title: 'Publish Docs Revision',\n description: 'Publish a specific docs revision.',\n inputSchema: { revisionId: z.string().describe('Revision ID to publish') },\n },\n async ({ revisionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ publishDocsRevision: unknown }>(\n PUBLISH_DOCS_REVISION,\n { revisionId },\n );\n return jsonResult(data.publishDocsRevision);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_publish failed', { error });\n return errorResult(\n `Failed to publish docs revision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_rollback')),\n {\n title: 'Rollback Docs Revision',\n description: 'Rollback a documentation site to a previous revision.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID'),\n revisionId: z.string().describe('Revision ID to rollback to'),\n },\n },\n async ({ siteId, revisionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rollbackDocsRevision: unknown }>(\n ROLLBACK_DOCS_REVISION,\n {\n siteId,\n revisionId,\n },\n );\n return jsonResult(data.rollbackDocsRevision);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_rollback failed', { error });\n return errorResult(\n `Failed to rollback docs revision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_NOTES,\n GET_NOTE,\n CREATE_NOTE,\n UPDATE_NOTE,\n DELETE_NOTE,\n SEARCH_NOTES,\n PIN_NOTE,\n UNPIN_NOTE,\n} from '../operations.js';\n\nexport function registerNoteTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_list')),\n {\n title: 'List Notes',\n description: 'List notes with optional filters and pagination.',\n inputSchema: {\n title: z.string().optional().describe('Filter by title'),\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n isPinned: z.boolean().optional().describe('Filter by pinned status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ title, vibeId, tags, isPinned, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (title !== undefined) filter.title = title;\n if (vibeId !== undefined) filter.vibeId = vibeId;\n if (tags !== undefined) filter.tags = tags;\n if (isPinned !== undefined) filter.isPinned = isPinned;\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<{ notes: unknown }>(LIST_NOTES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.notes);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_list failed', { error });\n return errorResult(\n `Failed to list notes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_get')),\n {\n title: 'Get Note',\n description: 'Get a note by its ID.',\n inputSchema: { id: z.string().describe('Note ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ note: unknown }>(GET_NOTE, { id });\n return jsonResult(data.note);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_get failed', { error });\n return errorResult(\n `Failed to get note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_create')),\n {\n title: 'Create Note',\n description: 'Create a new note.',\n inputSchema: {\n title: z.string().describe('Note title'),\n content: z.string().optional().describe('Note content (markdown supported)'),\n tags: z.array(z.string()).optional().describe('Tags for categorization'),\n isPinned: z.boolean().optional().describe('Pin the note'),\n vibeId: z.string().optional().describe('Associated vibe ID'),\n },\n },\n async ({ title, content, tags, isPinned, vibeId }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (content !== undefined) input.content = content;\n if (tags !== undefined) input.tags = tags;\n if (isPinned !== undefined) input.isPinned = isPinned;\n if (vibeId !== undefined) input.vibeId = vibeId;\n\n const data = await ctx.gql.workspace.request<{ createNote: unknown }>(CREATE_NOTE, {\n input,\n });\n return jsonResult(data.createNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_create failed', { error });\n return errorResult(\n `Failed to create note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_update')),\n {\n title: 'Update Note',\n description: 'Update an existing note.',\n inputSchema: {\n id: z.string().describe('Note ID'),\n title: z.string().optional().describe('Updated title'),\n content: z.string().optional().describe('Updated content'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n isPinned: z.boolean().optional().describe('Updated pin status'),\n },\n },\n async ({ id, title, content, tags, isPinned }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (content !== undefined) input.content = content;\n if (tags !== undefined) input.tags = tags;\n if (isPinned !== undefined) input.isPinned = isPinned;\n\n const data = await ctx.gql.workspace.request<{ updateNote: unknown }>(UPDATE_NOTE, {\n id,\n input,\n });\n return jsonResult(data.updateNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_update failed', { error });\n return errorResult(\n `Failed to update note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_delete')),\n {\n title: 'Delete Note',\n description: 'Delete a note.',\n inputSchema: { id: z.string().describe('Note ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteNote: boolean }>(DELETE_NOTE, { id });\n return jsonResult({ deleted: data.deleteNote, noteId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_delete failed', { error });\n return errorResult(\n `Failed to delete note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_search')),\n {\n title: 'Search Notes',\n description: 'Full-text search across notes.',\n inputSchema: {\n query: z.string().describe('Search query string'),\n vibeId: z.string().optional().describe('Scope search to a specific vibe'),\n limit: z.number().optional().describe('Maximum results'),\n },\n },\n async ({ query, vibeId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ searchNotes: unknown }>(SEARCH_NOTES, {\n query,\n vibeId,\n limit,\n });\n return jsonResult(data.searchNotes);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_search failed', { error });\n return errorResult(\n `Failed to search notes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_pin')),\n {\n title: 'Pin Note',\n description: 'Pin a note so it appears at the top of lists.',\n inputSchema: { id: z.string().describe('Note ID to pin') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ pinNote: unknown }>(PIN_NOTE, { id });\n return jsonResult(data.pinNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_pin failed', { error });\n return errorResult(\n `Failed to pin note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_unpin')),\n {\n title: 'Unpin Note',\n description: 'Unpin a previously pinned note.',\n inputSchema: { id: z.string().describe('Note ID to unpin') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ unpinNote: unknown }>(UNPIN_NOTE, { id });\n return jsonResult(data.unpinNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_unpin failed', { error });\n return errorResult(\n `Failed to unpin note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n SHARE_SESSION,\n CREATE_SESSION_SHARE_LINK,\n REVOKE_SESSION_SHARE,\n REVOKE_SESSION_SHARE_LINK,\n SESSION_SHARES,\n SESSION_SHARE_LINKS,\n SESSION_COLLABORATORS,\n SESSIONS_SHARED_WITH_ME,\n UPDATE_SESSION_SHARE,\n JOIN_SHARED_SESSION,\n LEAVE_SHARED_SESSION,\n REQUEST_SESSION_CONTROL,\n RELEASE_SESSION_CONTROL,\n TRANSFER_SESSION_CONTROL,\n} from '../operations.js';\n\nexport function registerSessionSharingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share')),\n {\n title: 'Share Session',\n description: 'Share a session with another user.',\n inputSchema: {\n sessionId: z.string().describe('Session ID to share'),\n sharedWithId: z.string().describe('User ID to share with'),\n permission: z.string().describe('Permission level: VIEW or CONTROL'),\n },\n },\n async ({ sessionId, sharedWithId, permission }) => {\n try {\n const input: Record<string, unknown> = { sessionId, sharedWithId, permission };\n const data = await ctx.gql.workspace.request<{ shareSession: unknown }>(SHARE_SESSION, {\n input,\n });\n return jsonResult(data.shareSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share failed', { error });\n return errorResult(\n `Failed to share session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_link_create')),\n {\n title: 'Create Session Share Link',\n description: 'Create a shareable link for a session.',\n inputSchema: {\n sessionId: z.string().describe('Session ID'),\n permission: z.string().describe('Permission level: VIEW or CONTROL'),\n expiresAt: z.string().optional().describe('Expiration date in ISO format'),\n },\n },\n async ({ sessionId, permission, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { sessionId, permission };\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{ createSessionShareLink: unknown }>(\n CREATE_SESSION_SHARE_LINK,\n { input },\n );\n return jsonResult(data.createSessionShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_link_create failed', { error });\n return errorResult(\n `Failed to create session share link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_revoke')),\n {\n title: 'Revoke Session Share',\n description: 'Revoke a session share.',\n inputSchema: { id: z.string().describe('Session share ID to revoke') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeSessionShare: unknown }>(\n REVOKE_SESSION_SHARE,\n {\n id,\n },\n );\n return jsonResult(data.revokeSessionShare);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_revoke failed', { error });\n return errorResult(\n `Failed to revoke session share: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_link_revoke')),\n {\n title: 'Revoke Session Share Link',\n description: 'Revoke a session share link.',\n inputSchema: { id: z.string().describe('Session share link ID to revoke') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeSessionShareLink: unknown }>(\n REVOKE_SESSION_SHARE_LINK,\n { id },\n );\n return jsonResult(data.revokeSessionShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_link_revoke failed', { error });\n return errorResult(\n `Failed to revoke session share link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_shares')),\n {\n title: 'List Session Shares',\n description: 'List all shares for a session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionShares: unknown }>(SESSION_SHARES, {\n sessionId,\n });\n return jsonResult(data.sessionShares);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_shares failed', { error });\n return errorResult(\n `Failed to list session shares: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_links')),\n {\n title: 'List Session Share Links',\n description: 'List all share links for a session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionShareLinks: unknown }>(\n SESSION_SHARE_LINKS,\n {\n sessionId,\n },\n );\n return jsonResult(data.sessionShareLinks);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_links failed', { error });\n return errorResult(\n `Failed to list session share links: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_collaborators')),\n {\n title: 'List Session Collaborators',\n description: 'List all collaborators for a session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionCollaborators: unknown }>(\n SESSION_COLLABORATORS,\n { sessionId },\n );\n return jsonResult(data.sessionCollaborators);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_collaborators failed', { error });\n return errorResult(\n `Failed to list session collaborators: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_shared_with_me')),\n {\n title: 'Sessions Shared With Me',\n description: 'List sessions that have been shared with the current user.',\n inputSchema: {\n permission: z.string().optional().describe('Filter by permission level'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ permission, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (permission !== undefined) filter.permission = permission;\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<{\n sessionsSharedWithMe: {\n totalCount?: number;\n edges?: Array<{ cursor: string; node: Record<string, unknown> }>;\n };\n }>(SESSIONS_SHARED_WITH_ME, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n const edges = data.sessionsSharedWithMe?.edges ?? [];\n return jsonResult({\n totalCount: data.sessionsSharedWithMe?.totalCount ?? edges.length,\n items: edges.map((edge) => edge.node),\n edges,\n });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_shared_with_me failed', { error });\n return errorResult(\n `Failed to list shared sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_update')),\n {\n title: 'Update Session Share',\n description: 'Update an existing session share (permission/expiry).',\n inputSchema: {\n id: z.string().describe('Session share ID'),\n permission: z.string().optional().describe('VIEW or INTERACT'),\n expiresAt: z.string().optional().describe('Expiration date in ISO format'),\n },\n },\n async ({ id, permission, expiresAt }) => {\n try {\n const input: Record<string, unknown> = {};\n if (permission !== undefined) input.permission = permission;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n const data = await ctx.gql.workspace.request<{ updateSessionShare: unknown }>(\n UPDATE_SESSION_SHARE,\n { id, input },\n );\n return jsonResult(data.updateSessionShare);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_update failed', { error });\n return errorResult(\n `Failed to update session share: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_join')),\n {\n title: 'Join Shared Session',\n description: 'Join a shared session via share id or share-link token.',\n inputSchema: {\n shareId: z.string().optional().describe('Direct share ID'),\n shareToken: z.string().optional().describe('Share link token'),\n password: z.string().optional().describe('Password if the link is protected'),\n },\n },\n async ({ shareId, shareToken, password }) => {\n try {\n const input: Record<string, unknown> = {};\n if (shareId !== undefined) input.shareId = shareId;\n if (shareToken !== undefined) input.shareToken = shareToken;\n if (password !== undefined) input.password = password;\n const data = await ctx.gql.workspace.request<{ joinSharedSession: unknown }>(\n JOIN_SHARED_SESSION,\n { input },\n );\n return jsonResult(data.joinSharedSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_join failed', { error });\n return errorResult(\n `Failed to join shared session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_leave')),\n {\n title: 'Leave Shared Session',\n description: 'Leave a shared session as a collaborator.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ leaveSharedSession: boolean }>(\n LEAVE_SHARED_SESSION,\n { sessionId },\n );\n return jsonResult({ left: data.leaveSharedSession });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_leave failed', { error });\n return errorResult(\n `Failed to leave shared session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_request_control')),\n {\n title: 'Request Session Control',\n description: 'Request control of a shared session (INTERACT permission).',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ requestSessionControl: boolean }>(\n REQUEST_SESSION_CONTROL,\n { sessionId },\n );\n return jsonResult({ requested: data.requestSessionControl });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_request_control failed', { error });\n return errorResult(\n `Failed to request session control: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_release_control')),\n {\n title: 'Release Session Control',\n description: 'Release control of a shared session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ releaseSessionControl: boolean }>(\n RELEASE_SESSION_CONTROL,\n { sessionId },\n );\n return jsonResult({ released: data.releaseSessionControl });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_release_control failed', { error });\n return errorResult(\n `Failed to release session control: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_transfer_control')),\n {\n title: 'Transfer Session Control',\n description: 'Transfer control of a shared session to another collaborator.',\n inputSchema: {\n sessionId: z.string().describe('Session ID'),\n toUserId: z.string().describe('User ID to transfer control to'),\n },\n },\n async ({ sessionId, toUserId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ transferSessionControl: boolean }>(\n TRANSFER_SESSION_CONTROL,\n { sessionId, toUserId },\n );\n return jsonResult({ transferred: data.transferSessionControl });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_transfer_control failed', { error });\n return errorResult(\n `Failed to transfer session control: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_SESSIONS,\n GET_SESSION,\n CREATE_SESSION,\n START_SESSION,\n STOP_SESSION,\n RESTART_SESSION,\n TERMINATE_SESSION,\n SEND_SESSION_INPUT,\n START_SESSION_TERMINAL,\n SESSION_OUTPUT,\n ACTIVE_SESSIONS,\n CHECK_SESSION_HEALTH,\n BULK_RESTART_SESSIONS,\n BULK_STOP_SESSIONS,\n BULK_TERMINATE_SESSIONS,\n UPDATE_SESSION,\n UPDATE_SESSION_STATUS,\n DELETE_SESSION,\n KILL_SESSION,\n STOP_SESSION_TERMINAL,\n RESTART_SESSION_TERMINAL,\n START_TARGET_TERMINAL,\n STOP_TARGET_TERMINAL,\n EXPORT_SESSIONS,\n} from '../operations.js';\n\nconst VibecontrolsSessionStatusEnum = z\n .enum(['PENDING', 'STARTING', 'RUNNING', 'STOPPED', 'ERROR', 'TERMINATED'])\n .describe('Lifecycle status of a vibecontrols session');\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Sessions',\n description: 'List terminal sessions with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by session name'),\n type: z\n .string()\n .optional()\n .describe('Filter by type (TMUX, SSH, TERMINAL, SCRIPT, CUSTOM)'),\n status: z\n .string()\n .optional()\n .describe('Filter by status (PENDING, STARTING, RUNNING, STOPPED, ERROR, TERMINATED)'),\n agentId: z.string().optional().describe('Filter by agent ID'),\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Skip results'),\n },\n },\n async ({ name, type, status, agentId, vibeId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (type !== undefined) filter.type = type;\n if (status !== undefined) filter.status = status;\n if (agentId !== undefined) filter.agentId = agentId;\n if (vibeId !== undefined) filter.vibeId = vibeId;\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<{ sessions: unknown }>(LIST_SESSIONS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.sessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_list failed', { error });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_get')),\n {\n title: 'Get Session',\n description: 'Get a terminal session by its ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ session: unknown }>(GET_SESSION, { id });\n return jsonResult(data.session);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_get failed', { error });\n return errorResult(\n `Failed to get session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_create')),\n {\n title: 'Create Session',\n description: 'Create a new terminal session.',\n inputSchema: {\n name: z.string().describe('Session name'),\n command: z.string().optional().describe('Command to run'),\n workingDirectory: z.string().optional().describe('Working directory'),\n type: z.string().optional().describe('Session type (TMUX, SSH, TERMINAL, SCRIPT, CUSTOM)'),\n agentId: z.string().optional().describe('Agent ID'),\n vibeId: z.string().optional().describe('Vibe ID'),\n tmuxSessionName: z.string().optional().describe('Tmux session name'),\n autoStart: z.boolean().optional().describe('Auto-start on creation'),\n },\n },\n async ({\n name,\n command,\n workingDirectory,\n type,\n agentId,\n vibeId,\n tmuxSessionName,\n autoStart,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (command !== undefined) input.command = command;\n if (workingDirectory !== undefined) input.workingDirectory = workingDirectory;\n if (type !== undefined) input.type = type;\n if (agentId !== undefined) input.agentId = agentId;\n if (vibeId !== undefined) input.vibeId = vibeId;\n if (tmuxSessionName !== undefined) input.tmuxSessionName = tmuxSessionName;\n if (autoStart !== undefined) input.autoStart = autoStart;\n\n const data = await ctx.gql.workspace.request<{ createSession: unknown }>(CREATE_SESSION, {\n input,\n });\n return jsonResult(data.createSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_create failed', { error });\n return errorResult(\n `Failed to create session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start')),\n {\n title: 'Start Session',\n description: 'Start a terminal session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startSession: unknown }>(START_SESSION, {\n id,\n });\n return jsonResult(data.startSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_start failed', { error });\n return errorResult(\n `Failed to start session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_stop')),\n {\n title: 'Stop Session',\n description: 'Stop a running terminal session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopSession: unknown }>(STOP_SESSION, {\n id,\n });\n return jsonResult(data.stopSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_stop failed', { error });\n return errorResult(\n `Failed to stop session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_restart')),\n {\n title: 'Restart Session',\n description: 'Restart a terminal session (stop then start).',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restartSession: unknown }>(RESTART_SESSION, {\n id,\n });\n return jsonResult(data.restartSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_restart failed', { error });\n return errorResult(\n `Failed to restart session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_terminate')),\n {\n title: 'Terminate Session',\n description: 'Forcefully terminate a terminal session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ terminateSession: unknown }>(\n TERMINATE_SESSION,\n {\n id,\n },\n );\n return jsonResult({ terminated: data.terminateSession, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_terminate failed', { error });\n return errorResult(\n `Failed to terminate session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_send_input')),\n {\n title: 'Send Session Input',\n description: 'Send keystrokes or text to a running terminal session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n input: z.string().describe('Text/keystrokes to send'),\n },\n },\n async ({ id, input }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sendSessionInput: unknown }>(\n SEND_SESSION_INPUT,\n {\n id,\n input,\n },\n );\n return jsonResult({ sent: data.sendSessionInput, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_send_input failed', { error });\n return errorResult(\n `Failed to send input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start_terminal')),\n {\n title: 'Start Web Terminal',\n description: 'Start a web terminal (ttyd) for browser-based access to a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startSessionTerminal: unknown }>(\n START_SESSION_TERMINAL,\n { id },\n );\n return jsonResult(data.startSessionTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_start_terminal failed', { error });\n return errorResult(\n `Failed to start terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_output')),\n {\n title: 'Get Session Output',\n description: 'Get recent output from a terminal session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n lines: z.number().optional().describe('Number of lines to return (default: 50)'),\n },\n },\n async ({ id, lines }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionOutput: unknown }>(SESSION_OUTPUT, {\n id,\n lines,\n });\n return jsonResult(data.sessionOutput);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_output failed', { error });\n return errorResult(\n `Failed to get output: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_active')),\n {\n title: 'Active Sessions',\n description: 'Get all currently active/running sessions, optionally filtered by vibe.',\n inputSchema: { vibeId: z.string().optional().describe('Filter by vibe ID') },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ activeSessions: unknown }>(ACTIVE_SESSIONS, {\n vibeId,\n });\n return jsonResult(data.activeSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_active failed', { error });\n return errorResult(\n `Failed to get active sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_check_health')),\n {\n title: 'Check Session Health',\n description: 'Run health checks on all sessions.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ checkSessionHealth: unknown }>(\n CHECK_SESSION_HEALTH,\n );\n return jsonResult(data.checkSessionHealth);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_check_health failed', { error });\n return errorResult(\n `Failed to check health: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // Bulk operations\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_bulk_restart')),\n {\n title: 'Bulk Restart Sessions',\n description: 'Restart multiple sessions at once.',\n inputSchema: { ids: z.array(z.string()).describe('Array of session IDs to restart') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkRestartSessions: unknown }>(\n BULK_RESTART_SESSIONS,\n { ids },\n );\n return jsonResult(data.bulkRestartSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_bulk_restart failed', { error });\n return errorResult(\n `Failed to bulk restart: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_bulk_stop')),\n {\n title: 'Bulk Stop Sessions',\n description: 'Stop multiple sessions at once.',\n inputSchema: { ids: z.array(z.string()).describe('Array of session IDs to stop') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkStopSessions: unknown }>(\n BULK_STOP_SESSIONS,\n {\n ids,\n },\n );\n return jsonResult(data.bulkStopSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_bulk_stop failed', { error });\n return errorResult(\n `Failed to bulk stop: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_bulk_terminate')),\n {\n title: 'Bulk Terminate Sessions',\n description: 'Forcefully terminate multiple sessions at once.',\n inputSchema: { ids: z.array(z.string()).describe('Array of session IDs to terminate') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkTerminateSessions: unknown }>(\n BULK_TERMINATE_SESSIONS,\n { ids },\n );\n return jsonResult(data.bulkTerminateSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_bulk_terminate failed', { error });\n return errorResult(\n `Failed to bulk terminate: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Update / status / delete / kill ───────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_update')),\n {\n title: 'Update Session',\n description:\n 'Update a terminal session. At least one mutable field (name / command / workingDirectory / autoStart / ttydUrl / metadata) must be provided. Returns the updated Session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n name: z.string().optional().describe('Updated session name'),\n command: z.string().optional().describe('Updated command to run'),\n workingDirectory: z.string().optional().describe('Updated working directory'),\n autoStart: z.boolean().optional().describe('Whether the session should auto-start'),\n ttydUrl: z.string().optional().describe('Updated ttyd URL for browser-based access'),\n metadata: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Free-form JSON metadata to merge into the session'),\n },\n },\n async ({ id, name, command, workingDirectory, autoStart, ttydUrl, metadata }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (command !== undefined) input.command = command;\n if (workingDirectory !== undefined) input.workingDirectory = workingDirectory;\n if (autoStart !== undefined) input.autoStart = autoStart;\n if (ttydUrl !== undefined) input.ttydUrl = ttydUrl;\n if (metadata !== undefined) input.metadata = metadata;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/command/workingDirectory/autoStart/ttydUrl/metadata',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ updateSession: unknown }>(UPDATE_SESSION, {\n id,\n input,\n });\n return jsonResult(data.updateSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_update failed', { error });\n return errorResult(\n `Failed to update session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_update_status')),\n {\n title: 'Update Session Status',\n description:\n 'Set the lifecycle status of a session directly (PENDING, STARTING, RUNNING, STOPPED, ERROR, TERMINATED). Returns the updated Session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n status: VibecontrolsSessionStatusEnum.describe('New status to apply'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateSessionStatus: unknown }>(\n UPDATE_SESSION_STATUS,\n { id, status },\n );\n return jsonResult(data.updateSessionStatus);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_update_status failed', { error });\n return errorResult(\n `Failed to update session status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_delete')),\n {\n title: 'Delete Session',\n description:\n 'Permanently delete a terminal session. Distinct from terminate — this also removes the session record. Returns { deleted, sessionId }.',\n inputSchema: { id: z.string().describe('Session ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSession: boolean }>(DELETE_SESSION, {\n id,\n });\n return jsonResult({ deleted: data.deleteSession, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_delete failed', { error });\n return errorResult(\n `Failed to delete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_kill')),\n {\n title: 'Kill Session',\n description:\n 'Forcefully kill a session process (SIGKILL-equivalent). Use when terminate/stop have failed to release the underlying process. Returns { killed, sessionId }.',\n inputSchema: { id: z.string().describe('Session ID to kill') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ killSession: boolean }>(KILL_SESSION, {\n id,\n });\n return jsonResult({ killed: data.killSession, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_kill failed', { error });\n return errorResult(\n `Failed to kill session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_stop_terminal')),\n {\n title: 'Stop Session Terminal',\n description: 'Stop the ttyd web terminal for a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopSessionTerminal: unknown }>(\n STOP_SESSION_TERMINAL,\n { id },\n );\n return jsonResult(data.stopSessionTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_stop_terminal failed', { error });\n return errorResult(\n `Failed to stop session terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_restart_terminal')),\n {\n title: 'Restart Session Terminal',\n description: 'Restart the web terminal for a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restartSessionTerminal: unknown }>(\n RESTART_SESSION_TERMINAL,\n { id },\n );\n return jsonResult(data.restartSessionTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_restart_terminal failed', { error });\n return errorResult(\n `Failed to restart session terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start_target_terminal')),\n {\n title: 'Start Target Terminal',\n description:\n 'Open a web terminal against a target host (SSH/RDP/VNC/DIRECT). Returns the connection info incl. ttydUrl.',\n inputSchema: {\n targetId: z.string().describe('Target ID'),\n shell: z.string().optional().describe('Shell binary path'),\n },\n },\n async ({ targetId, shell }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startTerminal: unknown }>(\n START_TARGET_TERMINAL,\n { targetId, shell },\n );\n return jsonResult(data.startTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_start_target_terminal failed', { error });\n return errorResult(\n `Failed to start target terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_stop_target_terminal')),\n {\n title: 'Stop Target Terminal',\n description: 'Stop a target terminal session.',\n inputSchema: { sessionId: z.string().describe('Target terminal session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopTerminal: boolean }>(\n STOP_TARGET_TERMINAL,\n { sessionId },\n );\n return jsonResult({ stopped: data.stopTerminal, sessionId });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_stop_target_terminal failed', { error });\n return errorResult(\n `Failed to stop target terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_export')),\n {\n title: 'Export Sessions',\n description: 'Export sessions to CSV or JSON.',\n inputSchema: {\n format: z.enum(['CSV', 'JSON']).optional().describe('Output format'),\n status: z.string().optional(),\n type: z.string().optional(),\n agentId: z.string().optional(),\n vibeId: z.string().optional(),\n },\n },\n async ({ format, status, type, agentId, vibeId }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (type !== undefined) filter.type = type;\n if (agentId !== undefined) filter.agentId = agentId;\n if (vibeId !== undefined) filter.vibeId = vibeId;\n const input: Record<string, unknown> = {};\n if (Object.keys(filter).length) input.filter = filter;\n if (format !== undefined) input.format = format;\n const data = await ctx.gql.workspace.request<{\n exportSessions: { count: number; data: string; format: string; generatedAt: string };\n }>(EXPORT_SESSIONS, { input });\n return jsonResult(data.exportSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_export failed', { error });\n return errorResult(\n `Failed to export sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_TARGETS,\n GET_TARGET,\n CREATE_TARGET,\n UPDATE_TARGET,\n DELETE_TARGET,\n TEST_TARGET,\n IMPORT_TARGETS_FROM_CONFIG,\n SCAN_SSH_CONFIG,\n INSTALL_AGENT_ON_TARGET,\n} from '../operations.js';\n\nexport function registerTargetTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_list')),\n {\n title: 'List Targets',\n description: 'List all VibeControls targets with optional filters and pagination.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID (required by the GraphQL schema)'),\n type: z.string().optional().describe('Filter by target type'),\n status: z.string().optional().describe('Filter by target status'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ workspaceId, type, status, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (type !== undefined) filter.type = type;\n if (status !== undefined) filter.status = status;\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<{ targets: unknown }>(LIST_TARGETS, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.targets);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_list failed', { error });\n return errorResult(\n `Failed to list targets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_get')),\n {\n title: 'Get Target',\n description: 'Get a VibeControls target by its ID.',\n inputSchema: { id: z.string().describe('Target ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ target: unknown }>(GET_TARGET, { id });\n return jsonResult(data.target);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_get failed', { error });\n return errorResult(\n `Failed to get target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_create')),\n {\n title: 'Create Target',\n description: 'Create a new VibeControls target.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n name: z.string().describe('Target name'),\n type: z.string().describe('Target type (DIRECT, SSH, RDP, VNC)'),\n host: z.string().describe('Target host address'),\n port: z.number().optional().describe('Target port'),\n username: z.string().optional().describe('Username for authentication'),\n },\n },\n async ({ workspaceId, name, type, host, port, username }) => {\n try {\n const input: Record<string, unknown> = { name, type, host };\n if (port !== undefined) input.port = port;\n if (username !== undefined) input.username = username;\n\n const data = await ctx.gql.workspace.request<{ createTarget: unknown }>(CREATE_TARGET, {\n workspaceId,\n input,\n });\n return jsonResult(data.createTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_create failed', { error });\n return errorResult(\n `Failed to create target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_update')),\n {\n title: 'Update Target',\n description: 'Update an existing VibeControls target.',\n inputSchema: {\n id: z.string().describe('Target ID'),\n name: z.string().optional().describe('Updated name'),\n type: z.string().optional().describe('Updated type (DIRECT, SSH, RDP, VNC)'),\n host: z.string().optional().describe('Updated host address'),\n port: z.number().optional().describe('Updated port'),\n username: z.string().optional().describe('Updated username'),\n },\n },\n async ({ id, name, type, host, port, username }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (host !== undefined) input.host = host;\n if (port !== undefined) input.port = port;\n if (username !== undefined) input.username = username;\n\n const data = await ctx.gql.workspace.request<{ updateTarget: unknown }>(UPDATE_TARGET, {\n id,\n input,\n });\n return jsonResult(data.updateTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_update failed', { error });\n return errorResult(\n `Failed to update target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_delete')),\n {\n title: 'Delete Target',\n description: 'Permanently delete a VibeControls target.',\n inputSchema: { id: z.string().describe('Target ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteTarget: boolean }>(DELETE_TARGET, {\n id,\n });\n return jsonResult({ deleted: data.deleteTarget, targetId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_delete failed', { error });\n return errorResult(\n `Failed to delete target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_test')),\n {\n title: 'Test Target',\n description: 'Test the connectivity of a specific target.',\n inputSchema: { id: z.string().describe('Target ID to test') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ testTarget: unknown }>(TEST_TARGET, { id });\n return jsonResult(data.testTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_test failed', { error });\n return errorResult(\n `Failed to test target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_import')),\n {\n title: 'Import Targets from Config',\n description:\n 'Import multiple targets from a configuration. Provide hosts as a JSON array of objects with name, host, port (optional), and username (optional).',\n inputSchema: {\n agentId: z.string().describe('Agent ID to use for import'),\n workspaceId: z.string().describe('Workspace ID'),\n hosts: z.string().describe('JSON array of host objects: [{name, host, port?, username?}]'),\n },\n },\n async ({ agentId, workspaceId, hosts }) => {\n try {\n const parsedHosts = JSON.parse(hosts);\n const data = await ctx.gql.workspace.request<{ importTargetsFromConfig: unknown }>(\n IMPORT_TARGETS_FROM_CONFIG,\n {\n agentId,\n workspaceId,\n hosts: parsedHosts,\n },\n );\n return jsonResult(data.importTargetsFromConfig);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_import failed', { error });\n return errorResult(\n `Failed to import targets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_scan_ssh')),\n {\n title: 'Scan SSH Config',\n description: 'Scan an SSH config file on the agent to discover targets.',\n inputSchema: {\n agentId: z.string().describe('Agent ID to scan SSH config on'),\n configPath: z\n .string()\n .optional()\n .describe('Path to SSH config file (defaults to ~/.ssh/config)'),\n },\n },\n async ({ agentId, configPath }) => {\n try {\n const variables: Record<string, unknown> = { agentId };\n if (configPath !== undefined) variables.configPath = configPath;\n\n const data = await ctx.gql.workspace.request<{ scanSSHConfig: unknown }>(\n SCAN_SSH_CONFIG,\n variables,\n );\n return jsonResult(data.scanSSHConfig);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_scan_ssh failed', { error });\n return errorResult(\n `Failed to scan SSH config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_install_agent')),\n {\n title: 'Install Agent on Target',\n description: 'Install a VibeControls agent on a remote target machine.',\n inputSchema: {\n sourceAgentId: z.string().describe('Source agent ID to initiate the install from'),\n targetId: z.string().describe('Target ID to install the agent on'),\n agentPort: z.number().optional().describe('Port for the new agent to listen on'),\n },\n },\n async ({ sourceAgentId, targetId, agentPort }) => {\n try {\n const variables: Record<string, unknown> = { sourceAgentId, targetId };\n if (agentPort !== undefined) variables.agentPort = agentPort;\n\n const data = await ctx.gql.workspace.request<{ installAgentOnTarget: unknown }>(\n INSTALL_AGENT_ON_TARGET,\n variables,\n );\n return jsonResult(data.installAgentOnTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_install_agent failed', { error });\n return errorResult(\n `Failed to install agent on target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_TUNNELS,\n GET_TUNNEL,\n GET_TUNNEL_BY_SLUG,\n CREATE_TUNNEL,\n UPDATE_TUNNEL,\n DELETE_TUNNEL,\n START_TUNNEL,\n STOP_TUNNEL,\n ROTATE_TUNNEL_CREDENTIALS,\n ISSUE_TUNNEL_SESSION,\n REVOKE_TUNNEL_SESSION,\n LIST_TUNNEL_SESSIONS,\n LIST_TUNNEL_PROVIDERS,\n GET_TUNNEL_PROVIDER,\n LIST_TUNNEL_SHARDS,\n TUNNEL_USAGE,\n TUNNEL_AUDIT,\n LIST_TUNNEL_DOMAINS,\n GET_TUNNEL_DOMAIN,\n RESERVE_TUNNEL_SUBDOMAIN,\n REGISTER_CUSTOM_TUNNEL_DOMAIN,\n VERIFY_TUNNEL_DOMAIN,\n ATTACH_TUNNEL_DOMAIN,\n DETACH_TUNNEL_DOMAIN,\n DELETE_TUNNEL_DOMAIN,\n PROBE_AGENT_TUNNEL,\n ADD_AGENT_FROM_TUNNEL,\n} from '../operations.js';\n\nconst tunnelProviderKey = z.enum(['VIBETUNNELS', 'CLOUDFLARE']);\nconst tunnelEnvironment = z.enum(['ALPHA', 'PROD']);\nconst tunnelProtocol = z.enum(['HTTP', 'HTTPS', 'TCP', 'UDP']);\n\nexport function registerTunnelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const w = ctx.gql.workspace;\n const tool = (\n name: string,\n title: string,\n description: string,\n inputSchema: Record<string, z.ZodTypeAny>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (args: any) => Promise<unknown>,\n ): void => {\n server.registerTool(\n track(mcpToolName(ctx.productName, name)),\n { title, description, inputSchema },\n async (args) => {\n try {\n const data = await handler(args);\n return jsonResult(data);\n } catch (error) {\n ctx.logger.error(`vibecontrols_${name} failed`, { error });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n };\n\n // ── List / get / by-slug ─────────────────────────────────────────────\n tool(\n 'tunnels_list',\n 'List Tunnels',\n 'List tunnels in the workspace with optional filters.',\n {\n agentId: z.string().optional(),\n providerKey: tunnelProviderKey.optional(),\n search: z.string().optional(),\n status: z.array(z.string()).optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ agentId, providerKey, search, status, limit, offset }) => {\n const filter: Record<string, unknown> = {};\n if (agentId !== undefined) filter.agentId = agentId;\n if (providerKey !== undefined) filter.providerKey = providerKey;\n if (search !== undefined) filter.search = search;\n if (status !== undefined) filter.status = status;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnels: unknown }>(LIST_TUNNELS, {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnels;\n },\n );\n\n tool(\n 'tunnels_get',\n 'Get Tunnel',\n 'Get a tunnel by ID.',\n { id: z.string().describe('Tunnel ID') },\n async ({ id }) => {\n const data = await w.request<{ tunnel: unknown }>(GET_TUNNEL, { id });\n return data.tunnel;\n },\n );\n\n tool(\n 'tunnels_by_slug',\n 'Get Tunnel by Slug',\n 'Get a tunnel by its workspace-unique slug.',\n { slug: z.string().describe('Tunnel slug') },\n async ({ slug }) => {\n const data = await w.request<{ tunnelBySlug: unknown }>(GET_TUNNEL_BY_SLUG, { slug });\n return data.tunnelBySlug;\n },\n );\n\n // ── Create / update / delete / lifecycle ─────────────────────────────\n tool(\n 'tunnels_create',\n 'Create Tunnel',\n 'Create a tunnel in DRAFT status. Call tunnels_start to bring it up.',\n {\n agentId: z.string(),\n name: z.string(),\n providerKey: tunnelProviderKey,\n localPort: z.number(),\n description: z.string().optional(),\n localHost: z.string().optional(),\n protocol: tunnelProtocol.optional(),\n environment: tunnelEnvironment.optional(),\n managedSubdomain: z.string().optional(),\n slug: z.string().optional(),\n tlsMode: z.string().optional(),\n basicAuthUser: z.string().optional(),\n basicAuthPassword: z.string().optional(),\n },\n async (args) => {\n const data = await w.request<{ createTunnel: unknown }>(CREATE_TUNNEL, { input: args });\n return data.createTunnel;\n },\n );\n\n tool(\n 'tunnels_update',\n 'Update Tunnel',\n 'Update tunnel metadata, target host/port, basic auth, etc.',\n {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n localHost: z.string().optional(),\n localPort: z.number().optional(),\n tlsMode: z.string().optional(),\n basicAuthUser: z.string().optional(),\n basicAuthPassword: z.string().optional(),\n },\n async ({ id, ...input }) => {\n const data = await w.request<{ updateTunnel: unknown }>(UPDATE_TUNNEL, { id, input });\n return data.updateTunnel;\n },\n );\n\n tool(\n 'tunnels_delete',\n 'Delete Tunnel',\n 'Soft-delete a tunnel (stops it first if active).',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ deleteTunnel: boolean }>(DELETE_TUNNEL, { id });\n return { deleted: data.deleteTunnel, id };\n },\n );\n\n tool(\n 'tunnels_start',\n 'Start Tunnel',\n 'Transition a tunnel to ACTIVE.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ startTunnel: unknown }>(START_TUNNEL, { id });\n return data.startTunnel;\n },\n );\n\n tool(\n 'tunnels_stop',\n 'Stop Tunnel',\n 'Gracefully stop a running tunnel.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ stopTunnel: unknown }>(STOP_TUNNEL, { id });\n return data.stopTunnel;\n },\n );\n\n tool(\n 'tunnels_rotate_credentials',\n 'Rotate Tunnel Credentials',\n 'Rotate basic-auth + provider secrets. Active sessions are revoked.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ rotateTunnelCredentials: unknown }>(\n ROTATE_TUNNEL_CREDENTIALS,\n { id },\n );\n return data.rotateTunnelCredentials;\n },\n );\n\n // ── Sessions ─────────────────────────────────────────────────────────\n tool(\n 'tunnels_issue_session',\n 'Issue Tunnel Session',\n 'Issue a short-lived session token for an agent to connect with. Token is returned exactly once.',\n {\n tunnelId: z.string(),\n ttlSeconds: z.number().optional(),\n },\n async ({ tunnelId, ttlSeconds }) => {\n const data = await w.request<{ issueTunnelSession: unknown }>(ISSUE_TUNNEL_SESSION, {\n tunnelId,\n ttlSeconds,\n });\n return data.issueTunnelSession;\n },\n );\n\n tool(\n 'tunnels_revoke_session',\n 'Revoke Tunnel Session',\n 'Revoke an active session (kills the live connection).',\n { sessionId: z.string(), reason: z.string().optional() },\n async ({ sessionId, reason }) => {\n const data = await w.request<{ revokeTunnelSession: boolean }>(REVOKE_TUNNEL_SESSION, {\n sessionId,\n reason,\n });\n return { revoked: data.revokeTunnelSession, sessionId };\n },\n );\n\n tool(\n 'tunnels_list_sessions',\n 'List Tunnel Sessions',\n 'List sessions for a tunnel.',\n {\n tunnelId: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ tunnelId, limit, offset }) => {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnelSessions: unknown }>(LIST_TUNNEL_SESSIONS, {\n tunnelId,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnelSessions;\n },\n );\n\n // ── Providers / shards / usage / audit ───────────────────────────────\n tool('tunnels_providers', 'List Tunnel Providers', 'List all tunnel providers.', {}, async () => {\n const data = await w.request<{ tunnelProviders: unknown }>(LIST_TUNNEL_PROVIDERS);\n return data.tunnelProviders;\n });\n\n tool(\n 'tunnels_provider',\n 'Get Tunnel Provider',\n 'Get a single tunnel provider by key.',\n { key: tunnelProviderKey },\n async ({ key }) => {\n const data = await w.request<{ tunnelProvider: unknown }>(GET_TUNNEL_PROVIDER, { key });\n return data.tunnelProvider;\n },\n );\n\n tool(\n 'tunnels_shards',\n 'List Tunnel Shards',\n 'List tunnel server shards (frps instances), optionally filtered by environment.',\n { environment: tunnelEnvironment.optional() },\n async ({ environment }) => {\n const data = await w.request<{ tunnelShards: unknown }>(LIST_TUNNEL_SHARDS, {\n environment,\n });\n return data.tunnelShards;\n },\n );\n\n tool(\n 'tunnels_usage',\n 'Tunnel Usage',\n 'Hourly usage buckets for a tunnel in a time range.',\n {\n tunnelId: z.string(),\n from: z.string().describe('ISO8601 start'),\n to: z.string().describe('ISO8601 end'),\n },\n async ({ tunnelId, from, to }) => {\n const data = await w.request<{ tunnelUsage: unknown }>(TUNNEL_USAGE, {\n tunnelId,\n from,\n to,\n });\n return data.tunnelUsage;\n },\n );\n\n tool(\n 'tunnels_audit',\n 'Tunnel Audit',\n 'Audit log entries scoped to a tunnel.',\n {\n tunnelId: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ tunnelId, limit, offset }) => {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnelAudit: unknown }>(TUNNEL_AUDIT, {\n tunnelId,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnelAudit;\n },\n );\n\n // ── Domains ──────────────────────────────────────────────────────────\n tool(\n 'tunnels_list_domains',\n 'List Tunnel Domains',\n 'List tunnel domains, optionally scoped to a single tunnel.',\n {\n tunnelId: z.string().optional(),\n type: z.enum(['CUSTOM', 'MANAGED_SUBDOMAIN']).optional(),\n verificationStatus: z\n .enum(['EXPIRED', 'FAILED', 'PENDING', 'VERIFIED', 'VERIFYING'])\n .optional(),\n environment: tunnelEnvironment.optional(),\n search: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ tunnelId, type, verificationStatus, environment, search, limit, offset }) => {\n const filter: Record<string, unknown> = {};\n if (type !== undefined) filter.type = type;\n if (verificationStatus !== undefined) filter.verificationStatus = verificationStatus;\n if (environment !== undefined) filter.environment = environment;\n if (search !== undefined) filter.search = search;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnelDomains: unknown }>(LIST_TUNNEL_DOMAINS, {\n tunnelId,\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnelDomains;\n },\n );\n\n tool(\n 'tunnels_get_domain',\n 'Get Tunnel Domain',\n 'Get a tunnel domain by ID.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ tunnelDomain: unknown }>(GET_TUNNEL_DOMAIN, { id });\n return data.tunnelDomain;\n },\n );\n\n tool(\n 'tunnels_reserve_subdomain',\n 'Reserve Tunnel Subdomain',\n 'Reserve a managed subdomain under *.vibetunnels.com.',\n {\n label: z.string().describe('Subdomain label (without zone suffix)'),\n environment: tunnelEnvironment,\n },\n async ({ label, environment }) => {\n const data = await w.request<{ reserveTunnelSubdomain: unknown }>(RESERVE_TUNNEL_SUBDOMAIN, {\n input: { label, environment },\n });\n return data.reserveTunnelSubdomain;\n },\n );\n\n tool(\n 'tunnels_register_custom_domain',\n 'Register Custom Tunnel Domain',\n 'Register a user-owned custom domain. A TXT challenge record will be returned for verification.',\n { hostname: z.string() },\n async ({ hostname }) => {\n const data = await w.request<{ registerCustomTunnelDomain: unknown }>(\n REGISTER_CUSTOM_TUNNEL_DOMAIN,\n { input: { hostname } },\n );\n return data.registerCustomTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_verify_domain',\n 'Verify Tunnel Domain',\n 'Force a verification check for a custom domain.',\n { domainId: z.string() },\n async ({ domainId }) => {\n const data = await w.request<{ verifyTunnelDomain: unknown }>(VERIFY_TUNNEL_DOMAIN, {\n domainId,\n });\n return data.verifyTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_attach_domain',\n 'Attach Tunnel Domain',\n 'Attach a verified domain to a tunnel.',\n {\n tunnelId: z.string(),\n domainId: z.string(),\n makePrimary: z.boolean().optional(),\n },\n async ({ tunnelId, domainId, makePrimary }) => {\n const data = await w.request<{ attachTunnelDomain: unknown }>(ATTACH_TUNNEL_DOMAIN, {\n tunnelId,\n domainId,\n makePrimary,\n });\n return data.attachTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_detach_domain',\n 'Detach Tunnel Domain',\n 'Detach a domain from a tunnel. The domain record remains for re-use.',\n { tunnelId: z.string(), domainId: z.string() },\n async ({ tunnelId, domainId }) => {\n const data = await w.request<{ detachTunnelDomain: unknown }>(DETACH_TUNNEL_DOMAIN, {\n tunnelId,\n domainId,\n });\n return data.detachTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_delete_domain',\n 'Delete Tunnel Domain',\n 'Permanently delete a tunnel domain record.',\n { domainId: z.string() },\n async ({ domainId }) => {\n const data = await w.request<{ deleteTunnelDomain: boolean }>(DELETE_TUNNEL_DOMAIN, {\n domainId,\n });\n return { deleted: data.deleteTunnelDomain, domainId };\n },\n );\n\n // ── Agent probe / zero-config onboarding ─────────────────────────────\n tool(\n 'tunnels_probe_agent',\n 'Probe Agent Tunnel',\n 'Probe an agent tunnel URL for health and identity.',\n { url: z.string(), agentApiKey: z.string().optional() },\n async ({ url, agentApiKey }) => {\n const data = await w.request<{ probeAgentTunnel: unknown }>(PROBE_AGENT_TUNNEL, {\n url,\n agentApiKey,\n });\n return data.probeAgentTunnel;\n },\n );\n\n tool(\n 'tunnels_add_agent_from_tunnel',\n 'Add Agent From Tunnel',\n 'Zero-config agent onboarding: probe a tunnel URL + API key, register + configure the agent in one shot.',\n {\n tunnelUrl: z.string(),\n apiKey: z.string(),\n name: z.string().optional(),\n scopes: z.array(z.string()).optional(),\n targetId: z.string().optional(),\n skipDevportalApp: z.boolean().optional(),\n },\n async (args) => {\n const data = await w.request<{ addVibecontrolsAgentFromTunnel: unknown }>(\n ADD_AGENT_FROM_TUNNEL,\n { input: args },\n );\n return data.addVibecontrolsAgentFromTunnel;\n },\n );\n\n // ── Subscription proxy: polling 'check' tool (MCP has no live subs) ──\n tool(\n 'tunnels_check',\n 'Check Tunnel (poll for updates)',\n 'Poll a tunnel by ID. Use this in place of the GraphQL `tunnelUpdated` subscription which has no MCP equivalent — call repeatedly with a delay.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ tunnel: unknown }>(GET_TUNNEL, { id });\n return { polledAt: new Date().toISOString(), tunnel: data.tunnel };\n },\n );\n}\n","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 START_SANDBOX,\n STOP_SANDBOX,\n EXTEND_SANDBOX_TTL,\n GET_SANDBOX_CONFIG,\n UPDATE_SANDBOX_CONFIG,\n GET_SANDBOX_STATS,\n GET_SANDBOX_LOGS,\n PROXY_SANDBOX_REQUEST,\n TAG_SANDBOX,\n UNTAG_SANDBOX,\n GET_SANDBOX_TAGS,\n REPLACE_SANDBOX_TAGS,\n CREATE_SANDBOX_TAG,\n AVAILABLE_SANDBOX_TAGS,\n LIST_SANDBOX_TEMPLATES,\n GET_SANDBOX_TEMPLATE,\n CREATE_SANDBOX_TEMPLATE,\n UPDATE_SANDBOX_TEMPLATE,\n DELETE_SANDBOX_TEMPLATE,\n EXPORT_SANDBOXES,\n GET_SANDBOX_EXPORT_JOB,\n LIST_SANDBOX_EXPORT_JOBS,\n GET_SANDBOX_ARTIFACT_BYTES,\n GET_ACTIVE_SANDBOXES,\n GET_RECENT_SANDBOX_ACTIVITY,\n LIST_ALL_SANDBOXES,\n LIST_SANDBOX_NODES,\n} from '../operations.js';\n\nconst NO_WORKSPACE = 'No workspace set. Run the auth workspace_set tool first.';\n\nconst sandboxTemplate = z.enum([\n 'AI_BUILDER',\n 'WORKFLOW_MULTI_NODE',\n 'MISC_SHELL',\n 'CUSTOM',\n 'VIBECONTROLS',\n]);\nconst sandboxStatus = z.enum([\n 'PENDING',\n 'PROVISIONING',\n 'RUNNING',\n 'STOPPING',\n 'STOPPED',\n 'EXPIRED',\n 'FAILED',\n]);\nconst sandboxMode = z.enum(['DEPLOYMENT', 'JOB']);\nconst storageMode = z.enum(['NONE', 'EPHEMERAL', 'PERSISTENT']);\nconst sandboxExportFormat = z.enum(['CSV', 'JSON']);\n\n// SandboxResourcesInput\nconst resourcesSchema = z.object({\n cpuRequest: z.string().optional(),\n cpuLimit: z.string().optional(),\n memoryRequest: z.string().optional(),\n memoryLimit: z.string().optional(),\n});\n\n// SandboxStorageInput\nconst storageSchema = z.object({\n mode: storageMode.optional().describe('Storage mode: NONE, EPHEMERAL, PERSISTENT'),\n sizeGi: z.number().optional(),\n mountPath: z.string().optional(),\n retainOnDelete: z.boolean().optional(),\n});\n\n// ContainerSpecInput[] — accepted as passthrough records (nested ports/env/resources shapes)\nconst containersSchema = z\n .array(z.record(z.unknown()))\n .describe(\n 'Container specs: [{ name, image, ports?[{ containerPort, name?, protocol? }], ' +\n 'env?[{ name, value }], command?[], args?[], ' +\n 'resources?{ requestsCpu, requestsMemory, limitsCpu, limitsMemory } }]',\n );\n\nexport function registerSandboxTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const w = ctx.gql.workspace;\n const tool = (\n name: string,\n title: string,\n description: string,\n inputSchema: Record<string, z.ZodTypeAny>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (args: any) => Promise<unknown>,\n ): void => {\n server.registerTool(\n track(mcpToolName(ctx.productName, name)),\n { title, description, inputSchema },\n async (args) => {\n try {\n const data = await handler(args);\n return jsonResult(data);\n } catch (error) {\n ctx.logger.error(`vibecontrols_${name} failed`, { error });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n };\n\n // Tenancy context from MCP auth. Sandbox ops are workspace-scoped.\n const readWorkspaceId = (): string | undefined => {\n const auth = ctx.auth.read();\n return auth?.workspaceId;\n };\n\n // ── List / get ───────────────────────────────────────────────────────\n tool(\n 'sandboxes_list',\n 'List Sandboxes',\n 'List sandboxes in the current workspace with optional template/status filters.',\n {\n template: sandboxTemplate.optional(),\n status: sandboxStatus.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ template, status, limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const filter: Record<string, unknown> = {};\n if (template !== undefined) filter.template = template;\n if (status !== undefined) filter.status = status;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listSandboxes: unknown }>(LIST_SANDBOXES, {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n context: { workspaceId },\n });\n return data.listSandboxes;\n },\n );\n\n tool(\n 'sandboxes_get',\n 'Get Sandbox',\n 'Get a sandbox by ID.',\n { id: z.string().describe('Sandbox ID') },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandbox: unknown }>(GET_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return data.getSandbox;\n },\n );\n\n // ── Lifecycle ────────────────────────────────────────────────────────\n tool(\n 'sandboxes_create',\n 'Create Sandbox',\n 'Create a sandbox from a template + container specs. Workspace context is injected from auth.',\n {\n name: z.string(),\n template: sandboxTemplate,\n containers: containersSchema,\n description: z.string().optional(),\n mode: sandboxMode.optional().describe('Sandbox mode: DEPLOYMENT or JOB'),\n resources: resourcesSchema.optional(),\n storage: storageSchema.optional(),\n ttlSeconds: z.number().optional(),\n metadata: z.record(z.unknown()).optional(),\n templateId: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ createSandbox: unknown }>(CREATE_SANDBOX, { input });\n return data.createSandbox;\n },\n );\n\n tool(\n 'sandboxes_delete',\n 'Delete Sandbox',\n 'Delete a sandbox by ID.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ deleteSandbox: boolean }>(DELETE_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return { deleted: data.deleteSandbox, id };\n },\n );\n\n tool(\n 'sandboxes_start',\n 'Start Sandbox',\n 'Start (resume) a stopped sandbox.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ startSandbox: unknown }>(START_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return data.startSandbox;\n },\n );\n\n tool(\n 'sandboxes_stop',\n 'Stop Sandbox',\n 'Stop a running sandbox.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ stopSandbox: unknown }>(STOP_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return data.stopSandbox;\n },\n );\n\n tool(\n 'sandboxes_extend_ttl',\n 'Extend Sandbox TTL',\n 'Extend a sandbox time-to-live by an additional number of seconds.',\n {\n id: z.string(),\n additionalSeconds: z.number().describe('Seconds to add to the current TTL'),\n },\n async ({ id, additionalSeconds }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ extendSandboxTTL: unknown }>(EXTEND_SANDBOX_TTL, {\n id,\n additionalSeconds,\n context: { workspaceId },\n });\n return data.extendSandboxTTL;\n },\n );\n\n // ── Config / stats / logs ────────────────────────────────────────────\n tool(\n 'sandboxes_get_config',\n 'Get Sandbox Config',\n 'Get the sandbox provisioning config (TTL/concurrency/resource defaults) for the workspace.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxConfig: unknown }>(GET_SANDBOX_CONFIG, {\n context: { workspaceId },\n });\n return data.getSandboxConfig;\n },\n );\n\n tool(\n 'sandboxes_update_config',\n 'Update Sandbox Config',\n 'Update the workspace sandbox config. Workspace context is injected from auth.',\n {\n defaultTtlSeconds: z.number().optional(),\n maxTtlSeconds: z.number().optional(),\n allowedTemplates: z.array(sandboxTemplate).optional(),\n maxConcurrentPerUser: z.number().optional(),\n maxConcurrentPerWorkspace: z.number().optional(),\n defaultCpuRequest: z.string().optional(),\n defaultCpuLimit: z.string().optional(),\n defaultMemoryRequest: z.string().optional(),\n defaultMemoryLimit: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ updateSandboxConfig: unknown }>(UPDATE_SANDBOX_CONFIG, {\n input,\n });\n return data.updateSandboxConfig;\n },\n );\n\n tool(\n 'sandboxes_get_stats',\n 'Get Sandbox Stats',\n 'Get aggregate sandbox statistics for the workspace.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxStats: unknown }>(GET_SANDBOX_STATS, {\n context: { workspaceId },\n });\n return data.getSandboxStats;\n },\n );\n\n tool(\n 'sandboxes_get_logs',\n 'Get Sandbox Logs',\n 'Fetch container logs for a sandbox.',\n {\n id: z.string(),\n containerName: z.string(),\n tailLines: z.number().optional().describe('Number of trailing log lines to return'),\n },\n async ({ id, containerName, tailLines }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxLogs: unknown }>(GET_SANDBOX_LOGS, {\n context: { workspaceId },\n id,\n containerName,\n tailLines,\n });\n return data.getSandboxLogs;\n },\n );\n\n // ── Tags ─────────────────────────────────────────────────────────────\n tool(\n 'sandboxes_tags_attach',\n 'Tag Sandbox',\n 'Attach an existing tag to a sandbox.',\n {\n sandboxId: z.string(),\n tagId: z.string(),\n source: z.string().optional(),\n validFrom: z.string().optional(),\n validTo: z.string().optional(),\n metadata: z.record(z.unknown()).optional(),\n },\n async (args) => {\n const data = await w.request<{ tagSandbox: unknown }>(TAG_SANDBOX, { input: args });\n return data.tagSandbox;\n },\n );\n\n tool(\n 'sandboxes_tags_detach',\n 'Untag Sandbox',\n 'Remove a tag from a sandbox.',\n { sandboxId: z.string(), tagId: z.string() },\n async (args) => {\n const data = await w.request<{ untagSandbox: boolean }>(UNTAG_SANDBOX, { input: args });\n return data.untagSandbox;\n },\n );\n\n tool(\n 'sandboxes_tags_get',\n 'Get Sandbox Tags',\n 'Get all tag assignments for a sandbox.',\n { sandboxId: z.string() },\n async (args) => {\n const data = await w.request<{ getSandboxTags: unknown }>(GET_SANDBOX_TAGS, { input: args });\n return data.getSandboxTags;\n },\n );\n\n tool(\n 'sandboxes_tags_replace',\n 'Replace Sandbox Tags',\n 'Replace the full set of tags on a sandbox with the provided tag IDs.',\n { sandboxId: z.string(), tagIds: z.array(z.string()) },\n async (args) => {\n const data = await w.request<{ replaceSandboxTags: unknown }>(REPLACE_SANDBOX_TAGS, {\n input: args,\n });\n return data.replaceSandboxTags;\n },\n );\n\n tool(\n 'sandboxes_tags_create',\n 'Create Sandbox Tag',\n 'Create a new sandbox tag definition.',\n { label: z.string(), color: z.string().optional() },\n async (args) => {\n const data = await w.request<{ createSandboxTag: unknown }>(CREATE_SANDBOX_TAG, {\n input: args,\n });\n return data.createSandboxTag;\n },\n );\n\n tool(\n 'sandboxes_tags_available',\n 'Available Sandbox Tags',\n 'List available sandbox tags, optionally filtered by a search query.',\n {\n query: z.string().optional(),\n limit: z.number().optional(),\n },\n async ({ query, limit }) => {\n const data = await w.request<{ availableSandboxTags: unknown }>(AVAILABLE_SANDBOX_TAGS, {\n query,\n limit,\n });\n return data.availableSandboxTags;\n },\n );\n\n // ── Templates ────────────────────────────────────────────────────────\n tool(\n 'sandboxes_templates_list',\n 'List Sandbox Templates',\n 'List sandbox template configs, optionally filtered by template type.',\n {\n template: sandboxTemplate.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ template, limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listSandboxTemplates: unknown }>(LIST_SANDBOX_TEMPLATES, {\n context: { workspaceId },\n template,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.listSandboxTemplates;\n },\n );\n\n tool(\n 'sandboxes_templates_get',\n 'Get Sandbox Template',\n 'Get a sandbox template config by ID.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxTemplate: unknown }>(GET_SANDBOX_TEMPLATE, {\n context: { workspaceId },\n id,\n });\n return data.getSandboxTemplate;\n },\n );\n\n tool(\n 'sandboxes_templates_create',\n 'Create Sandbox Template',\n 'Create a reusable sandbox template config. Workspace context is injected from auth.',\n {\n name: z.string(),\n template: sandboxTemplate,\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n containers: containersSchema.optional(),\n resources: resourcesSchema.optional(),\n storage: storageSchema.optional(),\n ttlSeconds: z.number().optional(),\n config: z.record(z.unknown()).optional(),\n metadata: z.record(z.unknown()).optional(),\n allowedImages: z.array(z.string()).optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ createSandboxTemplate: unknown }>(CREATE_SANDBOX_TEMPLATE, {\n input,\n });\n return data.createSandboxTemplate;\n },\n );\n\n tool(\n 'sandboxes_templates_update',\n 'Update Sandbox Template',\n 'Update an existing sandbox template config. Workspace context is injected from auth.',\n {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n containers: containersSchema.optional(),\n resources: resourcesSchema.optional(),\n storage: storageSchema.optional(),\n ttlSeconds: z.number().optional(),\n config: z.record(z.unknown()).optional(),\n metadata: z.record(z.unknown()).optional(),\n allowedImages: z.array(z.string()).optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ updateSandboxTemplate: unknown }>(UPDATE_SANDBOX_TEMPLATE, {\n input,\n });\n return data.updateSandboxTemplate;\n },\n );\n\n tool(\n 'sandboxes_templates_delete',\n 'Delete Sandbox Template',\n 'Delete a sandbox template config by ID.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ deleteSandboxTemplate: boolean }>(DELETE_SANDBOX_TEMPLATE, {\n context: { workspaceId },\n id,\n });\n return { deleted: data.deleteSandboxTemplate, id };\n },\n );\n\n // ── Export ───────────────────────────────────────────────────────────\n tool(\n 'sandboxes_export_create',\n 'Export Sandboxes',\n 'Start an async export job of sandboxes. Workspace + context injected from auth.',\n {\n format: sandboxExportFormat.describe('Export format: CSV or JSON'),\n template: sandboxTemplate.optional().describe('Filter: template type'),\n status: sandboxStatus.optional().describe('Filter: sandbox status'),\n includeUsageEvents: z.boolean().optional(),\n },\n async ({ format, template, status, includeUsageEvents }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const filter: Record<string, unknown> = {};\n if (template !== undefined) filter.template = template;\n if (status !== undefined) filter.status = status;\n const input: Record<string, unknown> = {\n workspaceId,\n format,\n context: { workspaceId },\n };\n if (includeUsageEvents !== undefined) input.includeUsageEvents = includeUsageEvents;\n if (Object.keys(filter).length) input.filter = filter;\n const data = await w.request<{ exportSandboxes: unknown }>(EXPORT_SANDBOXES, { input });\n return data.exportSandboxes;\n },\n );\n\n tool(\n 'sandboxes_export_get',\n 'Get Sandbox Export Job',\n 'Get a sandbox export job by ID.',\n { jobId: z.string() },\n async ({ jobId }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxExportJob: unknown }>(GET_SANDBOX_EXPORT_JOB, {\n workspaceId,\n jobId,\n context: { workspaceId },\n });\n return data.getSandboxExportJob;\n },\n );\n\n tool(\n 'sandboxes_export_list',\n 'List Sandbox Export Jobs',\n 'List sandbox export jobs for the workspace.',\n {\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listSandboxExportJobs: unknown }>(LIST_SANDBOX_EXPORT_JOBS, {\n workspaceId,\n context: { workspaceId },\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.listSandboxExportJobs;\n },\n );\n\n tool(\n 'sandboxes_export_get_artifact_bytes',\n 'Get Sandbox Artifact Bytes',\n 'Fetch raw bytes (base64) of a file artifact from a sandbox session. Context injected from auth.',\n {\n sandboxId: z.string(),\n sessionId: z.string(),\n path: z.string().describe('Path of the artifact file inside the sandbox'),\n onBehalfOfUserId: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ getSandboxArtifactBytes: unknown }>(\n GET_SANDBOX_ARTIFACT_BYTES,\n {\n input,\n },\n );\n return data.getSandboxArtifactBytes;\n },\n );\n\n // ── Admin / observability ────────────────────────────────────────────\n tool(\n 'sandboxes_admin_get_active',\n 'Get Active Sandboxes',\n 'Admin: list all currently active sandboxes across the workspace.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getActiveSandboxes: unknown }>(GET_ACTIVE_SANDBOXES, {\n context: { workspaceId },\n });\n return data.getActiveSandboxes;\n },\n );\n\n tool(\n 'sandboxes_admin_get_recent_activity',\n 'Get Recent Sandbox Activity',\n 'Admin: list recent sandbox activity/audit entries.',\n { limit: z.number().optional() },\n async ({ limit }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getRecentSandboxActivity: unknown }>(\n GET_RECENT_SANDBOX_ACTIVITY,\n { context: { workspaceId }, limit },\n );\n return data.getRecentSandboxActivity;\n },\n );\n\n tool(\n 'sandboxes_admin_list_all',\n 'List All Sandboxes',\n 'Admin: list all sandboxes (including other users) with optional filters.',\n {\n template: sandboxTemplate.optional(),\n status: sandboxStatus.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ template, status, limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const filter: Record<string, unknown> = {};\n if (template !== undefined) filter.template = template;\n if (status !== undefined) filter.status = status;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listAllSandboxes: unknown }>(LIST_ALL_SANDBOXES, {\n context: { workspaceId },\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.listAllSandboxes;\n },\n );\n\n tool(\n 'sandboxes_admin_list_nodes',\n 'List Sandbox Nodes',\n 'Admin: list cluster nodes available for sandbox scheduling with capacity info.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ listSandboxNodes: unknown }>(LIST_SANDBOX_NODES, {\n context: { workspaceId },\n });\n return data.listSandboxNodes;\n },\n );\n\n // ── Proxy ────────────────────────────────────────────────────────────\n tool(\n 'sandboxes_proxy_request',\n 'Proxy Sandbox Request',\n 'Proxy an HTTP request into a running sandbox container. Context injected from auth.',\n {\n sandboxId: z.string(),\n method: z.string().describe('HTTP method, e.g. GET, POST, PUT, DELETE'),\n path: z.string().describe('Request path inside the sandbox'),\n body: z.record(z.unknown()).optional(),\n containerName: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ proxySandboxRequest: unknown }>(PROXY_SANDBOX_REQUEST, {\n input,\n });\n return data.proxySandboxRequest;\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport { GET_UI_SESSION, SAVE_UI_SESSION, CLEAR_UI_SESSION } from '../operations.js';\n\nexport function registerUISessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_get')),\n {\n title: 'Get UI Session',\n description:\n \"Get the current user's UI session state (active vibe, active session, recent items).\",\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ uiSession: unknown }>(GET_UI_SESSION);\n return jsonResult(data.uiSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_ui_session_get failed', { error });\n return errorResult(\n `Failed to get UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_save')),\n {\n title: 'Save UI Session',\n description: \"Save the current user's UI session state.\",\n inputSchema: {\n activeVibeId: z.string().optional().describe('Active vibe ID'),\n activeSessionId: z.string().optional().describe('Active session ID'),\n recentVibes: z.array(z.string()).optional().describe('Recent vibe IDs'),\n recentSessions: z.array(z.string()).optional().describe('Recent session IDs'),\n state: z.string().optional().describe('Custom state as JSON string'),\n },\n },\n async ({ activeVibeId, activeSessionId, recentVibes, recentSessions, state }) => {\n try {\n const input: Record<string, unknown> = {};\n if (activeVibeId !== undefined) input.activeVibeId = activeVibeId;\n if (activeSessionId !== undefined) input.activeSessionId = activeSessionId;\n if (recentVibes !== undefined) input.recentVibes = recentVibes;\n if (recentSessions !== undefined) input.recentSessions = recentSessions;\n if (state !== undefined) input.state = JSON.parse(state);\n\n const data = await ctx.gql.workspace.request<{ saveUISession: unknown }>(SAVE_UI_SESSION, {\n input,\n });\n return jsonResult(data.saveUISession);\n } catch (error) {\n ctx.logger.error('vibecontrols_ui_session_save failed', { error });\n return errorResult(\n `Failed to save UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_clear')),\n {\n title: 'Clear UI Session',\n description: \"Clear the current user's UI session state.\",\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ clearUISession: boolean }>(CLEAR_UI_SESSION);\n return jsonResult({ cleared: data.clearUISession });\n } catch (error) {\n ctx.logger.error('vibecontrols_ui_session_clear failed', { error });\n return errorResult(\n `Failed to clear UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_VIBEDECKS,\n GET_VIBEDECK,\n CREATE_VIBEDECK,\n UPDATE_VIBEDECK,\n DELETE_VIBEDECK,\n DUPLICATE_VIBEDECK,\n SET_DEFAULT_VIBEDECK,\n LIST_VIBEDECK_BUTTONS,\n CREATE_VIBEDECK_BUTTON,\n UPDATE_VIBEDECK_BUTTON,\n DELETE_VIBEDECK_BUTTON,\n EXECUTE_VIBEDECK_BUTTON,\n} from '../operations.js';\n\nexport function registerVibeDeckTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_list')),\n {\n title: 'List VibeDecks',\n description: 'List all VibeDecks with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by deck name'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ name, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\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<{ vibeDecks: unknown }>(LIST_VIBEDECKS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibeDecks);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_list failed', { error });\n return errorResult(\n `Failed to list VibeDecks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_get')),\n {\n title: 'Get VibeDeck',\n description: 'Get a VibeDeck by its ID.',\n inputSchema: { id: z.string().describe('VibeDeck ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeDeck: unknown }>(GET_VIBEDECK, { id });\n return jsonResult(data.vibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_get failed', { error });\n return errorResult(\n `Failed to get VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_create')),\n {\n title: 'Create VibeDeck',\n description: 'Create a new VibeDeck.',\n inputSchema: {\n name: z.string().describe('Deck name'),\n description: z.string().optional().describe('Deck description'),\n isDefault: z.boolean().optional().describe('Set as default deck'),\n },\n },\n async ({ name, description, isDefault }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n\n const data = await ctx.gql.workspace.request<{ createVibeDeck: unknown }>(CREATE_VIBEDECK, {\n input,\n });\n return jsonResult(data.createVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_create failed', { error });\n return errorResult(\n `Failed to create VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_update')),\n {\n title: 'Update VibeDeck',\n description: 'Update an existing VibeDeck.',\n inputSchema: {\n id: z.string().describe('VibeDeck ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n isDefault: z.boolean().optional().describe('Set as default deck'),\n },\n },\n async ({ id, name, description, isDefault }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n\n const data = await ctx.gql.workspace.request<{ updateVibeDeck: unknown }>(UPDATE_VIBEDECK, {\n id,\n input,\n });\n return jsonResult(data.updateVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_update failed', { error });\n return errorResult(\n `Failed to update VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_delete')),\n {\n title: 'Delete VibeDeck',\n description: 'Permanently delete a VibeDeck.',\n inputSchema: { id: z.string().describe('VibeDeck ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibeDeck: boolean }>(DELETE_VIBEDECK, {\n id,\n });\n return jsonResult({ deleted: data.deleteVibeDeck, vibeDeckId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_delete failed', { error });\n return errorResult(\n `Failed to delete VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_duplicate')),\n {\n title: 'Duplicate VibeDeck',\n description: 'Create a copy of an existing VibeDeck.',\n inputSchema: {\n id: z.string().describe('VibeDeck ID to duplicate'),\n name: z.string().optional().describe('Name for the duplicated deck'),\n },\n },\n async ({ id, name }) => {\n try {\n const variables: Record<string, unknown> = { id };\n if (name !== undefined) variables.name = name;\n\n const data = await ctx.gql.workspace.request<{ duplicateVibeDeck: unknown }>(\n DUPLICATE_VIBEDECK,\n variables,\n );\n return jsonResult(data.duplicateVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_duplicate failed', { error });\n return errorResult(\n `Failed to duplicate VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_set_default')),\n {\n title: 'Set Default VibeDeck',\n description: 'Set a VibeDeck as the default deck.',\n inputSchema: { id: z.string().describe('VibeDeck ID to set as default') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ setDefaultVibeDeck: unknown }>(\n SET_DEFAULT_VIBEDECK,\n {\n id,\n },\n );\n return jsonResult(data.setDefaultVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_set_default failed', { error });\n return errorResult(\n `Failed to set default VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_list')),\n {\n title: 'List VibeDeck Buttons',\n description: 'List all buttons in a VibeDeck with optional pagination.',\n inputSchema: {\n vibeDeckId: z.string().optional().describe('Filter by VibeDeck ID'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ vibeDeckId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (vibeDeckId !== undefined) filter.vibeDeckId = vibeDeckId;\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<{ vibeDeckButtons: unknown }>(\n LIST_VIBEDECK_BUTTONS,\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.vibeDeckButtons);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_list failed', { error });\n return errorResult(\n `Failed to list VibeDeck buttons: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_create')),\n {\n title: 'Create VibeDeck Button',\n description: 'Create a new button in a VibeDeck.',\n inputSchema: {\n vibeDeckId: z.string().describe('VibeDeck ID to add the button to'),\n label: z.string().describe('Button label'),\n actionType: z.string().optional().describe('Action type for the button'),\n actionId: z.string().optional().describe('Action ID to link to this button'),\n command: z.string().optional().describe('Command to execute'),\n script: z.string().optional().describe('Script to execute'),\n webhookUrl: z.string().optional().describe('Webhook URL to call'),\n row: z.number().optional().describe('Row position in the deck grid'),\n column: z.number().optional().describe('Column position in the deck grid'),\n color: z.string().optional().describe('Button color'),\n icon: z.string().optional().describe('Button icon'),\n },\n },\n async ({\n vibeDeckId,\n label,\n actionType,\n actionId,\n command,\n script,\n webhookUrl,\n row,\n column,\n color,\n icon,\n }) => {\n try {\n const input: Record<string, unknown> = { vibeDeckId, label };\n if (actionType !== undefined) input.actionType = actionType;\n if (actionId !== undefined) input.actionId = actionId;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (row !== undefined) input.row = row;\n if (column !== undefined) input.column = column;\n if (color !== undefined) input.color = color;\n if (icon !== undefined) input.icon = icon;\n\n const data = await ctx.gql.workspace.request<{ createVibeDeckButton: unknown }>(\n CREATE_VIBEDECK_BUTTON,\n { input },\n );\n return jsonResult(data.createVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_create failed', { error });\n return errorResult(\n `Failed to create VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_update')),\n {\n title: 'Update VibeDeck Button',\n description: 'Update an existing VibeDeck button.',\n inputSchema: {\n id: z.string().describe('Button ID'),\n label: z.string().optional().describe('Updated label'),\n actionType: z.string().optional().describe('Updated action type'),\n actionId: z.string().optional().describe('Updated action ID to link to this button'),\n command: z.string().optional().describe('Updated command'),\n script: z.string().optional().describe('Updated script'),\n webhookUrl: z.string().optional().describe('Updated webhook URL'),\n row: z.number().optional().describe('Updated row position'),\n column: z.number().optional().describe('Updated column position'),\n color: z.string().optional().describe('Updated color'),\n icon: z.string().optional().describe('Updated icon'),\n },\n },\n async ({\n id,\n label,\n actionType,\n actionId,\n command,\n script,\n webhookUrl,\n row,\n column,\n color,\n icon,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (label !== undefined) input.label = label;\n if (actionType !== undefined) input.actionType = actionType;\n if (actionId !== undefined) input.actionId = actionId;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (row !== undefined) input.row = row;\n if (column !== undefined) input.column = column;\n if (color !== undefined) input.color = color;\n if (icon !== undefined) input.icon = icon;\n\n const data = await ctx.gql.workspace.request<{ updateVibeDeckButton: unknown }>(\n UPDATE_VIBEDECK_BUTTON,\n { id, input },\n );\n return jsonResult(data.updateVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_update failed', { error });\n return errorResult(\n `Failed to update VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_delete')),\n {\n title: 'Delete VibeDeck Button',\n description: 'Permanently delete a VibeDeck button.',\n inputSchema: { id: z.string().describe('Button ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibeDeckButton: boolean }>(\n DELETE_VIBEDECK_BUTTON,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibeDeckButton, buttonId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_delete failed', { error });\n return errorResult(\n `Failed to delete VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_execute')),\n {\n title: 'Execute VibeDeck Button',\n description: 'Execute the action associated with a VibeDeck button on a specific agent.',\n inputSchema: {\n id: z.string().describe('Button ID to execute'),\n agentId: z.string().describe('Agent ID to execute the button action on'),\n },\n },\n async ({ id, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ executeVibeDeckButton: unknown }>(\n EXECUTE_VIBEDECK_BUTTON,\n { id, agentId },\n );\n return jsonResult(data.executeVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_execute failed', { error });\n return errorResult(\n `Failed to execute VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_VIBES,\n GET_VIBE,\n CREATE_VIBE,\n UPDATE_VIBE,\n DELETE_VIBE,\n UPDATE_VIBE_STATUS,\n ARCHIVE_VIBE,\n RESTORE_VIBE,\n MOVE_VIBE,\n VIBE_HIERARCHY,\n SEARCH_VIBES,\n UPDATE_VIBE_GIT,\n} from '../operations.js';\n\nconst VibeTypeEnum = z.enum([\n 'PROJECT',\n 'WORKSPACE',\n 'REPOSITORY',\n 'MONOREPO',\n 'PACKAGE',\n 'CUSTOM',\n]);\nconst VibeStatusEnum = z.enum(['ACTIVE', 'INACTIVE', 'ARCHIVED', 'ERROR']);\n\nexport function registerVibeTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_list')),\n {\n title: 'List Vibes',\n description: 'List all vibes (projects/workspaces) with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by vibe name'),\n type: VibeTypeEnum.optional().describe('Filter by vibe type'),\n status: VibeStatusEnum.optional().describe('Filter by status'),\n agentId: z.string().optional().describe('Filter by agent ID'),\n parentId: z.string().optional().describe('Filter by parent vibe ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ name, type, status, agentId, parentId, tags, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (type !== undefined) filter.type = type;\n if (status !== undefined) filter.status = status;\n if (agentId !== undefined) filter.agentId = agentId;\n if (parentId !== undefined) filter.parentId = parentId;\n if (tags !== undefined) filter.tags = tags;\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<{ vibes: unknown }>(LIST_VIBES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibes);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_list failed', { error });\n return errorResult(\n `Failed to list vibes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_get')),\n {\n title: 'Get Vibe',\n description: 'Get a vibe by its ID.',\n inputSchema: { id: z.string().describe('Vibe ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibe: unknown }>(GET_VIBE, { id });\n return jsonResult(data.vibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_get failed', { error });\n return errorResult(\n `Failed to get vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_create')),\n {\n title: 'Create Vibe',\n description: 'Create a new vibe (project/workspace).',\n inputSchema: {\n name: z.string().describe('Vibe name'),\n description: z.string().optional().describe('Vibe description'),\n path: z.string().optional().describe('Local filesystem path'),\n type: VibeTypeEnum.optional().describe('Vibe type (default: PROJECT)'),\n status: VibeStatusEnum.optional().describe('Initial status'),\n agentId: z.string().optional().describe('Agent ID to associate with'),\n parentId: z.string().optional().describe('Parent vibe ID'),\n gitBranch: z.string().optional().describe('Git branch'),\n gitRemote: z.string().optional().describe('Git remote URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n name,\n description,\n path,\n type,\n status,\n agentId,\n parentId,\n gitBranch,\n gitRemote,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (path !== undefined) input.path = path;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (agentId !== undefined) input.agentId = agentId;\n if (parentId !== undefined) input.parentId = parentId;\n if (gitBranch !== undefined) input.gitBranch = gitBranch;\n if (gitRemote !== undefined) input.gitRemote = gitRemote;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ createVibe: unknown }>(CREATE_VIBE, {\n input,\n });\n return jsonResult(data.createVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_create failed', { error });\n return errorResult(\n `Failed to create vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_update')),\n {\n title: 'Update Vibe',\n description: 'Update an existing vibe.',\n inputSchema: {\n id: z.string().describe('Vibe ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n path: z.string().optional().describe('Updated path'),\n type: VibeTypeEnum.optional().describe('Updated type'),\n status: VibeStatusEnum.optional().describe('Updated status'),\n agentId: z.string().optional().describe('Updated agent ID'),\n parentId: z.string().optional().describe('Updated parent vibe ID'),\n gitBranch: z.string().optional().describe('Updated git branch'),\n gitRemote: z.string().optional().describe('Updated git remote'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n description,\n path,\n type,\n status,\n agentId,\n parentId,\n gitBranch,\n gitRemote,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (path !== undefined) input.path = path;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (agentId !== undefined) input.agentId = agentId;\n if (parentId !== undefined) input.parentId = parentId;\n if (gitBranch !== undefined) input.gitBranch = gitBranch;\n if (gitRemote !== undefined) input.gitRemote = gitRemote;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ updateVibe: unknown }>(UPDATE_VIBE, {\n id,\n input,\n });\n return jsonResult(data.updateVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_update failed', { error });\n return errorResult(\n `Failed to update vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_delete')),\n {\n title: 'Delete Vibe',\n description: 'Permanently delete a vibe.',\n inputSchema: { id: z.string().describe('Vibe ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibe: boolean }>(DELETE_VIBE, { id });\n return jsonResult({ deleted: data.deleteVibe, vibeId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_delete failed', { error });\n return errorResult(\n `Failed to delete vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_update_status')),\n {\n title: 'Update Vibe Status',\n description: 'Change the status of a vibe (ACTIVE, INACTIVE, ARCHIVED, ERROR).',\n inputSchema: {\n id: z.string().describe('Vibe ID'),\n status: VibeStatusEnum.describe('New status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateVibeStatus: unknown }>(\n UPDATE_VIBE_STATUS,\n {\n id,\n status,\n },\n );\n return jsonResult(data.updateVibeStatus);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_update_status failed', { error });\n return errorResult(\n `Failed to update vibe status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_archive')),\n {\n title: 'Archive Vibe',\n description: 'Archive a vibe (soft-delete with archivedAt timestamp).',\n inputSchema: { id: z.string().describe('Vibe ID to archive') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ archiveVibe: unknown }>(ARCHIVE_VIBE, {\n id,\n });\n return jsonResult(data.archiveVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_archive failed', { error });\n return errorResult(\n `Failed to archive vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_restore')),\n {\n title: 'Restore Vibe',\n description: 'Restore a previously archived vibe.',\n inputSchema: { id: z.string().describe('Vibe ID to restore') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restoreVibe: unknown }>(RESTORE_VIBE, {\n id,\n });\n return jsonResult(data.restoreVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_restore failed', { error });\n return errorResult(\n `Failed to restore vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_hierarchy')),\n {\n title: 'Vibe Hierarchy',\n description: 'Get the vibe hierarchy tree starting from an optional root vibe.',\n inputSchema: {\n rootId: z.string().optional().describe('Root vibe ID (omit for all top-level vibes)'),\n },\n },\n async ({ rootId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeHierarchy: unknown }>(VIBE_HIERARCHY, {\n rootId,\n });\n return jsonResult(data.vibeHierarchy);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_hierarchy failed', { error });\n return errorResult(\n `Failed to get vibe hierarchy: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_search')),\n {\n title: 'Search Vibes',\n description: 'Full-text search across vibes by name, description, path, or tags.',\n inputSchema: {\n query: z.string().describe('Search query string'),\n limit: z.number().optional().describe('Maximum results to return'),\n },\n },\n async ({ query, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ searchVibes: unknown }>(SEARCH_VIBES, {\n query,\n limit,\n });\n return jsonResult(data.searchVibes);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_search failed', { error });\n return errorResult(\n `Failed to search vibes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_move')),\n {\n title: 'Move Vibe',\n description:\n 'Move a vibe under a different parent in the hierarchy. Pass `newParentId` = null (omit) to move to top-level. Returns the updated Vibe.',\n inputSchema: {\n id: z.string().describe('Vibe ID to move'),\n newParentId: z\n .string()\n .optional()\n .describe('New parent vibe ID, or omit to move to the top level'),\n },\n },\n async ({ id, newParentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ moveVibe: unknown }>(MOVE_VIBE, {\n id,\n newParentId: newParentId ?? null,\n });\n return jsonResult(data.moveVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_move failed', { error });\n return errorResult(\n `Failed to move vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_update_git')),\n {\n title: 'Update Vibe Git Metadata',\n description:\n 'Update the git-related metadata on a vibe (branch / remote URL / structured status JSON). At least one field must be provided. Returns the updated Vibe.',\n inputSchema: {\n id: z.string().describe('Vibe ID'),\n gitBranch: z.string().optional().describe('Updated git branch name'),\n gitRemote: z.string().optional().describe('Updated git remote URL'),\n gitStatus: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Structured git status JSON (e.g. dirty/ahead/behind counters)'),\n },\n },\n async ({ id, gitBranch, gitRemote, gitStatus }) => {\n try {\n if (gitBranch === undefined && gitRemote === undefined && gitStatus === undefined) {\n return errorResult(\n 'No git updates specified — provide at least one of gitBranch/gitRemote/gitStatus',\n );\n }\n const data = await ctx.gql.workspace.request<{ updateVibeGit: unknown }>(UPDATE_VIBE_GIT, {\n id,\n gitBranch: gitBranch ?? null,\n gitRemote: gitRemote ?? null,\n gitStatus: gitStatus ?? null,\n });\n return jsonResult(data.updateVibeGit);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_update_git failed', { error });\n return errorResult(\n `Failed to update vibe git metadata: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_WEBHOOKS,\n GET_WEBHOOK,\n CREATE_WEBHOOK,\n UPDATE_WEBHOOK,\n DELETE_WEBHOOK,\n TEST_WEBHOOK,\n TRIGGER_WEBHOOK,\n} from '../operations.js';\n\nexport function registerWebhookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_list')),\n {\n title: 'List Webhooks',\n description: 'List all webhooks with optional filters.',\n inputSchema: {\n name: z.string().optional().describe('Filter by webhook name'),\n event: z.string().optional().describe('Filter by event type'),\n isActive: z.boolean().optional().describe('Filter by active status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ name, event, isActive, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (event !== undefined) filter.event = event;\n if (isActive !== undefined) filter.isActive = isActive;\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<{ webhooks: unknown }>(LIST_WEBHOOKS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.webhooks);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_list failed', { error });\n return errorResult(\n `Failed to list webhooks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_get')),\n {\n title: 'Get Webhook',\n description: 'Get a webhook by its ID.',\n inputSchema: { id: z.string().describe('Webhook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ webhook: unknown }>(GET_WEBHOOK, { id });\n return jsonResult(data.webhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_get failed', { error });\n return errorResult(\n `Failed to get webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_create')),\n {\n title: 'Create Webhook',\n description: 'Create a new webhook.',\n inputSchema: {\n name: z.string().describe('Webhook name'),\n url: z.string().describe('Webhook endpoint URL'),\n events: z.array(z.string()).describe('Events to subscribe to'),\n agentIds: z.array(z.string()).optional().describe('Agent IDs to scope to'),\n isActive: z.boolean().optional().describe('Active status (default: true)'),\n signingKey: z.string().optional().describe('Signing key for payload verification'),\n },\n },\n async ({ name, url, events, agentIds, isActive, signingKey }) => {\n try {\n const input: Record<string, unknown> = { name, url, events };\n if (agentIds !== undefined) input.agentIds = agentIds;\n if (isActive !== undefined) input.isActive = isActive;\n if (signingKey !== undefined) input.signingKey = signingKey;\n\n const data = await ctx.gql.workspace.request<{ createWebhook: unknown }>(CREATE_WEBHOOK, {\n input,\n });\n return jsonResult(data.createWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_create failed', { error });\n return errorResult(\n `Failed to create webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_update')),\n {\n title: 'Update Webhook',\n description: 'Update an existing webhook.',\n inputSchema: {\n id: z.string().describe('Webhook ID'),\n name: z.string().optional().describe('Updated name'),\n url: z.string().optional().describe('Updated endpoint URL'),\n events: z.array(z.string()).optional().describe('Updated events'),\n agentIds: z.array(z.string()).optional().describe('Updated agent IDs'),\n isActive: z.boolean().optional().describe('Updated active status'),\n signingKey: z.string().optional().describe('Updated signing key'),\n },\n },\n async ({ id, name, url, events, agentIds, isActive, signingKey }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (url !== undefined) input.url = url;\n if (events !== undefined) input.events = events;\n if (agentIds !== undefined) input.agentIds = agentIds;\n if (isActive !== undefined) input.isActive = isActive;\n if (signingKey !== undefined) input.signingKey = signingKey;\n\n const data = await ctx.gql.workspace.request<{ updateWebhook: unknown }>(UPDATE_WEBHOOK, {\n id,\n input,\n });\n return jsonResult(data.updateWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_update failed', { error });\n return errorResult(\n `Failed to update webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_delete')),\n {\n title: 'Delete Webhook',\n description: 'Delete a webhook.',\n inputSchema: { id: z.string().describe('Webhook ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteWebhook: boolean }>(DELETE_WEBHOOK, {\n id,\n });\n return jsonResult({ deleted: data.deleteWebhook, webhookId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_delete failed', { error });\n return errorResult(\n `Failed to delete webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_test')),\n {\n title: 'Test Webhook',\n description: 'Send a test delivery to a webhook to verify its endpoint.',\n inputSchema: { id: z.string().describe('Webhook ID to test') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ testWebhook: unknown }>(TEST_WEBHOOK, {\n id,\n });\n return jsonResult(data.testWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_test failed', { error });\n return errorResult(\n `Failed to test webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_trigger')),\n {\n title: 'Trigger Webhook',\n description: 'Trigger a webhook with a custom JSON payload.',\n inputSchema: {\n id: z.string().describe('Webhook ID to trigger'),\n payload: z.string().describe('JSON payload to deliver'),\n },\n },\n async ({ id, payload }) => {\n try {\n const parsedPayload = JSON.parse(payload);\n const data = await ctx.gql.workspace.request<{ triggerWebhook: unknown }>(TRIGGER_WEBHOOK, {\n id,\n payload: parsedPayload,\n });\n return jsonResult(data.triggerWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_trigger failed', { error });\n return errorResult(\n `Failed to trigger webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Auth helper for the auth module — ports VibeControlsMCPAuth from\n * vibecontrols-mcp/src/auth/index.ts to a ctx-aware factory.\n *\n * Differences from the legacy class:\n * - Per-ctx instance (no module-level singleton; each product MCP gets its own)\n * - Token persistence delegated to ctx.auth (StoredAuth file)\n * - Endpoints + clientId resolved via ctx.config.resolveOIDC + ctx.config.read\n * - pendingDeviceCode kept in closure scope (alive for the MCP server process,\n * suitable for stdio's lifetime; HTTP's per-session servers each get their own\n * pending state)\n *\n * Public surface mirrors the legacy class so the lifted auth/tools.ts works\n * without modification: startLogin / completeLogin / selectWorkspace /\n * listWorkspaces / getStatus / logout / ensureAuthenticated / getHeaders /\n * isLoggedIn / setOnTokensChanged.\n */\n\nimport type { McpContext } from '../../core/index.js';\nimport { fetchWorkspaces, issueWorkspaceToken } from '../../core/auth/device-code.js';\n\ninterface PendingDeviceCode {\n deviceCode: string;\n userCode: string;\n verificationUri: string;\n verificationUriComplete: string | null;\n expiresAt: number;\n interval: number;\n clientId: string;\n tokenUrl: string;\n}\n\nexport interface WorkspaceInfo {\n id: string;\n name: string;\n slug: string;\n tenantId: string;\n organizationId: string;\n}\n\nexport interface LoginStartResult {\n status: 'device_code_issued';\n verificationUri: string;\n verificationUriComplete: string | null;\n userCode: string;\n expiresIn: number;\n message: string;\n}\n\nexport interface LoginCompleteResult {\n status: 'authenticated' | 'workspace_selection_required' | 'pending' | 'expired';\n message: string;\n workspaces?: WorkspaceInfo[];\n}\n\nexport interface AuthHelper {\n startLogin(): Promise<LoginStartResult>;\n completeLogin(): Promise<LoginCompleteResult>;\n selectWorkspace(workspaceId: string, organizationId: string): Promise<void>;\n listWorkspaces(): Promise<WorkspaceInfo[]>;\n ensureAuthenticated(): Promise<void>;\n getStatus(): Promise<{\n authenticated: boolean;\n method: string;\n expiresAt: string | null;\n workspaceId: string | null;\n organizationId: string | null;\n workspaceTokenExpiresAt: string | null;\n hasWorkspaceToken: boolean;\n hasPendingLogin: boolean;\n }>;\n logout(): Promise<void>;\n getHeaders(): Record<string, string>;\n isLoggedIn(): boolean;\n setOnTokensChanged(cb: () => void): void;\n}\n\nconst helpers = new WeakMap<McpContext, AuthHelper>();\n\nexport function getAuth(ctx: McpContext): AuthHelper {\n const cached = helpers.get(ctx);\n if (cached) return cached;\n const helper = createAuthHelper(ctx);\n helpers.set(ctx, helper);\n return helper;\n}\n\nfunction createAuthHelper(ctx: McpContext): AuthHelper {\n let pending: PendingDeviceCode | null = null;\n let onTokensChanged: (() => void) | null = null;\n let refreshInProgress: Promise<void> | null = null;\n\n function notify(): void {\n onTokensChanged?.();\n }\n\n async function startLogin(): Promise<LoginStartResult> {\n const { oidcIssuer, clientId } = ctx.config.resolveOIDC();\n const deviceCodeUrl = `${oidcIssuer}/oidc/device/code`;\n const tokenUrl = `${oidcIssuer}/oauth/device/token`;\n\n const response = await fetch(deviceCodeUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n client_id: clientId,\n scope: 'openid profile email offline_access',\n }).toString(),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Device code request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n const deviceCode = data['device_code'] as string;\n const userCode = data['user_code'] as string;\n const verificationUri = data['verification_uri'] as string;\n const verificationUriComplete = (data['verification_uri_complete'] as string) ?? null;\n const expiresIn = (data['expires_in'] as number) ?? 900;\n const interval = (data['interval'] as number) ?? 5;\n\n pending = {\n deviceCode,\n userCode,\n verificationUri,\n verificationUriComplete,\n expiresAt: Date.now() + expiresIn * 1000,\n interval,\n clientId,\n tokenUrl,\n };\n\n return {\n status: 'device_code_issued',\n verificationUri,\n verificationUriComplete,\n userCode,\n expiresIn,\n message: `Open ${verificationUriComplete ?? verificationUri} in a browser and enter code: ${userCode}. Then call ${ctx.productName}_auth_complete to finish authentication.`,\n };\n }\n\n async function completeLogin(): Promise<LoginCompleteResult> {\n if (!pending) {\n throw new Error(\n `No pending login flow. Call ${ctx.productName}_auth_login first to start the device code flow.`,\n );\n }\n\n const p = pending;\n if (Date.now() >= p.expiresAt) {\n pending = null;\n return {\n status: 'expired',\n message: `Device code has expired. Call ${ctx.productName}_auth_login again to get a new code.`,\n };\n }\n\n const response = await fetch(p.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: p.deviceCode,\n client_id: p.clientId,\n }).toString(),\n });\n\n const data = (await response.json()) as Record<string, unknown>;\n\n if (response.ok && data['access_token']) {\n pending = null;\n const expiresIn = (data['expires_in'] as number) ?? 3600;\n const auth = ctx.auth.read() ?? { accessToken: '', refreshToken: '' };\n ctx.auth.write({\n ...auth,\n accessToken: data['access_token'] as string,\n refreshToken: (data['refresh_token'] as string) ?? '',\n expiresAt: Date.now() + expiresIn * 1000,\n authMethod: 'device_code',\n });\n ctx.gql.reset();\n return await handlePostLogin();\n }\n\n const errorCode = data['error'] as string | undefined;\n if (errorCode === 'authorization_pending') {\n return {\n status: 'pending',\n message: `Still waiting for user to authorize. Open ${p.verificationUriComplete ?? p.verificationUri} and enter code: ${p.userCode}. Then call ${ctx.productName}_auth_complete again.`,\n };\n } else if (errorCode === 'slow_down') {\n p.interval += 5;\n return {\n status: 'pending',\n message: `Authorization server asked to slow down. Wait a moment, then call ${ctx.productName}_auth_complete again.`,\n };\n } else if (errorCode === 'expired_token') {\n pending = null;\n return {\n status: 'expired',\n message: `Device code has expired. Call ${ctx.productName}_auth_login again.`,\n };\n } else if (errorCode === 'access_denied') {\n pending = null;\n throw new Error('Authorization was denied by the user.');\n } else {\n pending = null;\n throw new Error(\n `Device code error: ${(data['error_description'] as string) ?? errorCode ?? 'Unknown'}`,\n );\n }\n }\n\n async function handlePostLogin(): Promise<LoginCompleteResult> {\n try {\n const workspaces = await listWorkspaces();\n if (workspaces.length === 0) {\n notify();\n ctx.logger.info('Device code login successful (no workspaces found)');\n return {\n status: 'authenticated',\n message: `Authentication successful. No workspaces found — use ${ctx.productName}_auth_select_workspace when one is available.`,\n };\n }\n if (workspaces.length === 1) {\n const ws = workspaces[0];\n if (!ws)\n throw new Error('Unexpected: workspaces.length === 1 but workspaces[0] is undefined');\n await issueAndStoreWorkspaceToken(ws.id, ws.organizationId);\n ctx.logger.info('Device code login successful', {\n workspaceId: ws.id,\n workspaceName: ws.name,\n });\n return {\n status: 'authenticated',\n message: `Authentication successful. Workspace \"${ws.name}\" selected automatically.`,\n };\n }\n notify();\n ctx.logger.info('Device code login successful, workspace selection needed');\n return {\n status: 'workspace_selection_required',\n message: `Authentication successful. ${workspaces.length} workspaces available — call ${ctx.productName}_auth_select_workspace to choose one.`,\n workspaces,\n };\n } catch (wsError) {\n notify();\n ctx.logger.warn('Workspace discovery failed after login', {\n error: wsError instanceof Error ? wsError.message : String(wsError),\n });\n return {\n status: 'authenticated',\n message: `Authentication successful. Workspace discovery failed: ${wsError instanceof Error ? wsError.message : String(wsError)}`,\n };\n }\n }\n\n async function listWorkspaces(): Promise<WorkspaceInfo[]> {\n const auth = ctx.auth.read();\n if (!auth?.accessToken) throw new Error('Not authenticated. Please login first.');\n return fetchWorkspaces(ctx.config.read().globalEndpoint, auth.accessToken);\n }\n\n async function issueAndStoreWorkspaceToken(\n workspaceId: string,\n organizationId: string,\n ): Promise<void> {\n const auth = ctx.auth.read();\n if (!auth?.accessToken) throw new Error('Not authenticated.');\n const result = await issueWorkspaceToken(\n ctx.config.read().workspaceEndpoint,\n auth.accessToken,\n workspaceId,\n organizationId,\n );\n ctx.auth.write({\n ...auth,\n workspaceToken: result.token,\n workspaceTokenExpiresAt: new Date(result.expiresAt).getTime(),\n workspaceId,\n organizationId,\n });\n ctx.gql.reset();\n notify();\n }\n\n async function selectWorkspace(workspaceId: string, organizationId: string): Promise<void> {\n const auth = ctx.auth.read();\n if (!auth?.accessToken) throw new Error('Not authenticated. Please login first.');\n await issueAndStoreWorkspaceToken(workspaceId, organizationId);\n ctx.logger.info('Workspace selected', { workspaceId });\n }\n\n async function ensureAuthenticated(): Promise<void> {\n if (refreshInProgress) {\n await refreshInProgress;\n return;\n }\n const doEnsure = async (): Promise<void> => {\n const auth = ctx.auth.read();\n if (auth?.apiKey) return;\n if (!auth?.accessToken) {\n throw new Error(\n `Not authenticated. Call ${ctx.productName}_auth_login to start the login flow, then ${ctx.productName}_auth_complete after authorizing in the browser.`,\n );\n }\n // The shared gql client handles refresh via isTokenExpiringSoon + isWorkspaceTokenExpiringSoon —\n // trigger by issuing a no-op request that goes through the workspace client's refresh path.\n // We simulate a no-op via a cheap query if needed; today the gql wrapper does it lazily,\n // so we just delegate to it on the next request. Nothing to do here.\n };\n refreshInProgress = doEnsure().finally(() => {\n refreshInProgress = null;\n });\n await refreshInProgress;\n }\n\n function getStatus(): Promise<{\n authenticated: boolean;\n method: string;\n expiresAt: string | null;\n workspaceId: string | null;\n organizationId: string | null;\n workspaceTokenExpiresAt: string | null;\n hasWorkspaceToken: boolean;\n hasPendingLogin: boolean;\n }> {\n const auth = ctx.auth.read();\n return Promise.resolve({\n authenticated: !!(auth?.accessToken || auth?.apiKey),\n method: auth?.apiKey ? 'api_key' : auth?.accessToken ? 'oauth_token' : 'none',\n expiresAt: auth?.expiresAt ? new Date(auth.expiresAt).toISOString() : null,\n workspaceId: auth?.workspaceId ?? null,\n organizationId: auth?.organizationId ?? null,\n workspaceTokenExpiresAt: auth?.workspaceTokenExpiresAt\n ? new Date(auth.workspaceTokenExpiresAt).toISOString()\n : null,\n hasWorkspaceToken: !!auth?.workspaceToken,\n hasPendingLogin: !!pending,\n });\n }\n\n async function logout(): Promise<void> {\n pending = null;\n ctx.auth.clear();\n ctx.gql.reset();\n notify();\n ctx.logger.info('Logged out and cleared stored tokens');\n }\n\n function getHeaders(): Record<string, string> {\n const auth = ctx.auth.read();\n const headers: Record<string, string> = {};\n if (auth?.apiKey) headers['X-API-Key'] = auth.apiKey;\n if (auth?.accessToken) headers['Authorization'] = `Bearer ${auth.accessToken}`;\n if (auth?.workspaceToken)\n headers['X-Workspace-Authorization'] = `Bearer ${auth.workspaceToken}`;\n if (auth?.organizationId) headers['x-org-id'] = auth.organizationId;\n if (auth?.workspaceId) headers['x-workspace-id'] = auth.workspaceId;\n return headers;\n }\n\n function isLoggedIn(): boolean {\n const auth = ctx.auth.read();\n return !!(auth?.accessToken || auth?.apiKey);\n }\n\n function setOnTokensChanged(cb: () => void): void {\n onTokensChanged = cb;\n }\n\n return {\n startLogin,\n completeLogin,\n selectWorkspace,\n listWorkspaces,\n ensureAuthenticated,\n getStatus,\n logout,\n getHeaders,\n isLoggedIn,\n setOnTokensChanged,\n };\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext } from '../../core/index.js';\nimport { getAuth } from '../auth/legacy-auth.js';\nimport {\n LIST_AGENTS,\n ACTIVE_SESSIONS,\n LIST_TUNNELS,\n PINNED_NOTES,\n LIST_AUDIT_LOGS,\n AGENT_PLUGINS,\n} from './operations.js';\n\n/**\n * Static resource URIs registered below — tracked at function entry so the\n * shell's manifest reflects exactly what was registered, even if the body\n * registers them imperatively.\n */\nconst RESOURCE_URIS = [\n 'vibecontrols://schema',\n 'vibecontrols://config',\n 'vibecontrols://topology',\n 'vibecontrols://sessions/active',\n 'vibecontrols://notes/pinned',\n 'vibecontrols://audit/recent',\n 'vibecontrols://plugins',\n] as const;\n\n/**\n * Register all VibeControls MCP resources.\n */\nexport function registerVibecontrolsResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n RESOURCE_URIS.forEach(track);\n // vibecontrols://schema — GraphQL schema overview\n server.registerResource(\n 'vibecontrols-schema',\n 'vibecontrols://schema',\n {\n title: 'VibeControls GraphQL Schema',\n description:\n 'Overview of the VibeControls GraphQL API schema — types, queries, mutations, and enums.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://schema requested');\n\n const schema = `# VibeControls GraphQL Schema (Overview)\n\n## Entity Types\n- VibecontrolsAgent — Development environment agent\n- Vibe — Project/workspace/repository\n- Session — Terminal session (tmux, SSH, terminal, script)\n- VibecontrolsNote — Notes attached to vibes\n- Configuration — Key-value settings (scoped)\n- UISession — UI state persistence\n- Webhook — Event-driven HTTP callbacks\n- AiToolEvent — AI tool usage tracking\n- AgentTunnel — Remote access tunnels\n- AgentPlugin — Plugins on agents\n- Target — Connection targets (SSH, RDP, VNC, DIRECT)\n- VibeDeck — Command button grids\n- VibeDeckButton — Individual buttons in decks\n- DocsSite — Documentation sites\n- DocsPage — Individual documentation pages\n- DocsRevision — Build revisions for docs\n- AuditLog — Audit trail entries\n- SessionShare — Direct user shares\n- SessionShareLink — Link-based shares\n\n## Enums\n- VibeType: PROJECT, WORKSPACE, REPOSITORY, MONOREPO, PACKAGE, CUSTOM\n- VibeStatus: ACTIVE, INACTIVE, ARCHIVED, ERROR\n- SessionType: TMUX, SSH, TERMINAL, SCRIPT, CUSTOM\n- SessionStatus: PENDING, STARTING, RUNNING, STOPPED, ERROR, TERMINATED\n- ConfigScope: WORKSPACE, VIBE, SESSION, AGENT, USER, GLOBAL\n- TargetType: DIRECT, SSH, RDP, VNC\n- DocsVisibility: PRIVATE, PUBLIC\n`;\n\n return {\n contents: [\n {\n uri: 'vibecontrols://schema',\n text: schema,\n mimeType: 'text/plain',\n },\n ],\n };\n },\n );\n\n // vibecontrols://config — Current configuration\n server.registerResource(\n 'vibecontrols-config',\n 'vibecontrols://config',\n {\n title: 'VibeControls MCP Configuration',\n description: 'Current server configuration — endpoints, auth status, and transport settings.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://config requested');\n\n const auth = getAuth(ctx);\n const authStatus = await auth.getStatus();\n\n const configData = {\n server: {\n name: ctx.serverName,\n version: ctx.serverVersion,\n transport: 'unknown',\n },\n endpoints: {\n workspace: ctx.config.read().workspaceEndpoint,\n global: ctx.config.read().globalEndpoint,\n },\n auth: authStatus,\n environment: ctx.env,\n };\n\n return {\n contents: [\n {\n uri: 'vibecontrols://config',\n text: JSON.stringify(configData, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n },\n );\n\n // vibecontrols://topology — Agent graph + active sessions + tunnels\n server.registerResource(\n 'vibecontrols-topology',\n 'vibecontrols://topology',\n {\n title: 'Workspace Topology',\n description: 'Overview of agents, active sessions, and tunnels in the workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://topology requested');\n\n try {\n const [agents, sessions, tunnels] = await Promise.all([\n ctx.gql.workspace.request<{ vibecontrolsAgents: unknown }>(LIST_AGENTS, {}),\n ctx.gql.workspace.request<{ activeSessions: unknown }>(ACTIVE_SESSIONS, {}),\n ctx.gql.workspace.request<{ vibecontrolsAgentTunnels: unknown }>(LIST_TUNNELS),\n ]);\n\n const topology = {\n agents: agents.vibecontrolsAgents,\n activeSessions: sessions.activeSessions,\n tunnels: tunnels.vibecontrolsAgentTunnels,\n };\n\n return {\n contents: [\n {\n uri: 'vibecontrols://topology',\n text: JSON.stringify(topology, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://topology',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://sessions/active — All running sessions\n server.registerResource(\n 'vibecontrols-active-sessions',\n 'vibecontrols://sessions/active',\n {\n title: 'Active Sessions',\n description: 'All currently running terminal sessions.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://sessions/active requested');\n\n try {\n const data = await ctx.gql.workspace.request<{ activeSessions: unknown }>(\n ACTIVE_SESSIONS,\n {},\n );\n return {\n contents: [\n {\n uri: 'vibecontrols://sessions/active',\n text: JSON.stringify(data.activeSessions, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://sessions/active',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://notes/pinned — All pinned notes\n server.registerResource(\n 'vibecontrols-pinned-notes',\n 'vibecontrols://notes/pinned',\n {\n title: 'Pinned Notes',\n description: 'All pinned notes across the workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://notes/pinned requested');\n\n try {\n const data = await ctx.gql.workspace.request<{ pinnedNotes: unknown }>(PINNED_NOTES, {});\n return {\n contents: [\n {\n uri: 'vibecontrols://notes/pinned',\n text: JSON.stringify(data.pinnedNotes, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://notes/pinned',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://audit/recent — Last 20 audit entries\n server.registerResource(\n 'vibecontrols-recent-audit',\n 'vibecontrols://audit/recent',\n {\n title: 'Recent Audit Logs',\n description: 'The 20 most recent audit log entries.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://audit/recent requested');\n\n try {\n const data = await ctx.gql.workspace.request<{ vibeAuditLogs: unknown }>(LIST_AUDIT_LOGS, {\n filter: {},\n pagination: { limit: 20, offset: 0 },\n });\n return {\n contents: [\n {\n uri: 'vibecontrols://audit/recent',\n text: JSON.stringify(data.vibeAuditLogs, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://audit/recent',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://plugins — Installed plugins across agents\n server.registerResource(\n 'vibecontrols-plugins',\n 'vibecontrols://plugins',\n {\n title: 'Installed Plugins',\n description: 'Plugins installed across all agents in the workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://plugins requested');\n\n try {\n // First get all agents, then get plugins for each\n const agentData = await ctx.gql.workspace.request<{\n vibecontrolsAgents: { items: Array<{ id: string; name: string }> };\n }>(LIST_AGENTS, {});\n\n const agents = agentData.vibecontrolsAgents?.items ?? [];\n const pluginResults = await Promise.all(\n agents.map(async (agent) => {\n try {\n const data = await ctx.gql.workspace.request<{ agentPlugins: unknown }>(\n AGENT_PLUGINS,\n {\n agentId: agent.id,\n },\n );\n return { agentId: agent.id, agentName: agent.name, ...(data.agentPlugins as object) };\n } catch {\n return { agentId: agent.id, agentName: agent.name, error: 'Failed to fetch plugins' };\n }\n }),\n );\n\n return {\n contents: [\n {\n uri: 'vibecontrols://plugins',\n text: JSON.stringify(pluginResults, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://plugins',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext } from '../../core/index.js';\n\n/**\n * Static prompt names registered below.\n */\nconst PROMPT_NAMES = [\n 'vibecontrols-setup',\n 'vibecontrols-session-workflow',\n 'vibecontrols-onboarding',\n 'vibecontrols-incident-response',\n 'vibecontrols-deploy',\n 'vibecontrols-daily-standup',\n 'vibecontrols-runbook',\n] as const;\n\n/**\n * Register all VibeControls MCP prompts.\n */\nexport function registerVibecontrolsPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n PROMPT_NAMES.forEach(track);\n // vibecontrols-setup — Guide for workspace setup\n server.registerPrompt(\n 'vibecontrols-setup',\n {\n title: 'VibeControls Workspace Setup',\n description:\n 'Step-by-step guide for setting up a VibeControls workspace with agents, vibes, and sessions.',\n argsSchema: {\n projectPath: z.string().optional().describe('Local project path to set up'),\n agentName: z.string().optional().describe('Name for the agent'),\n },\n },\n ({ projectPath, agentName }) => {\n ctx.logger.debug('Prompt vibecontrols-setup called', { projectPath, agentName });\n\n const agentNote = agentName\n ? `Use the agent name \"${agentName}\".`\n : 'Choose a descriptive agent name based on the machine hostname.';\n const pathNote = projectPath\n ? `Set up the vibe for the project at \"${projectPath}\".`\n : 'Ask the user for the project path.';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me set up a VibeControls workspace. Follow these steps:\n\n1. **Check Auth**: Use vibecontrols_auth_status. If not authenticated, use vibecontrols_auth_login.\n2. **Create/Find Agent**: Use vibecontrols_agents_list. If none, use vibecontrols_agents_create. ${agentNote}\n3. **Create Vibe**: Use vibecontrols_vibes_create. ${pathNote} Set type=PROJECT.\n4. **Create Session**: Use vibecontrols_sessions_create linked to the vibe and agent.\n5. **Start Session**: Use vibecontrols_sessions_start.\n6. **Verify**: Use vibecontrols_sessions_active to confirm.\n\nShow results at each step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-session-workflow — Guide for session management\n server.registerPrompt(\n 'vibecontrols-session-workflow',\n {\n title: 'VibeControls Session Workflow',\n description: 'Guide for creating, managing, and monitoring terminal sessions.',\n argsSchema: {\n vibeId: z.string().optional().describe('Vibe ID to create sessions in'),\n command: z.string().optional().describe('Command to run'),\n },\n },\n ({ vibeId, command }) => {\n ctx.logger.debug('Prompt vibecontrols-session-workflow called', { vibeId, command });\n\n const vibeNote = vibeId\n ? `Use vibe ID \"${vibeId}\".`\n : 'First list vibes with vibecontrols_vibes_list and let the user pick one.';\n const commandNote = command ? `Run: \"${command}\"` : 'Ask the user what command to run.';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me manage terminal sessions. Workflow:\n\n1. **Select Vibe**: ${vibeNote}\n2. **Check Active**: Use vibecontrols_sessions_active.\n3. **Create Session**: vibecontrols_sessions_create with name, ${commandNote}, vibe + agent IDs.\n4. **Start**: vibecontrols_sessions_start.\n5. **Monitor**: vibecontrols_sessions_output.\n6. **Send Input** (if needed): vibecontrols_sessions_send_input.\n7. **Web Terminal** (optional): vibecontrols_sessions_start_terminal.\n8. **Stop/Restart**: vibecontrols_sessions_stop or vibecontrols_sessions_restart.\n\nShow results at each step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-onboarding — First-time onboarding\n server.registerPrompt(\n 'vibecontrols-onboarding',\n {\n title: 'VibeControls Onboarding',\n description:\n 'Complete onboarding guide: auth, workspace, agent, vibe, session, deck, and docs setup.',\n argsSchema: {\n projectPath: z.string().optional().describe('Project path'),\n },\n },\n ({ projectPath }) => {\n ctx.logger.debug('Prompt vibecontrols-onboarding called', { projectPath });\n\n const pathNote = projectPath ? `for \"${projectPath}\"` : '(ask for path)';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `I'm new to VibeControls. Walk me through complete setup ${pathNote}:\n\n1. **Authenticate**: vibecontrols_auth_login → vibecontrols_auth_select_workspace (if multiple).\n2. **Register Agent**: vibecontrols_agents_create for this machine.\n3. **Create Vibe**: vibecontrols_vibes_create with PROJECT type.\n4. **Create Sessions**: Create dev, test, and log sessions via vibecontrols_sessions_create.\n5. **Create Deck**: vibecontrols_decks_create with common command buttons (build, test, lint, dev).\n6. **Create Docs Site**: vibecontrols_docs_sites_create + vibecontrols_docs_pages_create for a getting-started page.\n7. **Pin a Note**: vibecontrols_notes_create with setup instructions, then vibecontrols_notes_pin.\n8. **Start Dev Session**: vibecontrols_sessions_start.\n\nGuide me step by step, showing results and asking before each step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-incident-response — Incident debugging workflow\n server.registerPrompt(\n 'vibecontrols-incident-response',\n {\n title: 'Incident Response',\n description:\n 'Guided incident investigation: health checks, logs, audit trail, and session sharing.',\n argsSchema: {\n agentId: z.string().optional().describe('Agent ID to investigate'),\n },\n },\n ({ agentId }) => {\n ctx.logger.debug('Prompt vibecontrols-incident-response called', { agentId });\n\n const agentNote = agentId\n ? `Focus on agent \"${agentId}\".`\n : 'List agents with vibecontrols_agents_list and identify the affected one.';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me investigate an incident. ${agentNote}\n\n1. **Agent Health**: vibecontrols_agents_probe to check connectivity.\n2. **All Agent Health**: vibecontrols_agents_health for full overview.\n3. **Active Sessions**: vibecontrols_sessions_active to see what's running.\n4. **Session Output**: vibecontrols_sessions_output for error logs.\n5. **Audit Trail**: vibecontrols_audit_list to see recent changes.\n6. **Audit Stats**: vibecontrols_audit_stats for activity summary.\n7. **Create Debug Session**: vibecontrols_sessions_create for investigation.\n8. **Share Session**: vibecontrols_sessions_share or vibecontrols_sessions_share_link_create for on-call.\n9. **Document Findings**: vibecontrols_notes_create with incident details.\n\nSummarize findings after each step and suggest next actions.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-deploy — Deployment workflow\n server.registerPrompt(\n 'vibecontrols-deploy',\n {\n title: 'Deployment Workflow',\n description: 'Guided deployment using vibe decks, sessions, and health checks.',\n argsSchema: {\n vibeId: z.string().optional().describe('Vibe ID to deploy'),\n environment: z.string().optional().describe('Target environment (alpha, prod)'),\n },\n },\n ({ vibeId, environment }) => {\n ctx.logger.debug('Prompt vibecontrols-deploy called', { vibeId, environment });\n\n const vibeNote = vibeId\n ? `Deploy vibe \"${vibeId}\".`\n : 'List vibes with vibecontrols_vibes_list and select one.';\n const envNote = environment || 'alpha';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me deploy to ${envNote}. ${vibeNote}\n\n1. **Pre-flight**: vibecontrols_sessions_active to check running state.\n2. **Find Deck**: vibecontrols_decks_list to find the deploy deck.\n3. **Run Tests**: vibecontrols_decks_buttons_execute for the test button.\n4. **Build**: vibecontrols_decks_buttons_execute for the build button.\n5. **Deploy**: vibecontrols_decks_buttons_execute for the deploy-${envNote} button.\n6. **Verify Health**: vibecontrols_agents_probe + vibecontrols_sessions_check_health.\n7. **Check Logs**: vibecontrols_sessions_output for any errors.\n8. **Record**: vibecontrols_notes_create with deployment summary.\n\nStop and confirm with me before the deploy step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-daily-standup — Daily standup summary\n server.registerPrompt(\n 'vibecontrols-daily-standup',\n {\n title: 'Daily Standup Summary',\n description: 'Generate a standup-ready summary of recent activity.',\n argsSchema: {\n since: z\n .string()\n .optional()\n .describe('Date to summarize from (ISO format, default: yesterday)'),\n },\n },\n ({ since }) => {\n ctx.logger.debug('Prompt vibecontrols-daily-standup called', { since });\n\n const sinceNote = since || 'yesterday';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Generate a standup summary since ${sinceNote}:\n\n1. **Audit Activity**: vibecontrols_audit_list with date filter for recent actions.\n2. **Audit Stats**: vibecontrols_audit_stats for activity breakdown.\n3. **Session Activity**: vibecontrols_sessions_list to see session activity.\n4. **AI Events**: vibecontrols_ai_events_list for AI tool usage.\n5. **Notes Created**: vibecontrols_notes_list for recently created notes.\n6. **Active State**: vibecontrols_sessions_active + vibecontrols_agents_health.\n\nCompile into a concise standup format:\n- What I did\n- What I'm doing today\n- Any blockers`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-runbook — Runbook authoring\n server.registerPrompt(\n 'vibecontrols-runbook',\n {\n title: 'Runbook Authoring',\n description: 'Create a documentation runbook for a service or project.',\n argsSchema: {\n vibeId: z.string().optional().describe('Vibe ID to create docs for'),\n topic: z\n .string()\n .optional()\n .describe('Runbook topic (e.g., deployment, incident-response)'),\n },\n },\n ({ vibeId, topic }) => {\n ctx.logger.debug('Prompt vibecontrols-runbook called', { vibeId, topic });\n\n const vibeNote = vibeId\n ? `for vibe \"${vibeId}\"`\n : '(select a vibe with vibecontrols_vibes_list first)';\n const topicNote = topic || 'general operations';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Create a runbook ${vibeNote} about \"${topicNote}\":\n\n1. **Create Docs Site**: vibecontrols_docs_sites_create linked to the vibe.\n2. **Create Overview Page**: vibecontrols_docs_pages_create with title \"Overview\" and a summary.\n3. **Create Prerequisites Page**: vibecontrols_docs_pages_create with requirements and setup.\n4. **Create Steps Page**: vibecontrols_docs_pages_create with step-by-step procedures.\n5. **Create Rollback Page**: vibecontrols_docs_pages_create with rollback procedures.\n6. **Create Troubleshooting Page**: vibecontrols_docs_pages_create with common issues.\n7. **Compile**: vibecontrols_docs_compile to build the docs.\n8. **Publish**: vibecontrols_docs_publish to make them live.\n\nGenerate appropriate content for each page based on the topic.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Vibecontrols module — rich module covering all 16 sub-entities of\n * `microfe-vibecontrols` (vibes, agents, sessions, notes, configuration,\n * webhooks, tunnels, ui-session, ai-events, targets, vibedecks, docs,\n * session-sharing, audit, actions, analytics).\n *\n * Lifted from vibecontrols-mcp/src/tools/*.ts during Phase 1.\n *\n * Resources (7) and prompts (7) co-locate with this module since they're\n * vibecontrols-specific workflows.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerActionTools } from './tools/actions.js';\nimport { registerAgentTools } from './tools/agents.js';\nimport { registerAiPromptTools } from './tools/ai-prompts.js';\nimport { registerVibeDeckShareLinkTools } from './tools/vibedeck-share-links.js';\nimport { registerCatalogTools } from './tools/catalogs.js';\nimport { registerComponentTools } from './tools/components.js';\nimport { registerScorecardTools } from './tools/scorecards.js';\nimport { registerTemplateTools } from './tools/templates.js';\nimport { registerAiEventTools } from './tools/ai-events.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerAuditTools } from './tools/audit.js';\nimport { registerConfigurationTools } from './tools/configuration.js';\nimport { registerConfigSecurityTools } from './tools/config-security.js';\nimport { registerConfigCITools } from './tools/config-ci.js';\nimport { registerConfigGitopsTools } from './tools/config-gitops.js';\nimport { registerConfigSettingsTools } from './tools/config-settings.js';\nimport { registerDocsTools } from './tools/docs.js';\nimport { registerNoteTools } from './tools/notes.js';\nimport { registerSessionSharingTools } from './tools/session-sharing.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerTargetTools } from './tools/targets.js';\nimport { registerTunnelTools } from './tools/tunnels.js';\nimport { registerSandboxTools } from './tools/sandboxes.js';\nimport { registerUISessionTools } from './tools/ui-session.js';\nimport { registerVibeDeckTools } from './tools/vibedecks.js';\nimport { registerVibeTools } from './tools/vibes.js';\nimport { registerWebhookTools } from './tools/webhooks.js';\nimport { registerVibecontrolsResources } from './resources.js';\nimport { registerVibecontrolsPrompts } from './prompts.js';\n\nconst vibecontrolsModule: McpModule = {\n id: 'vibecontrols',\n version: '0.0.1',\n displayName: 'VibeControls',\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerAgentTools(server, ctx, trackTool);\n registerVibeTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerNoteTools(server, ctx, trackTool);\n registerConfigurationTools(server, ctx, trackTool);\n registerConfigSecurityTools(server, ctx, trackTool);\n registerConfigCITools(server, ctx, trackTool);\n registerConfigGitopsTools(server, ctx, trackTool);\n registerConfigSettingsTools(server, ctx, trackTool);\n registerWebhookTools(server, ctx, trackTool);\n registerTunnelTools(server, ctx, trackTool);\n registerSandboxTools(server, ctx, trackTool);\n registerUISessionTools(server, ctx, trackTool);\n registerAiEventTools(server, ctx, trackTool);\n registerTargetTools(server, ctx, trackTool);\n registerVibeDeckTools(server, ctx, trackTool);\n registerDocsTools(server, ctx, trackTool);\n registerSessionSharingTools(server, ctx, trackTool);\n registerAuditTools(server, ctx, trackTool);\n registerActionTools(server, ctx, trackTool);\n registerAiPromptTools(server, ctx, trackTool);\n registerVibeDeckShareLinkTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n registerCatalogTools(server, ctx, trackTool);\n registerComponentTools(server, ctx, trackTool);\n registerTemplateTools(server, ctx, trackTool);\n registerScorecardTools(server, ctx, trackTool);\n\n registerVibecontrolsResources(server, ctx, trackResource);\n registerVibecontrolsPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default vibecontrolsModule;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/auth/device-code.ts","../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/vibecontrols/operations.ts","../../../src/modules/vibecontrols/tools/actions.ts","../../../src/modules/vibecontrols/tools/agents.ts","../../../src/modules/vibecontrols/tools/ai-prompts.ts","../../../src/modules/vibecontrols/tools/vibedeck-share-links.ts","../../../src/modules/vibecontrols/tools/catalogs.ts","../../../src/modules/vibecontrols/tools/components.ts","../../../src/modules/vibecontrols/tools/scorecards.ts","../../../src/modules/vibecontrols/tools/templates.ts","../../../src/modules/vibecontrols/tools/ai-events.ts","../../../src/modules/vibecontrols/tools/analytics.ts","../../../src/modules/vibecontrols/tools/audit.ts","../../../src/modules/vibecontrols/tools/configuration.ts","../../../src/modules/vibecontrols/tools/config-security.ts","../../../src/modules/vibecontrols/tools/config-ci.ts","../../../src/modules/vibecontrols/tools/config-gitops.ts","../../../src/modules/vibecontrols/tools/config-settings.ts","../../../src/modules/vibecontrols/tools/docs.ts","../../../src/modules/vibecontrols/tools/notes.ts","../../../src/modules/vibecontrols/tools/session-sharing.ts","../../../src/modules/vibecontrols/tools/sessions.ts","../../../src/modules/vibecontrols/tools/targets.ts","../../../src/modules/vibecontrols/tools/tunnels.ts","../../../src/modules/vibecontrols/tools/sandboxes.ts","../../../src/modules/vibecontrols/tools/ui-session.ts","../../../src/modules/vibecontrols/tools/vibedecks.ts","../../../src/modules/vibecontrols/tools/vibes.ts","../../../src/modules/vibecontrols/tools/webhooks.ts","../../../src/modules/auth/legacy-auth.ts","../../../src/modules/vibecontrols/resources.ts","../../../src/modules/vibecontrols/prompts.ts","../../../src/modules/vibecontrols/index.ts"],"names":["fetch","z","TemplateCategoryEnum"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * OAuth2 Device Code flow + Client Credentials flow + workspace token issuance.\n * Pure functions — operate on injected endpoints + client ids, no global state.\n *\n * Mirrors cli-sdk/src/core/auth/device-code.ts so a future shared\n * @burdenoff/auth-core extraction is mechanical.\n */\n\nimport fetch from 'cross-fetch';\n\nexport interface DeviceCodeResponse {\n deviceCode: string;\n userCode: string;\n verificationUri: string;\n verificationUriComplete: string | null;\n expiresIn: number;\n interval: number;\n}\n\nexport interface DeviceCodeTokenResult {\n accessToken: string;\n refreshToken: string;\n expiresIn: number;\n}\n\nexport interface ClientCredentialsResult {\n accessToken: string;\n expiresIn: number;\n scopes: string[];\n}\n\nexport interface OIDCConfig {\n oidcIssuer: string;\n clientId: string;\n}\n\nexport async function startDeviceCodeFlow(config: OIDCConfig): Promise<DeviceCodeResponse> {\n const url = `${config.oidcIssuer}/oidc/device/code`;\n const body = new URLSearchParams({\n client_id: config.clientId,\n scope: 'openid profile email offline_access',\n });\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Device code request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n\n return {\n deviceCode: data['device_code'] as string,\n userCode: data['user_code'] as string,\n verificationUri: data['verification_uri'] as string,\n verificationUriComplete: (data['verification_uri_complete'] as string) ?? null,\n expiresIn: data['expires_in'] as number,\n interval: (data['interval'] as number) ?? 5,\n };\n}\n\nexport type DeviceTokenPollResult =\n | { status: 'authenticated'; tokens: DeviceCodeTokenResult }\n | { status: 'pending' }\n | { status: 'slow_down'; newInterval: number }\n | { status: 'expired' }\n | { status: 'denied' };\n\n/**\n * Single-shot device-code token poll.\n *\n * Unlike cli-sdk's pollForToken which loops until done (suitable for blocking\n * CLI), MCP needs non-blocking semantics: the LLM calls auth_complete tool\n * repeatedly. This helper makes ONE poll attempt and returns a discriminated\n * union the caller can act on.\n */\nexport async function pollDeviceTokenOnce(\n deviceCode: string,\n interval: number,\n config: OIDCConfig,\n): Promise<DeviceTokenPollResult> {\n const url = `${config.oidcIssuer}/oauth/device/token`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceCode,\n client_id: config.clientId,\n }).toString(),\n });\n\n const data = (await response.json()) as Record<string, unknown>;\n\n if (response.ok && data['access_token']) {\n return {\n status: 'authenticated',\n tokens: {\n accessToken: data['access_token'] as string,\n refreshToken: (data['refresh_token'] as string) ?? '',\n expiresIn: (data['expires_in'] as number) ?? 3600,\n },\n };\n }\n\n const errorCode = data['error'] as string | undefined;\n switch (errorCode) {\n case 'authorization_pending':\n return { status: 'pending' };\n case 'slow_down':\n return { status: 'slow_down', newInterval: interval + 5 };\n case 'expired_token':\n return { status: 'expired' };\n case 'access_denied':\n return { status: 'denied' };\n default:\n throw new Error(\n `Device code polling failed: ${(data['error_description'] as string) ?? errorCode ?? 'Unknown error'}`,\n );\n }\n}\n\nexport async function clientCredentialsFlow(\n globalEndpoint: string,\n clientId: string,\n clientSecret: string,\n scopes?: string[],\n): Promise<ClientCredentialsResult> {\n const query = `\n mutation AuthenticateApp($input: AuthenticateAppInput!) {\n authenticateApp(input: $input) {\n accessToken tokenType expiresIn scopes\n }\n }\n `;\n\n const response = await fetch(globalEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n query,\n variables: { input: { clientId, clientSecret, scopes } },\n }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`App authentication failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: { authenticateApp: { accessToken: string; expiresIn: number; scopes: string[] } };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`App authentication failed: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n if (!data.data?.authenticateApp?.accessToken) {\n throw new Error('App authentication failed: no access token returned');\n }\n\n return data.data.authenticateApp;\n}\n\nexport async function issueWorkspaceToken(\n workspaceEndpoint: string,\n authToken: string,\n workspaceId: string,\n organizationId: string,\n): Promise<{ token: string; expiresAt: string; scopes: string[] }> {\n const query = `\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success token expiresAt scopes\n error { code message }\n }\n }\n `;\n\n const response = await fetch(workspaceEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}` },\n body: JSON.stringify({ query, variables: { input: { workspaceId, organizationId } } }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Workspace token request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: {\n issueWorkspaceToken: {\n success: boolean;\n token: string | null;\n expiresAt: string | null;\n scopes: string[] | null;\n error: { code: string; message: string } | null;\n };\n };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`Workspace token failed: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n\n const result = data.data?.issueWorkspaceToken;\n if (!result?.success || !result.token) {\n throw new Error(`Workspace token failed: ${result?.error?.message ?? 'Unknown error'}`);\n }\n\n return { token: result.token, expiresAt: result.expiresAt ?? '', scopes: result.scopes ?? [] };\n}\n\nexport async function fetchWorkspaces(\n globalEndpoint: string,\n authToken: string,\n): Promise<\n Array<{ id: string; name: string; slug: string; tenantId: string; organizationId: string }>\n> {\n const query = `\n query MyWorkspaces($limit: Int) {\n myWorkspaces(limit: $limit) {\n items { id name slug tenantId organizationId }\n }\n }\n `;\n\n const response = await fetch(globalEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}` },\n body: JSON.stringify({ query, variables: { limit: 50 } }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Failed to fetch workspaces (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: {\n myWorkspaces: {\n items: Array<{\n id: string;\n name: string;\n slug: string;\n tenantId: string;\n organizationId: string;\n }>;\n };\n };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`Failed to fetch workspaces: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n\n return data.data?.myWorkspaces?.items ?? [];\n}\n","/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","/**\n * Centralized GraphQL operations for the VibeControls MCP server.\n * Adapted from vibecontrols-cli/src/graphql/operations.ts with superset field selections.\n * Uses template string interpolation pattern (not gql tagged fragments).\n */\n\n// ---------------------------------------------------------------------------\n// Field Fragments (template string constants for interpolation)\n// ---------------------------------------------------------------------------\n\nexport const AGENT_FIELDS = `\n id name hostname platform architecture version\n tunnelUrl tunnelStatus apiUrl agentApiKey appId appClientId\n capabilities configuration isActive lastHeartbeat metadata\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const VIBE_FIELDS = `\n id name description path type status agentId parentId\n gitBranch gitRemote gitStatus environmentVariables tags metadata\n workspaceId archivedAt createdAt updatedAt deletedAt\n`;\n\nexport const SESSION_FIELDS = `\n id name command workingDirectory type status agentId vibeId\n providerSessionName providerWindowId providerPaneId pid exitCode ttydUrl lastOutput\n autoStart environmentVariables metadata startedAt stoppedAt\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const NOTE_FIELDS = `\n id title content tags isPinned vibeId createdBy metadata\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const CONFIG_FIELDS = `\n id key value scope scopeId isSecret\n workspaceId createdAt updatedAt\n`;\n\nexport const WEBHOOK_FIELDS = `\n id name url events agentIds isActive signingKey retryPolicy\n deliveryCount failureCount lastDelivery lastError\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const UI_SESSION_FIELDS = `\n id userId state activeVibeId activeSessionId\n recentVibes recentSessions workspaceId createdAt updatedAt\n`;\n\nexport const TUNNEL_FIELDS = `\n id workspaceId agentId slug name description\n providerKey protocol localHost localPort tlsMode\n status lastError hasBasicAuth basicAuthUser\n primaryDomain { id hostname type verificationStatus isPrimary }\n startedAt stoppedAt createdAt updatedAt\n`;\n\nexport const TUNNEL_DOMAIN_FIELDS_MCP = `\n id workspaceId tunnelId type hostname environment\n verificationStatus challengeRecordName challengeToken\n verifiedAt lastCheckedAt lastCheckError isPrimary\n dnsTargetHint createdAt updatedAt\n`;\n\nexport const TUNNEL_PROVIDER_FIELDS_MCP = `\n id key displayName description isEnabled pluginPackage minAgentVersion\n capabilities {\n platforms supportedVisibilities\n supportsCustomDomains supportsHttp supportsHttps supportsLiveLogs\n supportsManagedSubdomains supportsReservedSubdomain supportsRotateCredentials\n supportsSessionTokens supportsTcp supportsUdp supportsUsageMetrics\n }\n createdAt updatedAt\n`;\n\nexport const TUNNEL_SESSION_FIELDS_MCP = `\n id workspaceId tunnelId shardId agentId status\n tokenFingerprint issuedAt expiresAt connectedAt disconnectedAt\n revokedAt revokedReason clientIp bytesIn bytesOut\n`;\n\nexport const TUNNEL_SHARD_FIELDS_MCP = `\n id name providerId environment publicHost controlPort proxyPortRange\n region status capacity currentLoad metadata createdAt updatedAt\n`;\n\nexport const TARGET_FIELDS = `\n id name type host port username status\n workspaceId createdAt updatedAt\n`;\n\nexport const AGENT_CONNECTION_FIELDS = `\n id sourceAgentId targetId protocol status permissions\n createdAt updatedAt\n`;\n\nexport const VIBEDECK_FIELDS = `\n id name description isDefault\n workspaceId createdAt updatedAt\n`;\n\nexport const VIBEDECK_BUTTON_FIELDS = `\n id vibeDeckId label icon actionType actionId\n action { id name actionType }\n command script webhookUrl\n row column color category tags\n confirmationRequired keyboardShortcut style sortOrder\n createdAt updatedAt\n`;\n\nexport const AI_TOOL_EVENT_FIELDS = `\n id source eventType payload agentId\n workspaceId createdAt\n`;\n\nexport const DOCS_SITE_FIELDS = `\n id vibeId name visibility runtime\n workspaceId createdAt updatedAt\n`;\n\nexport const DOCS_PAGE_FIELDS = `\n id siteId title slug content parentId sidebarPosition status\n createdAt updatedAt\n`;\n\nexport const DOCS_REVISION_FIELDS = `\n id siteId revisionNumber status buildDurationMs artifactSizeBytes\n errorMessage publishedAt\n createdAt updatedAt\n`;\n\nexport const AUDIT_LOG_FIELDS = `\n id action resourceType resourceId actorId actorType\n status description ipAddress userAgent requestId\n workspaceId createdAt\n`;\n\nexport const SESSION_SHARE_FIELDS = `\n id sessionId sharedWithId permission status message\n createdBy createdAt expiresAt lastAccessAt accessCount revokedAt revokedBy\n`;\n\nexport const SESSION_SHARE_LINK_FIELDS = `\n id sessionId token permission expiresAt\n createdAt\n`;\n\n// ---------------------------------------------------------------------------\n// Agent Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_AGENTS = `\n query VibecontrolsAgents($filter: VibecontrolsAgentFilterInput) {\n vibecontrolsAgents(filter: $filter) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const GET_AGENT = `\n query VibecontrolsAgent($id: ID!) {\n vibecontrolsAgent(id: $id) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const CREATE_AGENT = `\n mutation CreateVibecontrolsAgent($input: CreateVibecontrolsAgentInput!) {\n createVibecontrolsAgent(input: $input) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const UPDATE_AGENT = `\n mutation UpdateVibecontrolsAgent($id: ID!, $input: UpdateVibecontrolsAgentInput!) {\n updateVibecontrolsAgent(id: $id, input: $input) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const DELETE_AGENT = `\n mutation DeleteVibecontrolsAgent($id: ID!) {\n deleteVibecontrolsAgent(id: $id)\n }\n`;\n\nexport const PROBE_AGENT_CONNECTION = `\n query ProbeAgentConnection($id: ID!) {\n probeAgentConnection(id: $id) {\n agentId reachable latencyMs error version tunnelUrl\n }\n }\n`;\n\nexport const AGENT_HEALTH_PROBES = `\n query VibecontrolsAgentHealthProbes {\n vibecontrolsAgentHealthProbes {\n agentId agentName healthy agentVersion errorMessage tunnelUrl uptime\n }\n }\n`;\n\nexport const AGENT_PLUGINS = `\n query AgentPlugins($agentId: ID!) {\n agentPlugins(agentId: $agentId) {\n agentId\n plugins {\n name packageName version description isActive tags metadata\n }\n total\n }\n }\n`;\n\nexport const INSTALL_AGENT_PLUGIN = `\n mutation InstallAgentPlugin($agentId: ID!, $packageName: String!) {\n installAgentPlugin(agentId: $agentId, packageName: $packageName) {\n success message\n plugin { name packageName version description isActive tags metadata }\n }\n }\n`;\n\nexport const REMOVE_AGENT_PLUGIN = `\n mutation RemoveAgentPlugin($agentId: ID!, $packageName: String!) {\n removeAgentPlugin(agentId: $agentId, packageName: $packageName) {\n success message\n plugin { name packageName version description isActive tags metadata }\n }\n }\n`;\n\nexport const AGENT_HEARTBEAT = `\n mutation VibecontrolsAgentHeartbeat($id: ID!) {\n vibecontrolsAgentHeartbeat(id: $id) { id isActive lastHeartbeat }\n }\n`;\n\nexport const DEACTIVATE_AGENT = `\n mutation DeactivateVibecontrolsAgent($id: ID!) {\n deactivateVibecontrolsAgent(id: $id) { ${AGENT_FIELDS} }\n }\n`;\n\nexport const AGENT_GRAPH = `\n query AgentGraph($workspaceId: ID!, $rootAgentId: ID) {\n agentGraph(workspaceId: $workspaceId, rootAgentId: $rootAgentId) {\n agents { ${AGENT_FIELDS} }\n connections { ${AGENT_CONNECTION_FIELDS} }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Vibe Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_VIBES = `\n query Vibes($filter: VibeFilterInput, $pagination: PaginationInput) {\n vibes(filter: $filter, pagination: $pagination) {\n items { ${VIBE_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_VIBE = `\n query Vibe($id: ID!) {\n vibe(id: $id) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const CREATE_VIBE = `\n mutation CreateVibe($input: CreateVibeInput!) {\n createVibe(input: $input) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE = `\n mutation UpdateVibe($id: ID!, $input: UpdateVibeInput!) {\n updateVibe(id: $id, input: $input) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const DELETE_VIBE = `\n mutation DeleteVibe($id: ID!) { deleteVibe(id: $id) }\n`;\n\nexport const ARCHIVE_VIBE = `\n mutation ArchiveVibe($id: ID!) {\n archiveVibe(id: $id) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const RESTORE_VIBE = `\n mutation RestoreVibe($id: ID!) {\n restoreVibe(id: $id) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const MOVE_VIBE = `\n mutation MoveVibe($id: ID!, $newParentId: ID) {\n moveVibe(id: $id, newParentId: $newParentId) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE_STATUS = `\n mutation UpdateVibeStatus($id: ID!, $status: VibeStatus!) {\n updateVibeStatus(id: $id, status: $status) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const VIBE_HIERARCHY = `\n query VibeHierarchy($rootId: ID) {\n vibeHierarchy(rootId: $rootId) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const SEARCH_VIBES = `\n query SearchVibes($query: String!, $limit: Int) {\n searchVibes(query: $query, limit: $limit) { ${VIBE_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE_GIT = `\n mutation UpdateVibeGit($id: ID!, $gitBranch: String, $gitRemote: String, $gitStatus: JSON) {\n updateVibeGit(id: $id, gitBranch: $gitBranch, gitRemote: $gitRemote, gitStatus: $gitStatus) {\n ${VIBE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Session Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_SESSIONS = `\n query Sessions($filter: SessionFilterInput, $pagination: PaginationInput) {\n sessions(filter: $filter, pagination: $pagination) {\n items { ${SESSION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_SESSION = `\n query Session($id: ID!) {\n session(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const CREATE_SESSION = `\n mutation CreateSession($input: CreateSessionInput!) {\n createSession(input: $input) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const START_SESSION = `\n mutation StartSession($id: ID!) {\n startSession(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const STOP_SESSION = `\n mutation StopSession($id: ID!) {\n stopSession(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const RESTART_SESSION = `\n mutation RestartSession($id: ID!) {\n restartSession(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const TERMINATE_SESSION = `\n mutation TerminateSession($id: ID!) {\n terminateSession(id: $id)\n }\n`;\n\nexport const SEND_SESSION_INPUT = `\n mutation SendSessionInput($id: ID!, $input: String!) {\n sendSessionInput(id: $id, input: $input)\n }\n`;\n\nexport const START_SESSION_TERMINAL = `\n mutation StartSessionTerminal($id: ID!) {\n startSessionTerminal(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const SESSION_OUTPUT = `\n query SessionOutput($id: ID!, $lines: Int) {\n sessionOutput(id: $id, lines: $lines)\n }\n`;\n\nexport const ACTIVE_SESSIONS = `\n query ActiveSessions($vibeId: ID) {\n activeSessions(vibeId: $vibeId) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const CHECK_SESSION_HEALTH = `\n mutation CheckSessionHealth {\n checkSessionHealth { checked updated errors }\n }\n`;\n\nexport const BULK_RESTART_SESSIONS = `\n mutation BulkRestartSessions($ids: [ID!]!) {\n bulkRestartSessions(ids: $ids) { succeeded failed }\n }\n`;\n\nexport const BULK_STOP_SESSIONS = `\n mutation BulkStopSessions($ids: [ID!]!) {\n bulkStopSessions(ids: $ids) { succeeded failed }\n }\n`;\n\nexport const BULK_TERMINATE_SESSIONS = `\n mutation BulkTerminateSessions($ids: [ID!]!) {\n bulkTerminateSessions(ids: $ids) { succeeded failed }\n }\n`;\n\nexport const UPDATE_SESSION = `\n mutation UpdateSession($id: ID!, $input: UpdateSessionInput!) {\n updateSession(id: $id, input: $input) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const UPDATE_SESSION_STATUS = `\n mutation UpdateSessionStatus($id: ID!, $status: VibecontrolsSessionStatus!) {\n updateSessionStatus(id: $id, status: $status) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const DELETE_SESSION = `\n mutation DeleteSession($id: ID!) { deleteSession(id: $id) }\n`;\n\nexport const KILL_SESSION = `\n mutation KillSession($id: ID!) { killSession(id: $id) }\n`;\n\n// ---------------------------------------------------------------------------\n// Session Sharing Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const SHARE_SESSION = `\n mutation ShareSession($input: ShareSessionInput!) {\n shareSession(input: $input) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const CREATE_SESSION_SHARE_LINK = `\n mutation CreateSessionShareLink($input: CreateSessionShareLinkInput!) {\n createSessionShareLink(input: $input) { ${SESSION_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const REVOKE_SESSION_SHARE = `\n mutation RevokeSessionShare($id: ID!) {\n revokeSessionShare(id: $id) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const REVOKE_SESSION_SHARE_LINK = `\n mutation RevokeSessionShareLink($id: ID!) {\n revokeSessionShareLink(id: $id) { ${SESSION_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const SESSION_SHARES = `\n query SessionShares($sessionId: ID!) {\n sessionShares(sessionId: $sessionId) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const SESSION_SHARE_LINKS = `\n query SessionShareLinks($sessionId: ID!) {\n sessionShareLinks(sessionId: $sessionId) { ${SESSION_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const SESSION_COLLABORATORS = `\n query SessionCollaborators($sessionId: ID!) {\n sessionCollaborators(sessionId: $sessionId) { userId hasControl joinedAt }\n }\n`;\n\nexport const SESSIONS_SHARED_WITH_ME = `\n query SessionsSharedWithMe($filter: SharedWithMeFilterInput, $pagination: PaginationInput) {\n sessionsSharedWithMe(filter: $filter, pagination: $pagination) {\n totalCount\n edges {\n cursor\n node { ${SESSION_SHARE_FIELDS} }\n }\n }\n }\n`;\n\nexport const UPDATE_SESSION_SHARE = `\n mutation UpdateSessionShare($id: ID!, $input: UpdateSessionShareInput!) {\n updateSessionShare(id: $id, input: $input) { ${SESSION_SHARE_FIELDS} }\n }\n`;\n\nexport const JOIN_SHARED_SESSION = `\n mutation JoinSharedSession($input: JoinSessionInput!) {\n joinSharedSession(input: $input) { id userId hasControl joinedAt role }\n }\n`;\n\nexport const LEAVE_SHARED_SESSION = `\n mutation LeaveSharedSession($sessionId: ID!) { leaveSharedSession(sessionId: $sessionId) }\n`;\n\nexport const REQUEST_SESSION_CONTROL = `\n mutation RequestSessionControl($sessionId: ID!) { requestSessionControl(sessionId: $sessionId) }\n`;\n\nexport const RELEASE_SESSION_CONTROL = `\n mutation ReleaseSessionControl($sessionId: ID!) { releaseSessionControl(sessionId: $sessionId) }\n`;\n\nexport const TRANSFER_SESSION_CONTROL = `\n mutation TransferSessionControl($sessionId: ID!, $toUserId: ID!) {\n transferSessionControl(sessionId: $sessionId, toUserId: $toUserId)\n }\n`;\n\nexport const STOP_SESSION_TERMINAL = `\n mutation StopSessionTerminal($id: ID!) {\n stopSessionTerminal(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const RESTART_SESSION_TERMINAL = `\n mutation RestartSessionTerminal($id: ID!) {\n restartSessionTerminal(id: $id) { ${SESSION_FIELDS} }\n }\n`;\n\nexport const START_TARGET_TERMINAL = `\n mutation StartTerminal($targetId: ID!, $shell: String) {\n startTerminal(targetId: $targetId, shell: $shell) {\n connectionId sessionId status host localPort remotePort ttydUrl\n }\n }\n`;\n\nexport const STOP_TARGET_TERMINAL = `\n mutation StopTerminal($sessionId: ID!) { stopTerminal(sessionId: $sessionId) }\n`;\n\nexport const EXPORT_SESSIONS = `\n mutation ExportSessions($input: SessionExportInput!) {\n exportSessions(input: $input) { count data format generatedAt }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// AI Prompts\n// ---------------------------------------------------------------------------\n\nexport const AI_PROMPT_FIELDS = `\n id name description content category status isShared\n tags variables metadata createdBy onBehalfOf updatedBy\n workspaceId usageCount lastUsedAt\n createdAt updatedAt deletedAt\n`;\n\nexport const LIST_AI_PROMPTS = `\n query AiPrompts($filter: AIPromptFilterInput, $pagination: PaginationInput) {\n aiPrompts(filter: $filter, pagination: $pagination) {\n items { ${AI_PROMPT_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_AI_PROMPT = `\n query AiPrompt($id: ID!) { aiPrompt(id: $id) { ${AI_PROMPT_FIELDS} } }\n`;\n\nexport const CREATE_AI_PROMPT = `\n mutation CreateAIPrompt($input: CreateAIPromptInput!) {\n createAIPrompt(input: $input) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\nexport const UPDATE_AI_PROMPT = `\n mutation UpdateAIPrompt($id: ID!, $input: UpdateAIPromptInput!) {\n updateAIPrompt(id: $id, input: $input) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\nexport const DELETE_AI_PROMPT = `\n mutation DeleteAIPrompt($id: ID!) { deleteAIPrompt(id: $id) }\n`;\n\nexport const DUPLICATE_AI_PROMPT = `\n mutation DuplicateAIPrompt($id: ID!, $name: String!) {\n duplicateAIPrompt(id: $id, name: $name) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\nexport const RENDER_AI_PROMPT = `\n mutation RenderAIPrompt($id: ID!, $variables: JSON) {\n renderAIPrompt(id: $id, variables: $variables) { promptId rendered }\n }\n`;\n\nexport const RECORD_AI_PROMPT_USAGE = `\n mutation RecordAIPromptUsage($id: ID!) {\n recordAIPromptUsage(id: $id) { ${AI_PROMPT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// VibeDeck share-links\n// ---------------------------------------------------------------------------\n\nexport const VIBE_DECK_SHARE_LINK_FIELDS = `\n id vibeDeckId token shareUrl name permission status visibility\n hasPassword allowIframe maxUses useCount expiresAt lastUsedAt\n createdBy createdAt\n`;\n\nexport const LIST_VIBE_DECK_SHARE_LINKS = `\n query VibeDeckShareLinks($vibeDeckId: ID!) {\n vibeDeckShareLinks(vibeDeckId: $vibeDeckId) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const CREATE_VIBE_DECK_SHARE_LINK = `\n mutation CreateVibeDeckShareLink($input: CreateVibeDeckShareLinkInput!) {\n createVibeDeckShareLink(input: $input) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBE_DECK_SHARE_LINK = `\n mutation UpdateVibeDeckShareLink($id: ID!, $input: UpdateVibeDeckShareLinkInput!) {\n updateVibeDeckShareLink(id: $id, input: $input) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const REVOKE_VIBE_DECK_SHARE_LINK = `\n mutation RevokeVibeDeckShareLink($id: ID!) {\n revokeVibeDeckShareLink(id: $id) { ${VIBE_DECK_SHARE_LINK_FIELDS} }\n }\n`;\n\nexport const VALIDATE_VIBE_DECK_SHARE_LINK = `\n query ValidateVibeDeckShareLink($token: String!) {\n validateVibeDeckShareLink(token: $token) {\n isValid error requiresPassword permission allowIframe\n expiresAt vibeDeckId vibeDeckName ownerName\n }\n }\n`;\n\nexport const SHARED_VIBE_DECK = `\n query SharedVibeDeck($token: String!, $password: String) {\n sharedVibeDeck(token: $token, password: $password) {\n id name description icon buttonSize colorTheme gridColumns gridRows\n permission\n buttons { id label actionType row column rowSpan colSpan icon color category confirmationRequired }\n }\n }\n`;\n\nexport const EXECUTE_SHARED_VIBE_DECK_BUTTON = `\n mutation ExecuteSharedVibeDeckButton($token: String!, $buttonId: ID!, $password: String) {\n executeSharedVibeDeckButton(token: $token, buttonId: $buttonId, password: $password) {\n success output error\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Note Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_NOTES = `\n query Notes($filter: VibecontrolsNoteFilterInput, $pagination: PaginationInput) {\n notes(filter: $filter, pagination: $pagination) {\n items { ${NOTE_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_NOTE = `\n query Note($id: ID!) {\n note(id: $id) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const CREATE_NOTE = `\n mutation CreateNote($input: CreateVibecontrolsNoteInput!) {\n createNote(input: $input) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const UPDATE_NOTE = `\n mutation UpdateNote($id: ID!, $input: UpdateVibecontrolsNoteInput!) {\n updateNote(id: $id, input: $input) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const DELETE_NOTE = `\n mutation DeleteNote($id: ID!) { deleteNote(id: $id) }\n`;\n\nexport const SEARCH_NOTES = `\n query SearchNotes($query: String!, $vibeId: ID, $limit: Int) {\n searchNotes(query: $query, vibeId: $vibeId, limit: $limit) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const PIN_NOTE = `\n mutation PinNote($id: ID!) {\n pinNote(id: $id) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const UNPIN_NOTE = `\n mutation UnpinNote($id: ID!) {\n unpinNote(id: $id) { ${NOTE_FIELDS} }\n }\n`;\n\nexport const PINNED_NOTES = `\n query PinnedNotes($vibeId: ID) {\n pinnedNotes(vibeId: $vibeId) { ${NOTE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_CONFIGURATIONS = `\n query Configurations($filter: ConfigurationFilterInput!, $pagination: PaginationInput) {\n configurations(filter: $filter, pagination: $pagination) {\n items { ${CONFIG_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_CONFIGURATION = `\n query Configuration($key: String!, $scope: ConfigScope!, $scopeId: String) {\n configuration(key: $key, scope: $scope, scopeId: $scopeId) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const CONFIGURATIONS_BY_SCOPE = `\n query ConfigurationsByScope($scope: ConfigScope!, $scopeId: String) {\n configurationsByScope(scope: $scope, scopeId: $scopeId) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const SET_CONFIGURATION = `\n mutation SetConfiguration($key: String!, $scope: ConfigScope!, $scopeId: ID, $value: JSON!, $isSecret: Boolean) {\n setConfiguration(key: $key, scope: $scope, scopeId: $scopeId, value: $value, isSecret: $isSecret) { ${CONFIG_FIELDS} }\n }\n`;\n\nexport const DELETE_CONFIGURATION = `\n mutation DeleteConfiguration($key: String!, $scope: ConfigScope!, $scopeId: String) {\n deleteConfiguration(key: $key, scope: $scope, scopeId: $scopeId)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Webhook Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_WEBHOOKS = `\n query Webhooks($filter: WebhookFilterInput, $pagination: PaginationInput) {\n webhooks(filter: $filter, pagination: $pagination) {\n items { ${WEBHOOK_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_WEBHOOK = `\n query Webhook($id: ID!) {\n webhook(id: $id) { ${WEBHOOK_FIELDS} }\n }\n`;\n\nexport const CREATE_WEBHOOK = `\n mutation CreateWebhook($input: CreateWebhookInput!) {\n createWebhook(input: $input) { ${WEBHOOK_FIELDS} }\n }\n`;\n\nexport const UPDATE_WEBHOOK = `\n mutation UpdateWebhook($id: ID!, $input: UpdateWebhookInput!) {\n updateWebhook(id: $id, input: $input) { ${WEBHOOK_FIELDS} }\n }\n`;\n\nexport const DELETE_WEBHOOK = `\n mutation DeleteWebhook($id: ID!) { deleteWebhook(id: $id) }\n`;\n\nexport const TEST_WEBHOOK = `\n mutation TestWebhook($id: ID!) { testWebhook(id: $id) }\n`;\n\nexport const TRIGGER_WEBHOOK = `\n mutation TriggerWebhook($id: ID!, $payload: JSON) {\n triggerWebhook(id: $id, payload: $payload)\n }\n`;\n\nexport const RESET_WEBHOOK_FAILURES = `\n mutation ResetWebhookFailures($id: ID!) {\n resetWebhookFailures(id: $id) { ${WEBHOOK_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Tunnel Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_TUNNELS = `\n query Tunnels($filter: TunnelFilterInput, $pagination: PaginationInput) {\n tunnels(filter: $filter, pagination: $pagination) {\n items { ${TUNNEL_FIELDS} }\n total\n hasMore\n }\n }\n`;\n\nexport const GET_TUNNEL = `\n query Tunnel($id: ID!) { tunnel(id: $id) { ${TUNNEL_FIELDS} } }\n`;\n\nexport const GET_TUNNEL_BY_SLUG = `\n query TunnelBySlug($slug: String!) {\n tunnelBySlug(slug: $slug) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const CREATE_TUNNEL = `\n mutation CreateTunnel($input: CreateTunnelInput!) {\n createTunnel(input: $input) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const UPDATE_TUNNEL = `\n mutation UpdateTunnel($id: ID!, $input: UpdateTunnelInput!) {\n updateTunnel(id: $id, input: $input) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const START_TUNNEL = `\n mutation StartTunnel($id: ID!) { startTunnel(id: $id) { ${TUNNEL_FIELDS} } }\n`;\n\nexport const STOP_TUNNEL = `\n mutation StopTunnel($id: ID!) { stopTunnel(id: $id) { ${TUNNEL_FIELDS} } }\n`;\n\nexport const DELETE_TUNNEL = `\n mutation DeleteTunnel($id: ID!) { deleteTunnel(id: $id) }\n`;\n\nexport const ROTATE_TUNNEL_CREDENTIALS = `\n mutation RotateTunnelCredentials($id: ID!) {\n rotateTunnelCredentials(id: $id) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const ISSUE_TUNNEL_SESSION = `\n mutation IssueTunnelSession($tunnelId: ID!, $ttlSeconds: Int) {\n issueTunnelSession(tunnelId: $tunnelId, ttlSeconds: $ttlSeconds) {\n session { ${TUNNEL_SESSION_FIELDS_MCP} }\n token\n agentConfigHint\n }\n }\n`;\n\nexport const REVOKE_TUNNEL_SESSION = `\n mutation RevokeTunnelSession($sessionId: ID!, $reason: String) {\n revokeTunnelSession(sessionId: $sessionId, reason: $reason)\n }\n`;\n\nexport const LIST_TUNNEL_SESSIONS = `\n query TunnelSessions($tunnelId: ID!, $pagination: PaginationInput) {\n tunnelSessions(tunnelId: $tunnelId, pagination: $pagination) {\n items { ${TUNNEL_SESSION_FIELDS_MCP} }\n total\n hasMore\n }\n }\n`;\n\nexport const LIST_TUNNEL_PROVIDERS = `\n query TunnelProviders { tunnelProviders { ${TUNNEL_PROVIDER_FIELDS_MCP} } }\n`;\n\nexport const GET_TUNNEL_PROVIDER = `\n query TunnelProvider($key: TunnelProviderKey!) {\n tunnelProvider(key: $key) { ${TUNNEL_PROVIDER_FIELDS_MCP} }\n }\n`;\n\nexport const LIST_TUNNEL_SHARDS = `\n query TunnelShards($environment: TunnelEnvironment) {\n tunnelShards(environment: $environment) { ${TUNNEL_SHARD_FIELDS_MCP} }\n }\n`;\n\nexport const TUNNEL_USAGE = `\n query TunnelUsage($tunnelId: ID!, $from: DateTime!, $to: DateTime!) {\n tunnelUsage(tunnelId: $tunnelId, from: $from, to: $to) {\n tunnelId hourBucket bytesIn bytesOut connections requests\n }\n }\n`;\n\nexport const TUNNEL_AUDIT = `\n query TunnelAudit($tunnelId: ID!, $pagination: PaginationInput) {\n tunnelAudit(tunnelId: $tunnelId, pagination: $pagination) {\n items {\n id action resourceType resourceId actorId actorType\n status description ipAddress userAgent requestId\n workspaceId createdAt\n }\n total\n hasMore\n }\n }\n`;\n\nexport const LIST_TUNNEL_DOMAINS = `\n query TunnelDomains($tunnelId: ID, $filter: TunnelDomainFilterInput, $pagination: PaginationInput) {\n tunnelDomains(tunnelId: $tunnelId, filter: $filter, pagination: $pagination) {\n items { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n total\n hasMore\n }\n }\n`;\n\nexport const GET_TUNNEL_DOMAIN = `\n query TunnelDomain($id: ID!) {\n tunnelDomain(id: $id) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const RESERVE_TUNNEL_SUBDOMAIN = `\n mutation ReserveTunnelSubdomain($input: ReserveTunnelSubdomainInput!) {\n reserveTunnelSubdomain(input: $input) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const REGISTER_CUSTOM_TUNNEL_DOMAIN = `\n mutation RegisterCustomTunnelDomain($input: RegisterCustomDomainInput!) {\n registerCustomTunnelDomain(input: $input) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const VERIFY_TUNNEL_DOMAIN = `\n mutation VerifyTunnelDomain($domainId: ID!) {\n verifyTunnelDomain(domainId: $domainId) { ${TUNNEL_DOMAIN_FIELDS_MCP} }\n }\n`;\n\nexport const ATTACH_TUNNEL_DOMAIN = `\n mutation AttachTunnelDomain($tunnelId: ID!, $domainId: ID!, $makePrimary: Boolean) {\n attachTunnelDomain(tunnelId: $tunnelId, domainId: $domainId, makePrimary: $makePrimary) {\n ${TUNNEL_FIELDS}\n }\n }\n`;\n\nexport const DETACH_TUNNEL_DOMAIN = `\n mutation DetachTunnelDomain($tunnelId: ID!, $domainId: ID!) {\n detachTunnelDomain(tunnelId: $tunnelId, domainId: $domainId) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const DELETE_TUNNEL_DOMAIN = `\n mutation DeleteTunnelDomain($domainId: ID!) {\n deleteTunnelDomain(domainId: $domainId)\n }\n`;\n\nexport const PROBE_AGENT_TUNNEL = `\n query ProbeAgentTunnel($url: String!, $agentApiKey: String) {\n probeAgentTunnel(url: $url, agentApiKey: $agentApiKey) {\n agentId reachable latencyMs error version tunnelUrl\n }\n }\n`;\n\nexport const ADD_AGENT_FROM_TUNNEL = `\n mutation AddVibecontrolsAgentFromTunnel($input: AddAgentFromTunnelInput!) {\n addVibecontrolsAgentFromTunnel(input: $input) {\n success clientId clientSecret devportalApplicationId error\n agent { id name workspaceId isActive }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// UI Session Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const GET_UI_SESSION = `\n query { uiSession { ${UI_SESSION_FIELDS} } }\n`;\n\nexport const SAVE_UI_SESSION = `\n mutation SaveUISession($input: SaveUISessionInput!) {\n saveUISession(input: $input) { ${UI_SESSION_FIELDS} }\n }\n`;\n\nexport const CLEAR_UI_SESSION = `\n mutation { clearUISession }\n`;\n\n// ---------------------------------------------------------------------------\n// AI Tool Event Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_AI_TOOL_EVENTS = `\n query AiToolEvents($filter: AiToolEventFilterInput, $pagination: PaginationInput) {\n aiToolEvents(filter: $filter, pagination: $pagination) {\n items { ${AI_TOOL_EVENT_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const RECENT_AI_TOOL_EVENTS = `\n query RecentAiToolEvents($agentId: ID!, $limit: Int) {\n recentAiToolEvents(agentId: $agentId, limit: $limit) { ${AI_TOOL_EVENT_FIELDS} }\n }\n`;\n\nexport const CREATE_AI_TOOL_EVENT = `\n mutation CreateAiToolEvent($input: CreateAiToolEventInput!) {\n createAiToolEvent(input: $input) { ${AI_TOOL_EVENT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Target Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_TARGETS = `\n query Targets($workspaceId: ID!, $filter: TargetFilterInput, $limit: Int, $offset: Int) {\n targets(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset) {\n items { ${TARGET_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_TARGET = `\n query Target($id: ID!) {\n target(id: $id) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const CREATE_TARGET = `\n mutation CreateTarget($workspaceId: ID!, $input: CreateTargetInput!) {\n createTarget(workspaceId: $workspaceId, input: $input) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const UPDATE_TARGET = `\n mutation UpdateTarget($id: ID!, $input: UpdateTargetInput!) {\n updateTarget(id: $id, input: $input) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const DELETE_TARGET = `\n mutation DeleteTarget($id: ID!) { deleteTarget(id: $id) }\n`;\n\nexport const TEST_TARGET = `\n query TestTarget($id: ID!) {\n testTarget(id: $id) { success error latencyMs }\n }\n`;\n\nexport const IMPORT_TARGETS_FROM_CONFIG = `\n mutation ImportTargetsFromConfig($agentId: ID!, $hosts: [ConfigHostInput!]!, $workspaceId: ID!) {\n importTargetsFromConfig(agentId: $agentId, hosts: $hosts, workspaceId: $workspaceId) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const SCAN_SSH_CONFIG = `\n mutation ScanSSHConfig($agentId: ID!, $configPath: String) {\n scanSSHConfig(agentId: $agentId, configPath: $configPath) { ${TARGET_FIELDS} }\n }\n`;\n\nexport const INSTALL_AGENT_ON_TARGET = `\n mutation InstallAgentOnTarget($sourceAgentId: ID!, $targetId: ID!, $agentPort: Int) {\n installAgentOnTarget(sourceAgentId: $sourceAgentId, targetId: $targetId, agentPort: $agentPort) { success error }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// VibeDeck Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_VIBEDECKS = `\n query VibeDecks($filter: VibeDeckFilterInput, $pagination: PaginationInput) {\n vibeDecks(filter: $filter, pagination: $pagination) {\n items { ${VIBEDECK_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_VIBEDECK = `\n query VibeDeck($id: ID!) {\n vibeDeck(id: $id) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const DEFAULT_VIBEDECK = `\n query { defaultVibeDeck { ${VIBEDECK_FIELDS} } }\n`;\n\nexport const CREATE_VIBEDECK = `\n mutation CreateVibeDeck($input: CreateVibeDeckInput!) {\n createVibeDeck(input: $input) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBEDECK = `\n mutation UpdateVibeDeck($id: ID!, $input: UpdateVibeDeckInput!) {\n updateVibeDeck(id: $id, input: $input) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const DELETE_VIBEDECK = `\n mutation DeleteVibeDeck($id: ID!) { deleteVibeDeck(id: $id) }\n`;\n\nexport const DUPLICATE_VIBEDECK = `\n mutation DuplicateVibeDeck($id: ID!, $name: String) {\n duplicateVibeDeck(id: $id, name: $name) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const SET_DEFAULT_VIBEDECK = `\n mutation SetDefaultVibeDeck($id: ID!) {\n setDefaultVibeDeck(id: $id) { ${VIBEDECK_FIELDS} }\n }\n`;\n\nexport const LIST_VIBEDECK_BUTTONS = `\n query VibeDeckButtons($filter: VibeDeckButtonFilterInput, $pagination: PaginationInput) {\n vibeDeckButtons(filter: $filter, pagination: $pagination) {\n items { ${VIBEDECK_BUTTON_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_VIBEDECK_BUTTON = `\n query VibeDeckButton($id: ID!) {\n vibeDeckButton(id: $id) { ${VIBEDECK_BUTTON_FIELDS} }\n }\n`;\n\nexport const CREATE_VIBEDECK_BUTTON = `\n mutation CreateVibeDeckButton($input: CreateVibeDeckButtonInput!) {\n createVibeDeckButton(input: $input) { ${VIBEDECK_BUTTON_FIELDS} }\n }\n`;\n\nexport const UPDATE_VIBEDECK_BUTTON = `\n mutation UpdateVibeDeckButton($id: ID!, $input: UpdateVibeDeckButtonInput!) {\n updateVibeDeckButton(id: $id, input: $input) { ${VIBEDECK_BUTTON_FIELDS} }\n }\n`;\n\nexport const DELETE_VIBEDECK_BUTTON = `\n mutation DeleteVibeDeckButton($id: ID!) { deleteVibeDeckButton(id: $id) }\n`;\n\nexport const EXECUTE_VIBEDECK_BUTTON = `\n mutation ExecuteVibeDeckButton($id: ID!, $agentId: ID!) {\n executeVibeDeckButton(id: $id, agentId: $agentId) { success output error }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Action Field Fragments\n// ---------------------------------------------------------------------------\n\nexport const ACTION_FIELDS = `\n id name description actionType sourceType triggerType\n command script webhookUrl workflowDefinition\n tags storeItemId storeVersion metadata\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const ACTION_EXECUTION_FIELDS = `\n id actionId status input output error\n startedAt completedAt durationMs triggeredBy metadata\n workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Action Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_ACTIONS = `\n query Actions($filter: ActionFilterInput, $pagination: PaginationInput) {\n actions(filter: $filter, pagination: $pagination) {\n items { ${ACTION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_ACTION = `\n query Action($id: ID!) {\n action(id: $id) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const CREATE_ACTION = `\n mutation CreateAction($input: CreateActionInput!) {\n createAction(input: $input) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const UPDATE_ACTION = `\n mutation UpdateAction($id: ID!, $input: UpdateActionInput!) {\n updateAction(id: $id, input: $input) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const DELETE_ACTION = `\n mutation DeleteAction($id: ID!) { deleteAction(id: $id) }\n`;\n\nexport const DUPLICATE_ACTION = `\n mutation DuplicateAction($id: ID!, $name: String) {\n duplicateAction(id: $id, name: $name) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const EXECUTE_ACTION = `\n mutation ExecuteAction($id: ID!, $input: ExecuteActionInput) {\n executeAction(id: $id, input: $input) { ${ACTION_EXECUTION_FIELDS} }\n }\n`;\n\nexport const INSTALL_ACTION_FROM_STORE = `\n mutation InstallActionFromStore($storeItemId: String!, $version: String, $name: String) {\n installActionFromStore(storeItemId: $storeItemId, version: $version, name: $name) { ${ACTION_FIELDS} }\n }\n`;\n\nexport const CANCEL_ACTION_EXECUTION = `\n mutation CancelActionExecution($id: ID!) {\n cancelActionExecution(id: $id) { ${ACTION_EXECUTION_FIELDS} }\n }\n`;\n\nexport const LIST_ACTION_EXECUTIONS = `\n query ActionExecutions($filter: ActionExecutionFilterInput, $pagination: PaginationInput) {\n actionExecutions(filter: $filter, pagination: $pagination) {\n items { ${ACTION_EXECUTION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_ACTION_EXECUTION = `\n query ActionExecution($id: ID!) {\n actionExecution(id: $id) { ${ACTION_EXECUTION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Scheduled Job Field Fragments\n// ---------------------------------------------------------------------------\n\nexport const SCHEDULED_JOB_FIELDS = `\n id name scheduleType status actionId\n cronExpression timezone scheduledAt\n interval intervalUnit startDate endDate\n nextExecutionAt lastExecutionAt\n priority tags\n`;\n\n// ---------------------------------------------------------------------------\n// Scheduled Job Queries / Mutations (wspace-scheduler-svc via gateway)\n// ---------------------------------------------------------------------------\n\nexport const CREATE_SCHEDULED_JOB = `\n mutation CreateScheduledJob($workspaceId: ID!, $input: CreateScheduledJobInput!) {\n createScheduledJob(workspaceId: $workspaceId, input: $input) { ${SCHEDULED_JOB_FIELDS} }\n }\n`;\n\nexport const DELETE_SCHEDULED_JOB = `\n mutation DeleteScheduledJob($id: ID!) { deleteScheduledJob(id: $id) }\n`;\n\nexport const LIST_SCHEDULED_JOBS = `\n query ScheduledJobs($workspaceId: ID!, $filter: JobFilterInput, $pagination: SchedulerPaginationInput) {\n scheduledJobs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n jobs { ${SCHEDULED_JOB_FIELDS} }\n total hasMore\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Docs Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_DOCS_SITES = `\n query DocsSites($filter: VibecontrolsDocsSiteFilterInput, $pagination: PaginationInput) {\n docsSites(filter: $filter, pagination: $pagination) {\n items { ${DOCS_SITE_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_DOCS_SITE = `\n query DocsSite($vibeId: ID!) {\n docsSite(vibeId: $vibeId) { ${DOCS_SITE_FIELDS} }\n }\n`;\n\nexport const CREATE_DOCS_SITE = `\n mutation CreateDocsSite($input: CreateVibecontrolsDocsSiteInput!) {\n createDocsSite(input: $input) { ${DOCS_SITE_FIELDS} }\n }\n`;\n\nexport const UPDATE_DOCS_SITE = `\n mutation UpdateDocsSite($id: ID!, $input: UpdateVibecontrolsDocsSiteInput!) {\n updateDocsSite(id: $id, input: $input) { ${DOCS_SITE_FIELDS} }\n }\n`;\n\nexport const DELETE_DOCS_SITE = `\n mutation DeleteDocsSite($id: ID!) { deleteDocsSite(id: $id) }\n`;\n\nexport const LIST_DOCS_PAGES = `\n query DocsPages($siteId: ID!, $filter: VibecontrolsDocsPageFilterInput) {\n docsPages(siteId: $siteId, filter: $filter) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const GET_DOCS_PAGE = `\n query DocsPage($id: ID!) {\n docsPage(id: $id) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const CREATE_DOCS_PAGE = `\n mutation CreateDocsPage($input: CreateVibecontrolsDocsPageInput!) {\n createDocsPage(input: $input) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const UPDATE_DOCS_PAGE = `\n mutation UpdateDocsPage($id: ID!, $input: UpdateVibecontrolsDocsPageInput!) {\n updateDocsPage(id: $id, input: $input) { ${DOCS_PAGE_FIELDS} }\n }\n`;\n\nexport const DELETE_DOCS_PAGE = `\n mutation DeleteDocsPage($id: ID!) { deleteDocsPage(id: $id) }\n`;\n\nexport const LIST_DOCS_REVISIONS = `\n query DocsRevisions($siteId: ID!, $pagination: PaginationInput) {\n docsRevisions(siteId: $siteId, pagination: $pagination) {\n items { ${DOCS_REVISION_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const COMPILE_DOCS_SITE = `\n mutation CompileDocsSite($siteId: ID!, $publish: Boolean) {\n compileDocsSite(siteId: $siteId, publish: $publish) { ${DOCS_REVISION_FIELDS} }\n }\n`;\n\nexport const PUBLISH_DOCS_REVISION = `\n mutation PublishDocsRevision($revisionId: ID!) {\n publishDocsRevision(revisionId: $revisionId) { ${DOCS_REVISION_FIELDS} }\n }\n`;\n\nexport const ROLLBACK_DOCS_REVISION = `\n mutation RollbackDocsRevision($siteId: ID!, $revisionId: ID!) {\n rollbackDocsRevision(siteId: $siteId, revisionId: $revisionId) { ${DOCS_REVISION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Audit Log Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const LIST_AUDIT_LOGS = `\n query VibeAuditLogs($filter: VibeAuditLogFilterInput, $pagination: PaginationInput) {\n vibeAuditLogs(filter: $filter, pagination: $pagination) {\n items { ${AUDIT_LOG_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_AUDIT_LOG = `\n query VibeAuditLog($id: ID!) {\n vibeAuditLog(id: $id) { ${AUDIT_LOG_FIELDS} }\n }\n`;\n\nexport const AUDIT_LOG_STATS = `\n query VibeAuditLogStats($filter: VibeAuditLogFilterInput) {\n vibeAuditLogStats(filter: $filter) {\n totalLogs\n logsByAction { action count }\n logsByResourceType { resourceType count }\n logsByStatus { status count }\n }\n }\n`;\n\nexport const EXPORT_AUDIT_LOGS = `\n mutation ExportVibeAuditLogs($filter: VibeAuditLogFilterInput, $format: String) {\n exportVibeAuditLogs(filter: $filter, format: $format)\n }\n`;\n\nexport const DELETE_AUDIT_LOG = `\n mutation DeleteVibeAuditLog($id: ID!, $reason: String) {\n deleteVibeAuditLog(id: $id, reason: $reason)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Auth Operations (Global Gateway)\n// ---------------------------------------------------------------------------\n\nexport const MY_WORKSPACES = `\n query MyWorkspaces($limit: Int) {\n myWorkspaces(limit: $limit) {\n items { id name slug tenantId organizationId }\n }\n }\n`;\n\nexport const ISSUE_WORKSPACE_TOKEN = `\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success token expiresAt scopes\n error { code message }\n }\n }\n`;\n\nexport const REFRESH_TOKEN = `\n mutation RefreshToken($token: String!) {\n refreshToken(token: $token) { accessToken refreshToken expiresIn }\n }\n`;\n\nexport const SIGN_OUT = `mutation { signOut }`;\n\n// ---------------------------------------------------------------------------\n// Analytics\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// Sandbox Queries / Mutations\n// ---------------------------------------------------------------------------\n\nexport const SANDBOX_FIELDS = `\n id name description template mode status\n crdName podName namespace runtimeClass\n containers { name image ports { containerPort name protocol } env { name value } command args resources { requestsCpu requestsMemory limitsCpu limitsMemory } }\n containerStatuses { name ready port restartCount }\n resources { cpuRequest cpuLimit memoryRequest memoryLimit }\n storage { mode sizeGi mountPath retainOnDelete }\n network { exposeService internalUrl containerUrls serviceName }\n ttlSeconds expiresAt metadata errorMessage\n workspaceId createdBy createdAt updatedAt stoppedAt\n`;\n\nexport const LIST_SANDBOXES = `\n query ListSandboxes($filter: SandboxFilterInput, $pagination: SandboxPaginationInput, $context: ContextInput!) {\n listSandboxes(filter: $filter, pagination: $pagination, context: $context) {\n items { ${SANDBOX_FIELDS} }\n total hasMore\n }\n }\n`;\n\nexport const GET_SANDBOX = `\n query GetSandbox($id: ID!, $context: ContextInput!) {\n getSandbox(id: $id, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const CREATE_SANDBOX = `\n mutation CreateSandbox($input: CreateSandboxInput!) {\n createSandbox(input: $input) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const DELETE_SANDBOX = `\n mutation DeleteSandbox($id: ID!, $context: ContextInput!) {\n deleteSandbox(id: $id, context: $context)\n }\n`;\n\nexport const STOP_SANDBOX = `\n mutation StopSandbox($id: ID!, $context: ContextInput!) {\n stopSandbox(id: $id, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const START_SANDBOX = `\n mutation StartSandbox($id: ID!, $context: ContextInput!) {\n startSandbox(id: $id, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const EXTEND_SANDBOX_TTL = `\n mutation ExtendSandboxTTL($id: ID!, $additionalSeconds: Int!, $context: ContextInput!) {\n extendSandboxTTL(id: $id, additionalSeconds: $additionalSeconds, context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const SANDBOX_TEMPLATE_FIELDS = `\n id name description template isDefault ttlSeconds\n containers { name image }\n resources { cpuRequest cpuLimit memoryRequest memoryLimit }\n storage { mode sizeGi mountPath retainOnDelete }\n config metadata allowedImages\n workspaceId createdBy createdAt updatedAt\n`;\n\nexport const LIST_SANDBOX_TEMPLATES = `\n query ListSandboxTemplates($context: ContextInput!, $template: SandboxTemplate, $pagination: SandboxPaginationInput) {\n listSandboxTemplates(context: $context, template: $template, pagination: $pagination) {\n items { ${SANDBOX_TEMPLATE_FIELDS} } total hasMore\n }\n }\n`;\n\nexport const GET_SANDBOX_TEMPLATE = `\n query GetSandboxTemplate($context: ContextInput!, $id: ID!) {\n getSandboxTemplate(context: $context, id: $id) { ${SANDBOX_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const CREATE_SANDBOX_TEMPLATE = `\n mutation CreateSandboxTemplate($input: CreateSandboxTemplateInput!) {\n createSandboxTemplate(input: $input) { ${SANDBOX_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const UPDATE_SANDBOX_TEMPLATE = `\n mutation UpdateSandboxTemplate($input: UpdateSandboxTemplateInput!) {\n updateSandboxTemplate(input: $input) { ${SANDBOX_TEMPLATE_FIELDS} }\n }\n`;\n\nexport const DELETE_SANDBOX_TEMPLATE = `\n mutation DeleteSandboxTemplate($context: ContextInput!, $id: ID!) {\n deleteSandboxTemplate(context: $context, id: $id)\n }\n`;\n\nexport const AVAILABLE_SANDBOX_TAGS = `\n query AvailableSandboxTags($query: String, $limit: Int) {\n availableSandboxTags(query: $query, limit: $limit) { id key label color }\n }\n`;\n\nexport const GET_SANDBOX_TAGS = `\n query GetSandboxTags($input: GetSandboxTagsInput!) {\n getSandboxTags(input: $input) {\n id entityId entityType tagId source assignedAt assignedBy\n }\n }\n`;\n\nexport const CREATE_SANDBOX_TAG = `\n mutation CreateSandboxTag($input: CreateSandboxTagInput!) {\n createSandboxTag(input: $input) { id key label color }\n }\n`;\n\nexport const TAG_SANDBOX = `\n mutation TagSandbox($input: TagSandboxInput!) {\n tagSandbox(input: $input) {\n id entityId tagId source assignedAt\n }\n }\n`;\n\nexport const UNTAG_SANDBOX = `\n mutation UntagSandbox($input: UntagSandboxInput!) {\n untagSandbox(input: $input)\n }\n`;\n\nexport const REPLACE_SANDBOX_TAGS = `\n mutation ReplaceSandboxTags($input: ReplaceSandboxTagsInput!) {\n replaceSandboxTags(input: $input) {\n id entityId tagId source assignedAt\n }\n }\n`;\n\nexport const LIST_ALL_SANDBOXES = `\n query ListAllSandboxes($context: ContextInput!, $filter: SandboxFilterInput, $pagination: SandboxPaginationInput) {\n listAllSandboxes(context: $context, filter: $filter, pagination: $pagination) {\n items { ${SANDBOX_FIELDS} } total hasMore\n }\n }\n`;\n\nexport const LIST_SANDBOX_NODES = `\n query ListSandboxNodes($context: ContextInput!) {\n listSandboxNodes(context: $context) {\n name status allocatableCpu allocatableMemory sandboxPodCount labels\n }\n }\n`;\n\nexport const GET_ACTIVE_SANDBOXES = `\n query GetActiveSandboxes($context: ContextInput!) {\n getActiveSandboxes(context: $context) { ${SANDBOX_FIELDS} }\n }\n`;\n\nexport const GET_RECENT_SANDBOX_ACTIVITY = `\n query GetRecentSandboxActivity($context: ContextInput!, $limit: Int) {\n getRecentSandboxActivity(context: $context, limit: $limit) {\n items { id action actorId status sandboxName sandboxId createdAt }\n total\n }\n }\n`;\n\nexport const GET_SANDBOX_STATS = `\n query GetSandboxStats($context: ContextInput!) {\n getSandboxStats(context: $context) {\n activeSandboxes activeUserSandboxes activeInternalSandboxes\n totalCreated totalDeleted totalUserCreated totalInternalCreated\n runningNow provisioningNow stoppedNow expiredCount failedCount\n totalCpuUsed totalMemoryUsed\n }\n }\n`;\n\nexport const GET_SANDBOX_LOGS = `\n query GetSandboxLogs($context: ContextInput!, $id: ID!, $containerName: String!, $tailLines: Int) {\n getSandboxLogs(context: $context, id: $id, containerName: $containerName, tailLines: $tailLines)\n }\n`;\n\nexport const GET_SANDBOX_CONFIG = `\n query GetSandboxConfig($context: ContextInput!) {\n getSandboxConfig(context: $context) {\n id defaultTtlSeconds maxTtlSeconds allowedTemplates\n maxConcurrentPerUser maxConcurrentPerWorkspace\n defaultCpuRequest defaultCpuLimit defaultMemoryRequest defaultMemoryLimit\n workspaceId updatedAt\n }\n }\n`;\n\nexport const UPDATE_SANDBOX_CONFIG = `\n mutation UpdateSandboxConfig($input: UpdateSandboxConfigInput!) {\n updateSandboxConfig(input: $input) {\n id defaultTtlSeconds maxTtlSeconds allowedTemplates\n maxConcurrentPerUser maxConcurrentPerWorkspace\n defaultCpuRequest defaultCpuLimit defaultMemoryRequest defaultMemoryLimit\n workspaceId updatedAt\n }\n }\n`;\n\nexport const SANDBOX_EXPORT_JOB_FIELDS = `\n id workspaceId format status requestedBy rowCount\n downloadUrl errorMessage expiresAt createdAt updatedAt\n`;\n\nexport const EXPORT_SANDBOXES = `\n mutation ExportSandboxes($input: ExportSandboxesInput!) {\n exportSandboxes(input: $input) { ${SANDBOX_EXPORT_JOB_FIELDS} }\n }\n`;\n\nexport const GET_SANDBOX_EXPORT_JOB = `\n query GetSandboxExportJob($workspaceId: ID!, $jobId: ID!, $context: ContextInput!) {\n getSandboxExportJob(workspaceId: $workspaceId, jobId: $jobId, context: $context) {\n ${SANDBOX_EXPORT_JOB_FIELDS}\n }\n }\n`;\n\nexport const LIST_SANDBOX_EXPORT_JOBS = `\n query ListSandboxExportJobs($workspaceId: ID!, $context: ContextInput!, $pagination: SandboxPaginationInput) {\n listSandboxExportJobs(workspaceId: $workspaceId, context: $context, pagination: $pagination) {\n ${SANDBOX_EXPORT_JOB_FIELDS}\n }\n }\n`;\n\nexport const GET_SANDBOX_ARTIFACT_BYTES = `\n query GetSandboxArtifactBytes($input: SandboxArtifactBytesInput!) {\n getSandboxArtifactBytes(input: $input) { filename mimeType size contentBase64 }\n }\n`;\n\nexport const PROXY_SANDBOX_REQUEST = `\n mutation ProxySandboxRequest($input: ProxySandboxRequestInput!) {\n proxySandboxRequest(input: $input) { status body }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analytics\n// ---------------------------------------------------------------------------\n\nexport const VIBECONTROLS_ANALYTICS = `\n query VibecontrolsAnalytics($input: VibecontrolsAnalyticsInput!) {\n vibecontrolsAnalytics(input: $input) {\n agents { total active inactive staleHeartbeatCount byPlatform { key count } byArchitecture { key count } createdOverTime { timestamp value } }\n targets { total connectionCount byType { key count } byStatus { key count } }\n sessions { total active avgDurationMs totalCollaborators totalShares totalShareLinks byType { key count } byStatus { key count } createdOverTime { timestamp value } }\n vibes { total withAgent withoutAgent byType { key count } byStatus { key count } createdOverTime { timestamp value } }\n actions { total totalExecutions successRate avgDurationMs byActionType { key count } byTriggerType { key count } bySourceType { key count } executionsByStatus { key count } executionsOverTime { timestamp value } }\n webhooks { total active inactive totalDeliveries totalFailures deliverySuccessRate }\n aiEvents { total bySource { key count } byEventType { key count } eventsOverTime { timestamp value } }\n vibeDecks { totalDecks totalButtons buttonsByActionType { key count } }\n audit { total byAction { key count } byResourceType { key count } byStatus { key count } eventsOverTime { timestamp value } }\n docs { totalSites totalPages totalRevisions buildSuccessRate totalBuildImages pagesByStatus { key count } revisionsByStatus { key count } }\n notes { total pinned unpinned createdOverTime { timestamp value } }\n configurations { total secretCount byScope { key count } }\n executionTimeMs\n cached\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Catalogs / Components / Templates / Scorecards\n// ---------------------------------------------------------------------------\n\nexport const CATALOG_FIELDS = `\n id name description visibility\n ownerId ownerName componentCount vibeCount\n tags metadata workspaceId\n createdAt updatedAt deletedAt\n createdBy updatedBy onBehalfOf\n`;\n\nexport const COMPONENT_FIELDS = `\n id name description type lifecycle version\n language framework repositoryUrl documentationUrl\n dependencies sbomData tags metadata\n ownerId ownerName teamId teamName catalogCount\n workspaceId createdAt updatedAt deletedAt\n`;\n\nexport const TEMPLATE_FIELDS = `\n id name description category status version\n setupInstructions sourceRepositoryUrl\n fileTree variables componentSnapshot\n cloneCount tags metadata\n createdAt updatedAt\n`;\n\nexport const SCORECARD_METRIC_FIELDS = `\n id name description type status value threshold unit\n iframeUrl iframeHeight lastUpdatedAt createdAt updatedAt\n`;\n\nexport const SCORECARD_FIELDS = `\n id ownerId ownerType overallScore lastEvaluatedAt\n metrics { ${SCORECARD_METRIC_FIELDS} }\n metadata workspaceId createdAt updatedAt\n`;\n\n// catalogs\nexport const LIST_CATALOGS = `\n query VibecontrolsCatalogs($filter: CatalogFilterInput, $pagination: PaginationInput) {\n vibecontrolsCatalogs(filter: $filter, pagination: $pagination) {\n items { ${CATALOG_FIELDS} }\n total hasMore\n }\n }\n`;\nexport const GET_CATALOG = `query VibecontrolsCatalog($id: ID!) { vibecontrolsCatalog(id: $id) { ${CATALOG_FIELDS} } }`;\nexport const GET_CATALOG_DEPENDENCY_GRAPH = `\n query VibecontrolsCatalogDependencyGraph($catalogId: ID!) {\n vibecontrolsCatalogDependencyGraph(catalogId: $catalogId) {\n nodes { id name type version }\n edges { source target version dependencyType }\n }\n }\n`;\nexport const GET_CATALOG_SBOM = `\n query VibecontrolsCatalogSBOM($catalogId: ID!) {\n vibecontrolsCatalogSBOM(catalogId: $catalogId) {\n format generatedAt totalCount\n components { name version type license }\n }\n }\n`;\nexport const CREATE_CATALOG = `mutation CreateVibecontrolsCatalog($input: CreateCatalogInput!) { createVibecontrolsCatalog(input: $input) { ${CATALOG_FIELDS} } }`;\nexport const UPDATE_CATALOG = `mutation UpdateVibecontrolsCatalog($id: ID!, $input: UpdateCatalogInput!) { updateVibecontrolsCatalog(id: $id, input: $input) { ${CATALOG_FIELDS} } }`;\nexport const DELETE_CATALOG = `mutation DeleteVibecontrolsCatalog($id: ID!) { deleteVibecontrolsCatalog(id: $id) }`;\nexport const ADD_COMPONENT_TO_CATALOG = `\n mutation AddComponentToVibecontrolsCatalog($catalogId: ID!, $componentId: ID!) {\n addComponentToVibecontrolsCatalog(catalogId: $catalogId, componentId: $componentId) {\n id catalogId componentId addedAt addedBy metadata workspaceId\n }\n }\n`;\nexport const REMOVE_COMPONENT_FROM_CATALOG = `\n mutation RemoveComponentFromVibecontrolsCatalog($catalogId: ID!, $componentId: ID!) {\n removeComponentFromVibecontrolsCatalog(catalogId: $catalogId, componentId: $componentId)\n }\n`;\nexport const ADD_VIBE_TO_CATALOG = `\n mutation AddVibeToVibecontrolsCatalog($catalogId: ID!, $vibeId: ID!) {\n addVibeToVibecontrolsCatalog(catalogId: $catalogId, vibeId: $vibeId) {\n id catalogId vibeId addedAt addedBy metadata workspaceId\n }\n }\n`;\nexport const REMOVE_VIBE_FROM_CATALOG = `\n mutation RemoveVibeFromVibecontrolsCatalog($catalogId: ID!, $vibeId: ID!) {\n removeVibeFromVibecontrolsCatalog(catalogId: $catalogId, vibeId: $vibeId)\n }\n`;\n\n// components\nexport const LIST_COMPONENTS = `\n query VibecontrolsComponents($filter: ComponentFilterInput, $pagination: PaginationInput) {\n vibecontrolsComponents(filter: $filter, pagination: $pagination) {\n items { ${COMPONENT_FIELDS} }\n total hasMore\n }\n }\n`;\nexport const GET_COMPONENT = `query VibecontrolsComponent($id: ID!) { vibecontrolsComponent(id: $id) { ${COMPONENT_FIELDS} } }`;\nexport const CREATE_COMPONENT = `mutation CreateVibecontrolsComponent($input: CreateComponentInput!) { createVibecontrolsComponent(input: $input) { ${COMPONENT_FIELDS} } }`;\nexport const UPDATE_COMPONENT = `mutation UpdateVibecontrolsComponent($id: ID!, $input: UpdateComponentInput!) { updateVibecontrolsComponent(id: $id, input: $input) { ${COMPONENT_FIELDS} } }`;\nexport const DELETE_COMPONENT = `mutation DeleteVibecontrolsComponent($id: ID!) { deleteVibecontrolsComponent(id: $id) }`;\nexport const FORK_GITHUB_REPO = `\n mutation ForkVibecontrolsGitHubRepo($input: VibecontrolsForkGitHubRepoInput!) {\n forkVibecontrolsGitHubRepo(input: $input) { isForked repoFullName repoUrl }\n }\n`;\nexport const PUBLISH_COMPONENT_AS_TEMPLATE = `\n mutation PublishVibecontrolsComponentAsTemplate(\n $componentId: ID!\n $input: VibecontrolsPublishTemplateInput!\n ) {\n publishVibecontrolsComponentAsTemplate(componentId: $componentId, input: $input) {\n ${TEMPLATE_FIELDS}\n }\n }\n`;\n\n// templates\nexport const LIST_TEMPLATES = `\n query VibecontrolsTemplates($filter: VibecontrolsTemplateFilterInput, $pagination: PaginationInput) {\n vibecontrolsTemplates(filter: $filter, pagination: $pagination) {\n items { ${TEMPLATE_FIELDS} }\n total hasMore\n }\n }\n`;\nexport const GET_TEMPLATE = `query VibecontrolsTemplate($id: ID!) { vibecontrolsTemplate(id: $id) { ${TEMPLATE_FIELDS} } }`;\nexport const UPDATE_TEMPLATE = `mutation UpdateVibecontrolsTemplate($id: ID!, $input: VibecontrolsUpdateTemplateInput!) { updateVibecontrolsTemplate(id: $id, input: $input) { ${TEMPLATE_FIELDS} } }`;\nexport const DELETE_TEMPLATE = `mutation DeleteVibecontrolsTemplate($id: ID!) { deleteVibecontrolsTemplate(id: $id) }`;\nexport const INSTANTIATE_TEMPLATE = `\n mutation InstantiateVibecontrolsTemplate($templateId: ID!, $input: VibecontrolsCloneTemplateInput!) {\n instantiateVibecontrolsTemplate(templateId: $templateId, input: $input) { ${COMPONENT_FIELDS} }\n }\n`;\n\n// scorecards\nexport const GET_SCORECARD = `\n query VibecontrolsScorecard($ownerId: ID!, $ownerType: ScorecardOwnerType!) {\n vibecontrolsScorecard(ownerId: $ownerId, ownerType: $ownerType) { ${SCORECARD_FIELDS} }\n }\n`;\nexport const UPSERT_SCORECARD = `mutation UpsertVibecontrolsScorecard($input: UpsertScorecardInput!) { upsertVibecontrolsScorecard(input: $input) { ${SCORECARD_FIELDS} } }`;\nexport const ADD_SCORECARD_METRIC = `\n mutation AddVibecontrolsScorecardMetric($scorecardId: ID!, $input: AddScorecardMetricInput!) {\n addVibecontrolsScorecardMetric(scorecardId: $scorecardId, input: $input) { ${SCORECARD_METRIC_FIELDS} }\n }\n`;\nexport const UPDATE_SCORECARD_METRIC = `\n mutation UpdateVibecontrolsScorecardMetric($id: ID!, $input: UpdateScorecardMetricInput!) {\n updateVibecontrolsScorecardMetric(id: $id, input: $input) { ${SCORECARD_METRIC_FIELDS} }\n }\n`;\nexport const REMOVE_SCORECARD_METRIC = `mutation RemoveVibecontrolsScorecardMetric($id: ID!) { removeVibecontrolsScorecardMetric(id: $id) }`;\n\n// ---------------------------------------------------------------------------\n// Configuration / Security\n// ---------------------------------------------------------------------------\n\nconst SECURITY_SUMMARY = `summary { critical high medium low info }`;\nconst SECURITY_FINDING_FIELDS = `\n id workspaceId vibeId scanRunId fingerprint\n category severity status ruleId title description\n file line col cve cwe packageName packageVersion fixedVersion\n remediation redactedSample ownerTeam firstSeenAt lastSeenAt dueAt\n`;\nconst SECURITY_EVIDENCE_FIELDS = `\n id workspaceId scanRunId type sha256 sizeBytes\n s3Bucket s3Key retentionDays uploadedAt downloadUrl\n`;\nconst SECURITY_SCAN_RUN_FIELDS = `\n id workspaceId vibeId agentId createdBy providerName\n stage status conclusion policyLevel repoUrl commit\n durationMs errorReason startedAt finishedAt createdAt\n ${SECURITY_SUMMARY}\n findings { ${SECURITY_FINDING_FIELDS} }\n evidence { ${SECURITY_EVIDENCE_FIELDS} }\n`;\nconst SECURITY_PROVIDER_FIELDS = `\n id workspaceId providerName pluginName stage toolVersion\n enabled isDefault config createdAt updatedAt\n`;\nconst REPO_SECURITY_CONFIG_FIELDS = `\n id workspaceId vibeId policyLevel enabledStages\n pluginAssignments profile configYamlEquivalent createdAt updatedAt\n`;\n\nexport const SECURITY_PROVIDERS_Q = `\n query SecurityProviders { securityProviders { ${SECURITY_PROVIDER_FIELDS} } }\n`;\nexport const SECURITY_SCAN_Q = `\n query SecurityScan($id: ID!) { securityScan(id: $id) { ${SECURITY_SCAN_RUN_FIELDS} } }\n`;\nexport const MY_SECURITY_SCANS_Q = `\n query MySecurityScans($filter: SecurityScanFilterInput, $pagination: SecurityPaginationInput) {\n mySecurityScans(filter: $filter, pagination: $pagination) {\n items { ${SECURITY_SCAN_RUN_FIELDS} } total hasMore\n }\n }\n`;\nexport const ALL_SECURITY_SCANS_Q = `\n query AllSecurityScans($filter: SecurityScanFilterInput, $pagination: SecurityPaginationInput) {\n allSecurityScans(filter: $filter, pagination: $pagination) {\n items { ${SECURITY_SCAN_RUN_FIELDS} } total hasMore\n }\n }\n`;\nexport const SECURITY_FINDINGS_Q = `\n query SecurityFindings($filter: SecurityFindingFilterInput, $pagination: SecurityPaginationInput) {\n securityFindings(filter: $filter, pagination: $pagination) {\n items { ${SECURITY_FINDING_FIELDS} } total hasMore\n }\n }\n`;\nexport const SECURITY_POLICY_DECISION_Q = `\n query SecurityPolicyDecision($scanRunId: ID!) {\n securityPolicyDecision(scanRunId: $scanRunId) {\n scanRunId allow denyReasons policyVersion evaluatedAt\n }\n }\n`;\nexport const SECURITY_STATUS_Q = `\n query SecurityStatus($vibeId: ID!) {\n securityStatus(vibeId: $vibeId) {\n vibeId policyLevel perStage lastScanAt\n totals { critical high medium low info }\n }\n }\n`;\nexport const REPOSITORY_SECURITY_CONFIG_Q = `\n query RepositorySecurityConfig($vibeId: ID!) {\n repositorySecurityConfig(vibeId: $vibeId) { ${REPO_SECURITY_CONFIG_FIELDS} }\n }\n`;\nexport const RUN_SECURITY_SCAN_M = `\n mutation RunSecurityScan($vibeId: ID!, $stage: SecurityStage!) {\n runSecurityScan(vibeId: $vibeId, stage: $stage) { ${SECURITY_SCAN_RUN_FIELDS} }\n }\n`;\nexport const CANCEL_SECURITY_SCAN_M = `\n mutation CancelSecurityScan($id: ID!) {\n cancelSecurityScan(id: $id) { ${SECURITY_SCAN_RUN_FIELDS} }\n }\n`;\nexport const CREATE_SECURITY_EXCEPTION_M = `\n mutation CreateSecurityException($input: CreateSecurityExceptionInput!) {\n createSecurityException(input: $input) {\n id workspaceId vibeId findingId reason compensatingControls\n approvedBy expiresAt status createdAt\n }\n }\n`;\nexport const REVOKE_SECURITY_EXCEPTION_M = `\n mutation RevokeSecurityException($id: ID!) { revokeSecurityException(id: $id) }\n`;\nexport const SET_SECURITY_PROVIDER_M = `\n mutation SetSecurityProvider($input: SetSecurityProviderInput!) {\n setSecurityProvider(input: $input) { ${SECURITY_PROVIDER_FIELDS} }\n }\n`;\nexport const UPDATE_SECURITY_FINDING_STATUS_M = `\n mutation UpdateSecurityFindingStatus($id: ID!, $status: SecurityFindingStatus!) {\n updateSecurityFindingStatus(id: $id, status: $status) { ${SECURITY_FINDING_FIELDS} }\n }\n`;\nexport const UPDATE_REPOSITORY_SECURITY_CONFIG_M = `\n mutation UpdateRepositorySecurityConfig(\n $vibeId: ID!, $input: UpdateRepositorySecurityConfigInput!\n ) {\n updateRepositorySecurityConfig(vibeId: $vibeId, input: $input) { ${REPO_SECURITY_CONFIG_FIELDS} }\n }\n`;\nexport const PRESIGN_SECURITY_EVIDENCE_M = `\n mutation PresignSecurityEvidence(\n $scanRunId: ID!, $sha256: String!, $sizeBytes: Int!, $type: SecurityEvidenceType!\n ) {\n presignSecurityEvidence(\n scanRunId: $scanRunId, sha256: $sha256, sizeBytes: $sizeBytes, type: $type\n ) {\n evidenceId uploadUrl method requiredHeaders s3Bucket s3Key expiresAt\n }\n }\n`;\nexport const PUSH_SECURITY_SCAN_RUN_M = `\n mutation PushSecurityScanRun($input: PushSecurityScanRunInput!) {\n pushSecurityScanRun(input: $input) { ${SECURITY_SCAN_RUN_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration / CI status\n// ---------------------------------------------------------------------------\n\nconst CI_RUN_FIELDS = `\n id status conclusion workflowName branch event actor url\n startedAt completedAt durationSeconds\n`;\nconst CI_STATUS_FIELDS = `\n recentRuns { ${CI_RUN_FIELDS} }\n workflows { id name path state }\n averageDurationSeconds successRate totalRunsLast30Days\n`;\nconst CI_DETAILS_FIELDS = `\n ${CI_RUN_FIELDS}\n commitSha commitMessage\n jobs { id name status conclusion startedAt completedAt durationSeconds }\n`;\nconst REPO_STATS_FIELDS = `\n name fullName owner description defaultBranch visibility\n isArchived isFork diskUsageKb stargazerCount watcherCount forkCount\n openIssues openPullRequests dependabotAlerts languages license\n createdAt updatedAt pushedAt\n contributors { login contributions avatarUrl }\n commitActivity { week total additions deletions }\n pullRequests {\n number title state author url createdAt updatedAt\n isDraft labels reviewers\n }\n`;\n\nexport const GET_CI_STATUS_Q = `\n query GetCIStatus($providerId: ID!, $agentId: ID!, $limit: Int) {\n getCIStatus(providerId: $providerId, agentId: $agentId, limit: $limit) { ${CI_STATUS_FIELDS} }\n }\n`;\nexport const GET_CI_PIPELINE_RUNS_Q = `\n query GetCIPipelineRuns($providerId: ID!, $agentId: ID!, $branch: String, $limit: Int) {\n getCIPipelineRuns(providerId: $providerId, agentId: $agentId, branch: $branch, limit: $limit) {\n ${CI_RUN_FIELDS}\n }\n }\n`;\nexport const GET_CI_PIPELINE_DETAILS_Q = `\n query GetCIPipelineDetails($providerId: ID!, $agentId: ID!, $runId: ID!) {\n getCIPipelineDetails(providerId: $providerId, agentId: $agentId, runId: $runId) {\n ${CI_DETAILS_FIELDS}\n }\n }\n`;\nexport const GET_REPO_STATS_Q = `\n query GetRepoStats($providerId: ID!, $agentId: ID!) {\n getRepoStats(providerId: $providerId, agentId: $agentId) { ${REPO_STATS_FIELDS} }\n }\n`;\nexport const REFRESH_CI_STATUS_M = `\n mutation RefreshCIStatus($providerId: ID!, $agentId: ID!) {\n refreshCIStatus(providerId: $providerId, agentId: $agentId) { ${CI_STATUS_FIELDS} }\n }\n`;\nexport const REFRESH_REPO_STATS_M = `\n mutation RefreshRepoStats($providerId: ID!, $agentId: ID!) {\n refreshRepoStats(providerId: $providerId, agentId: $agentId) { ${REPO_STATS_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration / GitOps providers\n// ---------------------------------------------------------------------------\n\nconst GITOPS_FIELDS = `\n id workspaceId createdBy name providerType repoUrl\n isActive vibeId metadata\n context { workspaceId userId appId custom }\n createdAt updatedAt deletedAt\n`;\nexport const LIST_GITOPS_PROVIDERS_Q = `\n query ListGitopsProviders($filter: GitopsProviderFilterInput, $pagination: PaginationInput) {\n listGitopsProviders(filter: $filter, pagination: $pagination) {\n items { ${GITOPS_FIELDS} } total hasMore\n }\n }\n`;\nexport const GET_GITOPS_PROVIDER_Q = `\n query GetGitopsProvider($id: ID!) { getGitopsProvider(id: $id) { ${GITOPS_FIELDS} } }\n`;\nexport const CREATE_GITOPS_PROVIDER_M = `\n mutation CreateGitopsProvider($input: CreateGitopsProviderInput!) {\n createGitopsProvider(input: $input) { ${GITOPS_FIELDS} }\n }\n`;\nexport const UPDATE_GITOPS_PROVIDER_M = `\n mutation UpdateGitopsProvider($id: ID!, $input: UpdateGitopsProviderInput!) {\n updateGitopsProvider(id: $id, input: $input) { ${GITOPS_FIELDS} }\n }\n`;\nexport const DELETE_GITOPS_PROVIDER_M = `\n mutation DeleteGitopsProvider($id: ID!) { deleteGitopsProvider(id: $id) }\n`;\n\n// ---------------------------------------------------------------------------\n// Configuration / Settings, preferences, secrets, integration tokens\n// ---------------------------------------------------------------------------\n\nconst PREFS_FIELDS = `\n theme uiDensity sidebarCollapsed codeFont codeFontSize\n preferredIdeCommand defaultAgentForVibe vibeIdeOverrides vibeDetailTabOrder\n`;\nconst NOTIF_FIELDS = `\n emailDigest digestFrequency agentOffline sessionError vibeStatusChange\n`;\nconst DEFAULTS_FIELDS = `\n defaultAgent defaultSessionType defaultVibeType defaultEnvironmentVariables\n autoStartSessions autoGitSync agentHeartbeatInterval agentMaxSessions\n agentAutoReconnect autoUpdate telemetryEnabled logLevel\n`;\nconst BUNDLE_FIELDS = `\n preferences { ${PREFS_FIELDS} }\n notifications { ${NOTIF_FIELDS} }\n workspaceDefaults { ${DEFAULTS_FIELDS} }\n profile { displayName avatar bio language timezone }\n security { mfaEnabled sessionTimeout activeSessions }\n`;\nconst SECRET_FIELDS = `id key value isSecret createdAt updatedAt`;\n\nexport const MY_SETTINGS_Q = `query MySettings { mySettings { ${BUNDLE_FIELDS} } }`;\nexport const MY_SETTINGS_BY_CATEGORY_Q = `\n query MySettingsByCategory($category: SettingsCategory!) {\n mySettingsByCategory(category: $category)\n }\n`;\nexport const LIST_SETTINGS_SECRETS_Q = `\n query ListSettingsSecrets { listSettingsSecrets { ${SECRET_FIELDS} } }\n`;\nexport const SET_SETTINGS_SECRET_M = `\n mutation SetSettingsSecret($input: SetSettingsSecretInput!) {\n setSettingsSecret(input: $input) { ${SECRET_FIELDS} }\n }\n`;\nexport const DELETE_SETTINGS_SECRET_M = `\n mutation DeleteSettingsSecret($key: String!) { deleteSettingsSecret(key: $key) }\n`;\nexport const RESET_SETTINGS_M = `\n mutation ResetSettings($category: SettingsCategory!) { resetSettings(category: $category) }\n`;\nexport const UPDATE_PREFERENCES_M = `\n mutation UpdatePreferences($input: UpdatePreferencesInput!) {\n updatePreferences(input: $input) { ${PREFS_FIELDS} }\n }\n`;\nexport const UPDATE_NOTIFICATION_PREFERENCES_M = `\n mutation UpdateNotificationPreferences($input: UpdateNotificationPreferencesInput!) {\n updateNotificationPreferences(input: $input) { ${NOTIF_FIELDS} }\n }\n`;\nexport const UPDATE_WORKSPACE_DEFAULTS_M = `\n mutation UpdateWorkspaceDefaults($input: UpdateWorkspaceDefaultsInput!) {\n updateWorkspaceDefaults(input: $input) { ${DEFAULTS_FIELDS} }\n }\n`;\nexport const RESOLVE_INTEGRATION_TOKEN_M = `\n mutation VibecontrolsResolveIntegrationToken($connectionId: ID!) {\n vibecontrolsResolveIntegrationToken(connectionId: $connectionId) {\n success connectionStatus wasRefreshed error\n token {\n accessToken refreshToken tokenType providerKey scopes expiresAt metadata\n }\n }\n }\n`;\n","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_ACTIONS,\n GET_ACTION,\n CREATE_ACTION,\n UPDATE_ACTION,\n DELETE_ACTION,\n DUPLICATE_ACTION,\n EXECUTE_ACTION,\n INSTALL_ACTION_FROM_STORE,\n LIST_ACTION_EXECUTIONS,\n CANCEL_ACTION_EXECUTION,\n CREATE_SCHEDULED_JOB,\n DELETE_SCHEDULED_JOB,\n LIST_SCHEDULED_JOBS,\n} from '../operations.js';\n\nexport function registerActionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_list')),\n {\n title: 'List Actions',\n description: 'List all Vibe Actions with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by action name'),\n actionType: z\n .string()\n .optional()\n .describe('Filter by action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)'),\n sourceType: z\n .string()\n .optional()\n .describe('Filter by source type (USER_CREATED, STORE_INSTALLED)'),\n triggerType: z\n .string()\n .optional()\n .describe('Filter by trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)'),\n isActive: z.boolean().optional().describe('Filter by active status'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ name, actionType, sourceType, triggerType, isActive, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (actionType !== undefined) filter.actionType = actionType;\n if (sourceType !== undefined) filter.sourceType = sourceType;\n if (triggerType !== undefined) filter.triggerType = triggerType;\n if (isActive !== undefined) filter.isActive = isActive;\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<{ actions: unknown }>(LIST_ACTIONS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.actions);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_list failed', { error });\n return errorResult(\n `Failed to list Actions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_get')),\n {\n title: 'Get Action',\n description: 'Get a Vibe Action by its ID.',\n inputSchema: { id: z.string().describe('Action ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ action: unknown }>(GET_ACTION, { id });\n return jsonResult(data.action);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_get failed', { error });\n return errorResult(\n `Failed to get Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_create')),\n {\n title: 'Create Action',\n description: 'Create a new Vibe Action.',\n inputSchema: {\n name: z.string().describe('Action name'),\n description: z.string().optional().describe('Action description'),\n actionType: z.string().describe('Action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)'),\n triggerType: z\n .string()\n .optional()\n .describe('Trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)'),\n command: z.string().optional().describe('Command to execute (for COMMAND type)'),\n script: z.string().optional().describe('Script to execute (for SCRIPT type)'),\n webhookUrl: z.string().optional().describe('Webhook URL (for WEBHOOK type)'),\n tags: z.array(z.string()).optional().describe('Tags for categorization'),\n isActive: z.boolean().optional().describe('Whether the action is active'),\n },\n },\n async ({\n name,\n description,\n actionType,\n triggerType,\n command,\n script,\n webhookUrl,\n tags,\n isActive,\n }) => {\n try {\n const input: Record<string, unknown> = { name, actionType };\n if (description !== undefined) input.description = description;\n if (triggerType !== undefined) input.triggerType = triggerType;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (tags !== undefined) input.tags = tags;\n if (isActive !== undefined) input.isActive = isActive;\n\n const data = await ctx.gql.workspace.request<{ createAction: unknown }>(CREATE_ACTION, {\n input,\n });\n return jsonResult(data.createAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_create failed', { error });\n return errorResult(\n `Failed to create Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_update')),\n {\n title: 'Update Action',\n description: 'Update an existing Vibe Action.',\n inputSchema: {\n id: z.string().describe('Action ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n actionType: z\n .string()\n .optional()\n .describe('Updated action type (COMMAND, SCRIPT, WEBHOOK, WORKFLOW)'),\n triggerType: z\n .string()\n .optional()\n .describe('Updated trigger type (MANUAL, SCHEDULED, EVENT, ON_DEMAND)'),\n command: z.string().optional().describe('Updated command'),\n script: z.string().optional().describe('Updated script'),\n webhookUrl: z.string().optional().describe('Updated webhook URL'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n isActive: z.boolean().optional().describe('Updated active status'),\n },\n },\n async ({\n id,\n name,\n description,\n actionType,\n triggerType,\n command,\n script,\n webhookUrl,\n tags,\n isActive,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (actionType !== undefined) input.actionType = actionType;\n if (triggerType !== undefined) input.triggerType = triggerType;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (tags !== undefined) input.tags = tags;\n if (isActive !== undefined) input.isActive = isActive;\n\n const data = await ctx.gql.workspace.request<{ updateAction: unknown }>(UPDATE_ACTION, {\n id,\n input,\n });\n return jsonResult(data.updateAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_update failed', { error });\n return errorResult(\n `Failed to update Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_delete')),\n {\n title: 'Delete Action',\n description: 'Permanently delete a Vibe Action.',\n inputSchema: { id: z.string().describe('Action ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAction: boolean }>(DELETE_ACTION, {\n id,\n });\n return jsonResult({ deleted: data.deleteAction, actionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_delete failed', { error });\n return errorResult(\n `Failed to delete Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_execute')),\n {\n title: 'Execute Action',\n description: 'Execute a Vibe Action and return the execution result.',\n inputSchema: {\n id: z.string().describe('Action ID to execute'),\n parameters: z.string().optional().describe('JSON string of execution parameters'),\n triggeredBy: z.string().optional().describe('Identifier of who triggered the execution'),\n },\n },\n async ({ id, parameters, triggeredBy }) => {\n try {\n const input: Record<string, unknown> = {};\n if (parameters !== undefined) {\n try {\n input.parameters = JSON.parse(parameters);\n } catch {\n input.parameters = parameters;\n }\n }\n if (triggeredBy !== undefined) input.triggeredBy = triggeredBy;\n\n const data = await ctx.gql.workspace.request<{ executeAction: unknown }>(EXECUTE_ACTION, {\n id,\n input: Object.keys(input).length > 0 ? input : undefined,\n });\n return jsonResult(data.executeAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_execute failed', { error });\n return errorResult(\n `Failed to execute Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_executions_list')),\n {\n title: 'List Action Executions',\n description: 'List action execution history with optional filters and pagination.',\n inputSchema: {\n actionId: z.string().optional().describe('Filter by action ID'),\n status: z\n .string()\n .optional()\n .describe('Filter by status (PENDING, RUNNING, SUCCESS, FAILURE, TIMEOUT, CANCELLED)'),\n triggeredBy: z.string().optional().describe('Filter by who triggered the execution'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ actionId, status, triggeredBy, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (actionId !== undefined) filter.actionId = actionId;\n if (status !== undefined) filter.status = status;\n if (triggeredBy !== undefined) filter.triggeredBy = triggeredBy;\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<{ actionExecutions: unknown }>(\n LIST_ACTION_EXECUTIONS,\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.actionExecutions);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_executions_list failed', { error });\n return errorResult(\n `Failed to list Action Executions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_duplicate')),\n {\n title: 'Duplicate Action',\n description: 'Create a copy of an existing Vibe Action.',\n inputSchema: {\n id: z.string().describe('Action ID to duplicate'),\n name: z.string().optional().describe('Name for the duplicated action'),\n },\n },\n async ({ id, name }) => {\n try {\n const variables: Record<string, unknown> = { id };\n if (name !== undefined) variables.name = name;\n\n const data = await ctx.gql.workspace.request<{ duplicateAction: unknown }>(\n DUPLICATE_ACTION,\n variables,\n );\n return jsonResult(data.duplicateAction);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_duplicate failed', { error });\n return errorResult(\n `Failed to duplicate Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_install')),\n {\n title: 'Install Action from Store',\n description: 'Install a Vibe Action from the action store.',\n inputSchema: {\n storeItemId: z.string().describe('Store item ID to install'),\n version: z.string().optional().describe('Version to install'),\n name: z.string().optional().describe('Custom name for the installed action'),\n },\n },\n async ({ storeItemId, version, name }) => {\n try {\n const variables: Record<string, unknown> = { storeItemId };\n if (version !== undefined) variables.version = version;\n if (name !== undefined) variables.name = name;\n\n const data = await ctx.gql.workspace.request<{ installActionFromStore: unknown }>(\n INSTALL_ACTION_FROM_STORE,\n variables,\n );\n return jsonResult(data.installActionFromStore);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_install failed', { error });\n return errorResult(\n `Failed to install Action from store: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_cancel_execution')),\n {\n title: 'Cancel Action Execution',\n description: 'Cancel a running Vibe Action execution.',\n inputSchema: {\n id: z.string().describe('Action execution ID to cancel'),\n },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cancelActionExecution: unknown }>(\n CANCEL_ACTION_EXECUTION,\n { id },\n );\n return jsonResult(data.cancelActionExecution);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_cancel_execution failed', { error });\n return errorResult(\n `Failed to cancel Action Execution: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // -------------------------------------------------------------------------\n // Scheduling tools (wspace-scheduler-svc via gateway)\n // -------------------------------------------------------------------------\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_schedule')),\n {\n title: 'Schedule Action',\n description: 'Create a scheduled job for a Vibe Action via the scheduler service.',\n inputSchema: {\n actionId: z.string().describe('Action ID to schedule'),\n scheduleType: z.string().describe('Schedule type (CRON, ONE_TIME, FIXED_INTERVAL)'),\n cronExpression: z.string().optional().describe('Cron expression (for CRON type)'),\n timezone: z.string().optional().describe('Timezone (default UTC)'),\n scheduledAt: z.string().optional().describe('ISO date for ONE_TIME schedule'),\n interval: z.number().optional().describe('Interval value (for FIXED_INTERVAL)'),\n intervalUnit: z.string().optional().describe('Interval unit (MINUTES, HOURS, DAYS)'),\n startDate: z.string().optional().describe('Schedule start date (ISO)'),\n endDate: z.string().optional().describe('Schedule end date (ISO)'),\n name: z.string().optional().describe('Name for the scheduled job'),\n },\n },\n async ({\n actionId,\n scheduleType,\n cronExpression,\n timezone,\n scheduledAt,\n interval,\n intervalUnit,\n startDate,\n endDate,\n name,\n }) => {\n try {\n const input: Record<string, unknown> = { actionId, scheduleType };\n if (cronExpression !== undefined) input.cronExpression = cronExpression;\n if (timezone !== undefined) input.timezone = timezone;\n if (scheduledAt !== undefined) input.scheduledAt = scheduledAt;\n if (interval !== undefined) input.interval = interval;\n if (intervalUnit !== undefined) input.intervalUnit = intervalUnit;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n if (name !== undefined) input.name = name;\n\n const data = await ctx.gql.workspace.request<{ createScheduledJob: unknown }>(\n CREATE_SCHEDULED_JOB,\n {\n input,\n },\n );\n return jsonResult(data.createScheduledJob);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_schedule failed', { error });\n return errorResult(\n `Failed to schedule Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_unschedule')),\n {\n title: 'Unschedule Action',\n description: 'Delete a scheduled job for a Vibe Action.',\n inputSchema: {\n scheduledJobId: z.string().describe('Scheduled job ID to delete'),\n },\n },\n async ({ scheduledJobId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteScheduledJob: boolean }>(\n DELETE_SCHEDULED_JOB,\n {\n id: scheduledJobId,\n },\n );\n return jsonResult({ deleted: data.deleteScheduledJob, scheduledJobId });\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_unschedule failed', { error });\n return errorResult(\n `Failed to unschedule Action: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'actions_schedules_list')),\n {\n title: 'List Scheduled Jobs',\n description: 'List scheduled jobs for Vibe Actions, optionally filtered by action ID.',\n inputSchema: {\n actionId: z.string().optional().describe('Filter by action ID'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ actionId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (actionId !== undefined) filter.actionId = actionId;\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<{ scheduledJobs: unknown }>(\n LIST_SCHEDULED_JOBS,\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.scheduledJobs);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_schedules_list failed', { error });\n return errorResult(\n `Failed to list scheduled jobs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_AGENTS,\n GET_AGENT,\n CREATE_AGENT,\n UPDATE_AGENT,\n DELETE_AGENT,\n PROBE_AGENT_CONNECTION,\n AGENT_HEALTH_PROBES,\n AGENT_PLUGINS,\n INSTALL_AGENT_PLUGIN,\n REMOVE_AGENT_PLUGIN,\n} from '../operations.js';\n\nexport function registerAgentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_list')),\n {\n title: 'List Agents',\n description: 'List all VibeControls agents with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by agent name'),\n hostname: z.string().optional().describe('Filter by hostname'),\n platform: z.string().optional().describe('Filter by platform'),\n isActive: z.boolean().optional().describe('Filter by active status'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ name, hostname, platform, isActive, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (hostname !== undefined) filter.hostname = hostname;\n if (platform !== undefined) filter.platform = platform;\n if (isActive !== undefined) filter.isActive = isActive;\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<{ vibecontrolsAgents: unknown }>(LIST_AGENTS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibecontrolsAgents);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_list failed', { error });\n return errorResult(\n `Failed to list agents: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_get')),\n {\n title: 'Get Agent',\n description: 'Get a VibeControls agent by its ID.',\n inputSchema: { id: z.string().describe('Agent ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsAgent: unknown }>(GET_AGENT, {\n id,\n });\n return jsonResult(data.vibecontrolsAgent);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_get failed', { error });\n return errorResult(\n `Failed to get agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_create')),\n {\n title: 'Create Agent',\n description: 'Create a new VibeControls agent.',\n inputSchema: {\n name: z.string().describe('Agent name'),\n hostname: z.string().describe('Agent hostname'),\n platform: z.string().optional().describe('Operating system platform'),\n architecture: z.string().optional().describe('CPU architecture'),\n version: z.string().optional().describe('Agent version'),\n tunnelUrl: z.string().optional().describe('Tunnel URL for remote access'),\n apiUrl: z.string().optional().describe('Agent API URL'),\n capabilities: z.array(z.string()).optional().describe('Agent capabilities'),\n },\n },\n async ({\n name,\n hostname,\n platform,\n architecture,\n version,\n tunnelUrl,\n apiUrl,\n capabilities,\n }) => {\n try {\n const input: Record<string, unknown> = { name, hostname };\n if (platform !== undefined) input.platform = platform;\n if (architecture !== undefined) input.architecture = architecture;\n if (version !== undefined) input.version = version;\n if (tunnelUrl !== undefined) input.tunnelUrl = tunnelUrl;\n if (apiUrl !== undefined) input.apiUrl = apiUrl;\n if (capabilities !== undefined) input.capabilities = capabilities;\n\n const data = await ctx.gql.workspace.request<{ createVibecontrolsAgent: unknown }>(\n CREATE_AGENT,\n {\n input,\n },\n );\n return jsonResult(data.createVibecontrolsAgent);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_create failed', { error });\n return errorResult(\n `Failed to create agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_update')),\n {\n title: 'Update Agent',\n description: 'Update an existing VibeControls agent.',\n inputSchema: {\n id: z.string().describe('Agent ID'),\n name: z.string().optional().describe('Updated name'),\n hostname: z.string().optional().describe('Updated hostname'),\n platform: z.string().optional().describe('Updated platform'),\n architecture: z.string().optional().describe('Updated architecture'),\n version: z.string().optional().describe('Updated version'),\n tunnelUrl: z.string().optional().describe('Updated tunnel URL'),\n apiUrl: z.string().optional().describe('Updated API URL'),\n capabilities: z.array(z.string()).optional().describe('Updated capabilities'),\n isActive: z.boolean().optional().describe('Active status'),\n },\n },\n async ({\n id,\n name,\n hostname,\n platform,\n architecture,\n version,\n tunnelUrl,\n apiUrl,\n capabilities,\n isActive,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (hostname !== undefined) input.hostname = hostname;\n if (platform !== undefined) input.platform = platform;\n if (architecture !== undefined) input.architecture = architecture;\n if (version !== undefined) input.version = version;\n if (tunnelUrl !== undefined) input.tunnelUrl = tunnelUrl;\n if (apiUrl !== undefined) input.apiUrl = apiUrl;\n if (capabilities !== undefined) input.capabilities = capabilities;\n if (isActive !== undefined) input.isActive = isActive;\n\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsAgent: unknown }>(\n UPDATE_AGENT,\n {\n id,\n input,\n },\n );\n return jsonResult(data.updateVibecontrolsAgent);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_update failed', { error });\n return errorResult(\n `Failed to update agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_delete')),\n {\n title: 'Delete Agent',\n description: 'Permanently delete a VibeControls agent.',\n inputSchema: { id: z.string().describe('Agent ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsAgent: boolean }>(\n DELETE_AGENT,\n {\n id,\n },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsAgent, agentId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_delete failed', { error });\n return errorResult(\n `Failed to delete agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_probe')),\n {\n title: 'Probe Agent Connection',\n description: 'Probe the connectivity of a specific agent to check if it is reachable.',\n inputSchema: { id: z.string().describe('Agent ID to probe') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ probeAgentConnection: unknown }>(\n PROBE_AGENT_CONNECTION,\n { id },\n );\n return jsonResult(data.probeAgentConnection);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_probe failed', { error });\n return errorResult(\n `Failed to probe agent: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_health')),\n {\n title: 'Agent Health Probes',\n description:\n 'Run health probes against all registered agents. Returns health status for each agent.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsAgentHealthProbes: unknown }>(\n AGENT_HEALTH_PROBES,\n );\n return jsonResult(data.vibecontrolsAgentHealthProbes);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_health failed', { error });\n return errorResult(\n `Failed to get agent health: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_plugins')),\n {\n title: 'List Agent Plugins',\n description: 'List all plugins installed on a specific agent.',\n inputSchema: { agentId: z.string().describe('Agent ID') },\n },\n async ({ agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ agentPlugins: unknown }>(AGENT_PLUGINS, {\n agentId,\n });\n return jsonResult(data.agentPlugins);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_plugins failed', { error });\n return errorResult(\n `Failed to list agent plugins: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_install_plugin')),\n {\n title: 'Install Agent Plugin',\n description: 'Install a plugin on a specific agent by package name.',\n inputSchema: {\n agentId: z.string().describe('Agent ID'),\n packageName: z.string().describe('NPM package name of the plugin to install'),\n },\n },\n async ({ agentId, packageName }) => {\n try {\n const data = await ctx.gql.workspace.request<{ installAgentPlugin: unknown }>(\n INSTALL_AGENT_PLUGIN,\n {\n agentId,\n packageName,\n },\n );\n return jsonResult(data.installAgentPlugin);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_install_plugin failed', { error });\n return errorResult(\n `Failed to install plugin: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'agents_remove_plugin')),\n {\n title: 'Remove Agent Plugin',\n description: 'Remove a plugin from a specific agent.',\n inputSchema: {\n agentId: z.string().describe('Agent ID'),\n packageName: z.string().describe('NPM package name of the plugin to remove'),\n },\n },\n async ({ agentId, packageName }) => {\n try {\n const data = await ctx.gql.workspace.request<{ removeAgentPlugin: unknown }>(\n REMOVE_AGENT_PLUGIN,\n {\n agentId,\n packageName,\n },\n );\n return jsonResult(data.removeAgentPlugin);\n } catch (error) {\n ctx.logger.error('vibecontrols_agents_remove_plugin failed', { error });\n return errorResult(\n `Failed to remove plugin: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_AI_PROMPTS,\n GET_AI_PROMPT,\n CREATE_AI_PROMPT,\n UPDATE_AI_PROMPT,\n DELETE_AI_PROMPT,\n DUPLICATE_AI_PROMPT,\n RENDER_AI_PROMPT,\n RECORD_AI_PROMPT_USAGE,\n} from '../operations.js';\n\nexport function registerAiPromptTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_list')),\n {\n title: 'List AI Prompts',\n description: 'List AI prompt templates with optional filters.',\n inputSchema: {\n category: z.string().optional().describe('Filter by category'),\n status: z.string().optional().describe('Filter by status (ACTIVE, ARCHIVED, DRAFT)'),\n isShared: z.boolean().optional().describe('Only shared prompts'),\n search: z.string().optional().describe('Search text'),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ category, status, isShared, search, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n if (status !== undefined) filter.status = status;\n if (isShared !== undefined) filter.isShared = isShared;\n if (search !== undefined) filter.search = search;\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<{ aiPrompts: unknown }>(LIST_AI_PROMPTS, {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return jsonResult(data.aiPrompts);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_list failed', { error });\n return errorResult(\n `Failed to list AI prompts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_get')),\n {\n title: 'Get AI Prompt',\n description: 'Fetch a single AI prompt by ID.',\n inputSchema: { id: z.string().describe('Prompt ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ aiPrompt: unknown }>(GET_AI_PROMPT, { id });\n return jsonResult(data.aiPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_get failed', { error });\n return errorResult(\n `Failed to get AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_create')),\n {\n title: 'Create AI Prompt',\n description: 'Create a new AI prompt template.',\n inputSchema: {\n name: z.string().describe('Prompt name'),\n content: z.string().describe('Prompt content/template'),\n description: z.string().optional(),\n category: z.string().optional(),\n status: z.string().optional(),\n isShared: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n variables: z.unknown().optional(),\n metadata: z.unknown().optional(),\n },\n },\n async (input) => {\n try {\n const data = await ctx.gql.workspace.request<{ createAIPrompt: unknown }>(\n CREATE_AI_PROMPT,\n { input },\n );\n return jsonResult(data.createAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_create failed', { error });\n return errorResult(\n `Failed to create AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_update')),\n {\n title: 'Update AI Prompt',\n description: 'Update an existing AI prompt.',\n inputSchema: {\n id: z.string().describe('Prompt ID'),\n name: z.string().optional(),\n content: z.string().optional(),\n description: z.string().optional(),\n category: z.string().optional(),\n status: z.string().optional(),\n isShared: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n variables: z.unknown().optional(),\n metadata: z.unknown().optional(),\n },\n },\n async ({ id, ...rest }) => {\n try {\n const input: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(rest)) {\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateAIPrompt: unknown }>(\n UPDATE_AI_PROMPT,\n { id, input },\n );\n return jsonResult(data.updateAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_update failed', { error });\n return errorResult(\n `Failed to update AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_delete')),\n {\n title: 'Delete AI Prompt',\n description: 'Delete an AI prompt.',\n inputSchema: { id: z.string().describe('Prompt ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAIPrompt: boolean }>(\n DELETE_AI_PROMPT,\n { id },\n );\n return jsonResult({ deleted: data.deleteAIPrompt, id });\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_delete failed', { error });\n return errorResult(\n `Failed to delete AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_duplicate')),\n {\n title: 'Duplicate AI Prompt',\n description: 'Duplicate an AI prompt with a new name.',\n inputSchema: {\n id: z.string().describe('Source prompt ID'),\n name: z.string().describe('Name for the duplicate'),\n },\n },\n async ({ id, name }) => {\n try {\n const data = await ctx.gql.workspace.request<{ duplicateAIPrompt: unknown }>(\n DUPLICATE_AI_PROMPT,\n { id, name },\n );\n return jsonResult(data.duplicateAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_duplicate failed', { error });\n return errorResult(\n `Failed to duplicate AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_render')),\n {\n title: 'Render AI Prompt',\n description: 'Render an AI prompt template with variables substituted.',\n inputSchema: {\n id: z.string().describe('Prompt ID'),\n variables: z.unknown().optional().describe('Variables as JSON'),\n },\n },\n async ({ id, variables }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n renderAIPrompt: { promptId: string; rendered: string };\n }>(RENDER_AI_PROMPT, { id, variables });\n return jsonResult(data.renderAIPrompt);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_render failed', { error });\n return errorResult(\n `Failed to render AI prompt: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_prompts_record_usage')),\n {\n title: 'Record AI Prompt Usage',\n description: 'Increment the usage counter on an AI prompt.',\n inputSchema: { id: z.string().describe('Prompt ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ recordAIPromptUsage: unknown }>(\n RECORD_AI_PROMPT_USAGE,\n { id },\n );\n return jsonResult(data.recordAIPromptUsage);\n } catch (error) {\n ctx.logger.error('vibecontrols_actions_ai_prompts_record_usage failed', { error });\n return errorResult(\n `Failed to record AI prompt usage: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_VIBE_DECK_SHARE_LINKS,\n CREATE_VIBE_DECK_SHARE_LINK,\n UPDATE_VIBE_DECK_SHARE_LINK,\n REVOKE_VIBE_DECK_SHARE_LINK,\n VALIDATE_VIBE_DECK_SHARE_LINK,\n SHARED_VIBE_DECK,\n EXECUTE_SHARED_VIBE_DECK_BUTTON,\n} from '../operations.js';\n\nexport function registerVibeDeckShareLinkTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_list')),\n {\n title: 'List VibeDeck Share-Links',\n description: 'List share-links for a VibeDeck.',\n inputSchema: { vibeDeckId: z.string().describe('VibeDeck ID') },\n },\n async ({ vibeDeckId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeDeckShareLinks: unknown[] }>(\n LIST_VIBE_DECK_SHARE_LINKS,\n { vibeDeckId },\n );\n return jsonResult(data.vibeDeckShareLinks);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_list failed', { error });\n return errorResult(\n `Failed to list VibeDeck share-links: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_create')),\n {\n title: 'Create VibeDeck Share-Link',\n description: 'Create a new share-link for a VibeDeck.',\n inputSchema: {\n vibeDeckId: z.string().describe('VibeDeck ID'),\n permission: z.string().optional().describe('EXECUTE or VIEW'),\n visibility: z.string().optional().describe('PUBLIC | RESTRICTED | SIGNED_LINK'),\n name: z.string().optional(),\n password: z.string().optional(),\n maxUses: z.number().optional(),\n expiresInHours: z.number().optional(),\n allowIframe: z.boolean().optional(),\n },\n },\n async (input) => {\n try {\n const data = await ctx.gql.workspace.request<{ createVibeDeckShareLink: unknown }>(\n CREATE_VIBE_DECK_SHARE_LINK,\n { input },\n );\n return jsonResult(data.createVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_create failed', { error });\n return errorResult(\n `Failed to create VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_update')),\n {\n title: 'Update VibeDeck Share-Link',\n description: 'Update an existing VibeDeck share-link.',\n inputSchema: {\n id: z.string().describe('Share-link ID'),\n permission: z.string().optional(),\n visibility: z.string().optional(),\n name: z.string().optional(),\n password: z.string().optional(),\n maxUses: z.number().optional(),\n expiresAt: z.string().optional(),\n allowIframe: z.boolean().optional(),\n },\n },\n async ({ id, ...rest }) => {\n try {\n const input: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(rest)) {\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateVibeDeckShareLink: unknown }>(\n UPDATE_VIBE_DECK_SHARE_LINK,\n { id, input },\n );\n return jsonResult(data.updateVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_update failed', { error });\n return errorResult(\n `Failed to update VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_revoke')),\n {\n title: 'Revoke VibeDeck Share-Link',\n description: 'Revoke a VibeDeck share-link.',\n inputSchema: { id: z.string().describe('Share-link ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeVibeDeckShareLink: unknown }>(\n REVOKE_VIBE_DECK_SHARE_LINK,\n { id },\n );\n return jsonResult(data.revokeVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_revoke failed', { error });\n return errorResult(\n `Failed to revoke VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_validate')),\n {\n title: 'Validate VibeDeck Share-Link',\n description: 'Validate a share-link token (public). Returns access metadata.',\n inputSchema: { token: z.string().describe('Share-link token') },\n },\n async ({ token }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n validateVibeDeckShareLink: unknown;\n }>(VALIDATE_VIBE_DECK_SHARE_LINK, { token });\n return jsonResult(data.validateVibeDeckShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_share_links_validate failed', { error });\n return errorResult(\n `Failed to validate VibeDeck share-link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_get_shared')),\n {\n title: 'Get Shared VibeDeck',\n description: 'Fetch a publicly shared VibeDeck via its token.',\n inputSchema: {\n token: z.string().describe('Share-link token'),\n password: z.string().optional().describe('Password if required'),\n },\n },\n async ({ token, password }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sharedVibeDeck: unknown }>(\n SHARED_VIBE_DECK,\n {\n token,\n password,\n },\n );\n return jsonResult(data.sharedVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_shared_get failed', { error });\n return errorResult(\n `Failed to fetch shared VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibe_deck_share_links_execute_shared_button')),\n {\n title: 'Execute Shared VibeDeck Button',\n description: 'Execute a button on a publicly shared VibeDeck.',\n inputSchema: {\n token: z.string().describe('Share-link token'),\n buttonId: z.string().describe('Button ID'),\n password: z.string().optional().describe('Password if required'),\n },\n },\n async ({ token, buttonId, password }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n executeSharedVibeDeckButton: { success: boolean; output?: string; error?: string };\n }>(EXECUTE_SHARED_VIBE_DECK_BUTTON, { token, buttonId, password });\n return jsonResult(data.executeSharedVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibedecks_shared_execute_button failed', { error });\n return errorResult(\n `Failed to execute shared VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_CATALOGS,\n GET_CATALOG,\n GET_CATALOG_DEPENDENCY_GRAPH,\n GET_CATALOG_SBOM,\n CREATE_CATALOG,\n UPDATE_CATALOG,\n DELETE_CATALOG,\n ADD_COMPONENT_TO_CATALOG,\n REMOVE_COMPONENT_FROM_CATALOG,\n ADD_VIBE_TO_CATALOG,\n REMOVE_VIBE_FROM_CATALOG,\n} from '../operations.js';\n\nconst VisibilityEnum = z.enum(['INTERNAL', 'PRIVATE', 'PUBLIC']);\n\nexport function registerCatalogTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_list')),\n {\n title: 'List Catalogs',\n description:\n 'List service catalogs with optional filters. Returns { items, total, hasMore }.',\n inputSchema: {\n search: z.string().optional().describe('Full-text search on name/description'),\n tags: z.array(z.string()).optional().describe('Filter by tags (has-some)'),\n visibility: VisibilityEnum.optional().describe('Filter by visibility'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Pagination offset'),\n },\n },\n async ({ search, tags, visibility, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (tags !== undefined) filter.tags = tags;\n if (visibility !== undefined) filter.visibility = visibility;\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<{ vibecontrolsCatalogs: unknown }>(\n LIST_CATALOGS,\n {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n },\n );\n return jsonResult(data.vibecontrolsCatalogs);\n } catch (error) {\n ctx.logger.error('catalogs_list failed', { error });\n return errorResult(\n `Failed to list catalogs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_get')),\n {\n title: 'Get Catalog',\n description: 'Get a catalog by ID. Returns the catalog object or null.',\n inputSchema: { id: z.string().describe('Catalog ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsCatalog: unknown }>(\n GET_CATALOG,\n { id },\n );\n return jsonResult(data.vibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_get failed', { error });\n return errorResult(\n `Failed to get catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_dependency_graph')),\n {\n title: 'Catalog Dependency Graph',\n description: 'Get the dependency graph for a catalog. Returns { nodes, edges }.',\n inputSchema: { catalogId: z.string().describe('Catalog ID') },\n },\n async ({ catalogId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n vibecontrolsCatalogDependencyGraph: unknown;\n }>(GET_CATALOG_DEPENDENCY_GRAPH, { catalogId });\n return jsonResult(data.vibecontrolsCatalogDependencyGraph);\n } catch (error) {\n ctx.logger.error('catalogs_dependency_graph failed', { error });\n return errorResult(\n `Failed to get dependency graph: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_sbom')),\n {\n title: 'Catalog SBOM',\n description:\n 'Get the SBOM (software bill of materials) for a catalog. Returns { format, generatedAt, totalCount, components }.',\n inputSchema: { catalogId: z.string().describe('Catalog ID') },\n },\n async ({ catalogId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsCatalogSBOM: unknown }>(\n GET_CATALOG_SBOM,\n { catalogId },\n );\n return jsonResult(data.vibecontrolsCatalogSBOM);\n } catch (error) {\n ctx.logger.error('catalogs_sbom failed', { error });\n return errorResult(\n `Failed to get SBOM: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_create')),\n {\n title: 'Create Catalog',\n description: 'Create a new catalog. Returns the created catalog.',\n inputSchema: {\n name: z.string().describe('Catalog name'),\n description: z.string().optional().describe('Catalog description'),\n visibility: VisibilityEnum.optional().describe('Visibility level'),\n ownerId: z.string().optional().describe('Owner actor ID'),\n ownerName: z.string().optional().describe('Owner display name'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({ name, description, visibility, ownerId, ownerName, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (visibility !== undefined) input.visibility = visibility;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (ownerName !== undefined) input.ownerName = ownerName;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ createVibecontrolsCatalog: unknown }>(\n CREATE_CATALOG,\n { input },\n );\n return jsonResult(data.createVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_create failed', { error });\n return errorResult(\n `Failed to create catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_update')),\n {\n title: 'Update Catalog',\n description: 'Update an existing catalog. Returns the updated catalog.',\n inputSchema: {\n id: z.string().describe('Catalog ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n visibility: VisibilityEnum.optional().describe('Visibility'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({ id, name, description, visibility, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (visibility !== undefined) input.visibility = visibility;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsCatalog: unknown }>(\n UPDATE_CATALOG,\n { id, input },\n );\n return jsonResult(data.updateVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_update failed', { error });\n return errorResult(\n `Failed to update catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_delete')),\n {\n title: 'Delete Catalog',\n description: 'Soft-delete a catalog. Returns { deleted: boolean, catalogId: string }.',\n inputSchema: { id: z.string().describe('Catalog ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsCatalog: boolean }>(\n DELETE_CATALOG,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsCatalog, catalogId: id });\n } catch (error) {\n ctx.logger.error('catalogs_delete failed', { error });\n return errorResult(\n `Failed to delete catalog: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_add_component')),\n {\n title: 'Add Component To Catalog',\n description:\n 'Add a component to a catalog. Returns the membership { id, catalogId, componentId, ... }.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n componentId: z.string().describe('Component ID'),\n },\n },\n async ({ catalogId, componentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n addComponentToVibecontrolsCatalog: unknown;\n }>(ADD_COMPONENT_TO_CATALOG, { catalogId, componentId });\n return jsonResult(data.addComponentToVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_add_component failed', { error });\n return errorResult(\n `Failed to add component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_remove_component')),\n {\n title: 'Remove Component From Catalog',\n description: 'Remove a component from a catalog. Returns { removed: boolean }.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n componentId: z.string().describe('Component ID'),\n },\n },\n async ({ catalogId, componentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n removeComponentFromVibecontrolsCatalog: boolean;\n }>(REMOVE_COMPONENT_FROM_CATALOG, { catalogId, componentId });\n return jsonResult({ removed: data.removeComponentFromVibecontrolsCatalog });\n } catch (error) {\n ctx.logger.error('catalogs_remove_component failed', { error });\n return errorResult(\n `Failed to remove component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_add_vibe')),\n {\n title: 'Add Vibe To Catalog',\n description: 'Add a vibe to a catalog. Returns the membership object.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n vibeId: z.string().describe('Vibe ID'),\n },\n },\n async ({ catalogId, vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ addVibeToVibecontrolsCatalog: unknown }>(\n ADD_VIBE_TO_CATALOG,\n { catalogId, vibeId },\n );\n return jsonResult(data.addVibeToVibecontrolsCatalog);\n } catch (error) {\n ctx.logger.error('catalogs_add_vibe failed', { error });\n return errorResult(\n `Failed to add vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'catalogs_remove_vibe')),\n {\n title: 'Remove Vibe From Catalog',\n description: 'Remove a vibe from a catalog. Returns { removed: boolean }.',\n inputSchema: {\n catalogId: z.string().describe('Catalog ID'),\n vibeId: z.string().describe('Vibe ID'),\n },\n },\n async ({ catalogId, vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n removeVibeFromVibecontrolsCatalog: boolean;\n }>(REMOVE_VIBE_FROM_CATALOG, { catalogId, vibeId });\n return jsonResult({ removed: data.removeVibeFromVibecontrolsCatalog });\n } catch (error) {\n ctx.logger.error('catalogs_remove_vibe failed', { error });\n return errorResult(\n `Failed to remove vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_COMPONENTS,\n GET_COMPONENT,\n CREATE_COMPONENT,\n UPDATE_COMPONENT,\n DELETE_COMPONENT,\n FORK_GITHUB_REPO,\n PUBLISH_COMPONENT_AS_TEMPLATE,\n} from '../operations.js';\n\nconst ComponentTypeEnum = z.enum([\n 'API',\n 'CUSTOM',\n 'DATABASE',\n 'DEPENDENCY',\n 'DOCUMENTATION',\n 'FRONTEND',\n 'INFRASTRUCTURE',\n 'JOB',\n 'LIBRARY',\n 'PACKAGE',\n 'SERVICE',\n 'TOOL',\n 'WORKFLOW',\n]);\n\nconst LifecycleEnum = z.enum(['ACTIVE', 'DEPRECATED', 'END_OF_LIFE', 'EXPERIMENTAL']);\n\nconst TemplateCategoryEnum = z.enum([\n 'BACKEND',\n 'CUSTOM',\n 'FRONTEND',\n 'FULLSTACK',\n 'INFRASTRUCTURE',\n 'LIBRARY',\n 'MICROSERVICE',\n 'STARTER',\n]);\n\nconst ScopeEnum = z.enum(['ORG', 'USER']);\n\nexport function registerComponentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_list')),\n {\n title: 'List Components',\n description: 'List software components. Returns { items, total, hasMore }.',\n inputSchema: {\n search: z.string().optional().describe('Search by name/description'),\n type: ComponentTypeEnum.optional().describe('Filter by component type'),\n lifecycle: LifecycleEnum.optional().describe('Filter by lifecycle stage'),\n teamId: z.string().optional().describe('Filter by team ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags (any)'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Pagination offset'),\n },\n },\n async ({ search, type, lifecycle, teamId, tags, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (type !== undefined) filter.type = type;\n if (lifecycle !== undefined) filter.lifecycle = lifecycle;\n if (teamId !== undefined) filter.teamId = teamId;\n if (tags !== undefined) filter.tags = tags;\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<{ vibecontrolsComponents: unknown }>(\n LIST_COMPONENTS,\n {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n },\n );\n return jsonResult(data.vibecontrolsComponents);\n } catch (error) {\n ctx.logger.error('components_list failed', { error });\n return errorResult(\n `Failed to list components: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_get')),\n {\n title: 'Get Component',\n description: 'Get a component by ID. Returns the component object or null.',\n inputSchema: { id: z.string().describe('Component ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsComponent: unknown }>(\n GET_COMPONENT,\n { id },\n );\n return jsonResult(data.vibecontrolsComponent);\n } catch (error) {\n ctx.logger.error('components_get failed', { error });\n return errorResult(\n `Failed to get component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_create')),\n {\n title: 'Create Component',\n description: 'Create a new component. Returns the created component.',\n inputSchema: {\n name: z.string().describe('Component name'),\n description: z.string().optional().describe('Description'),\n type: ComponentTypeEnum.optional().describe('Component type'),\n lifecycle: LifecycleEnum.optional().describe('Lifecycle stage'),\n version: z.string().optional().describe('Semantic version'),\n language: z.string().optional().describe('Primary language'),\n framework: z.string().optional().describe('Primary framework'),\n repositoryUrl: z.string().optional().describe('Source repository URL'),\n documentationUrl: z.string().optional().describe('Documentation URL'),\n ownerId: z.string().optional().describe('Owner actor ID'),\n ownerName: z.string().optional().describe('Owner display name'),\n teamId: z.string().optional().describe('Team ID'),\n teamName: z.string().optional().describe('Team display name'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { name: args.name };\n for (const k of [\n 'description',\n 'type',\n 'lifecycle',\n 'version',\n 'language',\n 'framework',\n 'repositoryUrl',\n 'documentationUrl',\n 'ownerId',\n 'ownerName',\n 'teamId',\n 'teamName',\n 'tags',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ createVibecontrolsComponent: unknown }>(\n CREATE_COMPONENT,\n { input },\n );\n return jsonResult(data.createVibecontrolsComponent);\n } catch (error) {\n ctx.logger.error('components_create failed', { error });\n return errorResult(\n `Failed to create component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_update')),\n {\n title: 'Update Component',\n description: 'Update an existing component. Returns the updated component.',\n inputSchema: {\n id: z.string().describe('Component ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n lifecycle: LifecycleEnum.optional().describe('Lifecycle'),\n version: z.string().optional().describe('Version'),\n repositoryUrl: z.string().optional().describe('Repository URL'),\n documentationUrl: z.string().optional().describe('Documentation URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n id,\n name,\n description,\n lifecycle,\n version,\n repositoryUrl,\n documentationUrl,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (lifecycle !== undefined) input.lifecycle = lifecycle;\n if (version !== undefined) input.version = version;\n if (repositoryUrl !== undefined) input.repositoryUrl = repositoryUrl;\n if (documentationUrl !== undefined) input.documentationUrl = documentationUrl;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsComponent: unknown }>(\n UPDATE_COMPONENT,\n { id, input },\n );\n return jsonResult(data.updateVibecontrolsComponent);\n } catch (error) {\n ctx.logger.error('components_update failed', { error });\n return errorResult(\n `Failed to update component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_delete')),\n {\n title: 'Delete Component',\n description: 'Soft-delete a component. Returns { deleted, componentId }.',\n inputSchema: { id: z.string().describe('Component ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsComponent: boolean }>(\n DELETE_COMPONENT,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsComponent, componentId: id });\n } catch (error) {\n ctx.logger.error('components_delete failed', { error });\n return errorResult(\n `Failed to delete component: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_fork_git_hub_repo')),\n {\n title: 'Fork GitHub Repo',\n description:\n 'Fork or create a GitHub repo for component setup. Returns { isForked, repoFullName, repoUrl }.',\n inputSchema: {\n repoName: z.string().describe('Name of the new repository'),\n scope: ScopeEnum.describe('USER or ORG'),\n orgName: z.string().optional().describe('Org name (required when scope=ORG)'),\n sourceRepoUrl: z.string().optional().describe('Source repo URL to fork'),\n description: z.string().optional().describe('Repository description'),\n connectionId: z.string().optional().describe('OAuth connection ID'),\n token: z.string().optional().describe('Personal access token (if no connection)'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { repoName: args.repoName, scope: args.scope };\n for (const k of [\n 'orgName',\n 'sourceRepoUrl',\n 'description',\n 'connectionId',\n 'token',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ forkVibecontrolsGitHubRepo: unknown }>(\n FORK_GITHUB_REPO,\n { input },\n );\n return jsonResult(data.forkVibecontrolsGitHubRepo);\n } catch (error) {\n ctx.logger.error('components_fork_github_repo failed', { error });\n return errorResult(\n `Failed to fork repo: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'components_publish_as_template')),\n {\n title: 'Publish Component As Template',\n description:\n 'Publish a component as a reusable template (snapshots the component). Returns the created template.',\n inputSchema: {\n componentId: z.string().describe('Source component ID'),\n name: z.string().describe('Template name'),\n description: z.string().optional().describe('Description'),\n category: TemplateCategoryEnum.optional().describe('Category'),\n version: z.string().optional().describe('Version'),\n setupInstructions: z.string().optional().describe('Markdown setup instructions'),\n sourceRepositoryUrl: z.string().optional().describe('Source repository URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n componentId,\n name,\n description,\n category,\n version,\n setupInstructions,\n sourceRepositoryUrl,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (version !== undefined) input.version = version;\n if (setupInstructions !== undefined) input.setupInstructions = setupInstructions;\n if (sourceRepositoryUrl !== undefined) input.sourceRepositoryUrl = sourceRepositoryUrl;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{\n publishVibecontrolsComponentAsTemplate: unknown;\n }>(PUBLISH_COMPONENT_AS_TEMPLATE, { componentId, input });\n return jsonResult(data.publishVibecontrolsComponentAsTemplate);\n } catch (error) {\n ctx.logger.error('components_publish_as_template failed', { error });\n return errorResult(\n `Failed to publish template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n GET_SCORECARD,\n UPSERT_SCORECARD,\n ADD_SCORECARD_METRIC,\n UPDATE_SCORECARD_METRIC,\n REMOVE_SCORECARD_METRIC,\n} from '../operations.js';\n\nconst OwnerTypeEnum = z.enum(['CATALOG', 'COMPONENT', 'VIBE']);\nconst MetricStatusEnum = z.enum(['FAILING', 'PASSING', 'UNKNOWN', 'WARNING']);\nconst MetricTypeEnum = z.enum([\n 'CICD_HEALTH',\n 'CUSTOM',\n 'DEPENDENCY_FRESHNESS',\n 'DOCUMENTATION_COVERAGE',\n 'INCIDENT_COUNT',\n 'SECURITY_SCORE',\n 'SLO_COMPLIANCE',\n 'TEST_COVERAGE',\n]);\n\nexport function registerScorecardTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_get')),\n {\n title: 'Get Scorecard',\n description:\n 'Get the scorecard for an owner entity (catalog/component/vibe). Returns the scorecard with metrics or null.',\n inputSchema: {\n ownerId: z.string().describe('Owner entity ID'),\n ownerType: OwnerTypeEnum.describe('Owner entity type'),\n },\n },\n async ({ ownerId, ownerType }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsScorecard: unknown }>(\n GET_SCORECARD,\n { ownerId, ownerType },\n );\n return jsonResult(data.vibecontrolsScorecard);\n } catch (error) {\n ctx.logger.error('scorecards_get failed', { error });\n return errorResult(\n `Failed to get scorecard: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_upsert')),\n {\n title: 'Upsert Scorecard',\n description: 'Create or update a scorecard for an owner. Returns the scorecard.',\n inputSchema: {\n ownerId: z.string().describe('Owner entity ID'),\n ownerType: OwnerTypeEnum.describe('Owner entity type'),\n },\n },\n async ({ ownerId, ownerType }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n upsertVibecontrolsScorecard: unknown;\n }>(UPSERT_SCORECARD, { input: { ownerId, ownerType } });\n return jsonResult(data.upsertVibecontrolsScorecard);\n } catch (error) {\n ctx.logger.error('scorecards_upsert failed', { error });\n return errorResult(\n `Failed to upsert scorecard: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_add_metric')),\n {\n title: 'Add Scorecard Metric',\n description: 'Add a new metric to a scorecard. Returns the created metric.',\n inputSchema: {\n scorecardId: z.string().describe('Scorecard ID'),\n name: z.string().describe('Metric display name (unique within scorecard)'),\n description: z.string().optional().describe('Human-readable description'),\n type: MetricTypeEnum.optional().describe('Metric classification'),\n status: MetricStatusEnum.optional().describe('Current status'),\n value: z.number().optional().describe('Current metric value'),\n threshold: z.number().optional().describe('Target threshold'),\n unit: z.string().optional().describe('Unit of measurement (%, count, ms, ...)'),\n iframeUrl: z.string().optional().describe('Optional iframe embed URL'),\n iframeHeight: z.number().optional().describe('Iframe height in pixels'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = { name: args.name };\n for (const k of [\n 'description',\n 'type',\n 'status',\n 'value',\n 'threshold',\n 'unit',\n 'iframeUrl',\n 'iframeHeight',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{\n addVibecontrolsScorecardMetric: unknown;\n }>(ADD_SCORECARD_METRIC, { scorecardId: args.scorecardId, input });\n return jsonResult(data.addVibecontrolsScorecardMetric);\n } catch (error) {\n ctx.logger.error('scorecards_add_metric failed', { error });\n return errorResult(\n `Failed to add metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_update_metric')),\n {\n title: 'Update Scorecard Metric',\n description: 'Update an existing scorecard metric. Returns the updated metric.',\n inputSchema: {\n id: z.string().describe('Metric ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n type: MetricTypeEnum.optional().describe('Type'),\n status: MetricStatusEnum.optional().describe('Status'),\n value: z.number().optional().describe('Current value'),\n threshold: z.number().optional().describe('Threshold'),\n unit: z.string().optional().describe('Unit'),\n iframeUrl: z.string().optional().describe('Iframe URL'),\n iframeHeight: z.number().optional().describe('Iframe height'),\n },\n },\n async (args) => {\n try {\n const input: Record<string, unknown> = {};\n for (const k of [\n 'name',\n 'description',\n 'type',\n 'status',\n 'value',\n 'threshold',\n 'unit',\n 'iframeUrl',\n 'iframeHeight',\n ] as const) {\n const v = (args as Record<string, unknown>)[k];\n if (v !== undefined) input[k] = v;\n }\n const data = await ctx.gql.workspace.request<{\n updateVibecontrolsScorecardMetric: unknown;\n }>(UPDATE_SCORECARD_METRIC, { id: args.id, input });\n return jsonResult(data.updateVibecontrolsScorecardMetric);\n } catch (error) {\n ctx.logger.error('scorecards_update_metric failed', { error });\n return errorResult(\n `Failed to update metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scorecards_remove_metric')),\n {\n title: 'Remove Scorecard Metric',\n description: 'Soft-delete a scorecard metric. Returns { removed: boolean, metricId }.',\n inputSchema: { id: z.string().describe('Metric ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n removeVibecontrolsScorecardMetric: boolean;\n }>(REMOVE_SCORECARD_METRIC, { id });\n return jsonResult({\n removed: data.removeVibecontrolsScorecardMetric,\n metricId: id,\n });\n } catch (error) {\n ctx.logger.error('scorecards_remove_metric failed', { error });\n return errorResult(\n `Failed to remove metric: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_TEMPLATES,\n GET_TEMPLATE,\n UPDATE_TEMPLATE,\n DELETE_TEMPLATE,\n INSTANTIATE_TEMPLATE,\n} from '../operations.js';\n\nconst TemplateCategoryEnum = z.enum([\n 'BACKEND',\n 'CUSTOM',\n 'FRONTEND',\n 'FULLSTACK',\n 'INFRASTRUCTURE',\n 'LIBRARY',\n 'MICROSERVICE',\n 'STARTER',\n]);\nconst TemplateStatusEnum = z.enum(['ARCHIVED', 'DRAFT', 'PUBLISHED']);\n\nexport function registerTemplateTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'templates_list')),\n {\n title: 'List Templates',\n description: 'List reusable component templates. Returns { items, total, hasMore }.',\n inputSchema: {\n search: z.string().optional().describe('Search by name/description'),\n category: TemplateCategoryEnum.optional().describe('Filter by category'),\n status: TemplateStatusEnum.optional().describe('Filter by status'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Pagination offset'),\n },\n },\n async ({ search, category, status, tags, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (category !== undefined) filter.category = category;\n if (status !== undefined) filter.status = status;\n if (tags !== undefined) filter.tags = tags;\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<{ vibecontrolsTemplates: unknown }>(\n LIST_TEMPLATES,\n {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n },\n );\n return jsonResult(data.vibecontrolsTemplates);\n } catch (error) {\n ctx.logger.error('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, 'templates_get')),\n {\n title: 'Get Template',\n description: 'Get a template by ID. Returns the template object or null.',\n inputSchema: { id: z.string().describe('Template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsTemplate: unknown }>(\n GET_TEMPLATE,\n { id },\n );\n return jsonResult(data.vibecontrolsTemplate);\n } catch (error) {\n ctx.logger.error('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, 'templates_update')),\n {\n title: 'Update Template',\n description: 'Update an existing template. Returns the updated template.',\n inputSchema: {\n id: z.string().describe('Template ID'),\n name: z.string().optional().describe('Name'),\n description: z.string().optional().describe('Description'),\n category: TemplateCategoryEnum.optional().describe('Category'),\n status: TemplateStatusEnum.optional().describe('Status'),\n version: z.string().optional().describe('Version'),\n setupInstructions: z.string().optional().describe('Markdown setup instructions'),\n sourceRepositoryUrl: z.string().optional().describe('Source repository URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n id,\n name,\n description,\n category,\n status,\n version,\n setupInstructions,\n sourceRepositoryUrl,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (status !== undefined) input.status = status;\n if (version !== undefined) input.version = version;\n if (setupInstructions !== undefined) input.setupInstructions = setupInstructions;\n if (sourceRepositoryUrl !== undefined) input.sourceRepositoryUrl = sourceRepositoryUrl;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.workspace.request<{ updateVibecontrolsTemplate: unknown }>(\n UPDATE_TEMPLATE,\n { id, input },\n );\n return jsonResult(data.updateVibecontrolsTemplate);\n } catch (error) {\n ctx.logger.error('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, 'templates_delete')),\n {\n title: 'Delete Template',\n description: 'Soft-delete a template. Returns { deleted, templateId }.',\n inputSchema: { id: z.string().describe('Template ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibecontrolsTemplate: boolean }>(\n DELETE_TEMPLATE,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibecontrolsTemplate, templateId: id });\n } catch (error) {\n ctx.logger.error('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 server.registerTool(\n track(mcpToolName(ctx.productName, 'templates_instantiate')),\n {\n title: 'Instantiate Template',\n description: 'Create a new component from a template. Returns the new component.',\n inputSchema: {\n templateId: z.string().describe('Template ID'),\n name: z.string().describe('Name for the new component'),\n description: z.string().optional().describe('Description for the new component'),\n workspaceId: z.string().optional().describe('Target workspace (defaults to current)'),\n variableValues: z\n .record(z.unknown())\n .optional()\n .describe('Variable value overrides as a JSON object'),\n },\n },\n async ({ templateId, name, description, workspaceId, variableValues }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (workspaceId !== undefined) input.workspaceId = workspaceId;\n if (variableValues !== undefined) input.variableValues = variableValues;\n const data = await ctx.gql.workspace.request<{\n instantiateVibecontrolsTemplate: unknown;\n }>(INSTANTIATE_TEMPLATE, { templateId, input });\n return jsonResult(data.instantiateVibecontrolsTemplate);\n } catch (error) {\n ctx.logger.error('templates_instantiate failed', { error });\n return errorResult(\n `Failed to instantiate template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport { LIST_AI_TOOL_EVENTS, CREATE_AI_TOOL_EVENT, RECENT_AI_TOOL_EVENTS } from '../operations.js';\n\nexport function registerAiEventTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_events_list')),\n {\n title: 'List AI Tool Events',\n description: 'List AI tool events with optional filters and pagination.',\n inputSchema: {\n source: z.string().optional().describe('Filter by event source'),\n eventType: z.string().optional().describe('Filter by event type'),\n agentId: z.string().optional().describe('Filter by agent ID'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ source, eventType, agentId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (source !== undefined) filter.source = source;\n if (eventType !== undefined) filter.eventType = eventType;\n if (agentId !== undefined) filter.agentId = agentId;\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<{ aiToolEvents: unknown }>(\n LIST_AI_TOOL_EVENTS,\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.aiToolEvents);\n } catch (error) {\n ctx.logger.error('vibecontrols_ai_events_list failed', { error });\n return errorResult(\n `Failed to list AI events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_events_create')),\n {\n title: 'Create AI Tool Event',\n description: 'Record a new AI tool event.',\n inputSchema: {\n source: z.string().describe('Event source (e.g., mcp, cli, sdk)'),\n eventType: z.string().describe('Event type (e.g., tool_call, completion)'),\n payload: z.string().describe('Event payload as JSON string'),\n agentId: z.string().optional().describe('Associated agent ID'),\n },\n },\n async ({ source, eventType, payload, agentId }) => {\n try {\n const input: Record<string, unknown> = { source, eventType };\n input.payload = JSON.parse(payload);\n if (agentId !== undefined) input.agentId = agentId;\n\n const data = await ctx.gql.workspace.request<{ createAiToolEvent: unknown }>(\n CREATE_AI_TOOL_EVENT,\n {\n input,\n },\n );\n return jsonResult(data.createAiToolEvent);\n } catch (error) {\n ctx.logger.error('vibecontrols_ai_events_create failed', { error });\n return errorResult(\n `Failed to create AI event: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ai_events_recent')),\n {\n title: 'Recent AI Tool Events',\n description: 'Get recent AI tool events for a specific agent.',\n inputSchema: {\n agentId: z.string().describe('Agent ID'),\n limit: z.number().optional().describe('Maximum events to return'),\n },\n },\n async ({ agentId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ recentAiToolEvents: unknown }>(\n RECENT_AI_TOOL_EVENTS,\n { agentId, limit },\n );\n return jsonResult(data.recentAiToolEvents);\n } catch (error) {\n ctx.logger.error('vibecontrols_ai_events_recent failed', { error });\n return errorResult(\n `Failed to get recent AI events: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport { VIBECONTROLS_ANALYTICS } from '../operations.js';\n\nexport function registerAnalyticsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_overview')),\n {\n title: 'VibeControls Analytics Overview',\n description:\n 'Get consolidated analytics overview with KPIs, time series, and breakdowns for all VibeControls entities (agents, sessions, vibes, actions, webhooks, AI events, vibe decks, audit, docs, notes, config).',\n inputSchema: {\n startDate: z\n .string()\n .optional()\n .describe('Start date (ISO format). Defaults to 7 days ago.'),\n endDate: z.string().optional().describe('End date (ISO format). Defaults to now.'),\n granularity: z\n .enum(['HOUR', 'DAY', 'WEEK', 'MONTH'])\n .optional()\n .default('DAY')\n .describe('Time series granularity'),\n entityTypes: z\n .array(\n z.enum([\n 'AGENT',\n 'TARGET',\n 'SESSION',\n 'VIBE',\n 'ACTION',\n 'WEBHOOK',\n 'AI_EVENT',\n 'VIBE_DECK',\n 'AUDIT',\n 'DOCS',\n 'NOTE',\n 'CONFIGURATION',\n ]),\n )\n .optional()\n .describe('Filter to specific entity types (null = all)'),\n agentId: z.string().optional().describe('Filter analytics by agent ID'),\n vibeId: z.string().optional().describe('Filter analytics by vibe ID'),\n },\n },\n async ({ startDate, endDate, granularity, entityTypes, agentId, vibeId }) => {\n try {\n const input: Record<string, unknown> = {\n startDate: startDate || new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n endDate: endDate || new Date().toISOString(),\n granularity: granularity || 'DAY',\n };\n if (entityTypes && entityTypes.length > 0) input.entityTypes = entityTypes;\n if (agentId) input.agentId = agentId;\n if (vibeId) input.vibeId = vibeId;\n\n const data = await ctx.gql.workspace.request<{ vibecontrolsAnalytics: unknown }>(\n VIBECONTROLS_ANALYTICS,\n { input },\n );\n return jsonResult(data.vibecontrolsAnalytics);\n } catch (error) {\n ctx.logger.error('vibecontrols_analytics_overview failed', { error });\n return errorResult(\n `Failed to get analytics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analytics_summary')),\n {\n title: 'VibeControls Analytics Summary',\n description:\n 'Get a quick KPI summary of all VibeControls entity counts (agents, sessions, vibes, actions, etc.). Lighter-weight than the full overview.',\n inputSchema: {\n startDate: z\n .string()\n .optional()\n .describe('Start date (ISO format). Defaults to 7 days ago.'),\n endDate: z.string().optional().describe('End date (ISO format). Defaults to now.'),\n },\n },\n async ({ startDate, endDate }) => {\n try {\n const input = {\n startDate: startDate || new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),\n endDate: endDate || new Date().toISOString(),\n granularity: 'DAY',\n };\n const data = await ctx.gql.workspace.request<{\n vibecontrolsAnalytics: Record<string, Record<string, number | undefined>>;\n }>(VIBECONTROLS_ANALYTICS, { input });\n const a = data.vibecontrolsAnalytics;\n const summary = {\n agents: { total: a.agents?.total, active: a.agents?.active },\n targets: { total: a.targets?.total },\n sessions: { total: a.sessions?.total, active: a.sessions?.active },\n vibes: { total: a.vibes?.total },\n actions: {\n total: a.actions?.total,\n executions: a.actions?.totalExecutions,\n successRate: a.actions?.successRate,\n },\n webhooks: { total: a.webhooks?.total, active: a.webhooks?.active },\n aiEvents: { total: a.aiEvents?.total },\n vibeDecks: {\n totalDecks: a.vibeDecks?.totalDecks,\n totalButtons: a.vibeDecks?.totalButtons,\n },\n audit: { total: a.audit?.total },\n docs: { sites: a.docs?.totalSites, pages: a.docs?.totalPages },\n notes: { total: a.notes?.total, pinned: a.notes?.pinned },\n configurations: { total: a.configurations?.total },\n executionTimeMs: a.executionTimeMs,\n };\n return jsonResult(summary);\n } catch (error) {\n ctx.logger.error('vibecontrols_analytics_summary failed', { error });\n return errorResult(\n `Failed to get analytics summary: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_AUDIT_LOGS,\n GET_AUDIT_LOG,\n AUDIT_LOG_STATS,\n EXPORT_AUDIT_LOGS,\n DELETE_AUDIT_LOG,\n} from '../operations.js';\n\nexport function registerAuditTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_list')),\n {\n title: 'List Audit Logs',\n description: 'List audit logs with optional filters and pagination.',\n inputSchema: {\n action: z.string().optional().describe('Filter by action type'),\n resourceType: z.string().optional().describe('Filter by resource type'),\n resourceId: z.string().optional().describe('Filter by resource ID'),\n actorId: z.string().optional().describe('Filter by actor ID'),\n status: z.string().optional().describe('Filter by status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ action, resourceType, resourceId, actorId, status, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (action !== undefined) filter.action = action;\n if (resourceType !== undefined) filter.resourceType = resourceType;\n if (resourceId !== undefined) filter.resourceId = resourceId;\n if (actorId !== undefined) filter.actorId = actorId;\n if (status !== undefined) filter.status = status;\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<{ vibeAuditLogs: unknown }>(LIST_AUDIT_LOGS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibeAuditLogs);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_list failed', { error });\n return errorResult(\n `Failed to list audit logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_get')),\n {\n title: 'Get Audit Log',\n description: 'Get an audit log entry by its ID.',\n inputSchema: { id: z.string().describe('Audit log ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeAuditLog: unknown }>(GET_AUDIT_LOG, {\n id,\n });\n return jsonResult(data.vibeAuditLog);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_get failed', { error });\n return errorResult(\n `Failed to get audit log: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_stats')),\n {\n title: 'Audit Log Stats',\n description: 'Get aggregated statistics for audit logs.',\n inputSchema: {\n action: z.string().optional().describe('Filter stats by action type'),\n resourceType: z.string().optional().describe('Filter stats by resource type'),\n status: z.string().optional().describe('Filter stats by status'),\n },\n },\n async ({ action, resourceType, status }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (action !== undefined) filter.action = action;\n if (resourceType !== undefined) filter.resourceType = resourceType;\n if (status !== undefined) filter.status = status;\n\n const data = await ctx.gql.workspace.request<{ vibeAuditLogStats: unknown }>(\n AUDIT_LOG_STATS,\n {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n },\n );\n return jsonResult(data.vibeAuditLogStats);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_stats failed', { error });\n return errorResult(\n `Failed to get audit log stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_export')),\n {\n title: 'Export Audit Logs',\n description: 'Export audit logs in a specified format.',\n inputSchema: {\n action: z.string().optional().describe('Filter by action type'),\n resourceType: z.string().optional().describe('Filter by resource type'),\n status: z.string().optional().describe('Filter by status'),\n format: z.string().optional().describe('Export format: json or csv'),\n },\n },\n async ({ action, resourceType, status, format }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (action !== undefined) filter.action = action;\n if (resourceType !== undefined) filter.resourceType = resourceType;\n if (status !== undefined) filter.status = status;\n\n const variables: Record<string, unknown> = {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n };\n if (format !== undefined) variables.format = format;\n\n const data = await ctx.gql.workspace.request<{ exportVibeAuditLogs: unknown }>(\n EXPORT_AUDIT_LOGS,\n variables,\n );\n return jsonResult(data.exportVibeAuditLogs);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_export failed', { error });\n return errorResult(\n `Failed to export audit logs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'audit_delete')),\n {\n title: 'Delete Audit Log',\n description: 'Delete an audit log entry.',\n inputSchema: {\n id: z.string().describe('Audit log ID to delete'),\n reason: z.string().optional().describe('Reason for deletion'),\n },\n },\n async ({ id, reason }) => {\n try {\n const variables: Record<string, unknown> = { id };\n if (reason !== undefined) variables.reason = reason;\n\n const data = await ctx.gql.workspace.request<{ deleteVibeAuditLog: unknown }>(\n DELETE_AUDIT_LOG,\n variables,\n );\n return jsonResult(data.deleteVibeAuditLog);\n } catch (error) {\n ctx.logger.error('vibecontrols_audit_delete failed', { error });\n return errorResult(\n `Failed to delete audit log: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_CONFIGURATIONS,\n GET_CONFIGURATION,\n SET_CONFIGURATION,\n DELETE_CONFIGURATION,\n CONFIGURATIONS_BY_SCOPE,\n} from '../operations.js';\n\nconst ConfigScopeEnum = z.enum(['WORKSPACE', 'VIBE', 'SESSION', 'AGENT', 'USER', 'GLOBAL']);\n\nexport function registerConfigurationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_list')),\n {\n title: 'List Configurations',\n description: 'List configuration key-value pairs with required filter.',\n inputSchema: {\n key: z.string().optional().describe('Filter by key pattern'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Filter by scope entity ID'),\n isSecret: z.boolean().optional().describe('Filter by secret status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ key, scope, scopeId, isSecret, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = { scope };\n if (key !== undefined) filter.key = key;\n if (scopeId !== undefined) filter.scopeId = scopeId;\n if (isSecret !== undefined) filter.isSecret = isSecret;\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<{ configurations: unknown }>(\n LIST_CONFIGURATIONS,\n {\n filter,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n },\n );\n return jsonResult(data.configurations);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_list failed', { error });\n return errorResult(\n `Failed to list configurations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_get')),\n {\n title: 'Get Configuration',\n description: 'Get a configuration value by key and scope.',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ configuration: unknown }>(\n GET_CONFIGURATION,\n {\n key,\n scope,\n scopeId,\n },\n );\n return jsonResult(data.configuration);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_get failed', { error });\n return errorResult(\n `Failed to get configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_set')),\n {\n title: 'Set Configuration',\n description: 'Set (create or update) a configuration value.',\n inputSchema: {\n key: z.string().describe('Configuration key'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n value: z.string().describe('Configuration value as a JSON string'),\n isSecret: z.boolean().optional().describe('Mark as secret (value will be masked in reads)'),\n },\n },\n async ({ key, scope, scopeId, value, isSecret }) => {\n try {\n const parsedValue = JSON.parse(value);\n\n const variables: Record<string, unknown> = { key, scope, value: parsedValue };\n if (scopeId !== undefined) variables.scopeId = scopeId;\n if (isSecret !== undefined) variables.isSecret = isSecret;\n\n const data = await ctx.gql.workspace.request<{ setConfiguration: unknown }>(\n SET_CONFIGURATION,\n variables,\n );\n return jsonResult(data.setConfiguration);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_set failed', { error });\n return errorResult(\n `Failed to set configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_delete')),\n {\n title: 'Delete Configuration',\n description: 'Delete a configuration by key and scope.',\n inputSchema: {\n key: z.string().describe('Configuration key to delete'),\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n },\n },\n async ({ key, scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteConfiguration: boolean }>(\n DELETE_CONFIGURATION,\n { key, scope, scopeId },\n );\n return jsonResult({ deleted: data.deleteConfiguration, key, scope });\n } catch (error) {\n ctx.logger.error('vibecontrols_config_delete failed', { error });\n return errorResult(\n `Failed to delete configuration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'config_by_scope')),\n {\n title: 'Configurations by Scope',\n description: 'Get all configuration values for a given scope.',\n inputSchema: {\n scope: ConfigScopeEnum.describe('Configuration scope'),\n scopeId: z.string().optional().describe('Scope entity ID'),\n },\n },\n async ({ scope, scopeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ configurationsByScope: unknown }>(\n CONFIGURATIONS_BY_SCOPE,\n { scope, scopeId },\n );\n return jsonResult(data.configurationsByScope);\n } catch (error) {\n ctx.logger.error('vibecontrols_config_by_scope failed', { error });\n return errorResult(\n `Failed to get configurations by scope: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Configuration / Security MCP tools.\n * Surface: scans (list/get/run/cancel), findings (list/update-status), policy decision,\n * status, repository config (get/update), exceptions (create/revoke), providers (list/set),\n * evidence presign, scan-run push.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n ALL_SECURITY_SCANS_Q,\n CANCEL_SECURITY_SCAN_M,\n CREATE_SECURITY_EXCEPTION_M,\n MY_SECURITY_SCANS_Q,\n PRESIGN_SECURITY_EVIDENCE_M,\n PUSH_SECURITY_SCAN_RUN_M,\n REPOSITORY_SECURITY_CONFIG_Q,\n REVOKE_SECURITY_EXCEPTION_M,\n RUN_SECURITY_SCAN_M,\n SECURITY_FINDINGS_Q,\n SECURITY_POLICY_DECISION_Q,\n SECURITY_PROVIDERS_Q,\n SECURITY_SCAN_Q,\n SECURITY_STATUS_Q,\n SET_SECURITY_PROVIDER_M,\n UPDATE_REPOSITORY_SECURITY_CONFIG_M,\n UPDATE_SECURITY_FINDING_STATUS_M,\n} from '../operations.js';\n\nconst StageEnum = z.enum([\n 'ARCHIVE_OFFBOARD',\n 'BUILD',\n 'DEPLOY_ALPHA',\n 'DEPLOY_PREVIEW',\n 'DEVELOPER_LOCAL',\n 'INCIDENT_RESPONSE',\n 'MAIN_MERGE',\n 'PACKAGE_PUBLISH',\n 'PROMOTE_PROD',\n 'PULL_REQUEST_DEEP',\n 'PULL_REQUEST_FAST',\n 'REPO_ONBOARD',\n 'RUNTIME_CONTINUOUS',\n 'SCHEDULED_RESCAN',\n]);\n\nconst SeverityEnum = z.enum(['CRITICAL', 'HIGH', 'MEDIUM', 'LOW', 'INFO']);\nconst ScanStatusEnum = z.enum(['CANCELLED', 'ERRORED', 'FAILED', 'QUEUED', 'RUNNING', 'SUCCEEDED']);\nconst ScanConclusionEnum = z.enum(['FAIL', 'PASS', 'SKIPPED', 'WARN']);\nconst FindingCategoryEnum = z.enum([\n 'CONFIG',\n 'LICENSE',\n 'POLICY',\n 'SAST',\n 'SECRET',\n 'SUPPLYCHAIN',\n 'VULN',\n]);\nconst FindingStatusEnum = z.enum(['ACCEPTED', 'FALSE_POSITIVE', 'FIXED', 'OPEN', 'SUPPRESSED']);\nconst EvidenceTypeEnum = z.enum([\n 'COSIGN_BUNDLE',\n 'GRYPE_JSON',\n 'OPA_DECISION',\n 'PROVENANCE',\n 'SARIF',\n 'SBOM_CYCLONEDX',\n 'SBOM_SPDX',\n]);\nconst PolicyLevelEnum = z.enum(['ADVISORY', 'BLOCK', 'WARN']);\n\nfunction strip<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Partial<T> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v !== undefined) (out as Record<string, unknown>)[k] = v;\n }\n return out;\n}\n\nexport function registerConfigSecurityTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_providers')),\n {\n title: 'List Security Providers',\n description: 'List configured security scanner providers in the current workspace.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ securityProviders: unknown }>(\n SECURITY_PROVIDERS_Q,\n );\n return jsonResult(data.securityProviders);\n } catch (error) {\n ctx.logger.error('config_security_providers_list failed', { error });\n return errorResult(\n `Failed to list security providers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_set_provider')),\n {\n title: 'Set Security Provider',\n description: 'Configure (or update) a security provider for a vibe and stage.',\n inputSchema: {\n vibeId: z.string().describe('Vibe ID this provider applies to'),\n stage: StageEnum.describe('Security stage this provider runs at'),\n providerKey: z.string().describe('Provider plugin key (e.g. trivy, gitleaks, semgrep)'),\n config: z\n .string()\n .optional()\n .describe('Optional provider-specific config as a JSON string'),\n },\n },\n async ({ vibeId, stage, providerKey, config }) => {\n try {\n const input: Record<string, unknown> = { vibeId, stage, providerKey };\n if (config !== undefined) input.config = JSON.parse(config);\n const data = await ctx.gql.workspace.request<{ setSecurityProvider: unknown }>(\n SET_SECURITY_PROVIDER_M,\n { input },\n );\n return jsonResult(data.setSecurityProvider);\n } catch (error) {\n ctx.logger.error('config_security_provider_set failed', { error });\n return errorResult(\n `Failed to set security provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n const scansListSchema = {\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n status: ScanStatusEnum.optional(),\n stage: StageEnum.optional(),\n conclusion: ScanConclusionEnum.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n };\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_my_security_scans')),\n {\n title: 'My Security Scans',\n description: 'List security scan runs created by the current user.',\n inputSchema: scansListSchema,\n },\n async ({ vibeId, status, stage, conclusion, limit, offset }) => {\n try {\n const filter = strip({ vibeId, status, stage, conclusion });\n const pagination = strip({ limit, offset });\n const data = await ctx.gql.workspace.request<{ mySecurityScans: unknown }>(\n MY_SECURITY_SCANS_Q,\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.mySecurityScans);\n } catch (error) {\n ctx.logger.error('configuration_security_my_security_scans failed', { error });\n return errorResult(\n `Failed to list my scans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_all_security_scans')),\n {\n title: 'All Security Scans',\n description: 'List all security scan runs in the workspace (requires elevated permissions).',\n inputSchema: scansListSchema,\n },\n async ({ vibeId, status, stage, conclusion, limit, offset }) => {\n try {\n const filter = strip({ vibeId, status, stage, conclusion });\n const pagination = strip({ limit, offset });\n const data = await ctx.gql.workspace.request<{ allSecurityScans: unknown }>(\n ALL_SECURITY_SCANS_Q,\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.allSecurityScans);\n } catch (error) {\n ctx.logger.error('configuration_security_all_security_scans failed', { error });\n return errorResult(\n `Failed to list all scans: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_scan')),\n {\n title: 'Get Security Scan',\n description: 'Get a single security scan run including findings and evidence.',\n inputSchema: { id: z.string().describe('Scan run ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ securityScan: unknown }>(SECURITY_SCAN_Q, {\n id,\n });\n return jsonResult(data.securityScan);\n } catch (error) {\n ctx.logger.error('config_security_scan_get failed', { error });\n return errorResult(\n `Failed to get security scan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_run_scan')),\n {\n title: 'Run Security Scan',\n description: 'Trigger a security scan for a vibe at a specific stage.',\n inputSchema: { vibeId: z.string(), stage: StageEnum },\n },\n async ({ vibeId, stage }) => {\n try {\n const data = await ctx.gql.workspace.request<{ runSecurityScan: unknown }>(\n RUN_SECURITY_SCAN_M,\n { vibeId, stage },\n );\n return jsonResult(data.runSecurityScan);\n } catch (error) {\n ctx.logger.error('config_security_scan_run failed', { error });\n return errorResult(\n `Failed to run security scan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_cancel_scan')),\n {\n title: 'Cancel Security Scan',\n description: 'Cancel an in-flight security scan run.',\n inputSchema: { id: z.string().describe('Scan run ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cancelSecurityScan: unknown }>(\n CANCEL_SECURITY_SCAN_M,\n { id },\n );\n return jsonResult(data.cancelSecurityScan);\n } catch (error) {\n ctx.logger.error('config_security_scan_cancel failed', { error });\n return errorResult(\n `Failed to cancel security scan: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_findings')),\n {\n title: 'List Security Findings',\n description:\n 'List security findings with optional filters (vibe, severity, category, status).',\n inputSchema: {\n vibeId: z.string().optional(),\n status: FindingStatusEnum.optional(),\n severity: SeverityEnum.optional(),\n category: FindingCategoryEnum.optional(),\n search: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ vibeId, status, severity, category, search, limit, offset }) => {\n try {\n const filter = strip({ vibeId, status, severity, category, search });\n const pagination = strip({ limit, offset });\n const data = await ctx.gql.workspace.request<{ securityFindings: unknown }>(\n SECURITY_FINDINGS_Q,\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.securityFindings);\n } catch (error) {\n ctx.logger.error('config_security_findings_list failed', { error });\n return errorResult(\n `Failed to list security findings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_update_finding_status')),\n {\n title: 'Update Security Finding Status',\n description: 'Update the workflow status of a security finding (e.g. OPEN → SUPPRESSED).',\n inputSchema: { id: z.string(), status: FindingStatusEnum },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateSecurityFindingStatus: unknown }>(\n UPDATE_SECURITY_FINDING_STATUS_M,\n { id, status },\n );\n return jsonResult(data.updateSecurityFindingStatus);\n } catch (error) {\n ctx.logger.error('config_security_finding_update_status failed', { error });\n return errorResult(\n `Failed to update finding status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_policy_decision')),\n {\n title: 'Security Policy Decision',\n description: 'Fetch the OPA policy decision for a security scan run.',\n inputSchema: { scanRunId: z.string() },\n },\n async ({ scanRunId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ securityPolicyDecision: unknown }>(\n SECURITY_POLICY_DECISION_Q,\n { scanRunId },\n );\n return jsonResult(data.securityPolicyDecision);\n } catch (error) {\n ctx.logger.error('config_security_policy_decision failed', { error });\n return errorResult(\n `Failed to get policy decision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_status')),\n {\n title: 'Security Status',\n description: 'Aggregated security posture for a single vibe.',\n inputSchema: { vibeId: z.string() },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ securityStatus: unknown }>(\n SECURITY_STATUS_Q,\n { vibeId },\n );\n return jsonResult(data.securityStatus);\n } catch (error) {\n ctx.logger.error('config_security_status failed', { error });\n return errorResult(\n `Failed to get security status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_repository_config')),\n {\n title: 'Get Repository Security Config',\n description: 'Get the repository-level security policy config for a vibe.',\n inputSchema: { vibeId: z.string() },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ repositorySecurityConfig: unknown }>(\n REPOSITORY_SECURITY_CONFIG_Q,\n { vibeId },\n );\n return jsonResult(data.repositorySecurityConfig);\n } catch (error) {\n ctx.logger.error('config_security_repo_config_get failed', { error });\n return errorResult(\n `Failed to get repo security config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_update_repository_config')),\n {\n title: 'Update Repository Security Config',\n description: 'Update the repository-level security policy config for a vibe.',\n inputSchema: {\n vibeId: z.string(),\n policyLevel: PolicyLevelEnum.optional(),\n enabledStages: z.array(StageEnum).optional(),\n pluginAssignments: z.string().optional().describe('JSON string'),\n configYamlEquivalent: z.string().optional().describe('JSON string'),\n },\n },\n async ({ vibeId, policyLevel, enabledStages, pluginAssignments, configYamlEquivalent }) => {\n try {\n const input: Record<string, unknown> = {};\n if (policyLevel !== undefined) input.policyLevel = policyLevel;\n if (enabledStages !== undefined) input.enabledStages = enabledStages;\n if (pluginAssignments !== undefined)\n input.pluginAssignments = JSON.parse(pluginAssignments);\n if (configYamlEquivalent !== undefined)\n input.configYamlEquivalent = JSON.parse(configYamlEquivalent);\n const data = await ctx.gql.workspace.request<{\n updateRepositorySecurityConfig: unknown;\n }>(UPDATE_REPOSITORY_SECURITY_CONFIG_M, { vibeId, input });\n return jsonResult(data.updateRepositorySecurityConfig);\n } catch (error) {\n ctx.logger.error('config_security_repo_config_update failed', { error });\n return errorResult(\n `Failed to update repo security config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_create_exception')),\n {\n title: 'Create Security Exception',\n description: 'Approve a time-bounded exception (waiver) for a security finding.',\n inputSchema: {\n vibeId: z.string(),\n findingFingerprint: z.string(),\n reason: z.string(),\n expiresAt: z.string().describe('ISO 8601 timestamp'),\n compensatingControls: z.string().optional(),\n },\n },\n async ({ vibeId, findingFingerprint, reason, expiresAt, compensatingControls }) => {\n try {\n const input = strip({\n vibeId,\n findingFingerprint,\n reason,\n expiresAt,\n compensatingControls,\n });\n const data = await ctx.gql.workspace.request<{ createSecurityException: unknown }>(\n CREATE_SECURITY_EXCEPTION_M,\n { input },\n );\n return jsonResult(data.createSecurityException);\n } catch (error) {\n ctx.logger.error('config_security_exception_create failed', { error });\n return errorResult(\n `Failed to create exception: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_revoke_exception')),\n {\n title: 'Revoke Security Exception',\n description: 'Revoke a previously-granted security exception.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeSecurityException: boolean }>(\n REVOKE_SECURITY_EXCEPTION_M,\n { id },\n );\n return jsonResult({ revoked: data.revokeSecurityException, id });\n } catch (error) {\n ctx.logger.error('config_security_exception_revoke failed', { error });\n return errorResult(\n `Failed to revoke exception: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_presign_evidence')),\n {\n title: 'Presign Security Evidence Upload',\n description:\n 'Get a presigned URL for uploading a security evidence artifact (SBOM/SARIF/etc).',\n inputSchema: {\n scanRunId: z.string(),\n sha256: z.string().describe('Hex sha256 digest of the artifact'),\n sizeBytes: z.number().describe('Size of the artifact in bytes'),\n type: EvidenceTypeEnum,\n },\n },\n async ({ scanRunId, sha256, sizeBytes, type }) => {\n try {\n const data = await ctx.gql.workspace.request<{ presignSecurityEvidence: unknown }>(\n PRESIGN_SECURITY_EVIDENCE_M,\n { scanRunId, sha256, sizeBytes, type },\n );\n return jsonResult(data.presignSecurityEvidence);\n } catch (error) {\n ctx.logger.error('config_security_evidence_presign failed', { error });\n return errorResult(\n `Failed to presign evidence: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_security_push_scan_run')),\n {\n title: 'Push Security Scan Run',\n description:\n 'Push a complete security scan run from an agent (provider report + findings + evidence refs).',\n inputSchema: { input: z.string().describe('PushSecurityScanRunInput as a JSON string') },\n },\n async ({ input }) => {\n try {\n const parsed = JSON.parse(input);\n const data = await ctx.gql.workspace.request<{ pushSecurityScanRun: unknown }>(\n PUSH_SECURITY_SCAN_RUN_M,\n { input: parsed },\n );\n return jsonResult(data.pushSecurityScanRun);\n } catch (error) {\n ctx.logger.error('config_security_scan_run_push failed', { error });\n return errorResult(\n `Failed to push scan run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/** Configuration / CI MCP tools. */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n GET_CI_PIPELINE_DETAILS_Q,\n GET_CI_PIPELINE_RUNS_Q,\n GET_CI_STATUS_Q,\n GET_REPO_STATS_Q,\n REFRESH_CI_STATUS_M,\n REFRESH_REPO_STATS_M,\n} from '../operations.js';\n\nexport function registerConfigCITools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_status')),\n {\n title: 'Get CI Status',\n description:\n 'Get the cached CI/CD pipeline status for a GitOps provider on an agent (recent runs + workflows + aggregate metrics).',\n inputSchema: {\n providerId: z.string().describe('GitOps provider ID'),\n agentId: z.string().describe('Agent ID executing the request'),\n limit: z.number().optional().describe('Limit recent runs'),\n },\n },\n async ({ providerId, agentId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getCIStatus: unknown }>(GET_CI_STATUS_Q, {\n providerId,\n agentId,\n limit,\n });\n return jsonResult(data.getCIStatus);\n } catch (error) {\n ctx.logger.error('config_ci_status_get failed', { error });\n return errorResult(\n `Failed to get CI status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_refresh_status')),\n {\n title: 'Refresh CI Status',\n description: 'Force refresh of the cached CI/CD pipeline status snapshot.',\n inputSchema: { providerId: z.string(), agentId: z.string() },\n },\n async ({ providerId, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ refreshCIStatus: unknown }>(\n REFRESH_CI_STATUS_M,\n { providerId, agentId },\n );\n return jsonResult(data.refreshCIStatus);\n } catch (error) {\n ctx.logger.error('config_ci_status_refresh failed', { error });\n return errorResult(\n `Failed to refresh CI status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_pipeline_runs')),\n {\n title: 'List CI Pipeline Runs',\n description:\n 'List recent CI pipeline runs from a GitOps provider, optionally filtered by branch.',\n inputSchema: {\n providerId: z.string(),\n agentId: z.string(),\n branch: z.string().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ providerId, agentId, branch, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getCIPipelineRuns: unknown }>(\n GET_CI_PIPELINE_RUNS_Q,\n { providerId, agentId, branch, limit },\n );\n return jsonResult(data.getCIPipelineRuns);\n } catch (error) {\n ctx.logger.error('config_ci_pipeline_runs_list failed', { error });\n return errorResult(\n `Failed to list CI runs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_pipeline_details')),\n {\n title: 'Get CI Pipeline Details',\n description: 'Get detailed information (commit, jobs) for a single CI pipeline run.',\n inputSchema: {\n providerId: z.string(),\n agentId: z.string(),\n runId: z.string(),\n },\n },\n async ({ providerId, agentId, runId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getCIPipelineDetails: unknown }>(\n GET_CI_PIPELINE_DETAILS_Q,\n { providerId, agentId, runId },\n );\n return jsonResult(data.getCIPipelineDetails);\n } catch (error) {\n ctx.logger.error('config_ci_pipeline_details_get failed', { error });\n return errorResult(\n `Failed to get pipeline details: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_get_repo_stats')),\n {\n title: 'Get Repository Stats',\n description:\n 'Get cached repository statistics (stars, forks, languages, PRs, contributors, etc) for a GitOps provider.',\n inputSchema: { providerId: z.string(), agentId: z.string() },\n },\n async ({ providerId, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getRepoStats: unknown }>(GET_REPO_STATS_Q, {\n providerId,\n agentId,\n });\n return jsonResult(data.getRepoStats);\n } catch (error) {\n ctx.logger.error('config_ci_repo_stats_get failed', { error });\n return errorResult(\n `Failed to get repo stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_ci_refresh_repo_stats')),\n {\n title: 'Refresh Repository Stats',\n description: 'Force refresh of the cached repository statistics snapshot.',\n inputSchema: { providerId: z.string(), agentId: z.string() },\n },\n async ({ providerId, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ refreshRepoStats: unknown }>(\n REFRESH_REPO_STATS_M,\n { providerId, agentId },\n );\n return jsonResult(data.refreshRepoStats);\n } catch (error) {\n ctx.logger.error('config_ci_repo_stats_refresh failed', { error });\n return errorResult(\n `Failed to refresh repo stats: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/** Configuration / GitOps providers MCP tools. */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n CREATE_GITOPS_PROVIDER_M,\n DELETE_GITOPS_PROVIDER_M,\n GET_GITOPS_PROVIDER_Q,\n LIST_GITOPS_PROVIDERS_Q,\n UPDATE_GITOPS_PROVIDER_M,\n} from '../operations.js';\n\nconst ProviderTypeEnum = z.enum(['AZURE_DEVOPS', 'BITBUCKET', 'GITHUB', 'GITLAB']);\n\nexport function registerConfigGitopsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_list')),\n {\n title: 'List GitOps Providers',\n description:\n 'List GitOps providers (GitHub/GitLab/Bitbucket/Azure DevOps) in the current workspace.',\n inputSchema: {\n providerType: ProviderTypeEnum.optional(),\n isActive: z.boolean().optional(),\n vibeId: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n },\n async ({ providerType, isActive, vibeId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (providerType !== undefined) filter.providerType = providerType;\n if (isActive !== undefined) filter.isActive = isActive;\n if (vibeId !== undefined) filter.vibeId = vibeId;\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<{ listGitopsProviders: unknown }>(\n LIST_GITOPS_PROVIDERS_Q,\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.listGitopsProviders);\n } catch (error) {\n ctx.logger.error('config_gitops_list failed', { error });\n return errorResult(\n `Failed to list gitops providers: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_get')),\n {\n title: 'Get GitOps Provider',\n description: 'Get a single GitOps provider by ID.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getGitopsProvider: unknown }>(\n GET_GITOPS_PROVIDER_Q,\n { id },\n );\n return jsonResult(data.getGitopsProvider);\n } catch (error) {\n ctx.logger.error('config_gitops_get failed', { error });\n return errorResult(\n `Failed to get gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_create')),\n {\n title: 'Create GitOps Provider',\n description: 'Create a new GitOps provider connection.',\n inputSchema: {\n name: z.string(),\n providerType: ProviderTypeEnum,\n repoUrl: z.string(),\n vibeId: z.string().optional(),\n isActive: z.boolean().optional(),\n metadata: z.string().optional().describe('Optional JSON-string metadata blob'),\n },\n },\n async ({ name, providerType, repoUrl, vibeId, isActive, metadata }) => {\n try {\n const input: Record<string, unknown> = { name, providerType, repoUrl };\n if (vibeId !== undefined) input.vibeId = vibeId;\n if (isActive !== undefined) input.isActive = isActive;\n if (metadata !== undefined) input.metadata = JSON.parse(metadata);\n const data = await ctx.gql.workspace.request<{ createGitopsProvider: unknown }>(\n CREATE_GITOPS_PROVIDER_M,\n { input },\n );\n return jsonResult(data.createGitopsProvider);\n } catch (error) {\n ctx.logger.error('config_gitops_create failed', { error });\n return errorResult(\n `Failed to create gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_update')),\n {\n title: 'Update GitOps Provider',\n description: 'Update an existing GitOps provider connection.',\n inputSchema: {\n id: z.string(),\n name: z.string().optional(),\n repoUrl: z.string().optional(),\n vibeId: z.string().optional(),\n isActive: z.boolean().optional(),\n metadata: z.string().optional().describe('Optional JSON-string metadata blob'),\n },\n },\n async ({ id, name, repoUrl, vibeId, isActive, metadata }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (repoUrl !== undefined) input.repoUrl = repoUrl;\n if (vibeId !== undefined) input.vibeId = vibeId;\n if (isActive !== undefined) input.isActive = isActive;\n if (metadata !== undefined) input.metadata = JSON.parse(metadata);\n const data = await ctx.gql.workspace.request<{ updateGitopsProvider: unknown }>(\n UPDATE_GITOPS_PROVIDER_M,\n { id, input },\n );\n return jsonResult(data.updateGitopsProvider);\n } catch (error) {\n ctx.logger.error('config_gitops_update failed', { error });\n return errorResult(\n `Failed to update gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_gitops_delete')),\n {\n title: 'Delete GitOps Provider',\n description: 'Delete a GitOps provider connection.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteGitopsProvider: boolean }>(\n DELETE_GITOPS_PROVIDER_M,\n { id },\n );\n return jsonResult({ deleted: data.deleteGitopsProvider, id });\n } catch (error) {\n ctx.logger.error('config_gitops_delete failed', { error });\n return errorResult(\n `Failed to delete gitops provider: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/** Configuration / Settings, preferences, secrets MCP tools. */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n DELETE_SETTINGS_SECRET_M,\n LIST_SETTINGS_SECRETS_Q,\n MY_SETTINGS_BY_CATEGORY_Q,\n MY_SETTINGS_Q,\n RESET_SETTINGS_M,\n RESOLVE_INTEGRATION_TOKEN_M,\n SET_SETTINGS_SECRET_M,\n UPDATE_NOTIFICATION_PREFERENCES_M,\n UPDATE_PREFERENCES_M,\n UPDATE_WORKSPACE_DEFAULTS_M,\n} from '../operations.js';\n\nconst SettingsCategoryEnum = z.enum([\n 'ADVANCED',\n 'NOTIFICATIONS',\n 'PREFERENCES',\n 'PROFILE',\n 'SECURITY',\n 'WORKSPACE_DEFAULTS',\n]);\n\nexport function registerConfigSettingsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_mine')),\n {\n title: 'Get My Settings',\n description:\n 'Get the complete settings bundle for the current user (preferences + notifications + workspace defaults + profile + security).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ mySettings: unknown }>(MY_SETTINGS_Q);\n return jsonResult(data.mySettings);\n } catch (error) {\n ctx.logger.error('config_settings_mine failed', { error });\n return errorResult(\n `Failed to get settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_mine_by_category')),\n {\n title: 'Get My Settings by Category',\n description: 'Get a single settings category as a JSON blob.',\n inputSchema: { category: SettingsCategoryEnum },\n },\n async ({ category }) => {\n try {\n const data = await ctx.gql.workspace.request<{ mySettingsByCategory: unknown }>(\n MY_SETTINGS_BY_CATEGORY_Q,\n { category },\n );\n return jsonResult(data.mySettingsByCategory);\n } catch (error) {\n ctx.logger.error('config_settings_mine_by_category failed', { error });\n return errorResult(\n `Failed to get settings category: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_reset')),\n {\n title: 'Reset Settings Category',\n description: 'Reset a settings category to its workspace defaults.',\n inputSchema: { category: SettingsCategoryEnum },\n },\n async ({ category }) => {\n try {\n const data = await ctx.gql.workspace.request<{ resetSettings: boolean }>(RESET_SETTINGS_M, {\n category,\n });\n return jsonResult({ reset: data.resetSettings, category });\n } catch (error) {\n ctx.logger.error('config_settings_reset failed', { error });\n return errorResult(\n `Failed to reset settings: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_update_preferences')),\n {\n title: 'Update Preferences',\n description:\n 'Update the current user UI preferences (theme, density, IDE, font, tab order, etc).',\n inputSchema: {\n theme: z.string().optional(),\n uiDensity: z.string().optional(),\n sidebarCollapsed: z.boolean().optional(),\n codeFont: z.string().optional(),\n codeFontSize: z.number().optional(),\n preferredIdeCommand: z.string().nullable().optional(),\n defaultAgentForVibe: z.string().optional().describe('JSON blob'),\n vibeIdeOverrides: z.string().optional().describe('JSON blob'),\n vibeDetailTabOrder: z.string().optional().describe('JSON blob'),\n },\n },\n async ({\n theme,\n uiDensity,\n sidebarCollapsed,\n codeFont,\n codeFontSize,\n preferredIdeCommand,\n defaultAgentForVibe,\n vibeIdeOverrides,\n vibeDetailTabOrder,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (theme !== undefined) input.theme = theme;\n if (uiDensity !== undefined) input.uiDensity = uiDensity;\n if (sidebarCollapsed !== undefined) input.sidebarCollapsed = sidebarCollapsed;\n if (codeFont !== undefined) input.codeFont = codeFont;\n if (codeFontSize !== undefined) input.codeFontSize = codeFontSize;\n if (preferredIdeCommand !== undefined) input.preferredIdeCommand = preferredIdeCommand;\n if (defaultAgentForVibe !== undefined)\n input.defaultAgentForVibe = JSON.parse(defaultAgentForVibe);\n if (vibeIdeOverrides !== undefined) input.vibeIdeOverrides = JSON.parse(vibeIdeOverrides);\n if (vibeDetailTabOrder !== undefined)\n input.vibeDetailTabOrder = JSON.parse(vibeDetailTabOrder);\n const data = await ctx.gql.workspace.request<{ updatePreferences: unknown }>(\n UPDATE_PREFERENCES_M,\n { input },\n );\n return jsonResult(data.updatePreferences);\n } catch (error) {\n ctx.logger.error('config_settings_preferences_update failed', { error });\n return errorResult(\n `Failed to update preferences: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_update_notif_prefs')),\n {\n title: 'Update Notification Preferences',\n description: 'Update notification toggles and digest cadence.',\n inputSchema: {\n emailDigest: z.boolean().optional(),\n digestFrequency: z.string().optional(),\n agentOffline: z.boolean().optional(),\n sessionError: z.boolean().optional(),\n vibeStatusChange: z.boolean().optional(),\n },\n },\n async (input) => {\n try {\n const cleaned: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(input)) {\n if (v !== undefined) cleaned[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateNotificationPreferences: unknown }>(\n UPDATE_NOTIFICATION_PREFERENCES_M,\n { input: cleaned },\n );\n return jsonResult(data.updateNotificationPreferences);\n } catch (error) {\n ctx.logger.error('config_settings_notifications_update failed', { error });\n return errorResult(\n `Failed to update notifications: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_update_workspace_defaults')),\n {\n title: 'Update Workspace Defaults',\n description:\n 'Update workspace-level default settings for agents, sessions, vibes, telemetry.',\n inputSchema: {\n defaultAgent: z.string().optional(),\n defaultSessionType: z.string().optional(),\n defaultVibeType: z.string().optional(),\n defaultEnvironmentVariables: z.string().optional(),\n autoStartSessions: z.boolean().optional(),\n autoGitSync: z.boolean().optional(),\n agentHeartbeatInterval: z.number().optional(),\n agentMaxSessions: z.number().optional(),\n agentAutoReconnect: z.boolean().optional(),\n autoUpdate: z.boolean().optional(),\n telemetryEnabled: z.boolean().optional(),\n logLevel: z.string().optional(),\n },\n },\n async (input) => {\n try {\n const cleaned: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(input)) {\n if (v !== undefined) cleaned[k] = v;\n }\n const data = await ctx.gql.workspace.request<{ updateWorkspaceDefaults: unknown }>(\n UPDATE_WORKSPACE_DEFAULTS_M,\n { input: cleaned },\n );\n return jsonResult(data.updateWorkspaceDefaults);\n } catch (error) {\n ctx.logger.error('config_settings_workspace_defaults_update failed', { error });\n return errorResult(\n `Failed to update workspace defaults: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_list_secrets')),\n {\n title: 'List Settings Secrets',\n description: 'List stored settings secrets (values are hidden by default).',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ listSettingsSecrets: unknown }>(\n LIST_SETTINGS_SECRETS_Q,\n );\n return jsonResult(data.listSettingsSecrets);\n } catch (error) {\n ctx.logger.error('config_settings_secrets_list failed', { error });\n return errorResult(\n `Failed to list secrets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_set_secret')),\n {\n title: 'Set Settings Secret',\n description: 'Create or update a settings secret (value is encrypted at rest).',\n inputSchema: {\n key: z.string(),\n value: z.string(),\n },\n },\n async ({ key, value }) => {\n try {\n const data = await ctx.gql.workspace.request<{ setSettingsSecret: unknown }>(\n SET_SETTINGS_SECRET_M,\n { input: { key, value } },\n );\n return jsonResult(data.setSettingsSecret);\n } catch (error) {\n ctx.logger.error('config_settings_secret_set failed', { error });\n return errorResult(\n `Failed to set secret: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_delete_secret')),\n {\n title: 'Delete Settings Secret',\n description: 'Delete a settings secret by key.',\n inputSchema: { key: z.string() },\n },\n async ({ key }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSettingsSecret: boolean }>(\n DELETE_SETTINGS_SECRET_M,\n { key },\n );\n return jsonResult({ deleted: data.deleteSettingsSecret, key });\n } catch (error) {\n ctx.logger.error('config_settings_secret_delete failed', { error });\n return errorResult(\n `Failed to delete secret: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'configuration_settings_resolve_integration_token')),\n {\n title: 'Resolve Integration Token',\n description:\n 'Resolve a decrypted integration token for an agent to call third-party APIs (handles OAuth refresh).',\n inputSchema: { connectionId: z.string() },\n },\n async ({ connectionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n vibecontrolsResolveIntegrationToken: unknown;\n }>(RESOLVE_INTEGRATION_TOKEN_M, { connectionId });\n return jsonResult(data.vibecontrolsResolveIntegrationToken);\n } catch (error) {\n ctx.logger.error('config_settings_integration_token_resolve failed', { error });\n return errorResult(\n `Failed to resolve token: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_DOCS_SITES,\n GET_DOCS_SITE,\n CREATE_DOCS_SITE,\n UPDATE_DOCS_SITE,\n DELETE_DOCS_SITE,\n LIST_DOCS_PAGES,\n GET_DOCS_PAGE,\n CREATE_DOCS_PAGE,\n UPDATE_DOCS_PAGE,\n DELETE_DOCS_PAGE,\n COMPILE_DOCS_SITE,\n PUBLISH_DOCS_REVISION,\n ROLLBACK_DOCS_REVISION,\n} from '../operations.js';\n\nexport function registerDocsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_list')),\n {\n title: 'List Docs Sites',\n description: 'List documentation sites with optional filtering by vibe and pagination.',\n inputSchema: {\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ vibeId, limit, offset }) => {\n try {\n const variables: Record<string, unknown> = {};\n if (vibeId !== undefined) variables.vibeId = vibeId;\n if (limit !== undefined) variables.limit = limit;\n if (offset !== undefined) variables.offset = offset;\n\n const data = await ctx.gql.workspace.request<{ docsSites: unknown }>(\n LIST_DOCS_SITES,\n variables,\n );\n return jsonResult(data.docsSites);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_list failed', { error });\n return errorResult(\n `Failed to list docs sites: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_get')),\n {\n title: 'Get Docs Site',\n description: 'Get a documentation site by its vibe ID.',\n inputSchema: { vibeId: z.string().describe('Vibe ID') },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ docsSite: unknown }>(GET_DOCS_SITE, {\n vibeId,\n });\n return jsonResult(data.docsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_get failed', { error });\n return errorResult(\n `Failed to get docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_create')),\n {\n title: 'Create Docs Site',\n description: 'Create a new documentation site.',\n inputSchema: {\n vibeId: z.string().describe('Vibe ID to associate the docs site with'),\n name: z.string().describe('Docs site name'),\n visibility: z.string().optional().describe('PRIVATE or PUBLIC'),\n runtime: z.string().optional().describe('Docs runtime/framework'),\n },\n },\n async ({ vibeId, name, visibility, runtime }) => {\n try {\n const input: Record<string, unknown> = { vibeId, name };\n if (visibility !== undefined) input.visibility = visibility;\n if (runtime !== undefined) input.runtime = runtime;\n\n const data = await ctx.gql.workspace.request<{ createDocsSite: unknown }>(\n CREATE_DOCS_SITE,\n {\n input,\n },\n );\n return jsonResult(data.createDocsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_create failed', { error });\n return errorResult(\n `Failed to create docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_update')),\n {\n title: 'Update Docs Site',\n description: 'Update an existing documentation site.',\n inputSchema: {\n id: z.string().describe('Docs site ID'),\n name: z.string().optional().describe('Updated name'),\n visibility: z.string().optional().describe('PRIVATE or PUBLIC'),\n runtime: z.string().optional().describe('Updated runtime/framework'),\n },\n },\n async ({ id, name, visibility, runtime }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (visibility !== undefined) input.visibility = visibility;\n if (runtime !== undefined) input.runtime = runtime;\n\n const data = await ctx.gql.workspace.request<{ updateDocsSite: unknown }>(\n UPDATE_DOCS_SITE,\n {\n id,\n input,\n },\n );\n return jsonResult(data.updateDocsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_update failed', { error });\n return errorResult(\n `Failed to update docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_sites_delete')),\n {\n title: 'Delete Docs Site',\n description: 'Delete a documentation site.',\n inputSchema: { id: z.string().describe('Docs site ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteDocsSite: boolean }>(\n DELETE_DOCS_SITE,\n { id },\n );\n return jsonResult({ deleted: data.deleteDocsSite, docsSiteId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_sites_delete failed', { error });\n return errorResult(\n `Failed to delete docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_list')),\n {\n title: 'List Docs Pages',\n description: 'List pages in a documentation site with optional status filter.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID'),\n status: z.string().optional().describe('Filter by page status'),\n },\n },\n async ({ siteId, status }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n\n const data = await ctx.gql.workspace.request<{ docsPages: unknown }>(LIST_DOCS_PAGES, {\n siteId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n });\n return jsonResult(data.docsPages);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_list failed', { error });\n return errorResult(\n `Failed to list docs pages: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_get')),\n {\n title: 'Get Docs Page',\n description: 'Get a documentation page by its ID.',\n inputSchema: { id: z.string().describe('Docs page ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ docsPage: unknown }>(GET_DOCS_PAGE, { id });\n return jsonResult(data.docsPage);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_get failed', { error });\n return errorResult(\n `Failed to get docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_create')),\n {\n title: 'Create Docs Page',\n description: 'Create a new documentation page.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID'),\n title: z.string().describe('Page title'),\n slug: z.string().optional().describe('URL slug for the page'),\n content: z.string().optional().describe('Page content (markdown supported)'),\n parentId: z.string().optional().describe('Parent page ID for nesting'),\n sidebarPosition: z.number().optional().describe('Position in the sidebar'),\n },\n },\n async ({ siteId, title, slug, content, parentId, sidebarPosition }) => {\n try {\n const input: Record<string, unknown> = { siteId, title };\n if (slug !== undefined) input.slug = slug;\n if (content !== undefined) input.content = content;\n if (parentId !== undefined) input.parentId = parentId;\n if (sidebarPosition !== undefined) input.sidebarPosition = sidebarPosition;\n\n const data = await ctx.gql.workspace.request<{ createDocsPage: unknown }>(\n CREATE_DOCS_PAGE,\n {\n input,\n },\n );\n return jsonResult(data.createDocsPage);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_create failed', { error });\n return errorResult(\n `Failed to create docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_update')),\n {\n title: 'Update Docs Page',\n description: 'Update an existing documentation page.',\n inputSchema: {\n id: z.string().describe('Docs page ID'),\n title: z.string().optional().describe('Updated title'),\n slug: z.string().optional().describe('Updated slug'),\n content: z.string().optional().describe('Updated content'),\n parentId: z.string().optional().describe('Updated parent page ID'),\n sidebarPosition: z.number().optional().describe('Updated sidebar position'),\n },\n },\n async ({ id, title, slug, content, parentId, sidebarPosition }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (slug !== undefined) input.slug = slug;\n if (content !== undefined) input.content = content;\n if (parentId !== undefined) input.parentId = parentId;\n if (sidebarPosition !== undefined) input.sidebarPosition = sidebarPosition;\n\n const data = await ctx.gql.workspace.request<{ updateDocsPage: unknown }>(\n UPDATE_DOCS_PAGE,\n {\n id,\n input,\n },\n );\n return jsonResult(data.updateDocsPage);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_update failed', { error });\n return errorResult(\n `Failed to update docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_pages_delete')),\n {\n title: 'Delete Docs Page',\n description: 'Delete a documentation page.',\n inputSchema: { id: z.string().describe('Docs page ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteDocsPage: boolean }>(\n DELETE_DOCS_PAGE,\n { id },\n );\n return jsonResult({ deleted: data.deleteDocsPage, docsPageId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_pages_delete failed', { error });\n return errorResult(\n `Failed to delete docs page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_compile')),\n {\n title: 'Compile Docs Site',\n description: 'Compile a documentation site, optionally publishing it.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID to compile'),\n publish: z.boolean().optional().describe('Publish after compilation'),\n },\n },\n async ({ siteId, publish }) => {\n try {\n const variables: Record<string, unknown> = { siteId };\n if (publish !== undefined) variables.publish = publish;\n\n const data = await ctx.gql.workspace.request<{ compileDocsSite: unknown }>(\n COMPILE_DOCS_SITE,\n variables,\n );\n return jsonResult(data.compileDocsSite);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_compile failed', { error });\n return errorResult(\n `Failed to compile docs site: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_publish')),\n {\n title: 'Publish Docs Revision',\n description: 'Publish a specific docs revision.',\n inputSchema: { revisionId: z.string().describe('Revision ID to publish') },\n },\n async ({ revisionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ publishDocsRevision: unknown }>(\n PUBLISH_DOCS_REVISION,\n { revisionId },\n );\n return jsonResult(data.publishDocsRevision);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_publish failed', { error });\n return errorResult(\n `Failed to publish docs revision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'docs_rollback')),\n {\n title: 'Rollback Docs Revision',\n description: 'Rollback a documentation site to a previous revision.',\n inputSchema: {\n siteId: z.string().describe('Docs site ID'),\n revisionId: z.string().describe('Revision ID to rollback to'),\n },\n },\n async ({ siteId, revisionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ rollbackDocsRevision: unknown }>(\n ROLLBACK_DOCS_REVISION,\n {\n siteId,\n revisionId,\n },\n );\n return jsonResult(data.rollbackDocsRevision);\n } catch (error) {\n ctx.logger.error('vibecontrols_docs_rollback failed', { error });\n return errorResult(\n `Failed to rollback docs revision: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_NOTES,\n GET_NOTE,\n CREATE_NOTE,\n UPDATE_NOTE,\n DELETE_NOTE,\n SEARCH_NOTES,\n PIN_NOTE,\n UNPIN_NOTE,\n} from '../operations.js';\n\nexport function registerNoteTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_list')),\n {\n title: 'List Notes',\n description: 'List notes with optional filters and pagination.',\n inputSchema: {\n title: z.string().optional().describe('Filter by title'),\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n isPinned: z.boolean().optional().describe('Filter by pinned status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ title, vibeId, tags, isPinned, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (title !== undefined) filter.title = title;\n if (vibeId !== undefined) filter.vibeId = vibeId;\n if (tags !== undefined) filter.tags = tags;\n if (isPinned !== undefined) filter.isPinned = isPinned;\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<{ notes: unknown }>(LIST_NOTES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.notes);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_list failed', { error });\n return errorResult(\n `Failed to list notes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_get')),\n {\n title: 'Get Note',\n description: 'Get a note by its ID.',\n inputSchema: { id: z.string().describe('Note ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ note: unknown }>(GET_NOTE, { id });\n return jsonResult(data.note);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_get failed', { error });\n return errorResult(\n `Failed to get note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_create')),\n {\n title: 'Create Note',\n description: 'Create a new note.',\n inputSchema: {\n title: z.string().describe('Note title'),\n content: z.string().optional().describe('Note content (markdown supported)'),\n tags: z.array(z.string()).optional().describe('Tags for categorization'),\n isPinned: z.boolean().optional().describe('Pin the note'),\n vibeId: z.string().optional().describe('Associated vibe ID'),\n },\n },\n async ({ title, content, tags, isPinned, vibeId }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (content !== undefined) input.content = content;\n if (tags !== undefined) input.tags = tags;\n if (isPinned !== undefined) input.isPinned = isPinned;\n if (vibeId !== undefined) input.vibeId = vibeId;\n\n const data = await ctx.gql.workspace.request<{ createNote: unknown }>(CREATE_NOTE, {\n input,\n });\n return jsonResult(data.createNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_create failed', { error });\n return errorResult(\n `Failed to create note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_update')),\n {\n title: 'Update Note',\n description: 'Update an existing note.',\n inputSchema: {\n id: z.string().describe('Note ID'),\n title: z.string().optional().describe('Updated title'),\n content: z.string().optional().describe('Updated content'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n isPinned: z.boolean().optional().describe('Updated pin status'),\n },\n },\n async ({ id, title, content, tags, isPinned }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (content !== undefined) input.content = content;\n if (tags !== undefined) input.tags = tags;\n if (isPinned !== undefined) input.isPinned = isPinned;\n\n const data = await ctx.gql.workspace.request<{ updateNote: unknown }>(UPDATE_NOTE, {\n id,\n input,\n });\n return jsonResult(data.updateNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_update failed', { error });\n return errorResult(\n `Failed to update note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_delete')),\n {\n title: 'Delete Note',\n description: 'Delete a note.',\n inputSchema: { id: z.string().describe('Note ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteNote: boolean }>(DELETE_NOTE, { id });\n return jsonResult({ deleted: data.deleteNote, noteId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_delete failed', { error });\n return errorResult(\n `Failed to delete note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_search')),\n {\n title: 'Search Notes',\n description: 'Full-text search across notes.',\n inputSchema: {\n query: z.string().describe('Search query string'),\n vibeId: z.string().optional().describe('Scope search to a specific vibe'),\n limit: z.number().optional().describe('Maximum results'),\n },\n },\n async ({ query, vibeId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ searchNotes: unknown }>(SEARCH_NOTES, {\n query,\n vibeId,\n limit,\n });\n return jsonResult(data.searchNotes);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_search failed', { error });\n return errorResult(\n `Failed to search notes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_pin')),\n {\n title: 'Pin Note',\n description: 'Pin a note so it appears at the top of lists.',\n inputSchema: { id: z.string().describe('Note ID to pin') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ pinNote: unknown }>(PIN_NOTE, { id });\n return jsonResult(data.pinNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_pin failed', { error });\n return errorResult(\n `Failed to pin note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notes_unpin')),\n {\n title: 'Unpin Note',\n description: 'Unpin a previously pinned note.',\n inputSchema: { id: z.string().describe('Note ID to unpin') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ unpinNote: unknown }>(UNPIN_NOTE, { id });\n return jsonResult(data.unpinNote);\n } catch (error) {\n ctx.logger.error('vibecontrols_notes_unpin failed', { error });\n return errorResult(\n `Failed to unpin note: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport {\n SHARE_SESSION,\n CREATE_SESSION_SHARE_LINK,\n REVOKE_SESSION_SHARE,\n REVOKE_SESSION_SHARE_LINK,\n SESSION_SHARES,\n SESSION_SHARE_LINKS,\n SESSION_COLLABORATORS,\n SESSIONS_SHARED_WITH_ME,\n UPDATE_SESSION_SHARE,\n JOIN_SHARED_SESSION,\n LEAVE_SHARED_SESSION,\n REQUEST_SESSION_CONTROL,\n RELEASE_SESSION_CONTROL,\n TRANSFER_SESSION_CONTROL,\n} from '../operations.js';\n\nexport function registerSessionSharingTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share')),\n {\n title: 'Share Session',\n description: 'Share a session with another user.',\n inputSchema: {\n sessionId: z.string().describe('Session ID to share'),\n sharedWithId: z.string().describe('User ID to share with'),\n permission: z.string().describe('Permission level: VIEW or CONTROL'),\n },\n },\n async ({ sessionId, sharedWithId, permission }) => {\n try {\n const input: Record<string, unknown> = { sessionId, sharedWithId, permission };\n const data = await ctx.gql.workspace.request<{ shareSession: unknown }>(SHARE_SESSION, {\n input,\n });\n return jsonResult(data.shareSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share failed', { error });\n return errorResult(\n `Failed to share session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_link_create')),\n {\n title: 'Create Session Share Link',\n description: 'Create a shareable link for a session.',\n inputSchema: {\n sessionId: z.string().describe('Session ID'),\n permission: z.string().describe('Permission level: VIEW or CONTROL'),\n expiresAt: z.string().optional().describe('Expiration date in ISO format'),\n },\n },\n async ({ sessionId, permission, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { sessionId, permission };\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{ createSessionShareLink: unknown }>(\n CREATE_SESSION_SHARE_LINK,\n { input },\n );\n return jsonResult(data.createSessionShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_link_create failed', { error });\n return errorResult(\n `Failed to create session share link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_revoke')),\n {\n title: 'Revoke Session Share',\n description: 'Revoke a session share.',\n inputSchema: { id: z.string().describe('Session share ID to revoke') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeSessionShare: unknown }>(\n REVOKE_SESSION_SHARE,\n {\n id,\n },\n );\n return jsonResult(data.revokeSessionShare);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_revoke failed', { error });\n return errorResult(\n `Failed to revoke session share: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_link_revoke')),\n {\n title: 'Revoke Session Share Link',\n description: 'Revoke a session share link.',\n inputSchema: { id: z.string().describe('Session share link ID to revoke') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ revokeSessionShareLink: unknown }>(\n REVOKE_SESSION_SHARE_LINK,\n { id },\n );\n return jsonResult(data.revokeSessionShareLink);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_link_revoke failed', { error });\n return errorResult(\n `Failed to revoke session share link: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_shares')),\n {\n title: 'List Session Shares',\n description: 'List all shares for a session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionShares: unknown }>(SESSION_SHARES, {\n sessionId,\n });\n return jsonResult(data.sessionShares);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_shares failed', { error });\n return errorResult(\n `Failed to list session shares: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_links')),\n {\n title: 'List Session Share Links',\n description: 'List all share links for a session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionShareLinks: unknown }>(\n SESSION_SHARE_LINKS,\n {\n sessionId,\n },\n );\n return jsonResult(data.sessionShareLinks);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_links failed', { error });\n return errorResult(\n `Failed to list session share links: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_collaborators')),\n {\n title: 'List Session Collaborators',\n description: 'List all collaborators for a session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionCollaborators: unknown }>(\n SESSION_COLLABORATORS,\n { sessionId },\n );\n return jsonResult(data.sessionCollaborators);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_collaborators failed', { error });\n return errorResult(\n `Failed to list session collaborators: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_shared_with_me')),\n {\n title: 'Sessions Shared With Me',\n description: 'List sessions that have been shared with the current user.',\n inputSchema: {\n permission: z.string().optional().describe('Filter by permission level'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ permission, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (permission !== undefined) filter.permission = permission;\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<{\n sessionsSharedWithMe: {\n totalCount?: number;\n edges?: Array<{ cursor: string; node: Record<string, unknown> }>;\n };\n }>(SESSIONS_SHARED_WITH_ME, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n const edges = data.sessionsSharedWithMe?.edges ?? [];\n return jsonResult({\n totalCount: data.sessionsSharedWithMe?.totalCount ?? edges.length,\n items: edges.map((edge) => edge.node),\n edges,\n });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_shared_with_me failed', { error });\n return errorResult(\n `Failed to list shared sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_share_update')),\n {\n title: 'Update Session Share',\n description: 'Update an existing session share (permission/expiry).',\n inputSchema: {\n id: z.string().describe('Session share ID'),\n permission: z.string().optional().describe('VIEW or INTERACT'),\n expiresAt: z.string().optional().describe('Expiration date in ISO format'),\n },\n },\n async ({ id, permission, expiresAt }) => {\n try {\n const input: Record<string, unknown> = {};\n if (permission !== undefined) input.permission = permission;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n const data = await ctx.gql.workspace.request<{ updateSessionShare: unknown }>(\n UPDATE_SESSION_SHARE,\n { id, input },\n );\n return jsonResult(data.updateSessionShare);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_share_update failed', { error });\n return errorResult(\n `Failed to update session share: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_join')),\n {\n title: 'Join Shared Session',\n description: 'Join a shared session via share id or share-link token.',\n inputSchema: {\n shareId: z.string().optional().describe('Direct share ID'),\n shareToken: z.string().optional().describe('Share link token'),\n password: z.string().optional().describe('Password if the link is protected'),\n },\n },\n async ({ shareId, shareToken, password }) => {\n try {\n const input: Record<string, unknown> = {};\n if (shareId !== undefined) input.shareId = shareId;\n if (shareToken !== undefined) input.shareToken = shareToken;\n if (password !== undefined) input.password = password;\n const data = await ctx.gql.workspace.request<{ joinSharedSession: unknown }>(\n JOIN_SHARED_SESSION,\n { input },\n );\n return jsonResult(data.joinSharedSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_join failed', { error });\n return errorResult(\n `Failed to join shared session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_leave')),\n {\n title: 'Leave Shared Session',\n description: 'Leave a shared session as a collaborator.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ leaveSharedSession: boolean }>(\n LEAVE_SHARED_SESSION,\n { sessionId },\n );\n return jsonResult({ left: data.leaveSharedSession });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_leave failed', { error });\n return errorResult(\n `Failed to leave shared session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_request_control')),\n {\n title: 'Request Session Control',\n description: 'Request control of a shared session (INTERACT permission).',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ requestSessionControl: boolean }>(\n REQUEST_SESSION_CONTROL,\n { sessionId },\n );\n return jsonResult({ requested: data.requestSessionControl });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_request_control failed', { error });\n return errorResult(\n `Failed to request session control: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_release_control')),\n {\n title: 'Release Session Control',\n description: 'Release control of a shared session.',\n inputSchema: { sessionId: z.string().describe('Session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ releaseSessionControl: boolean }>(\n RELEASE_SESSION_CONTROL,\n { sessionId },\n );\n return jsonResult({ released: data.releaseSessionControl });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_release_control failed', { error });\n return errorResult(\n `Failed to release session control: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_transfer_control')),\n {\n title: 'Transfer Session Control',\n description: 'Transfer control of a shared session to another collaborator.',\n inputSchema: {\n sessionId: z.string().describe('Session ID'),\n toUserId: z.string().describe('User ID to transfer control to'),\n },\n },\n async ({ sessionId, toUserId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ transferSessionControl: boolean }>(\n TRANSFER_SESSION_CONTROL,\n { sessionId, toUserId },\n );\n return jsonResult({ transferred: data.transferSessionControl });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_transfer_control failed', { error });\n return errorResult(\n `Failed to transfer session control: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_SESSIONS,\n GET_SESSION,\n CREATE_SESSION,\n START_SESSION,\n STOP_SESSION,\n RESTART_SESSION,\n TERMINATE_SESSION,\n SEND_SESSION_INPUT,\n START_SESSION_TERMINAL,\n SESSION_OUTPUT,\n ACTIVE_SESSIONS,\n CHECK_SESSION_HEALTH,\n BULK_RESTART_SESSIONS,\n BULK_STOP_SESSIONS,\n BULK_TERMINATE_SESSIONS,\n UPDATE_SESSION,\n UPDATE_SESSION_STATUS,\n DELETE_SESSION,\n KILL_SESSION,\n STOP_SESSION_TERMINAL,\n RESTART_SESSION_TERMINAL,\n START_TARGET_TERMINAL,\n STOP_TARGET_TERMINAL,\n EXPORT_SESSIONS,\n} from '../operations.js';\n\nconst VibecontrolsSessionStatusEnum = z\n .enum(['PENDING', 'STARTING', 'RUNNING', 'STOPPED', 'ERROR', 'TERMINATED'])\n .describe('Lifecycle status of a vibecontrols session');\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Sessions',\n description: 'List terminal sessions with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by session name'),\n type: z\n .string()\n .optional()\n .describe('Filter by type (TMUX, SSH, TERMINAL, SCRIPT, CUSTOM)'),\n status: z\n .string()\n .optional()\n .describe('Filter by status (PENDING, STARTING, RUNNING, STOPPED, ERROR, TERMINATED)'),\n agentId: z.string().optional().describe('Filter by agent ID'),\n vibeId: z.string().optional().describe('Filter by vibe ID'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Skip results'),\n },\n },\n async ({ name, type, status, agentId, vibeId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (type !== undefined) filter.type = type;\n if (status !== undefined) filter.status = status;\n if (agentId !== undefined) filter.agentId = agentId;\n if (vibeId !== undefined) filter.vibeId = vibeId;\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<{ sessions: unknown }>(LIST_SESSIONS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.sessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_list failed', { error });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_get')),\n {\n title: 'Get Session',\n description: 'Get a terminal session by its ID.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ session: unknown }>(GET_SESSION, { id });\n return jsonResult(data.session);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_get failed', { error });\n return errorResult(\n `Failed to get session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_create')),\n {\n title: 'Create Session',\n description: 'Create a new terminal session.',\n inputSchema: {\n name: z.string().describe('Session name'),\n command: z.string().optional().describe('Command to run'),\n workingDirectory: z.string().optional().describe('Working directory'),\n type: z.string().optional().describe('Session type (TMUX, SSH, TERMINAL, SCRIPT, CUSTOM)'),\n agentId: z.string().optional().describe('Agent ID'),\n vibeId: z.string().optional().describe('Vibe ID'),\n tmuxSessionName: z.string().optional().describe('Tmux session name'),\n autoStart: z.boolean().optional().describe('Auto-start on creation'),\n },\n },\n async ({\n name,\n command,\n workingDirectory,\n type,\n agentId,\n vibeId,\n tmuxSessionName,\n autoStart,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (command !== undefined) input.command = command;\n if (workingDirectory !== undefined) input.workingDirectory = workingDirectory;\n if (type !== undefined) input.type = type;\n if (agentId !== undefined) input.agentId = agentId;\n if (vibeId !== undefined) input.vibeId = vibeId;\n if (tmuxSessionName !== undefined) input.tmuxSessionName = tmuxSessionName;\n if (autoStart !== undefined) input.autoStart = autoStart;\n\n const data = await ctx.gql.workspace.request<{ createSession: unknown }>(CREATE_SESSION, {\n input,\n });\n return jsonResult(data.createSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_create failed', { error });\n return errorResult(\n `Failed to create session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start')),\n {\n title: 'Start Session',\n description: 'Start a terminal session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startSession: unknown }>(START_SESSION, {\n id,\n });\n return jsonResult(data.startSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_start failed', { error });\n return errorResult(\n `Failed to start session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_stop')),\n {\n title: 'Stop Session',\n description: 'Stop a running terminal session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopSession: unknown }>(STOP_SESSION, {\n id,\n });\n return jsonResult(data.stopSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_stop failed', { error });\n return errorResult(\n `Failed to stop session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_restart')),\n {\n title: 'Restart Session',\n description: 'Restart a terminal session (stop then start).',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restartSession: unknown }>(RESTART_SESSION, {\n id,\n });\n return jsonResult(data.restartSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_restart failed', { error });\n return errorResult(\n `Failed to restart session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_terminate')),\n {\n title: 'Terminate Session',\n description: 'Forcefully terminate a terminal session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ terminateSession: unknown }>(\n TERMINATE_SESSION,\n {\n id,\n },\n );\n return jsonResult({ terminated: data.terminateSession, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_terminate failed', { error });\n return errorResult(\n `Failed to terminate session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_send_input')),\n {\n title: 'Send Session Input',\n description: 'Send keystrokes or text to a running terminal session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n input: z.string().describe('Text/keystrokes to send'),\n },\n },\n async ({ id, input }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sendSessionInput: unknown }>(\n SEND_SESSION_INPUT,\n {\n id,\n input,\n },\n );\n return jsonResult({ sent: data.sendSessionInput, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_send_input failed', { error });\n return errorResult(\n `Failed to send input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start_terminal')),\n {\n title: 'Start Web Terminal',\n description: 'Start a web terminal (ttyd) for browser-based access to a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startSessionTerminal: unknown }>(\n START_SESSION_TERMINAL,\n { id },\n );\n return jsonResult(data.startSessionTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_start_terminal failed', { error });\n return errorResult(\n `Failed to start terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_output')),\n {\n title: 'Get Session Output',\n description: 'Get recent output from a terminal session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n lines: z.number().optional().describe('Number of lines to return (default: 50)'),\n },\n },\n async ({ id, lines }) => {\n try {\n const data = await ctx.gql.workspace.request<{ sessionOutput: unknown }>(SESSION_OUTPUT, {\n id,\n lines,\n });\n return jsonResult(data.sessionOutput);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_output failed', { error });\n return errorResult(\n `Failed to get output: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_active')),\n {\n title: 'Active Sessions',\n description: 'Get all currently active/running sessions, optionally filtered by vibe.',\n inputSchema: { vibeId: z.string().optional().describe('Filter by vibe ID') },\n },\n async ({ vibeId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ activeSessions: unknown }>(ACTIVE_SESSIONS, {\n vibeId,\n });\n return jsonResult(data.activeSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_active failed', { error });\n return errorResult(\n `Failed to get active sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_check_health')),\n {\n title: 'Check Session Health',\n description: 'Run health checks on all sessions.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ checkSessionHealth: unknown }>(\n CHECK_SESSION_HEALTH,\n );\n return jsonResult(data.checkSessionHealth);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_check_health failed', { error });\n return errorResult(\n `Failed to check health: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // Bulk operations\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_bulk_restart')),\n {\n title: 'Bulk Restart Sessions',\n description: 'Restart multiple sessions at once.',\n inputSchema: { ids: z.array(z.string()).describe('Array of session IDs to restart') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkRestartSessions: unknown }>(\n BULK_RESTART_SESSIONS,\n { ids },\n );\n return jsonResult(data.bulkRestartSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_bulk_restart failed', { error });\n return errorResult(\n `Failed to bulk restart: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_bulk_stop')),\n {\n title: 'Bulk Stop Sessions',\n description: 'Stop multiple sessions at once.',\n inputSchema: { ids: z.array(z.string()).describe('Array of session IDs to stop') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkStopSessions: unknown }>(\n BULK_STOP_SESSIONS,\n {\n ids,\n },\n );\n return jsonResult(data.bulkStopSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_bulk_stop failed', { error });\n return errorResult(\n `Failed to bulk stop: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_bulk_terminate')),\n {\n title: 'Bulk Terminate Sessions',\n description: 'Forcefully terminate multiple sessions at once.',\n inputSchema: { ids: z.array(z.string()).describe('Array of session IDs to terminate') },\n },\n async ({ ids }) => {\n try {\n const data = await ctx.gql.workspace.request<{ bulkTerminateSessions: unknown }>(\n BULK_TERMINATE_SESSIONS,\n { ids },\n );\n return jsonResult(data.bulkTerminateSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_bulk_terminate failed', { error });\n return errorResult(\n `Failed to bulk terminate: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Update / status / delete / kill ───────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_update')),\n {\n title: 'Update Session',\n description:\n 'Update a terminal session. At least one mutable field (name / command / workingDirectory / autoStart / ttydUrl / metadata) must be provided. Returns the updated Session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n name: z.string().optional().describe('Updated session name'),\n command: z.string().optional().describe('Updated command to run'),\n workingDirectory: z.string().optional().describe('Updated working directory'),\n autoStart: z.boolean().optional().describe('Whether the session should auto-start'),\n ttydUrl: z.string().optional().describe('Updated ttyd URL for browser-based access'),\n metadata: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Free-form JSON metadata to merge into the session'),\n },\n },\n async ({ id, name, command, workingDirectory, autoStart, ttydUrl, metadata }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (command !== undefined) input.command = command;\n if (workingDirectory !== undefined) input.workingDirectory = workingDirectory;\n if (autoStart !== undefined) input.autoStart = autoStart;\n if (ttydUrl !== undefined) input.ttydUrl = ttydUrl;\n if (metadata !== undefined) input.metadata = metadata;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/command/workingDirectory/autoStart/ttydUrl/metadata',\n );\n }\n\n const data = await ctx.gql.workspace.request<{ updateSession: unknown }>(UPDATE_SESSION, {\n id,\n input,\n });\n return jsonResult(data.updateSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_update failed', { error });\n return errorResult(\n `Failed to update session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_update_status')),\n {\n title: 'Update Session Status',\n description:\n 'Set the lifecycle status of a session directly (PENDING, STARTING, RUNNING, STOPPED, ERROR, TERMINATED). Returns the updated Session.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n status: VibecontrolsSessionStatusEnum.describe('New status to apply'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateSessionStatus: unknown }>(\n UPDATE_SESSION_STATUS,\n { id, status },\n );\n return jsonResult(data.updateSessionStatus);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_update_status failed', { error });\n return errorResult(\n `Failed to update session status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_delete')),\n {\n title: 'Delete Session',\n description:\n 'Permanently delete a terminal session. Distinct from terminate — this also removes the session record. Returns { deleted, sessionId }.',\n inputSchema: { id: z.string().describe('Session ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteSession: boolean }>(DELETE_SESSION, {\n id,\n });\n return jsonResult({ deleted: data.deleteSession, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_delete failed', { error });\n return errorResult(\n `Failed to delete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_kill')),\n {\n title: 'Kill Session',\n description:\n 'Forcefully kill a session process (SIGKILL-equivalent). Use when terminate/stop have failed to release the underlying process. Returns { killed, sessionId }.',\n inputSchema: { id: z.string().describe('Session ID to kill') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ killSession: boolean }>(KILL_SESSION, {\n id,\n });\n return jsonResult({ killed: data.killSession, sessionId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_kill failed', { error });\n return errorResult(\n `Failed to kill session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_stop_terminal')),\n {\n title: 'Stop Session Terminal',\n description: 'Stop the ttyd web terminal for a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopSessionTerminal: unknown }>(\n STOP_SESSION_TERMINAL,\n { id },\n );\n return jsonResult(data.stopSessionTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_stop_terminal failed', { error });\n return errorResult(\n `Failed to stop session terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_restart_terminal')),\n {\n title: 'Restart Session Terminal',\n description: 'Restart the web terminal for a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restartSessionTerminal: unknown }>(\n RESTART_SESSION_TERMINAL,\n { id },\n );\n return jsonResult(data.restartSessionTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_restart_terminal failed', { error });\n return errorResult(\n `Failed to restart session terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_start_target_terminal')),\n {\n title: 'Start Target Terminal',\n description:\n 'Open a web terminal against a target host (SSH/RDP/VNC/DIRECT). Returns the connection info incl. ttydUrl.',\n inputSchema: {\n targetId: z.string().describe('Target ID'),\n shell: z.string().optional().describe('Shell binary path'),\n },\n },\n async ({ targetId, shell }) => {\n try {\n const data = await ctx.gql.workspace.request<{ startTerminal: unknown }>(\n START_TARGET_TERMINAL,\n { targetId, shell },\n );\n return jsonResult(data.startTerminal);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_start_target_terminal failed', { error });\n return errorResult(\n `Failed to start target terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_stop_target_terminal')),\n {\n title: 'Stop Target Terminal',\n description: 'Stop a target terminal session.',\n inputSchema: { sessionId: z.string().describe('Target terminal session ID') },\n },\n async ({ sessionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopTerminal: boolean }>(\n STOP_TARGET_TERMINAL,\n { sessionId },\n );\n return jsonResult({ stopped: data.stopTerminal, sessionId });\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_stop_target_terminal failed', { error });\n return errorResult(\n `Failed to stop target terminal: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_export')),\n {\n title: 'Export Sessions',\n description: 'Export sessions to CSV or JSON.',\n inputSchema: {\n format: z.enum(['CSV', 'JSON']).optional().describe('Output format'),\n status: z.string().optional(),\n type: z.string().optional(),\n agentId: z.string().optional(),\n vibeId: z.string().optional(),\n },\n },\n async ({ format, status, type, agentId, vibeId }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status;\n if (type !== undefined) filter.type = type;\n if (agentId !== undefined) filter.agentId = agentId;\n if (vibeId !== undefined) filter.vibeId = vibeId;\n const input: Record<string, unknown> = {};\n if (Object.keys(filter).length) input.filter = filter;\n if (format !== undefined) input.format = format;\n const data = await ctx.gql.workspace.request<{\n exportSessions: { count: number; data: string; format: string; generatedAt: string };\n }>(EXPORT_SESSIONS, { input });\n return jsonResult(data.exportSessions);\n } catch (error) {\n ctx.logger.error('vibecontrols_sessions_export failed', { error });\n return errorResult(\n `Failed to export sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_TARGETS,\n GET_TARGET,\n CREATE_TARGET,\n UPDATE_TARGET,\n DELETE_TARGET,\n TEST_TARGET,\n IMPORT_TARGETS_FROM_CONFIG,\n SCAN_SSH_CONFIG,\n INSTALL_AGENT_ON_TARGET,\n} from '../operations.js';\n\nexport function registerTargetTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_list')),\n {\n title: 'List Targets',\n description: 'List all VibeControls targets with optional filters and pagination.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID (required by the GraphQL schema)'),\n type: z.string().optional().describe('Filter by target type'),\n status: z.string().optional().describe('Filter by target status'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ workspaceId, type, status, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (type !== undefined) filter.type = type;\n if (status !== undefined) filter.status = status;\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<{ targets: unknown }>(LIST_TARGETS, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.targets);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_list failed', { error });\n return errorResult(\n `Failed to list targets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_get')),\n {\n title: 'Get Target',\n description: 'Get a VibeControls target by its ID.',\n inputSchema: { id: z.string().describe('Target ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ target: unknown }>(GET_TARGET, { id });\n return jsonResult(data.target);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_get failed', { error });\n return errorResult(\n `Failed to get target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_create')),\n {\n title: 'Create Target',\n description: 'Create a new VibeControls target.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n name: z.string().describe('Target name'),\n type: z.string().describe('Target type (DIRECT, SSH, RDP, VNC)'),\n host: z.string().describe('Target host address'),\n port: z.number().optional().describe('Target port'),\n username: z.string().optional().describe('Username for authentication'),\n },\n },\n async ({ workspaceId, name, type, host, port, username }) => {\n try {\n const input: Record<string, unknown> = { name, type, host };\n if (port !== undefined) input.port = port;\n if (username !== undefined) input.username = username;\n\n const data = await ctx.gql.workspace.request<{ createTarget: unknown }>(CREATE_TARGET, {\n workspaceId,\n input,\n });\n return jsonResult(data.createTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_create failed', { error });\n return errorResult(\n `Failed to create target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_update')),\n {\n title: 'Update Target',\n description: 'Update an existing VibeControls target.',\n inputSchema: {\n id: z.string().describe('Target ID'),\n name: z.string().optional().describe('Updated name'),\n type: z.string().optional().describe('Updated type (DIRECT, SSH, RDP, VNC)'),\n host: z.string().optional().describe('Updated host address'),\n port: z.number().optional().describe('Updated port'),\n username: z.string().optional().describe('Updated username'),\n },\n },\n async ({ id, name, type, host, port, username }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (host !== undefined) input.host = host;\n if (port !== undefined) input.port = port;\n if (username !== undefined) input.username = username;\n\n const data = await ctx.gql.workspace.request<{ updateTarget: unknown }>(UPDATE_TARGET, {\n id,\n input,\n });\n return jsonResult(data.updateTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_update failed', { error });\n return errorResult(\n `Failed to update target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_delete')),\n {\n title: 'Delete Target',\n description: 'Permanently delete a VibeControls target.',\n inputSchema: { id: z.string().describe('Target ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteTarget: boolean }>(DELETE_TARGET, {\n id,\n });\n return jsonResult({ deleted: data.deleteTarget, targetId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_delete failed', { error });\n return errorResult(\n `Failed to delete target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_test')),\n {\n title: 'Test Target',\n description: 'Test the connectivity of a specific target.',\n inputSchema: { id: z.string().describe('Target ID to test') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ testTarget: unknown }>(TEST_TARGET, { id });\n return jsonResult(data.testTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_test failed', { error });\n return errorResult(\n `Failed to test target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_import')),\n {\n title: 'Import Targets from Config',\n description:\n 'Import multiple targets from a configuration. Provide hosts as a JSON array of objects with name, host, port (optional), and username (optional).',\n inputSchema: {\n agentId: z.string().describe('Agent ID to use for import'),\n workspaceId: z.string().describe('Workspace ID'),\n hosts: z.string().describe('JSON array of host objects: [{name, host, port?, username?}]'),\n },\n },\n async ({ agentId, workspaceId, hosts }) => {\n try {\n const parsedHosts = JSON.parse(hosts);\n const data = await ctx.gql.workspace.request<{ importTargetsFromConfig: unknown }>(\n IMPORT_TARGETS_FROM_CONFIG,\n {\n agentId,\n workspaceId,\n hosts: parsedHosts,\n },\n );\n return jsonResult(data.importTargetsFromConfig);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_import failed', { error });\n return errorResult(\n `Failed to import targets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_scan_ssh')),\n {\n title: 'Scan SSH Config',\n description: 'Scan an SSH config file on the agent to discover targets.',\n inputSchema: {\n agentId: z.string().describe('Agent ID to scan SSH config on'),\n configPath: z\n .string()\n .optional()\n .describe('Path to SSH config file (defaults to ~/.ssh/config)'),\n },\n },\n async ({ agentId, configPath }) => {\n try {\n const variables: Record<string, unknown> = { agentId };\n if (configPath !== undefined) variables.configPath = configPath;\n\n const data = await ctx.gql.workspace.request<{ scanSSHConfig: unknown }>(\n SCAN_SSH_CONFIG,\n variables,\n );\n return jsonResult(data.scanSSHConfig);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_scan_ssh failed', { error });\n return errorResult(\n `Failed to scan SSH config: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'targets_install_agent')),\n {\n title: 'Install Agent on Target',\n description: 'Install a VibeControls agent on a remote target machine.',\n inputSchema: {\n sourceAgentId: z.string().describe('Source agent ID to initiate the install from'),\n targetId: z.string().describe('Target ID to install the agent on'),\n agentPort: z.number().optional().describe('Port for the new agent to listen on'),\n },\n },\n async ({ sourceAgentId, targetId, agentPort }) => {\n try {\n const variables: Record<string, unknown> = { sourceAgentId, targetId };\n if (agentPort !== undefined) variables.agentPort = agentPort;\n\n const data = await ctx.gql.workspace.request<{ installAgentOnTarget: unknown }>(\n INSTALL_AGENT_ON_TARGET,\n variables,\n );\n return jsonResult(data.installAgentOnTarget);\n } catch (error) {\n ctx.logger.error('vibecontrols_targets_install_agent failed', { error });\n return errorResult(\n `Failed to install agent on target: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_TUNNELS,\n GET_TUNNEL,\n GET_TUNNEL_BY_SLUG,\n CREATE_TUNNEL,\n UPDATE_TUNNEL,\n DELETE_TUNNEL,\n START_TUNNEL,\n STOP_TUNNEL,\n ROTATE_TUNNEL_CREDENTIALS,\n ISSUE_TUNNEL_SESSION,\n REVOKE_TUNNEL_SESSION,\n LIST_TUNNEL_SESSIONS,\n LIST_TUNNEL_PROVIDERS,\n GET_TUNNEL_PROVIDER,\n LIST_TUNNEL_SHARDS,\n TUNNEL_USAGE,\n TUNNEL_AUDIT,\n LIST_TUNNEL_DOMAINS,\n GET_TUNNEL_DOMAIN,\n RESERVE_TUNNEL_SUBDOMAIN,\n REGISTER_CUSTOM_TUNNEL_DOMAIN,\n VERIFY_TUNNEL_DOMAIN,\n ATTACH_TUNNEL_DOMAIN,\n DETACH_TUNNEL_DOMAIN,\n DELETE_TUNNEL_DOMAIN,\n PROBE_AGENT_TUNNEL,\n ADD_AGENT_FROM_TUNNEL,\n} from '../operations.js';\n\nconst tunnelProviderKey = z.enum(['VIBETUNNELS', 'CLOUDFLARE']);\nconst tunnelEnvironment = z.enum(['ALPHA', 'PROD']);\nconst tunnelProtocol = z.enum(['HTTP', 'HTTPS', 'TCP', 'UDP']);\n\nexport function registerTunnelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const w = ctx.gql.workspace;\n const tool = (\n name: string,\n title: string,\n description: string,\n inputSchema: Record<string, z.ZodTypeAny>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (args: any) => Promise<unknown>,\n ): void => {\n server.registerTool(\n track(mcpToolName(ctx.productName, name)),\n { title, description, inputSchema },\n async (args) => {\n try {\n const data = await handler(args);\n return jsonResult(data);\n } catch (error) {\n ctx.logger.error(`vibecontrols_${name} failed`, { error });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n };\n\n // ── List / get / by-slug ─────────────────────────────────────────────\n tool(\n 'tunnels_list',\n 'List Tunnels',\n 'List tunnels in the workspace with optional filters.',\n {\n agentId: z.string().optional(),\n providerKey: tunnelProviderKey.optional(),\n search: z.string().optional(),\n status: z.array(z.string()).optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ agentId, providerKey, search, status, limit, offset }) => {\n const filter: Record<string, unknown> = {};\n if (agentId !== undefined) filter.agentId = agentId;\n if (providerKey !== undefined) filter.providerKey = providerKey;\n if (search !== undefined) filter.search = search;\n if (status !== undefined) filter.status = status;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnels: unknown }>(LIST_TUNNELS, {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnels;\n },\n );\n\n tool(\n 'tunnels_get',\n 'Get Tunnel',\n 'Get a tunnel by ID.',\n { id: z.string().describe('Tunnel ID') },\n async ({ id }) => {\n const data = await w.request<{ tunnel: unknown }>(GET_TUNNEL, { id });\n return data.tunnel;\n },\n );\n\n tool(\n 'tunnels_by_slug',\n 'Get Tunnel by Slug',\n 'Get a tunnel by its workspace-unique slug.',\n { slug: z.string().describe('Tunnel slug') },\n async ({ slug }) => {\n const data = await w.request<{ tunnelBySlug: unknown }>(GET_TUNNEL_BY_SLUG, { slug });\n return data.tunnelBySlug;\n },\n );\n\n // ── Create / update / delete / lifecycle ─────────────────────────────\n tool(\n 'tunnels_create',\n 'Create Tunnel',\n 'Create a tunnel in DRAFT status. Call tunnels_start to bring it up.',\n {\n agentId: z.string(),\n name: z.string(),\n providerKey: tunnelProviderKey,\n localPort: z.number(),\n description: z.string().optional(),\n localHost: z.string().optional(),\n protocol: tunnelProtocol.optional(),\n environment: tunnelEnvironment.optional(),\n managedSubdomain: z.string().optional(),\n slug: z.string().optional(),\n tlsMode: z.string().optional(),\n basicAuthUser: z.string().optional(),\n basicAuthPassword: z.string().optional(),\n },\n async (args) => {\n const data = await w.request<{ createTunnel: unknown }>(CREATE_TUNNEL, { input: args });\n return data.createTunnel;\n },\n );\n\n tool(\n 'tunnels_update',\n 'Update Tunnel',\n 'Update tunnel metadata, target host/port, basic auth, etc.',\n {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n localHost: z.string().optional(),\n localPort: z.number().optional(),\n tlsMode: z.string().optional(),\n basicAuthUser: z.string().optional(),\n basicAuthPassword: z.string().optional(),\n },\n async ({ id, ...input }) => {\n const data = await w.request<{ updateTunnel: unknown }>(UPDATE_TUNNEL, { id, input });\n return data.updateTunnel;\n },\n );\n\n tool(\n 'tunnels_delete',\n 'Delete Tunnel',\n 'Soft-delete a tunnel (stops it first if active).',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ deleteTunnel: boolean }>(DELETE_TUNNEL, { id });\n return { deleted: data.deleteTunnel, id };\n },\n );\n\n tool(\n 'tunnels_start',\n 'Start Tunnel',\n 'Transition a tunnel to ACTIVE.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ startTunnel: unknown }>(START_TUNNEL, { id });\n return data.startTunnel;\n },\n );\n\n tool(\n 'tunnels_stop',\n 'Stop Tunnel',\n 'Gracefully stop a running tunnel.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ stopTunnel: unknown }>(STOP_TUNNEL, { id });\n return data.stopTunnel;\n },\n );\n\n tool(\n 'tunnels_rotate_credentials',\n 'Rotate Tunnel Credentials',\n 'Rotate basic-auth + provider secrets. Active sessions are revoked.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ rotateTunnelCredentials: unknown }>(\n ROTATE_TUNNEL_CREDENTIALS,\n { id },\n );\n return data.rotateTunnelCredentials;\n },\n );\n\n // ── Sessions ─────────────────────────────────────────────────────────\n tool(\n 'tunnels_issue_session',\n 'Issue Tunnel Session',\n 'Issue a short-lived session token for an agent to connect with. Token is returned exactly once.',\n {\n tunnelId: z.string(),\n ttlSeconds: z.number().optional(),\n },\n async ({ tunnelId, ttlSeconds }) => {\n const data = await w.request<{ issueTunnelSession: unknown }>(ISSUE_TUNNEL_SESSION, {\n tunnelId,\n ttlSeconds,\n });\n return data.issueTunnelSession;\n },\n );\n\n tool(\n 'tunnels_revoke_session',\n 'Revoke Tunnel Session',\n 'Revoke an active session (kills the live connection).',\n { sessionId: z.string(), reason: z.string().optional() },\n async ({ sessionId, reason }) => {\n const data = await w.request<{ revokeTunnelSession: boolean }>(REVOKE_TUNNEL_SESSION, {\n sessionId,\n reason,\n });\n return { revoked: data.revokeTunnelSession, sessionId };\n },\n );\n\n tool(\n 'tunnels_list_sessions',\n 'List Tunnel Sessions',\n 'List sessions for a tunnel.',\n {\n tunnelId: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ tunnelId, limit, offset }) => {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnelSessions: unknown }>(LIST_TUNNEL_SESSIONS, {\n tunnelId,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnelSessions;\n },\n );\n\n // ── Providers / shards / usage / audit ───────────────────────────────\n tool('tunnels_providers', 'List Tunnel Providers', 'List all tunnel providers.', {}, async () => {\n const data = await w.request<{ tunnelProviders: unknown }>(LIST_TUNNEL_PROVIDERS);\n return data.tunnelProviders;\n });\n\n tool(\n 'tunnels_provider',\n 'Get Tunnel Provider',\n 'Get a single tunnel provider by key.',\n { key: tunnelProviderKey },\n async ({ key }) => {\n const data = await w.request<{ tunnelProvider: unknown }>(GET_TUNNEL_PROVIDER, { key });\n return data.tunnelProvider;\n },\n );\n\n tool(\n 'tunnels_shards',\n 'List Tunnel Shards',\n 'List tunnel server shards (frps instances), optionally filtered by environment.',\n { environment: tunnelEnvironment.optional() },\n async ({ environment }) => {\n const data = await w.request<{ tunnelShards: unknown }>(LIST_TUNNEL_SHARDS, {\n environment,\n });\n return data.tunnelShards;\n },\n );\n\n tool(\n 'tunnels_usage',\n 'Tunnel Usage',\n 'Hourly usage buckets for a tunnel in a time range.',\n {\n tunnelId: z.string(),\n from: z.string().describe('ISO8601 start'),\n to: z.string().describe('ISO8601 end'),\n },\n async ({ tunnelId, from, to }) => {\n const data = await w.request<{ tunnelUsage: unknown }>(TUNNEL_USAGE, {\n tunnelId,\n from,\n to,\n });\n return data.tunnelUsage;\n },\n );\n\n tool(\n 'tunnels_audit',\n 'Tunnel Audit',\n 'Audit log entries scoped to a tunnel.',\n {\n tunnelId: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ tunnelId, limit, offset }) => {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnelAudit: unknown }>(TUNNEL_AUDIT, {\n tunnelId,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnelAudit;\n },\n );\n\n // ── Domains ──────────────────────────────────────────────────────────\n tool(\n 'tunnels_list_domains',\n 'List Tunnel Domains',\n 'List tunnel domains, optionally scoped to a single tunnel.',\n {\n tunnelId: z.string().optional(),\n type: z.enum(['CUSTOM', 'MANAGED_SUBDOMAIN']).optional(),\n verificationStatus: z\n .enum(['EXPIRED', 'FAILED', 'PENDING', 'VERIFIED', 'VERIFYING'])\n .optional(),\n environment: tunnelEnvironment.optional(),\n search: z.string().optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n },\n async ({ tunnelId, type, verificationStatus, environment, search, limit, offset }) => {\n const filter: Record<string, unknown> = {};\n if (type !== undefined) filter.type = type;\n if (verificationStatus !== undefined) filter.verificationStatus = verificationStatus;\n if (environment !== undefined) filter.environment = environment;\n if (search !== undefined) filter.search = search;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n const data = await w.request<{ tunnelDomains: unknown }>(LIST_TUNNEL_DOMAINS, {\n tunnelId,\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.tunnelDomains;\n },\n );\n\n tool(\n 'tunnels_get_domain',\n 'Get Tunnel Domain',\n 'Get a tunnel domain by ID.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ tunnelDomain: unknown }>(GET_TUNNEL_DOMAIN, { id });\n return data.tunnelDomain;\n },\n );\n\n tool(\n 'tunnels_reserve_subdomain',\n 'Reserve Tunnel Subdomain',\n 'Reserve a managed subdomain under *.vibetunnels.com.',\n {\n label: z.string().describe('Subdomain label (without zone suffix)'),\n environment: tunnelEnvironment,\n },\n async ({ label, environment }) => {\n const data = await w.request<{ reserveTunnelSubdomain: unknown }>(RESERVE_TUNNEL_SUBDOMAIN, {\n input: { label, environment },\n });\n return data.reserveTunnelSubdomain;\n },\n );\n\n tool(\n 'tunnels_register_custom_domain',\n 'Register Custom Tunnel Domain',\n 'Register a user-owned custom domain. A TXT challenge record will be returned for verification.',\n { hostname: z.string() },\n async ({ hostname }) => {\n const data = await w.request<{ registerCustomTunnelDomain: unknown }>(\n REGISTER_CUSTOM_TUNNEL_DOMAIN,\n { input: { hostname } },\n );\n return data.registerCustomTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_verify_domain',\n 'Verify Tunnel Domain',\n 'Force a verification check for a custom domain.',\n { domainId: z.string() },\n async ({ domainId }) => {\n const data = await w.request<{ verifyTunnelDomain: unknown }>(VERIFY_TUNNEL_DOMAIN, {\n domainId,\n });\n return data.verifyTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_attach_domain',\n 'Attach Tunnel Domain',\n 'Attach a verified domain to a tunnel.',\n {\n tunnelId: z.string(),\n domainId: z.string(),\n makePrimary: z.boolean().optional(),\n },\n async ({ tunnelId, domainId, makePrimary }) => {\n const data = await w.request<{ attachTunnelDomain: unknown }>(ATTACH_TUNNEL_DOMAIN, {\n tunnelId,\n domainId,\n makePrimary,\n });\n return data.attachTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_detach_domain',\n 'Detach Tunnel Domain',\n 'Detach a domain from a tunnel. The domain record remains for re-use.',\n { tunnelId: z.string(), domainId: z.string() },\n async ({ tunnelId, domainId }) => {\n const data = await w.request<{ detachTunnelDomain: unknown }>(DETACH_TUNNEL_DOMAIN, {\n tunnelId,\n domainId,\n });\n return data.detachTunnelDomain;\n },\n );\n\n tool(\n 'tunnels_delete_domain',\n 'Delete Tunnel Domain',\n 'Permanently delete a tunnel domain record.',\n { domainId: z.string() },\n async ({ domainId }) => {\n const data = await w.request<{ deleteTunnelDomain: boolean }>(DELETE_TUNNEL_DOMAIN, {\n domainId,\n });\n return { deleted: data.deleteTunnelDomain, domainId };\n },\n );\n\n // ── Agent probe / zero-config onboarding ─────────────────────────────\n tool(\n 'tunnels_probe_agent',\n 'Probe Agent Tunnel',\n 'Probe an agent tunnel URL for health and identity.',\n { url: z.string(), agentApiKey: z.string().optional() },\n async ({ url, agentApiKey }) => {\n const data = await w.request<{ probeAgentTunnel: unknown }>(PROBE_AGENT_TUNNEL, {\n url,\n agentApiKey,\n });\n return data.probeAgentTunnel;\n },\n );\n\n tool(\n 'tunnels_add_agent_from_tunnel',\n 'Add Agent From Tunnel',\n 'Zero-config agent onboarding: probe a tunnel URL + API key, register + configure the agent in one shot.',\n {\n tunnelUrl: z.string(),\n apiKey: z.string(),\n name: z.string().optional(),\n scopes: z.array(z.string()).optional(),\n targetId: z.string().optional(),\n skipDevportalApp: z.boolean().optional(),\n },\n async (args) => {\n const data = await w.request<{ addVibecontrolsAgentFromTunnel: unknown }>(\n ADD_AGENT_FROM_TUNNEL,\n { input: args },\n );\n return data.addVibecontrolsAgentFromTunnel;\n },\n );\n\n // ── Subscription proxy: polling 'check' tool (MCP has no live subs) ──\n tool(\n 'tunnels_check',\n 'Check Tunnel (poll for updates)',\n 'Poll a tunnel by ID. Use this in place of the GraphQL `tunnelUpdated` subscription which has no MCP equivalent — call repeatedly with a delay.',\n { id: z.string() },\n async ({ id }) => {\n const data = await w.request<{ tunnel: unknown }>(GET_TUNNEL, { id });\n return { polledAt: new Date().toISOString(), tunnel: data.tunnel };\n },\n );\n}\n","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 START_SANDBOX,\n STOP_SANDBOX,\n EXTEND_SANDBOX_TTL,\n GET_SANDBOX_CONFIG,\n UPDATE_SANDBOX_CONFIG,\n GET_SANDBOX_STATS,\n GET_SANDBOX_LOGS,\n PROXY_SANDBOX_REQUEST,\n TAG_SANDBOX,\n UNTAG_SANDBOX,\n GET_SANDBOX_TAGS,\n REPLACE_SANDBOX_TAGS,\n CREATE_SANDBOX_TAG,\n AVAILABLE_SANDBOX_TAGS,\n LIST_SANDBOX_TEMPLATES,\n GET_SANDBOX_TEMPLATE,\n CREATE_SANDBOX_TEMPLATE,\n UPDATE_SANDBOX_TEMPLATE,\n DELETE_SANDBOX_TEMPLATE,\n EXPORT_SANDBOXES,\n GET_SANDBOX_EXPORT_JOB,\n LIST_SANDBOX_EXPORT_JOBS,\n GET_SANDBOX_ARTIFACT_BYTES,\n GET_ACTIVE_SANDBOXES,\n GET_RECENT_SANDBOX_ACTIVITY,\n LIST_ALL_SANDBOXES,\n LIST_SANDBOX_NODES,\n} from '../operations.js';\n\nconst NO_WORKSPACE = 'No workspace set. Run the auth workspace_set tool first.';\n\nconst sandboxTemplate = z.enum([\n 'AI_BUILDER',\n 'WORKFLOW_MULTI_NODE',\n 'MISC_SHELL',\n 'CUSTOM',\n 'VIBECONTROLS',\n]);\nconst sandboxStatus = z.enum([\n 'PENDING',\n 'PROVISIONING',\n 'RUNNING',\n 'STOPPING',\n 'STOPPED',\n 'EXPIRED',\n 'FAILED',\n]);\nconst sandboxMode = z.enum(['DEPLOYMENT', 'JOB']);\nconst storageMode = z.enum(['NONE', 'EPHEMERAL', 'PERSISTENT']);\nconst sandboxExportFormat = z.enum(['CSV', 'JSON']);\n\n// SandboxResourcesInput\nconst resourcesSchema = z.object({\n cpuRequest: z.string().optional(),\n cpuLimit: z.string().optional(),\n memoryRequest: z.string().optional(),\n memoryLimit: z.string().optional(),\n});\n\n// SandboxStorageInput\nconst storageSchema = z.object({\n mode: storageMode.optional().describe('Storage mode: NONE, EPHEMERAL, PERSISTENT'),\n sizeGi: z.number().optional(),\n mountPath: z.string().optional(),\n retainOnDelete: z.boolean().optional(),\n});\n\n// ContainerSpecInput[] — fully enumerated (mirrors sdk-libs-node ContainerSpecInput\n// and its nested ContainerPortInput / EnvVarInput / ContainerResourcesInput).\nconst containerSpecSchema = z.object({\n name: z.string().describe('Container name'),\n image: z.string().describe('Container image reference'),\n ports: z\n .array(\n z.object({\n containerPort: z.number().describe('Port exposed inside the container'),\n name: z.string().optional().describe('Port name'),\n protocol: z.string().optional().describe('TCP | UDP (default TCP)'),\n }),\n )\n .optional()\n .describe('Exposed ports'),\n env: z\n .array(z.object({ name: z.string(), value: z.string() }))\n .optional()\n .describe('Environment variables'),\n command: z.array(z.string()).optional().describe('Entrypoint override'),\n args: z.array(z.string()).optional().describe('Args override'),\n resources: z\n .object({\n requestsCpu: z.string().optional(),\n requestsMemory: z.string().optional(),\n limitsCpu: z.string().optional(),\n limitsMemory: z.string().optional(),\n })\n .optional()\n .describe('Per-container CPU/memory requests + limits'),\n});\nconst containersSchema = z.array(containerSpecSchema).describe('Container specifications');\n\nexport function registerSandboxTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const w = ctx.gql.workspace;\n const tool = (\n name: string,\n title: string,\n description: string,\n inputSchema: Record<string, z.ZodTypeAny>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (args: any) => Promise<unknown>,\n ): void => {\n server.registerTool(\n track(mcpToolName(ctx.productName, name)),\n { title, description, inputSchema },\n async (args) => {\n try {\n const data = await handler(args);\n return jsonResult(data);\n } catch (error) {\n ctx.logger.error(`vibecontrols_${name} failed`, { error });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n };\n\n // Tenancy context from MCP auth. Sandbox ops are workspace-scoped.\n const readWorkspaceId = (): string | undefined => {\n const auth = ctx.auth.read();\n return auth?.workspaceId;\n };\n\n // ── List / get ───────────────────────────────────────────────────────\n tool(\n 'sandboxes_list',\n 'List Sandboxes',\n 'List sandboxes in the current workspace with optional template/status filters.',\n {\n template: sandboxTemplate.optional(),\n status: sandboxStatus.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ template, status, limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const filter: Record<string, unknown> = {};\n if (template !== undefined) filter.template = template;\n if (status !== undefined) filter.status = status;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listSandboxes: unknown }>(LIST_SANDBOXES, {\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n context: { workspaceId },\n });\n return data.listSandboxes;\n },\n );\n\n tool(\n 'sandboxes_get',\n 'Get Sandbox',\n 'Get a sandbox by ID.',\n { id: z.string().describe('Sandbox ID') },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandbox: unknown }>(GET_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return data.getSandbox;\n },\n );\n\n // ── Lifecycle ────────────────────────────────────────────────────────\n tool(\n 'sandboxes_create',\n 'Create Sandbox',\n 'Create a sandbox from a template + container specs. Workspace context is injected from auth.',\n {\n name: z.string(),\n template: sandboxTemplate,\n containers: containersSchema,\n description: z.string().optional(),\n mode: sandboxMode.optional().describe('Sandbox mode: DEPLOYMENT or JOB'),\n resources: resourcesSchema.optional(),\n storage: storageSchema.optional(),\n ttlSeconds: z.number().optional(),\n metadata: z.record(z.unknown()).optional(),\n templateId: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ createSandbox: unknown }>(CREATE_SANDBOX, { input });\n return data.createSandbox;\n },\n );\n\n tool(\n 'sandboxes_delete',\n 'Delete Sandbox',\n 'Delete a sandbox by ID.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ deleteSandbox: boolean }>(DELETE_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return { deleted: data.deleteSandbox, id };\n },\n );\n\n tool(\n 'sandboxes_start',\n 'Start Sandbox',\n 'Start (resume) a stopped sandbox.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ startSandbox: unknown }>(START_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return data.startSandbox;\n },\n );\n\n tool(\n 'sandboxes_stop',\n 'Stop Sandbox',\n 'Stop a running sandbox.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ stopSandbox: unknown }>(STOP_SANDBOX, {\n id,\n context: { workspaceId },\n });\n return data.stopSandbox;\n },\n );\n\n tool(\n 'sandboxes_extend_ttl',\n 'Extend Sandbox TTL',\n 'Extend a sandbox time-to-live by an additional number of seconds.',\n {\n id: z.string(),\n additionalSeconds: z.number().describe('Seconds to add to the current TTL'),\n },\n async ({ id, additionalSeconds }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ extendSandboxTTL: unknown }>(EXTEND_SANDBOX_TTL, {\n id,\n additionalSeconds,\n context: { workspaceId },\n });\n return data.extendSandboxTTL;\n },\n );\n\n // ── Config / stats / logs ────────────────────────────────────────────\n tool(\n 'sandboxes_get_config',\n 'Get Sandbox Config',\n 'Get the sandbox provisioning config (TTL/concurrency/resource defaults) for the workspace.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxConfig: unknown }>(GET_SANDBOX_CONFIG, {\n context: { workspaceId },\n });\n return data.getSandboxConfig;\n },\n );\n\n tool(\n 'sandboxes_update_config',\n 'Update Sandbox Config',\n 'Update the workspace sandbox config. Workspace context is injected from auth.',\n {\n defaultTtlSeconds: z.number().optional(),\n maxTtlSeconds: z.number().optional(),\n allowedTemplates: z.array(sandboxTemplate).optional(),\n maxConcurrentPerUser: z.number().optional(),\n maxConcurrentPerWorkspace: z.number().optional(),\n defaultCpuRequest: z.string().optional(),\n defaultCpuLimit: z.string().optional(),\n defaultMemoryRequest: z.string().optional(),\n defaultMemoryLimit: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ updateSandboxConfig: unknown }>(UPDATE_SANDBOX_CONFIG, {\n input,\n });\n return data.updateSandboxConfig;\n },\n );\n\n tool(\n 'sandboxes_get_stats',\n 'Get Sandbox Stats',\n 'Get aggregate sandbox statistics for the workspace.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxStats: unknown }>(GET_SANDBOX_STATS, {\n context: { workspaceId },\n });\n return data.getSandboxStats;\n },\n );\n\n tool(\n 'sandboxes_get_logs',\n 'Get Sandbox Logs',\n 'Fetch container logs for a sandbox.',\n {\n id: z.string(),\n containerName: z.string(),\n tailLines: z.number().optional().describe('Number of trailing log lines to return'),\n },\n async ({ id, containerName, tailLines }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxLogs: unknown }>(GET_SANDBOX_LOGS, {\n context: { workspaceId },\n id,\n containerName,\n tailLines,\n });\n return data.getSandboxLogs;\n },\n );\n\n // ── Tags ─────────────────────────────────────────────────────────────\n tool(\n 'sandboxes_tags_attach',\n 'Tag Sandbox',\n 'Attach an existing tag to a sandbox.',\n {\n sandboxId: z.string(),\n tagId: z.string(),\n source: z.string().optional(),\n validFrom: z.string().optional(),\n validTo: z.string().optional(),\n metadata: z.record(z.unknown()).optional(),\n },\n async (args) => {\n const data = await w.request<{ tagSandbox: unknown }>(TAG_SANDBOX, { input: args });\n return data.tagSandbox;\n },\n );\n\n tool(\n 'sandboxes_tags_detach',\n 'Untag Sandbox',\n 'Remove a tag from a sandbox.',\n { sandboxId: z.string(), tagId: z.string() },\n async (args) => {\n const data = await w.request<{ untagSandbox: boolean }>(UNTAG_SANDBOX, { input: args });\n return data.untagSandbox;\n },\n );\n\n tool(\n 'sandboxes_tags_get',\n 'Get Sandbox Tags',\n 'Get all tag assignments for a sandbox.',\n { sandboxId: z.string() },\n async (args) => {\n const data = await w.request<{ getSandboxTags: unknown }>(GET_SANDBOX_TAGS, { input: args });\n return data.getSandboxTags;\n },\n );\n\n tool(\n 'sandboxes_tags_replace',\n 'Replace Sandbox Tags',\n 'Replace the full set of tags on a sandbox with the provided tag IDs.',\n { sandboxId: z.string(), tagIds: z.array(z.string()) },\n async (args) => {\n const data = await w.request<{ replaceSandboxTags: unknown }>(REPLACE_SANDBOX_TAGS, {\n input: args,\n });\n return data.replaceSandboxTags;\n },\n );\n\n tool(\n 'sandboxes_tags_create',\n 'Create Sandbox Tag',\n 'Create a new sandbox tag definition.',\n { label: z.string(), color: z.string().optional() },\n async (args) => {\n const data = await w.request<{ createSandboxTag: unknown }>(CREATE_SANDBOX_TAG, {\n input: args,\n });\n return data.createSandboxTag;\n },\n );\n\n tool(\n 'sandboxes_tags_available',\n 'Available Sandbox Tags',\n 'List available sandbox tags, optionally filtered by a search query.',\n {\n query: z.string().optional(),\n limit: z.number().optional(),\n },\n async ({ query, limit }) => {\n const data = await w.request<{ availableSandboxTags: unknown }>(AVAILABLE_SANDBOX_TAGS, {\n query,\n limit,\n });\n return data.availableSandboxTags;\n },\n );\n\n // ── Templates ────────────────────────────────────────────────────────\n tool(\n 'sandboxes_templates_list',\n 'List Sandbox Templates',\n 'List sandbox template configs, optionally filtered by template type.',\n {\n template: sandboxTemplate.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ template, limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listSandboxTemplates: unknown }>(LIST_SANDBOX_TEMPLATES, {\n context: { workspaceId },\n template,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.listSandboxTemplates;\n },\n );\n\n tool(\n 'sandboxes_templates_get',\n 'Get Sandbox Template',\n 'Get a sandbox template config by ID.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxTemplate: unknown }>(GET_SANDBOX_TEMPLATE, {\n context: { workspaceId },\n id,\n });\n return data.getSandboxTemplate;\n },\n );\n\n tool(\n 'sandboxes_templates_create',\n 'Create Sandbox Template',\n 'Create a reusable sandbox template config. Workspace context is injected from auth.',\n {\n name: z.string(),\n template: sandboxTemplate,\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n containers: containersSchema.optional(),\n resources: resourcesSchema.optional(),\n storage: storageSchema.optional(),\n ttlSeconds: z.number().optional(),\n config: z.record(z.unknown()).optional(),\n metadata: z.record(z.unknown()).optional(),\n allowedImages: z.array(z.string()).optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ createSandboxTemplate: unknown }>(CREATE_SANDBOX_TEMPLATE, {\n input,\n });\n return data.createSandboxTemplate;\n },\n );\n\n tool(\n 'sandboxes_templates_update',\n 'Update Sandbox Template',\n 'Update an existing sandbox template config. Workspace context is injected from auth.',\n {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n isDefault: z.boolean().optional(),\n containers: containersSchema.optional(),\n resources: resourcesSchema.optional(),\n storage: storageSchema.optional(),\n ttlSeconds: z.number().optional(),\n config: z.record(z.unknown()).optional(),\n metadata: z.record(z.unknown()).optional(),\n allowedImages: z.array(z.string()).optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ updateSandboxTemplate: unknown }>(UPDATE_SANDBOX_TEMPLATE, {\n input,\n });\n return data.updateSandboxTemplate;\n },\n );\n\n tool(\n 'sandboxes_templates_delete',\n 'Delete Sandbox Template',\n 'Delete a sandbox template config by ID.',\n { id: z.string() },\n async ({ id }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ deleteSandboxTemplate: boolean }>(DELETE_SANDBOX_TEMPLATE, {\n context: { workspaceId },\n id,\n });\n return { deleted: data.deleteSandboxTemplate, id };\n },\n );\n\n // ── Export ───────────────────────────────────────────────────────────\n tool(\n 'sandboxes_export_create',\n 'Export Sandboxes',\n 'Start an async export job of sandboxes. Workspace + context injected from auth.',\n {\n format: sandboxExportFormat.describe('Export format: CSV or JSON'),\n template: sandboxTemplate.optional().describe('Filter: template type'),\n status: sandboxStatus.optional().describe('Filter: sandbox status'),\n includeUsageEvents: z.boolean().optional(),\n },\n async ({ format, template, status, includeUsageEvents }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const filter: Record<string, unknown> = {};\n if (template !== undefined) filter.template = template;\n if (status !== undefined) filter.status = status;\n const input: Record<string, unknown> = {\n workspaceId,\n format,\n context: { workspaceId },\n };\n if (includeUsageEvents !== undefined) input.includeUsageEvents = includeUsageEvents;\n if (Object.keys(filter).length) input.filter = filter;\n const data = await w.request<{ exportSandboxes: unknown }>(EXPORT_SANDBOXES, { input });\n return data.exportSandboxes;\n },\n );\n\n tool(\n 'sandboxes_export_get',\n 'Get Sandbox Export Job',\n 'Get a sandbox export job by ID.',\n { jobId: z.string() },\n async ({ jobId }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getSandboxExportJob: unknown }>(GET_SANDBOX_EXPORT_JOB, {\n workspaceId,\n jobId,\n context: { workspaceId },\n });\n return data.getSandboxExportJob;\n },\n );\n\n tool(\n 'sandboxes_export_list',\n 'List Sandbox Export Jobs',\n 'List sandbox export jobs for the workspace.',\n {\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listSandboxExportJobs: unknown }>(LIST_SANDBOX_EXPORT_JOBS, {\n workspaceId,\n context: { workspaceId },\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.listSandboxExportJobs;\n },\n );\n\n tool(\n 'sandboxes_export_get_artifact_bytes',\n 'Get Sandbox Artifact Bytes',\n 'Fetch raw bytes (base64) of a file artifact from a sandbox session. Context injected from auth.',\n {\n sandboxId: z.string(),\n sessionId: z.string(),\n path: z.string().describe('Path of the artifact file inside the sandbox'),\n onBehalfOfUserId: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ getSandboxArtifactBytes: unknown }>(\n GET_SANDBOX_ARTIFACT_BYTES,\n {\n input,\n },\n );\n return data.getSandboxArtifactBytes;\n },\n );\n\n // ── Admin / observability ────────────────────────────────────────────\n tool(\n 'sandboxes_admin_get_active',\n 'Get Active Sandboxes',\n 'Admin: list all currently active sandboxes across the workspace.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getActiveSandboxes: unknown }>(GET_ACTIVE_SANDBOXES, {\n context: { workspaceId },\n });\n return data.getActiveSandboxes;\n },\n );\n\n tool(\n 'sandboxes_admin_get_recent_activity',\n 'Get Recent Sandbox Activity',\n 'Admin: list recent sandbox activity/audit entries.',\n { limit: z.number().optional() },\n async ({ limit }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ getRecentSandboxActivity: unknown }>(\n GET_RECENT_SANDBOX_ACTIVITY,\n { context: { workspaceId }, limit },\n );\n return data.getRecentSandboxActivity;\n },\n );\n\n tool(\n 'sandboxes_admin_list_all',\n 'List All Sandboxes',\n 'Admin: list all sandboxes (including other users) with optional filters.',\n {\n template: sandboxTemplate.optional(),\n status: sandboxStatus.optional(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n page: z.number().optional(),\n },\n async ({ template, status, limit, offset, page }) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const filter: Record<string, unknown> = {};\n if (template !== undefined) filter.template = template;\n if (status !== undefined) filter.status = status;\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (page !== undefined) pagination.page = page;\n const data = await w.request<{ listAllSandboxes: unknown }>(LIST_ALL_SANDBOXES, {\n context: { workspaceId },\n filter: Object.keys(filter).length ? filter : undefined,\n pagination: Object.keys(pagination).length ? pagination : undefined,\n });\n return data.listAllSandboxes;\n },\n );\n\n tool(\n 'sandboxes_admin_list_nodes',\n 'List Sandbox Nodes',\n 'Admin: list cluster nodes available for sandbox scheduling with capacity info.',\n {},\n async () => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const data = await w.request<{ listSandboxNodes: unknown }>(LIST_SANDBOX_NODES, {\n context: { workspaceId },\n });\n return data.listSandboxNodes;\n },\n );\n\n // ── Proxy ────────────────────────────────────────────────────────────\n tool(\n 'sandboxes_proxy_request',\n 'Proxy Sandbox Request',\n 'Proxy an HTTP request into a running sandbox container. Context injected from auth.',\n {\n sandboxId: z.string(),\n method: z.string().describe('HTTP method, e.g. GET, POST, PUT, DELETE'),\n path: z.string().describe('Request path inside the sandbox'),\n body: z.record(z.unknown()).optional(),\n containerName: z.string().optional(),\n },\n async (args) => {\n const workspaceId = readWorkspaceId();\n if (!workspaceId) throw new Error(NO_WORKSPACE);\n const input: Record<string, unknown> = { ...args, context: { workspaceId } };\n const data = await w.request<{ proxySandboxRequest: unknown }>(PROXY_SANDBOX_REQUEST, {\n input,\n });\n return data.proxySandboxRequest;\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport { GET_UI_SESSION, SAVE_UI_SESSION, CLEAR_UI_SESSION } from '../operations.js';\n\nexport function registerUISessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_get')),\n {\n title: 'Get UI Session',\n description:\n \"Get the current user's UI session state (active vibe, active session, recent items).\",\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ uiSession: unknown }>(GET_UI_SESSION);\n return jsonResult(data.uiSession);\n } catch (error) {\n ctx.logger.error('vibecontrols_ui_session_get failed', { error });\n return errorResult(\n `Failed to get UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_save')),\n {\n title: 'Save UI Session',\n description: \"Save the current user's UI session state.\",\n inputSchema: {\n activeVibeId: z.string().optional().describe('Active vibe ID'),\n activeSessionId: z.string().optional().describe('Active session ID'),\n recentVibes: z.array(z.string()).optional().describe('Recent vibe IDs'),\n recentSessions: z.array(z.string()).optional().describe('Recent session IDs'),\n state: z.string().optional().describe('Custom state as JSON string'),\n },\n },\n async ({ activeVibeId, activeSessionId, recentVibes, recentSessions, state }) => {\n try {\n const input: Record<string, unknown> = {};\n if (activeVibeId !== undefined) input.activeVibeId = activeVibeId;\n if (activeSessionId !== undefined) input.activeSessionId = activeSessionId;\n if (recentVibes !== undefined) input.recentVibes = recentVibes;\n if (recentSessions !== undefined) input.recentSessions = recentSessions;\n if (state !== undefined) input.state = JSON.parse(state);\n\n const data = await ctx.gql.workspace.request<{ saveUISession: unknown }>(SAVE_UI_SESSION, {\n input,\n });\n return jsonResult(data.saveUISession);\n } catch (error) {\n ctx.logger.error('vibecontrols_ui_session_save failed', { error });\n return errorResult(\n `Failed to save UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'ui_session_clear')),\n {\n title: 'Clear UI Session',\n description: \"Clear the current user's UI session state.\",\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ clearUISession: boolean }>(CLEAR_UI_SESSION);\n return jsonResult({ cleared: data.clearUISession });\n } catch (error) {\n ctx.logger.error('vibecontrols_ui_session_clear failed', { error });\n return errorResult(\n `Failed to clear UI session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_VIBEDECKS,\n GET_VIBEDECK,\n CREATE_VIBEDECK,\n UPDATE_VIBEDECK,\n DELETE_VIBEDECK,\n DUPLICATE_VIBEDECK,\n SET_DEFAULT_VIBEDECK,\n LIST_VIBEDECK_BUTTONS,\n CREATE_VIBEDECK_BUTTON,\n UPDATE_VIBEDECK_BUTTON,\n DELETE_VIBEDECK_BUTTON,\n EXECUTE_VIBEDECK_BUTTON,\n} from '../operations.js';\n\nexport function registerVibeDeckTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_list')),\n {\n title: 'List VibeDecks',\n description: 'List all VibeDecks with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by deck name'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ name, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\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<{ vibeDecks: unknown }>(LIST_VIBEDECKS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibeDecks);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_list failed', { error });\n return errorResult(\n `Failed to list VibeDecks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_get')),\n {\n title: 'Get VibeDeck',\n description: 'Get a VibeDeck by its ID.',\n inputSchema: { id: z.string().describe('VibeDeck ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeDeck: unknown }>(GET_VIBEDECK, { id });\n return jsonResult(data.vibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_get failed', { error });\n return errorResult(\n `Failed to get VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_create')),\n {\n title: 'Create VibeDeck',\n description: 'Create a new VibeDeck.',\n inputSchema: {\n name: z.string().describe('Deck name'),\n description: z.string().optional().describe('Deck description'),\n isDefault: z.boolean().optional().describe('Set as default deck'),\n },\n },\n async ({ name, description, isDefault }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n\n const data = await ctx.gql.workspace.request<{ createVibeDeck: unknown }>(CREATE_VIBEDECK, {\n input,\n });\n return jsonResult(data.createVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_create failed', { error });\n return errorResult(\n `Failed to create VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_update')),\n {\n title: 'Update VibeDeck',\n description: 'Update an existing VibeDeck.',\n inputSchema: {\n id: z.string().describe('VibeDeck ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n isDefault: z.boolean().optional().describe('Set as default deck'),\n },\n },\n async ({ id, name, description, isDefault }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (isDefault !== undefined) input.isDefault = isDefault;\n\n const data = await ctx.gql.workspace.request<{ updateVibeDeck: unknown }>(UPDATE_VIBEDECK, {\n id,\n input,\n });\n return jsonResult(data.updateVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_update failed', { error });\n return errorResult(\n `Failed to update VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_delete')),\n {\n title: 'Delete VibeDeck',\n description: 'Permanently delete a VibeDeck.',\n inputSchema: { id: z.string().describe('VibeDeck ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibeDeck: boolean }>(DELETE_VIBEDECK, {\n id,\n });\n return jsonResult({ deleted: data.deleteVibeDeck, vibeDeckId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_delete failed', { error });\n return errorResult(\n `Failed to delete VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_duplicate')),\n {\n title: 'Duplicate VibeDeck',\n description: 'Create a copy of an existing VibeDeck.',\n inputSchema: {\n id: z.string().describe('VibeDeck ID to duplicate'),\n name: z.string().optional().describe('Name for the duplicated deck'),\n },\n },\n async ({ id, name }) => {\n try {\n const variables: Record<string, unknown> = { id };\n if (name !== undefined) variables.name = name;\n\n const data = await ctx.gql.workspace.request<{ duplicateVibeDeck: unknown }>(\n DUPLICATE_VIBEDECK,\n variables,\n );\n return jsonResult(data.duplicateVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_duplicate failed', { error });\n return errorResult(\n `Failed to duplicate VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_set_default')),\n {\n title: 'Set Default VibeDeck',\n description: 'Set a VibeDeck as the default deck.',\n inputSchema: { id: z.string().describe('VibeDeck ID to set as default') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ setDefaultVibeDeck: unknown }>(\n SET_DEFAULT_VIBEDECK,\n {\n id,\n },\n );\n return jsonResult(data.setDefaultVibeDeck);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_set_default failed', { error });\n return errorResult(\n `Failed to set default VibeDeck: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_list')),\n {\n title: 'List VibeDeck Buttons',\n description: 'List all buttons in a VibeDeck with optional pagination.',\n inputSchema: {\n vibeDeckId: z.string().optional().describe('Filter by VibeDeck ID'),\n limit: z.number().optional().describe('Max results to return'),\n offset: z.number().optional().describe('Number of results to skip'),\n },\n },\n async ({ vibeDeckId, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (vibeDeckId !== undefined) filter.vibeDeckId = vibeDeckId;\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<{ vibeDeckButtons: unknown }>(\n LIST_VIBEDECK_BUTTONS,\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.vibeDeckButtons);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_list failed', { error });\n return errorResult(\n `Failed to list VibeDeck buttons: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_create')),\n {\n title: 'Create VibeDeck Button',\n description: 'Create a new button in a VibeDeck.',\n inputSchema: {\n vibeDeckId: z.string().describe('VibeDeck ID to add the button to'),\n label: z.string().describe('Button label'),\n actionType: z.string().optional().describe('Action type for the button'),\n actionId: z.string().optional().describe('Action ID to link to this button'),\n command: z.string().optional().describe('Command to execute'),\n script: z.string().optional().describe('Script to execute'),\n webhookUrl: z.string().optional().describe('Webhook URL to call'),\n row: z.number().optional().describe('Row position in the deck grid'),\n column: z.number().optional().describe('Column position in the deck grid'),\n color: z.string().optional().describe('Button color'),\n icon: z.string().optional().describe('Button icon'),\n },\n },\n async ({\n vibeDeckId,\n label,\n actionType,\n actionId,\n command,\n script,\n webhookUrl,\n row,\n column,\n color,\n icon,\n }) => {\n try {\n const input: Record<string, unknown> = { vibeDeckId, label };\n if (actionType !== undefined) input.actionType = actionType;\n if (actionId !== undefined) input.actionId = actionId;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (row !== undefined) input.row = row;\n if (column !== undefined) input.column = column;\n if (color !== undefined) input.color = color;\n if (icon !== undefined) input.icon = icon;\n\n const data = await ctx.gql.workspace.request<{ createVibeDeckButton: unknown }>(\n CREATE_VIBEDECK_BUTTON,\n { input },\n );\n return jsonResult(data.createVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_create failed', { error });\n return errorResult(\n `Failed to create VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_update')),\n {\n title: 'Update VibeDeck Button',\n description: 'Update an existing VibeDeck button.',\n inputSchema: {\n id: z.string().describe('Button ID'),\n label: z.string().optional().describe('Updated label'),\n actionType: z.string().optional().describe('Updated action type'),\n actionId: z.string().optional().describe('Updated action ID to link to this button'),\n command: z.string().optional().describe('Updated command'),\n script: z.string().optional().describe('Updated script'),\n webhookUrl: z.string().optional().describe('Updated webhook URL'),\n row: z.number().optional().describe('Updated row position'),\n column: z.number().optional().describe('Updated column position'),\n color: z.string().optional().describe('Updated color'),\n icon: z.string().optional().describe('Updated icon'),\n },\n },\n async ({\n id,\n label,\n actionType,\n actionId,\n command,\n script,\n webhookUrl,\n row,\n column,\n color,\n icon,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (label !== undefined) input.label = label;\n if (actionType !== undefined) input.actionType = actionType;\n if (actionId !== undefined) input.actionId = actionId;\n if (command !== undefined) input.command = command;\n if (script !== undefined) input.script = script;\n if (webhookUrl !== undefined) input.webhookUrl = webhookUrl;\n if (row !== undefined) input.row = row;\n if (column !== undefined) input.column = column;\n if (color !== undefined) input.color = color;\n if (icon !== undefined) input.icon = icon;\n\n const data = await ctx.gql.workspace.request<{ updateVibeDeckButton: unknown }>(\n UPDATE_VIBEDECK_BUTTON,\n { id, input },\n );\n return jsonResult(data.updateVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_update failed', { error });\n return errorResult(\n `Failed to update VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_delete')),\n {\n title: 'Delete VibeDeck Button',\n description: 'Permanently delete a VibeDeck button.',\n inputSchema: { id: z.string().describe('Button ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibeDeckButton: boolean }>(\n DELETE_VIBEDECK_BUTTON,\n { id },\n );\n return jsonResult({ deleted: data.deleteVibeDeckButton, buttonId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_delete failed', { error });\n return errorResult(\n `Failed to delete VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'decks_buttons_execute')),\n {\n title: 'Execute VibeDeck Button',\n description: 'Execute the action associated with a VibeDeck button on a specific agent.',\n inputSchema: {\n id: z.string().describe('Button ID to execute'),\n agentId: z.string().describe('Agent ID to execute the button action on'),\n },\n },\n async ({ id, agentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ executeVibeDeckButton: unknown }>(\n EXECUTE_VIBEDECK_BUTTON,\n { id, agentId },\n );\n return jsonResult(data.executeVibeDeckButton);\n } catch (error) {\n ctx.logger.error('vibecontrols_decks_buttons_execute failed', { error });\n return errorResult(\n `Failed to execute VibeDeck button: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_VIBES,\n GET_VIBE,\n CREATE_VIBE,\n UPDATE_VIBE,\n DELETE_VIBE,\n UPDATE_VIBE_STATUS,\n ARCHIVE_VIBE,\n RESTORE_VIBE,\n MOVE_VIBE,\n VIBE_HIERARCHY,\n SEARCH_VIBES,\n UPDATE_VIBE_GIT,\n} from '../operations.js';\n\nconst VibeTypeEnum = z.enum([\n 'PROJECT',\n 'WORKSPACE',\n 'REPOSITORY',\n 'MONOREPO',\n 'PACKAGE',\n 'CUSTOM',\n]);\nconst VibeStatusEnum = z.enum(['ACTIVE', 'INACTIVE', 'ARCHIVED', 'ERROR']);\n\nexport function registerVibeTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_list')),\n {\n title: 'List Vibes',\n description: 'List all vibes (projects/workspaces) with optional filters and pagination.',\n inputSchema: {\n name: z.string().optional().describe('Filter by vibe name'),\n type: VibeTypeEnum.optional().describe('Filter by vibe type'),\n status: VibeStatusEnum.optional().describe('Filter by status'),\n agentId: z.string().optional().describe('Filter by agent ID'),\n parentId: z.string().optional().describe('Filter by parent vibe ID'),\n tags: z.array(z.string()).optional().describe('Filter by tags'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ name, type, status, agentId, parentId, tags, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (type !== undefined) filter.type = type;\n if (status !== undefined) filter.status = status;\n if (agentId !== undefined) filter.agentId = agentId;\n if (parentId !== undefined) filter.parentId = parentId;\n if (tags !== undefined) filter.tags = tags;\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<{ vibes: unknown }>(LIST_VIBES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.vibes);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_list failed', { error });\n return errorResult(\n `Failed to list vibes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_get')),\n {\n title: 'Get Vibe',\n description: 'Get a vibe by its ID.',\n inputSchema: { id: z.string().describe('Vibe ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibe: unknown }>(GET_VIBE, { id });\n return jsonResult(data.vibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_get failed', { error });\n return errorResult(\n `Failed to get vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_create')),\n {\n title: 'Create Vibe',\n description: 'Create a new vibe (project/workspace).',\n inputSchema: {\n name: z.string().describe('Vibe name'),\n description: z.string().optional().describe('Vibe description'),\n path: z.string().optional().describe('Local filesystem path'),\n type: VibeTypeEnum.optional().describe('Vibe type (default: PROJECT)'),\n status: VibeStatusEnum.optional().describe('Initial status'),\n agentId: z.string().optional().describe('Agent ID to associate with'),\n parentId: z.string().optional().describe('Parent vibe ID'),\n gitBranch: z.string().optional().describe('Git branch'),\n gitRemote: z.string().optional().describe('Git remote URL'),\n tags: z.array(z.string()).optional().describe('Tags'),\n },\n },\n async ({\n name,\n description,\n path,\n type,\n status,\n agentId,\n parentId,\n gitBranch,\n gitRemote,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (description !== undefined) input.description = description;\n if (path !== undefined) input.path = path;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (agentId !== undefined) input.agentId = agentId;\n if (parentId !== undefined) input.parentId = parentId;\n if (gitBranch !== undefined) input.gitBranch = gitBranch;\n if (gitRemote !== undefined) input.gitRemote = gitRemote;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ createVibe: unknown }>(CREATE_VIBE, {\n input,\n });\n return jsonResult(data.createVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_create failed', { error });\n return errorResult(\n `Failed to create vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_update')),\n {\n title: 'Update Vibe',\n description: 'Update an existing vibe.',\n inputSchema: {\n id: z.string().describe('Vibe ID'),\n name: z.string().optional().describe('Updated name'),\n description: z.string().optional().describe('Updated description'),\n path: z.string().optional().describe('Updated path'),\n type: VibeTypeEnum.optional().describe('Updated type'),\n status: VibeStatusEnum.optional().describe('Updated status'),\n agentId: z.string().optional().describe('Updated agent ID'),\n parentId: z.string().optional().describe('Updated parent vibe ID'),\n gitBranch: z.string().optional().describe('Updated git branch'),\n gitRemote: z.string().optional().describe('Updated git remote'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n description,\n path,\n type,\n status,\n agentId,\n parentId,\n gitBranch,\n gitRemote,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (path !== undefined) input.path = path;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (agentId !== undefined) input.agentId = agentId;\n if (parentId !== undefined) input.parentId = parentId;\n if (gitBranch !== undefined) input.gitBranch = gitBranch;\n if (gitRemote !== undefined) input.gitRemote = gitRemote;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{ updateVibe: unknown }>(UPDATE_VIBE, {\n id,\n input,\n });\n return jsonResult(data.updateVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_update failed', { error });\n return errorResult(\n `Failed to update vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_delete')),\n {\n title: 'Delete Vibe',\n description: 'Permanently delete a vibe.',\n inputSchema: { id: z.string().describe('Vibe ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteVibe: boolean }>(DELETE_VIBE, { id });\n return jsonResult({ deleted: data.deleteVibe, vibeId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_delete failed', { error });\n return errorResult(\n `Failed to delete vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_update_status')),\n {\n title: 'Update Vibe Status',\n description: 'Change the status of a vibe (ACTIVE, INACTIVE, ARCHIVED, ERROR).',\n inputSchema: {\n id: z.string().describe('Vibe ID'),\n status: VibeStatusEnum.describe('New status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{ updateVibeStatus: unknown }>(\n UPDATE_VIBE_STATUS,\n {\n id,\n status,\n },\n );\n return jsonResult(data.updateVibeStatus);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_update_status failed', { error });\n return errorResult(\n `Failed to update vibe status: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_archive')),\n {\n title: 'Archive Vibe',\n description: 'Archive a vibe (soft-delete with archivedAt timestamp).',\n inputSchema: { id: z.string().describe('Vibe ID to archive') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ archiveVibe: unknown }>(ARCHIVE_VIBE, {\n id,\n });\n return jsonResult(data.archiveVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_archive failed', { error });\n return errorResult(\n `Failed to archive vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_restore')),\n {\n title: 'Restore Vibe',\n description: 'Restore a previously archived vibe.',\n inputSchema: { id: z.string().describe('Vibe ID to restore') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restoreVibe: unknown }>(RESTORE_VIBE, {\n id,\n });\n return jsonResult(data.restoreVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_restore failed', { error });\n return errorResult(\n `Failed to restore vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_hierarchy')),\n {\n title: 'Vibe Hierarchy',\n description: 'Get the vibe hierarchy tree starting from an optional root vibe.',\n inputSchema: {\n rootId: z.string().optional().describe('Root vibe ID (omit for all top-level vibes)'),\n },\n },\n async ({ rootId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ vibeHierarchy: unknown }>(VIBE_HIERARCHY, {\n rootId,\n });\n return jsonResult(data.vibeHierarchy);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_hierarchy failed', { error });\n return errorResult(\n `Failed to get vibe hierarchy: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_search')),\n {\n title: 'Search Vibes',\n description: 'Full-text search across vibes by name, description, path, or tags.',\n inputSchema: {\n query: z.string().describe('Search query string'),\n limit: z.number().optional().describe('Maximum results to return'),\n },\n },\n async ({ query, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{ searchVibes: unknown }>(SEARCH_VIBES, {\n query,\n limit,\n });\n return jsonResult(data.searchVibes);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_search failed', { error });\n return errorResult(\n `Failed to search vibes: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_move')),\n {\n title: 'Move Vibe',\n description:\n 'Move a vibe under a different parent in the hierarchy. Pass `newParentId` = null (omit) to move to top-level. Returns the updated Vibe.',\n inputSchema: {\n id: z.string().describe('Vibe ID to move'),\n newParentId: z\n .string()\n .optional()\n .describe('New parent vibe ID, or omit to move to the top level'),\n },\n },\n async ({ id, newParentId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ moveVibe: unknown }>(MOVE_VIBE, {\n id,\n newParentId: newParentId ?? null,\n });\n return jsonResult(data.moveVibe);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_move failed', { error });\n return errorResult(\n `Failed to move vibe: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'vibes_update_git')),\n {\n title: 'Update Vibe Git Metadata',\n description:\n 'Update the git-related metadata on a vibe (branch / remote URL / structured status JSON). At least one field must be provided. Returns the updated Vibe.',\n inputSchema: {\n id: z.string().describe('Vibe ID'),\n gitBranch: z.string().optional().describe('Updated git branch name'),\n gitRemote: z.string().optional().describe('Updated git remote URL'),\n gitStatus: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Structured git status JSON (e.g. dirty/ahead/behind counters)'),\n },\n },\n async ({ id, gitBranch, gitRemote, gitStatus }) => {\n try {\n if (gitBranch === undefined && gitRemote === undefined && gitStatus === undefined) {\n return errorResult(\n 'No git updates specified — provide at least one of gitBranch/gitRemote/gitStatus',\n );\n }\n const data = await ctx.gql.workspace.request<{ updateVibeGit: unknown }>(UPDATE_VIBE_GIT, {\n id,\n gitBranch: gitBranch ?? null,\n gitRemote: gitRemote ?? null,\n gitStatus: gitStatus ?? null,\n });\n return jsonResult(data.updateVibeGit);\n } catch (error) {\n ctx.logger.error('vibecontrols_vibes_update_git failed', { error });\n return errorResult(\n `Failed to update vibe git metadata: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","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_WEBHOOKS,\n GET_WEBHOOK,\n CREATE_WEBHOOK,\n UPDATE_WEBHOOK,\n DELETE_WEBHOOK,\n TEST_WEBHOOK,\n TRIGGER_WEBHOOK,\n} from '../operations.js';\n\nexport function registerWebhookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_list')),\n {\n title: 'List Webhooks',\n description: 'List all webhooks with optional filters.',\n inputSchema: {\n name: z.string().optional().describe('Filter by webhook name'),\n event: z.string().optional().describe('Filter by event type'),\n isActive: z.boolean().optional().describe('Filter by active status'),\n limit: z.number().optional().describe('Max results'),\n offset: z.number().optional().describe('Offset for pagination'),\n },\n },\n async ({ name, event, isActive, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (name !== undefined) filter.name = name;\n if (event !== undefined) filter.event = event;\n if (isActive !== undefined) filter.isActive = isActive;\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<{ webhooks: unknown }>(LIST_WEBHOOKS, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.webhooks);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_list failed', { error });\n return errorResult(\n `Failed to list webhooks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_get')),\n {\n title: 'Get Webhook',\n description: 'Get a webhook by its ID.',\n inputSchema: { id: z.string().describe('Webhook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ webhook: unknown }>(GET_WEBHOOK, { id });\n return jsonResult(data.webhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_get failed', { error });\n return errorResult(\n `Failed to get webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_create')),\n {\n title: 'Create Webhook',\n description: 'Create a new webhook.',\n inputSchema: {\n name: z.string().describe('Webhook name'),\n url: z.string().describe('Webhook endpoint URL'),\n events: z.array(z.string()).describe('Events to subscribe to'),\n agentIds: z.array(z.string()).optional().describe('Agent IDs to scope to'),\n isActive: z.boolean().optional().describe('Active status (default: true)'),\n signingKey: z.string().optional().describe('Signing key for payload verification'),\n },\n },\n async ({ name, url, events, agentIds, isActive, signingKey }) => {\n try {\n const input: Record<string, unknown> = { name, url, events };\n if (agentIds !== undefined) input.agentIds = agentIds;\n if (isActive !== undefined) input.isActive = isActive;\n if (signingKey !== undefined) input.signingKey = signingKey;\n\n const data = await ctx.gql.workspace.request<{ createWebhook: unknown }>(CREATE_WEBHOOK, {\n input,\n });\n return jsonResult(data.createWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_create failed', { error });\n return errorResult(\n `Failed to create webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_update')),\n {\n title: 'Update Webhook',\n description: 'Update an existing webhook.',\n inputSchema: {\n id: z.string().describe('Webhook ID'),\n name: z.string().optional().describe('Updated name'),\n url: z.string().optional().describe('Updated endpoint URL'),\n events: z.array(z.string()).optional().describe('Updated events'),\n agentIds: z.array(z.string()).optional().describe('Updated agent IDs'),\n isActive: z.boolean().optional().describe('Updated active status'),\n signingKey: z.string().optional().describe('Updated signing key'),\n },\n },\n async ({ id, name, url, events, agentIds, isActive, signingKey }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (url !== undefined) input.url = url;\n if (events !== undefined) input.events = events;\n if (agentIds !== undefined) input.agentIds = agentIds;\n if (isActive !== undefined) input.isActive = isActive;\n if (signingKey !== undefined) input.signingKey = signingKey;\n\n const data = await ctx.gql.workspace.request<{ updateWebhook: unknown }>(UPDATE_WEBHOOK, {\n id,\n input,\n });\n return jsonResult(data.updateWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_update failed', { error });\n return errorResult(\n `Failed to update webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_delete')),\n {\n title: 'Delete Webhook',\n description: 'Delete a webhook.',\n inputSchema: { id: z.string().describe('Webhook ID to delete') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteWebhook: boolean }>(DELETE_WEBHOOK, {\n id,\n });\n return jsonResult({ deleted: data.deleteWebhook, webhookId: id });\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_delete failed', { error });\n return errorResult(\n `Failed to delete webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_test')),\n {\n title: 'Test Webhook',\n description: 'Send a test delivery to a webhook to verify its endpoint.',\n inputSchema: { id: z.string().describe('Webhook ID to test') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ testWebhook: unknown }>(TEST_WEBHOOK, {\n id,\n });\n return jsonResult(data.testWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_test failed', { error });\n return errorResult(\n `Failed to test webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'webhooks_trigger')),\n {\n title: 'Trigger Webhook',\n description: 'Trigger a webhook with a custom JSON payload.',\n inputSchema: {\n id: z.string().describe('Webhook ID to trigger'),\n payload: z.string().describe('JSON payload to deliver'),\n },\n },\n async ({ id, payload }) => {\n try {\n const parsedPayload = JSON.parse(payload);\n const data = await ctx.gql.workspace.request<{ triggerWebhook: unknown }>(TRIGGER_WEBHOOK, {\n id,\n payload: parsedPayload,\n });\n return jsonResult(data.triggerWebhook);\n } catch (error) {\n ctx.logger.error('vibecontrols_webhooks_trigger failed', { error });\n return errorResult(\n `Failed to trigger webhook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Auth helper for the auth module — ports VibeControlsMCPAuth from\n * vibecontrols-mcp/src/auth/index.ts to a ctx-aware factory.\n *\n * Differences from the legacy class:\n * - Per-ctx instance (no module-level singleton; each product MCP gets its own)\n * - Token persistence delegated to ctx.auth (StoredAuth file)\n * - Endpoints + clientId resolved via ctx.config.resolveOIDC + ctx.config.read\n * - pendingDeviceCode kept in closure scope (alive for the MCP server process,\n * suitable for stdio's lifetime; HTTP's per-session servers each get their own\n * pending state)\n *\n * Public surface mirrors the legacy class so the lifted auth/tools.ts works\n * without modification: startLogin / completeLogin / selectWorkspace /\n * listWorkspaces / getStatus / logout / ensureAuthenticated / getHeaders /\n * isLoggedIn / setOnTokensChanged.\n */\n\nimport type { McpContext } from '../../core/index.js';\nimport { fetchWorkspaces, issueWorkspaceToken } from '../../core/auth/device-code.js';\n\ninterface PendingDeviceCode {\n deviceCode: string;\n userCode: string;\n verificationUri: string;\n verificationUriComplete: string | null;\n expiresAt: number;\n interval: number;\n clientId: string;\n tokenUrl: string;\n}\n\nexport interface WorkspaceInfo {\n id: string;\n name: string;\n slug: string;\n tenantId: string;\n organizationId: string;\n}\n\nexport interface LoginStartResult {\n status: 'device_code_issued';\n verificationUri: string;\n verificationUriComplete: string | null;\n userCode: string;\n expiresIn: number;\n message: string;\n}\n\nexport interface LoginCompleteResult {\n status: 'authenticated' | 'workspace_selection_required' | 'pending' | 'expired';\n message: string;\n workspaces?: WorkspaceInfo[];\n}\n\nexport interface AuthHelper {\n startLogin(): Promise<LoginStartResult>;\n completeLogin(): Promise<LoginCompleteResult>;\n selectWorkspace(workspaceId: string, organizationId: string): Promise<void>;\n listWorkspaces(): Promise<WorkspaceInfo[]>;\n ensureAuthenticated(): Promise<void>;\n getStatus(): Promise<{\n authenticated: boolean;\n method: string;\n expiresAt: string | null;\n workspaceId: string | null;\n organizationId: string | null;\n workspaceTokenExpiresAt: string | null;\n hasWorkspaceToken: boolean;\n hasPendingLogin: boolean;\n }>;\n logout(): Promise<void>;\n getHeaders(): Record<string, string>;\n isLoggedIn(): boolean;\n setOnTokensChanged(cb: () => void): void;\n}\n\nconst helpers = new WeakMap<McpContext, AuthHelper>();\n\nexport function getAuth(ctx: McpContext): AuthHelper {\n const cached = helpers.get(ctx);\n if (cached) return cached;\n const helper = createAuthHelper(ctx);\n helpers.set(ctx, helper);\n return helper;\n}\n\nfunction createAuthHelper(ctx: McpContext): AuthHelper {\n let pending: PendingDeviceCode | null = null;\n let onTokensChanged: (() => void) | null = null;\n let refreshInProgress: Promise<void> | null = null;\n\n function notify(): void {\n onTokensChanged?.();\n }\n\n async function startLogin(): Promise<LoginStartResult> {\n const { oidcIssuer, clientId } = ctx.config.resolveOIDC();\n const deviceCodeUrl = `${oidcIssuer}/oidc/device/code`;\n const tokenUrl = `${oidcIssuer}/oauth/device/token`;\n\n const response = await fetch(deviceCodeUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n client_id: clientId,\n scope: 'openid profile email offline_access',\n }).toString(),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Device code request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n const deviceCode = data['device_code'] as string;\n const userCode = data['user_code'] as string;\n const verificationUri = data['verification_uri'] as string;\n const verificationUriComplete = (data['verification_uri_complete'] as string) ?? null;\n const expiresIn = (data['expires_in'] as number) ?? 900;\n const interval = (data['interval'] as number) ?? 5;\n\n pending = {\n deviceCode,\n userCode,\n verificationUri,\n verificationUriComplete,\n expiresAt: Date.now() + expiresIn * 1000,\n interval,\n clientId,\n tokenUrl,\n };\n\n return {\n status: 'device_code_issued',\n verificationUri,\n verificationUriComplete,\n userCode,\n expiresIn,\n message: `Open ${verificationUriComplete ?? verificationUri} in a browser and enter code: ${userCode}. Then call ${ctx.productName}_auth_complete to finish authentication.`,\n };\n }\n\n async function completeLogin(): Promise<LoginCompleteResult> {\n if (!pending) {\n throw new Error(\n `No pending login flow. Call ${ctx.productName}_auth_login first to start the device code flow.`,\n );\n }\n\n const p = pending;\n if (Date.now() >= p.expiresAt) {\n pending = null;\n return {\n status: 'expired',\n message: `Device code has expired. Call ${ctx.productName}_auth_login again to get a new code.`,\n };\n }\n\n const response = await fetch(p.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: p.deviceCode,\n client_id: p.clientId,\n }).toString(),\n });\n\n const data = (await response.json()) as Record<string, unknown>;\n\n if (response.ok && data['access_token']) {\n pending = null;\n const expiresIn = (data['expires_in'] as number) ?? 3600;\n const auth = ctx.auth.read() ?? { accessToken: '', refreshToken: '' };\n ctx.auth.write({\n ...auth,\n accessToken: data['access_token'] as string,\n refreshToken: (data['refresh_token'] as string) ?? '',\n expiresAt: Date.now() + expiresIn * 1000,\n authMethod: 'device_code',\n });\n ctx.gql.reset();\n return await handlePostLogin();\n }\n\n const errorCode = data['error'] as string | undefined;\n if (errorCode === 'authorization_pending') {\n return {\n status: 'pending',\n message: `Still waiting for user to authorize. Open ${p.verificationUriComplete ?? p.verificationUri} and enter code: ${p.userCode}. Then call ${ctx.productName}_auth_complete again.`,\n };\n } else if (errorCode === 'slow_down') {\n p.interval += 5;\n return {\n status: 'pending',\n message: `Authorization server asked to slow down. Wait a moment, then call ${ctx.productName}_auth_complete again.`,\n };\n } else if (errorCode === 'expired_token') {\n pending = null;\n return {\n status: 'expired',\n message: `Device code has expired. Call ${ctx.productName}_auth_login again.`,\n };\n } else if (errorCode === 'access_denied') {\n pending = null;\n throw new Error('Authorization was denied by the user.');\n } else {\n pending = null;\n throw new Error(\n `Device code error: ${(data['error_description'] as string) ?? errorCode ?? 'Unknown'}`,\n );\n }\n }\n\n async function handlePostLogin(): Promise<LoginCompleteResult> {\n try {\n const workspaces = await listWorkspaces();\n if (workspaces.length === 0) {\n notify();\n ctx.logger.info('Device code login successful (no workspaces found)');\n return {\n status: 'authenticated',\n message: `Authentication successful. No workspaces found — use ${ctx.productName}_auth_select_workspace when one is available.`,\n };\n }\n if (workspaces.length === 1) {\n const ws = workspaces[0];\n if (!ws)\n throw new Error('Unexpected: workspaces.length === 1 but workspaces[0] is undefined');\n await issueAndStoreWorkspaceToken(ws.id, ws.organizationId);\n ctx.logger.info('Device code login successful', {\n workspaceId: ws.id,\n workspaceName: ws.name,\n });\n return {\n status: 'authenticated',\n message: `Authentication successful. Workspace \"${ws.name}\" selected automatically.`,\n };\n }\n notify();\n ctx.logger.info('Device code login successful, workspace selection needed');\n return {\n status: 'workspace_selection_required',\n message: `Authentication successful. ${workspaces.length} workspaces available — call ${ctx.productName}_auth_select_workspace to choose one.`,\n workspaces,\n };\n } catch (wsError) {\n notify();\n ctx.logger.warn('Workspace discovery failed after login', {\n error: wsError instanceof Error ? wsError.message : String(wsError),\n });\n return {\n status: 'authenticated',\n message: `Authentication successful. Workspace discovery failed: ${wsError instanceof Error ? wsError.message : String(wsError)}`,\n };\n }\n }\n\n async function listWorkspaces(): Promise<WorkspaceInfo[]> {\n const auth = ctx.auth.read();\n if (!auth?.accessToken) throw new Error('Not authenticated. Please login first.');\n return fetchWorkspaces(ctx.config.read().globalEndpoint, auth.accessToken);\n }\n\n async function issueAndStoreWorkspaceToken(\n workspaceId: string,\n organizationId: string,\n ): Promise<void> {\n const auth = ctx.auth.read();\n if (!auth?.accessToken) throw new Error('Not authenticated.');\n const result = await issueWorkspaceToken(\n ctx.config.read().workspaceEndpoint,\n auth.accessToken,\n workspaceId,\n organizationId,\n );\n ctx.auth.write({\n ...auth,\n workspaceToken: result.token,\n workspaceTokenExpiresAt: new Date(result.expiresAt).getTime(),\n workspaceId,\n organizationId,\n });\n ctx.gql.reset();\n notify();\n }\n\n async function selectWorkspace(workspaceId: string, organizationId: string): Promise<void> {\n const auth = ctx.auth.read();\n if (!auth?.accessToken) throw new Error('Not authenticated. Please login first.');\n await issueAndStoreWorkspaceToken(workspaceId, organizationId);\n ctx.logger.info('Workspace selected', { workspaceId });\n }\n\n async function ensureAuthenticated(): Promise<void> {\n if (refreshInProgress) {\n await refreshInProgress;\n return;\n }\n const doEnsure = async (): Promise<void> => {\n const auth = ctx.auth.read();\n if (auth?.apiKey) return;\n if (!auth?.accessToken) {\n throw new Error(\n `Not authenticated. Call ${ctx.productName}_auth_login to start the login flow, then ${ctx.productName}_auth_complete after authorizing in the browser.`,\n );\n }\n // The shared gql client handles refresh via isTokenExpiringSoon + isWorkspaceTokenExpiringSoon —\n // trigger by issuing a no-op request that goes through the workspace client's refresh path.\n // We simulate a no-op via a cheap query if needed; today the gql wrapper does it lazily,\n // so we just delegate to it on the next request. Nothing to do here.\n };\n refreshInProgress = doEnsure().finally(() => {\n refreshInProgress = null;\n });\n await refreshInProgress;\n }\n\n function getStatus(): Promise<{\n authenticated: boolean;\n method: string;\n expiresAt: string | null;\n workspaceId: string | null;\n organizationId: string | null;\n workspaceTokenExpiresAt: string | null;\n hasWorkspaceToken: boolean;\n hasPendingLogin: boolean;\n }> {\n const auth = ctx.auth.read();\n return Promise.resolve({\n authenticated: !!(auth?.accessToken || auth?.apiKey),\n method: auth?.apiKey ? 'api_key' : auth?.accessToken ? 'oauth_token' : 'none',\n expiresAt: auth?.expiresAt ? new Date(auth.expiresAt).toISOString() : null,\n workspaceId: auth?.workspaceId ?? null,\n organizationId: auth?.organizationId ?? null,\n workspaceTokenExpiresAt: auth?.workspaceTokenExpiresAt\n ? new Date(auth.workspaceTokenExpiresAt).toISOString()\n : null,\n hasWorkspaceToken: !!auth?.workspaceToken,\n hasPendingLogin: !!pending,\n });\n }\n\n async function logout(): Promise<void> {\n pending = null;\n ctx.auth.clear();\n ctx.gql.reset();\n notify();\n ctx.logger.info('Logged out and cleared stored tokens');\n }\n\n function getHeaders(): Record<string, string> {\n const auth = ctx.auth.read();\n const headers: Record<string, string> = {};\n if (auth?.apiKey) headers['X-API-Key'] = auth.apiKey;\n if (auth?.accessToken) headers['Authorization'] = `Bearer ${auth.accessToken}`;\n if (auth?.workspaceToken)\n headers['X-Workspace-Authorization'] = `Bearer ${auth.workspaceToken}`;\n if (auth?.organizationId) headers['x-org-id'] = auth.organizationId;\n if (auth?.workspaceId) headers['x-workspace-id'] = auth.workspaceId;\n return headers;\n }\n\n function isLoggedIn(): boolean {\n const auth = ctx.auth.read();\n return !!(auth?.accessToken || auth?.apiKey);\n }\n\n function setOnTokensChanged(cb: () => void): void {\n onTokensChanged = cb;\n }\n\n return {\n startLogin,\n completeLogin,\n selectWorkspace,\n listWorkspaces,\n ensureAuthenticated,\n getStatus,\n logout,\n getHeaders,\n isLoggedIn,\n setOnTokensChanged,\n };\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext } from '../../core/index.js';\nimport { getAuth } from '../auth/legacy-auth.js';\nimport {\n LIST_AGENTS,\n ACTIVE_SESSIONS,\n LIST_TUNNELS,\n PINNED_NOTES,\n LIST_AUDIT_LOGS,\n AGENT_PLUGINS,\n} from './operations.js';\n\n/**\n * Static resource URIs registered below — tracked at function entry so the\n * shell's manifest reflects exactly what was registered, even if the body\n * registers them imperatively.\n */\nconst RESOURCE_URIS = [\n 'vibecontrols://schema',\n 'vibecontrols://config',\n 'vibecontrols://topology',\n 'vibecontrols://sessions/active',\n 'vibecontrols://notes/pinned',\n 'vibecontrols://audit/recent',\n 'vibecontrols://plugins',\n] as const;\n\n/**\n * Register all VibeControls MCP resources.\n */\nexport function registerVibecontrolsResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n RESOURCE_URIS.forEach(track);\n // vibecontrols://schema — GraphQL schema overview\n server.registerResource(\n 'vibecontrols-schema',\n 'vibecontrols://schema',\n {\n title: 'VibeControls GraphQL Schema',\n description:\n 'Overview of the VibeControls GraphQL API schema — types, queries, mutations, and enums.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://schema requested');\n\n const schema = `# VibeControls GraphQL Schema (Overview)\n\n## Entity Types\n- VibecontrolsAgent — Development environment agent\n- Vibe — Project/workspace/repository\n- Session — Terminal session (tmux, SSH, terminal, script)\n- VibecontrolsNote — Notes attached to vibes\n- Configuration — Key-value settings (scoped)\n- UISession — UI state persistence\n- Webhook — Event-driven HTTP callbacks\n- AiToolEvent — AI tool usage tracking\n- AgentTunnel — Remote access tunnels\n- AgentPlugin — Plugins on agents\n- Target — Connection targets (SSH, RDP, VNC, DIRECT)\n- VibeDeck — Command button grids\n- VibeDeckButton — Individual buttons in decks\n- DocsSite — Documentation sites\n- DocsPage — Individual documentation pages\n- DocsRevision — Build revisions for docs\n- AuditLog — Audit trail entries\n- SessionShare — Direct user shares\n- SessionShareLink — Link-based shares\n\n## Enums\n- VibeType: PROJECT, WORKSPACE, REPOSITORY, MONOREPO, PACKAGE, CUSTOM\n- VibeStatus: ACTIVE, INACTIVE, ARCHIVED, ERROR\n- SessionType: TMUX, SSH, TERMINAL, SCRIPT, CUSTOM\n- SessionStatus: PENDING, STARTING, RUNNING, STOPPED, ERROR, TERMINATED\n- ConfigScope: WORKSPACE, VIBE, SESSION, AGENT, USER, GLOBAL\n- TargetType: DIRECT, SSH, RDP, VNC\n- DocsVisibility: PRIVATE, PUBLIC\n`;\n\n return {\n contents: [\n {\n uri: 'vibecontrols://schema',\n text: schema,\n mimeType: 'text/plain',\n },\n ],\n };\n },\n );\n\n // vibecontrols://config — Current configuration\n server.registerResource(\n 'vibecontrols-config',\n 'vibecontrols://config',\n {\n title: 'VibeControls MCP Configuration',\n description: 'Current server configuration — endpoints, auth status, and transport settings.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://config requested');\n\n const auth = getAuth(ctx);\n const authStatus = await auth.getStatus();\n\n const configData = {\n server: {\n name: ctx.serverName,\n version: ctx.serverVersion,\n transport: 'unknown',\n },\n endpoints: {\n workspace: ctx.config.read().workspaceEndpoint,\n global: ctx.config.read().globalEndpoint,\n },\n auth: authStatus,\n environment: ctx.env,\n };\n\n return {\n contents: [\n {\n uri: 'vibecontrols://config',\n text: JSON.stringify(configData, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n },\n );\n\n // vibecontrols://topology — Agent graph + active sessions + tunnels\n server.registerResource(\n 'vibecontrols-topology',\n 'vibecontrols://topology',\n {\n title: 'Workspace Topology',\n description: 'Overview of agents, active sessions, and tunnels in the workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://topology requested');\n\n try {\n const [agents, sessions, tunnels] = await Promise.all([\n ctx.gql.workspace.request<{ vibecontrolsAgents: unknown }>(LIST_AGENTS, {}),\n ctx.gql.workspace.request<{ activeSessions: unknown }>(ACTIVE_SESSIONS, {}),\n ctx.gql.workspace.request<{ vibecontrolsAgentTunnels: unknown }>(LIST_TUNNELS),\n ]);\n\n const topology = {\n agents: agents.vibecontrolsAgents,\n activeSessions: sessions.activeSessions,\n tunnels: tunnels.vibecontrolsAgentTunnels,\n };\n\n return {\n contents: [\n {\n uri: 'vibecontrols://topology',\n text: JSON.stringify(topology, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://topology',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://sessions/active — All running sessions\n server.registerResource(\n 'vibecontrols-active-sessions',\n 'vibecontrols://sessions/active',\n {\n title: 'Active Sessions',\n description: 'All currently running terminal sessions.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://sessions/active requested');\n\n try {\n const data = await ctx.gql.workspace.request<{ activeSessions: unknown }>(\n ACTIVE_SESSIONS,\n {},\n );\n return {\n contents: [\n {\n uri: 'vibecontrols://sessions/active',\n text: JSON.stringify(data.activeSessions, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://sessions/active',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://notes/pinned — All pinned notes\n server.registerResource(\n 'vibecontrols-pinned-notes',\n 'vibecontrols://notes/pinned',\n {\n title: 'Pinned Notes',\n description: 'All pinned notes across the workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://notes/pinned requested');\n\n try {\n const data = await ctx.gql.workspace.request<{ pinnedNotes: unknown }>(PINNED_NOTES, {});\n return {\n contents: [\n {\n uri: 'vibecontrols://notes/pinned',\n text: JSON.stringify(data.pinnedNotes, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://notes/pinned',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://audit/recent — Last 20 audit entries\n server.registerResource(\n 'vibecontrols-recent-audit',\n 'vibecontrols://audit/recent',\n {\n title: 'Recent Audit Logs',\n description: 'The 20 most recent audit log entries.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://audit/recent requested');\n\n try {\n const data = await ctx.gql.workspace.request<{ vibeAuditLogs: unknown }>(LIST_AUDIT_LOGS, {\n filter: {},\n pagination: { limit: 20, offset: 0 },\n });\n return {\n contents: [\n {\n uri: 'vibecontrols://audit/recent',\n text: JSON.stringify(data.vibeAuditLogs, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://audit/recent',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // vibecontrols://plugins — Installed plugins across agents\n server.registerResource(\n 'vibecontrols-plugins',\n 'vibecontrols://plugins',\n {\n title: 'Installed Plugins',\n description: 'Plugins installed across all agents in the workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug('Resource vibecontrols://plugins requested');\n\n try {\n // First get all agents, then get plugins for each\n const agentData = await ctx.gql.workspace.request<{\n vibecontrolsAgents: { items: Array<{ id: string; name: string }> };\n }>(LIST_AGENTS, {});\n\n const agents = agentData.vibecontrolsAgents?.items ?? [];\n const pluginResults = await Promise.all(\n agents.map(async (agent) => {\n try {\n const data = await ctx.gql.workspace.request<{ agentPlugins: unknown }>(\n AGENT_PLUGINS,\n {\n agentId: agent.id,\n },\n );\n return { agentId: agent.id, agentName: agent.name, ...(data.agentPlugins as object) };\n } catch {\n return { agentId: agent.id, agentName: agent.name, error: 'Failed to fetch plugins' };\n }\n }),\n );\n\n return {\n contents: [\n {\n uri: 'vibecontrols://plugins',\n text: JSON.stringify(pluginResults, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: 'vibecontrols://plugins',\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext } from '../../core/index.js';\n\n/**\n * Static prompt names registered below.\n */\nconst PROMPT_NAMES = [\n 'vibecontrols-setup',\n 'vibecontrols-session-workflow',\n 'vibecontrols-onboarding',\n 'vibecontrols-incident-response',\n 'vibecontrols-deploy',\n 'vibecontrols-daily-standup',\n 'vibecontrols-runbook',\n] as const;\n\n/**\n * Register all VibeControls MCP prompts.\n */\nexport function registerVibecontrolsPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n PROMPT_NAMES.forEach(track);\n // vibecontrols-setup — Guide for workspace setup\n server.registerPrompt(\n 'vibecontrols-setup',\n {\n title: 'VibeControls Workspace Setup',\n description:\n 'Step-by-step guide for setting up a VibeControls workspace with agents, vibes, and sessions.',\n argsSchema: {\n projectPath: z.string().optional().describe('Local project path to set up'),\n agentName: z.string().optional().describe('Name for the agent'),\n },\n },\n ({ projectPath, agentName }) => {\n ctx.logger.debug('Prompt vibecontrols-setup called', { projectPath, agentName });\n\n const agentNote = agentName\n ? `Use the agent name \"${agentName}\".`\n : 'Choose a descriptive agent name based on the machine hostname.';\n const pathNote = projectPath\n ? `Set up the vibe for the project at \"${projectPath}\".`\n : 'Ask the user for the project path.';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me set up a VibeControls workspace. Follow these steps:\n\n1. **Check Auth**: Use vibecontrols_auth_status. If not authenticated, use vibecontrols_auth_login.\n2. **Create/Find Agent**: Use vibecontrols_agents_list. If none, use vibecontrols_agents_create. ${agentNote}\n3. **Create Vibe**: Use vibecontrols_vibes_create. ${pathNote} Set type=PROJECT.\n4. **Create Session**: Use vibecontrols_sessions_create linked to the vibe and agent.\n5. **Start Session**: Use vibecontrols_sessions_start.\n6. **Verify**: Use vibecontrols_sessions_active to confirm.\n\nShow results at each step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-session-workflow — Guide for session management\n server.registerPrompt(\n 'vibecontrols-session-workflow',\n {\n title: 'VibeControls Session Workflow',\n description: 'Guide for creating, managing, and monitoring terminal sessions.',\n argsSchema: {\n vibeId: z.string().optional().describe('Vibe ID to create sessions in'),\n command: z.string().optional().describe('Command to run'),\n },\n },\n ({ vibeId, command }) => {\n ctx.logger.debug('Prompt vibecontrols-session-workflow called', { vibeId, command });\n\n const vibeNote = vibeId\n ? `Use vibe ID \"${vibeId}\".`\n : 'First list vibes with vibecontrols_vibes_list and let the user pick one.';\n const commandNote = command ? `Run: \"${command}\"` : 'Ask the user what command to run.';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me manage terminal sessions. Workflow:\n\n1. **Select Vibe**: ${vibeNote}\n2. **Check Active**: Use vibecontrols_sessions_active.\n3. **Create Session**: vibecontrols_sessions_create with name, ${commandNote}, vibe + agent IDs.\n4. **Start**: vibecontrols_sessions_start.\n5. **Monitor**: vibecontrols_sessions_output.\n6. **Send Input** (if needed): vibecontrols_sessions_send_input.\n7. **Web Terminal** (optional): vibecontrols_sessions_start_terminal.\n8. **Stop/Restart**: vibecontrols_sessions_stop or vibecontrols_sessions_restart.\n\nShow results at each step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-onboarding — First-time onboarding\n server.registerPrompt(\n 'vibecontrols-onboarding',\n {\n title: 'VibeControls Onboarding',\n description:\n 'Complete onboarding guide: auth, workspace, agent, vibe, session, deck, and docs setup.',\n argsSchema: {\n projectPath: z.string().optional().describe('Project path'),\n },\n },\n ({ projectPath }) => {\n ctx.logger.debug('Prompt vibecontrols-onboarding called', { projectPath });\n\n const pathNote = projectPath ? `for \"${projectPath}\"` : '(ask for path)';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `I'm new to VibeControls. Walk me through complete setup ${pathNote}:\n\n1. **Authenticate**: vibecontrols_auth_login → vibecontrols_auth_select_workspace (if multiple).\n2. **Register Agent**: vibecontrols_agents_create for this machine.\n3. **Create Vibe**: vibecontrols_vibes_create with PROJECT type.\n4. **Create Sessions**: Create dev, test, and log sessions via vibecontrols_sessions_create.\n5. **Create Deck**: vibecontrols_decks_create with common command buttons (build, test, lint, dev).\n6. **Create Docs Site**: vibecontrols_docs_sites_create + vibecontrols_docs_pages_create for a getting-started page.\n7. **Pin a Note**: vibecontrols_notes_create with setup instructions, then vibecontrols_notes_pin.\n8. **Start Dev Session**: vibecontrols_sessions_start.\n\nGuide me step by step, showing results and asking before each step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-incident-response — Incident debugging workflow\n server.registerPrompt(\n 'vibecontrols-incident-response',\n {\n title: 'Incident Response',\n description:\n 'Guided incident investigation: health checks, logs, audit trail, and session sharing.',\n argsSchema: {\n agentId: z.string().optional().describe('Agent ID to investigate'),\n },\n },\n ({ agentId }) => {\n ctx.logger.debug('Prompt vibecontrols-incident-response called', { agentId });\n\n const agentNote = agentId\n ? `Focus on agent \"${agentId}\".`\n : 'List agents with vibecontrols_agents_list and identify the affected one.';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me investigate an incident. ${agentNote}\n\n1. **Agent Health**: vibecontrols_agents_probe to check connectivity.\n2. **All Agent Health**: vibecontrols_agents_health for full overview.\n3. **Active Sessions**: vibecontrols_sessions_active to see what's running.\n4. **Session Output**: vibecontrols_sessions_output for error logs.\n5. **Audit Trail**: vibecontrols_audit_list to see recent changes.\n6. **Audit Stats**: vibecontrols_audit_stats for activity summary.\n7. **Create Debug Session**: vibecontrols_sessions_create for investigation.\n8. **Share Session**: vibecontrols_sessions_share or vibecontrols_sessions_share_link_create for on-call.\n9. **Document Findings**: vibecontrols_notes_create with incident details.\n\nSummarize findings after each step and suggest next actions.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-deploy — Deployment workflow\n server.registerPrompt(\n 'vibecontrols-deploy',\n {\n title: 'Deployment Workflow',\n description: 'Guided deployment using vibe decks, sessions, and health checks.',\n argsSchema: {\n vibeId: z.string().optional().describe('Vibe ID to deploy'),\n environment: z.string().optional().describe('Target environment (alpha, prod)'),\n },\n },\n ({ vibeId, environment }) => {\n ctx.logger.debug('Prompt vibecontrols-deploy called', { vibeId, environment });\n\n const vibeNote = vibeId\n ? `Deploy vibe \"${vibeId}\".`\n : 'List vibes with vibecontrols_vibes_list and select one.';\n const envNote = environment || 'alpha';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me deploy to ${envNote}. ${vibeNote}\n\n1. **Pre-flight**: vibecontrols_sessions_active to check running state.\n2. **Find Deck**: vibecontrols_decks_list to find the deploy deck.\n3. **Run Tests**: vibecontrols_decks_buttons_execute for the test button.\n4. **Build**: vibecontrols_decks_buttons_execute for the build button.\n5. **Deploy**: vibecontrols_decks_buttons_execute for the deploy-${envNote} button.\n6. **Verify Health**: vibecontrols_agents_probe + vibecontrols_sessions_check_health.\n7. **Check Logs**: vibecontrols_sessions_output for any errors.\n8. **Record**: vibecontrols_notes_create with deployment summary.\n\nStop and confirm with me before the deploy step.`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-daily-standup — Daily standup summary\n server.registerPrompt(\n 'vibecontrols-daily-standup',\n {\n title: 'Daily Standup Summary',\n description: 'Generate a standup-ready summary of recent activity.',\n argsSchema: {\n since: z\n .string()\n .optional()\n .describe('Date to summarize from (ISO format, default: yesterday)'),\n },\n },\n ({ since }) => {\n ctx.logger.debug('Prompt vibecontrols-daily-standup called', { since });\n\n const sinceNote = since || 'yesterday';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Generate a standup summary since ${sinceNote}:\n\n1. **Audit Activity**: vibecontrols_audit_list with date filter for recent actions.\n2. **Audit Stats**: vibecontrols_audit_stats for activity breakdown.\n3. **Session Activity**: vibecontrols_sessions_list to see session activity.\n4. **AI Events**: vibecontrols_ai_events_list for AI tool usage.\n5. **Notes Created**: vibecontrols_notes_list for recently created notes.\n6. **Active State**: vibecontrols_sessions_active + vibecontrols_agents_health.\n\nCompile into a concise standup format:\n- What I did\n- What I'm doing today\n- Any blockers`,\n },\n },\n ],\n };\n },\n );\n\n // vibecontrols-runbook — Runbook authoring\n server.registerPrompt(\n 'vibecontrols-runbook',\n {\n title: 'Runbook Authoring',\n description: 'Create a documentation runbook for a service or project.',\n argsSchema: {\n vibeId: z.string().optional().describe('Vibe ID to create docs for'),\n topic: z\n .string()\n .optional()\n .describe('Runbook topic (e.g., deployment, incident-response)'),\n },\n },\n ({ vibeId, topic }) => {\n ctx.logger.debug('Prompt vibecontrols-runbook called', { vibeId, topic });\n\n const vibeNote = vibeId\n ? `for vibe \"${vibeId}\"`\n : '(select a vibe with vibecontrols_vibes_list first)';\n const topicNote = topic || 'general operations';\n\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Create a runbook ${vibeNote} about \"${topicNote}\":\n\n1. **Create Docs Site**: vibecontrols_docs_sites_create linked to the vibe.\n2. **Create Overview Page**: vibecontrols_docs_pages_create with title \"Overview\" and a summary.\n3. **Create Prerequisites Page**: vibecontrols_docs_pages_create with requirements and setup.\n4. **Create Steps Page**: vibecontrols_docs_pages_create with step-by-step procedures.\n5. **Create Rollback Page**: vibecontrols_docs_pages_create with rollback procedures.\n6. **Create Troubleshooting Page**: vibecontrols_docs_pages_create with common issues.\n7. **Compile**: vibecontrols_docs_compile to build the docs.\n8. **Publish**: vibecontrols_docs_publish to make them live.\n\nGenerate appropriate content for each page based on the topic.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Vibecontrols module — rich module covering all 16 sub-entities of\n * `microfe-vibecontrols` (vibes, agents, sessions, notes, configuration,\n * webhooks, tunnels, ui-session, ai-events, targets, vibedecks, docs,\n * session-sharing, audit, actions, analytics).\n *\n * Lifted from vibecontrols-mcp/src/tools/*.ts during Phase 1.\n *\n * Resources (7) and prompts (7) co-locate with this module since they're\n * vibecontrols-specific workflows.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerActionTools } from './tools/actions.js';\nimport { registerAgentTools } from './tools/agents.js';\nimport { registerAiPromptTools } from './tools/ai-prompts.js';\nimport { registerVibeDeckShareLinkTools } from './tools/vibedeck-share-links.js';\nimport { registerCatalogTools } from './tools/catalogs.js';\nimport { registerComponentTools } from './tools/components.js';\nimport { registerScorecardTools } from './tools/scorecards.js';\nimport { registerTemplateTools } from './tools/templates.js';\nimport { registerAiEventTools } from './tools/ai-events.js';\nimport { registerAnalyticsTools } from './tools/analytics.js';\nimport { registerAuditTools } from './tools/audit.js';\nimport { registerConfigurationTools } from './tools/configuration.js';\nimport { registerConfigSecurityTools } from './tools/config-security.js';\nimport { registerConfigCITools } from './tools/config-ci.js';\nimport { registerConfigGitopsTools } from './tools/config-gitops.js';\nimport { registerConfigSettingsTools } from './tools/config-settings.js';\nimport { registerDocsTools } from './tools/docs.js';\nimport { registerNoteTools } from './tools/notes.js';\nimport { registerSessionSharingTools } from './tools/session-sharing.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerTargetTools } from './tools/targets.js';\nimport { registerTunnelTools } from './tools/tunnels.js';\nimport { registerSandboxTools } from './tools/sandboxes.js';\nimport { registerUISessionTools } from './tools/ui-session.js';\nimport { registerVibeDeckTools } from './tools/vibedecks.js';\nimport { registerVibeTools } from './tools/vibes.js';\nimport { registerWebhookTools } from './tools/webhooks.js';\nimport { registerVibecontrolsResources } from './resources.js';\nimport { registerVibecontrolsPrompts } from './prompts.js';\n\nconst vibecontrolsModule: McpModule = {\n id: 'vibecontrols',\n version: '0.0.1',\n displayName: 'VibeControls',\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerAgentTools(server, ctx, trackTool);\n registerVibeTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerNoteTools(server, ctx, trackTool);\n registerConfigurationTools(server, ctx, trackTool);\n registerConfigSecurityTools(server, ctx, trackTool);\n registerConfigCITools(server, ctx, trackTool);\n registerConfigGitopsTools(server, ctx, trackTool);\n registerConfigSettingsTools(server, ctx, trackTool);\n registerWebhookTools(server, ctx, trackTool);\n registerTunnelTools(server, ctx, trackTool);\n registerSandboxTools(server, ctx, trackTool);\n registerUISessionTools(server, ctx, trackTool);\n registerAiEventTools(server, ctx, trackTool);\n registerTargetTools(server, ctx, trackTool);\n registerVibeDeckTools(server, ctx, trackTool);\n registerDocsTools(server, ctx, trackTool);\n registerSessionSharingTools(server, ctx, trackTool);\n registerAuditTools(server, ctx, trackTool);\n registerActionTools(server, ctx, trackTool);\n registerAiPromptTools(server, ctx, trackTool);\n registerVibeDeckShareLinkTools(server, ctx, trackTool);\n registerAnalyticsTools(server, ctx, trackTool);\n registerCatalogTools(server, ctx, trackTool);\n registerComponentTools(server, ctx, trackTool);\n registerTemplateTools(server, ctx, trackTool);\n registerScorecardTools(server, ctx, trackTool);\n\n registerVibecontrolsResources(server, ctx, trackResource);\n registerVibecontrolsPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default vibecontrolsModule;\n"]}
|