@burdenoff/mcp-libs 2026.511.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.
- package/README.md +76 -0
- package/dist/chunk-4GBVJ4OY.js +847 -0
- package/dist/chunk-4GBVJ4OY.js.map +1 -0
- package/dist/chunk-H2OYWLOA.js +919 -0
- package/dist/chunk-H2OYWLOA.js.map +1 -0
- package/dist/chunk-JFEQYSWM.js +174 -0
- package/dist/chunk-JFEQYSWM.js.map +1 -0
- package/dist/chunk-WWFVD7BO.js +273 -0
- package/dist/chunk-WWFVD7BO.js.map +1 -0
- package/dist/context-1jV4NsLv.d.cts +138 -0
- package/dist/context-1jV4NsLv.d.ts +138 -0
- package/dist/core/index.cjs +953 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +59 -0
- package/dist/core/index.d.ts +59 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/http-BP4c721D.d.cts +22 -0
- package/dist/http-DXTeCD5r.d.ts +22 -0
- package/dist/index.cjs +1013 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/module-DBcfA-i3.d.ts +67 -0
- package/dist/module-DFQBZNK6.d.cts +67 -0
- package/dist/modules/auth/index.cjs +533 -0
- package/dist/modules/auth/index.cjs.map +1 -0
- package/dist/modules/auth/index.d.cts +51 -0
- package/dist/modules/auth/index.d.ts +51 -0
- package/dist/modules/auth/index.js +159 -0
- package/dist/modules/auth/index.js.map +1 -0
- package/dist/modules/billing/index.cjs +655 -0
- package/dist/modules/billing/index.cjs.map +1 -0
- package/dist/modules/billing/index.d.cts +8 -0
- package/dist/modules/billing/index.d.ts +8 -0
- package/dist/modules/billing/index.js +606 -0
- package/dist/modules/billing/index.js.map +1 -0
- package/dist/modules/channels/index.cjs +443 -0
- package/dist/modules/channels/index.cjs.map +1 -0
- package/dist/modules/channels/index.d.cts +8 -0
- package/dist/modules/channels/index.d.ts +8 -0
- package/dist/modules/channels/index.js +394 -0
- package/dist/modules/channels/index.js.map +1 -0
- package/dist/modules/conversations/index.cjs +288 -0
- package/dist/modules/conversations/index.cjs.map +1 -0
- package/dist/modules/conversations/index.d.cts +8 -0
- package/dist/modules/conversations/index.d.ts +8 -0
- package/dist/modules/conversations/index.js +239 -0
- package/dist/modules/conversations/index.js.map +1 -0
- package/dist/modules/devportal/index.cjs +796 -0
- package/dist/modules/devportal/index.cjs.map +1 -0
- package/dist/modules/devportal/index.d.cts +8 -0
- package/dist/modules/devportal/index.d.ts +8 -0
- package/dist/modules/devportal/index.js +747 -0
- package/dist/modules/devportal/index.js.map +1 -0
- package/dist/modules/export/index.cjs +333 -0
- package/dist/modules/export/index.cjs.map +1 -0
- package/dist/modules/export/index.d.cts +8 -0
- package/dist/modules/export/index.d.ts +8 -0
- package/dist/modules/export/index.js +284 -0
- package/dist/modules/export/index.js.map +1 -0
- package/dist/modules/files/index.cjs +278 -0
- package/dist/modules/files/index.cjs.map +1 -0
- package/dist/modules/files/index.d.cts +8 -0
- package/dist/modules/files/index.d.ts +8 -0
- package/dist/modules/files/index.js +229 -0
- package/dist/modules/files/index.js.map +1 -0
- package/dist/modules/groups/index.cjs +451 -0
- package/dist/modules/groups/index.cjs.map +1 -0
- package/dist/modules/groups/index.d.cts +8 -0
- package/dist/modules/groups/index.d.ts +8 -0
- package/dist/modules/groups/index.js +402 -0
- package/dist/modules/groups/index.js.map +1 -0
- package/dist/modules/health/index.cjs +159 -0
- package/dist/modules/health/index.cjs.map +1 -0
- package/dist/modules/health/index.d.cts +8 -0
- package/dist/modules/health/index.d.ts +8 -0
- package/dist/modules/health/index.js +36 -0
- package/dist/modules/health/index.js.map +1 -0
- package/dist/modules/integrations/index.cjs +316 -0
- package/dist/modules/integrations/index.cjs.map +1 -0
- package/dist/modules/integrations/index.d.cts +8 -0
- package/dist/modules/integrations/index.d.ts +8 -0
- package/dist/modules/integrations/index.js +267 -0
- package/dist/modules/integrations/index.js.map +1 -0
- package/dist/modules/notifications/index.cjs +222 -0
- package/dist/modules/notifications/index.cjs.map +1 -0
- package/dist/modules/notifications/index.d.cts +8 -0
- package/dist/modules/notifications/index.d.ts +8 -0
- package/dist/modules/notifications/index.js +173 -0
- package/dist/modules/notifications/index.js.map +1 -0
- package/dist/modules/organizations/index.cjs +267 -0
- package/dist/modules/organizations/index.cjs.map +1 -0
- package/dist/modules/organizations/index.d.cts +8 -0
- package/dist/modules/organizations/index.d.ts +8 -0
- package/dist/modules/organizations/index.js +218 -0
- package/dist/modules/organizations/index.js.map +1 -0
- package/dist/modules/products/index.cjs +736 -0
- package/dist/modules/products/index.cjs.map +1 -0
- package/dist/modules/products/index.d.cts +8 -0
- package/dist/modules/products/index.d.ts +8 -0
- package/dist/modules/products/index.js +687 -0
- package/dist/modules/products/index.js.map +1 -0
- package/dist/modules/rbac/index.cjs +378 -0
- package/dist/modules/rbac/index.cjs.map +1 -0
- package/dist/modules/rbac/index.d.cts +8 -0
- package/dist/modules/rbac/index.d.ts +8 -0
- package/dist/modules/rbac/index.js +329 -0
- package/dist/modules/rbac/index.js.map +1 -0
- package/dist/modules/sandbox/index.cjs +318 -0
- package/dist/modules/sandbox/index.cjs.map +1 -0
- package/dist/modules/sandbox/index.d.cts +8 -0
- package/dist/modules/sandbox/index.d.ts +8 -0
- package/dist/modules/sandbox/index.js +225 -0
- package/dist/modules/sandbox/index.js.map +1 -0
- package/dist/modules/scheduler/index.cjs +267 -0
- package/dist/modules/scheduler/index.cjs.map +1 -0
- package/dist/modules/scheduler/index.d.cts +8 -0
- package/dist/modules/scheduler/index.d.ts +8 -0
- package/dist/modules/scheduler/index.js +218 -0
- package/dist/modules/scheduler/index.js.map +1 -0
- package/dist/modules/security/index.cjs +529 -0
- package/dist/modules/security/index.cjs.map +1 -0
- package/dist/modules/security/index.d.cts +8 -0
- package/dist/modules/security/index.d.ts +8 -0
- package/dist/modules/security/index.js +480 -0
- package/dist/modules/security/index.js.map +1 -0
- package/dist/modules/store/index.cjs +450 -0
- package/dist/modules/store/index.cjs.map +1 -0
- package/dist/modules/store/index.d.cts +8 -0
- package/dist/modules/store/index.d.ts +8 -0
- package/dist/modules/store/index.js +401 -0
- package/dist/modules/store/index.js.map +1 -0
- package/dist/modules/support/index.cjs +285 -0
- package/dist/modules/support/index.cjs.map +1 -0
- package/dist/modules/support/index.d.cts +8 -0
- package/dist/modules/support/index.d.ts +8 -0
- package/dist/modules/support/index.js +236 -0
- package/dist/modules/support/index.js.map +1 -0
- package/dist/modules/tags/index.cjs +421 -0
- package/dist/modules/tags/index.cjs.map +1 -0
- package/dist/modules/tags/index.d.cts +8 -0
- package/dist/modules/tags/index.d.ts +8 -0
- package/dist/modules/tags/index.js +372 -0
- package/dist/modules/tags/index.js.map +1 -0
- package/dist/modules/tours/index.cjs +225 -0
- package/dist/modules/tours/index.cjs.map +1 -0
- package/dist/modules/tours/index.d.cts +8 -0
- package/dist/modules/tours/index.d.ts +8 -0
- package/dist/modules/tours/index.js +176 -0
- package/dist/modules/tours/index.js.map +1 -0
- package/dist/modules/vibecontrols/index.cjs +5551 -0
- package/dist/modules/vibecontrols/index.cjs.map +1 -0
- package/dist/modules/vibecontrols/index.d.cts +8 -0
- package/dist/modules/vibecontrols/index.d.ts +8 -0
- package/dist/modules/vibecontrols/index.js +4380 -0
- package/dist/modules/vibecontrols/index.js.map +1 -0
- package/dist/modules/workspaces/index.cjs +552 -0
- package/dist/modules/workspaces/index.cjs.map +1 -0
- package/dist/modules/workspaces/index.d.cts +8 -0
- package/dist/modules/workspaces/index.d.ts +8 -0
- package/dist/modules/workspaces/index.js +503 -0
- package/dist/modules/workspaces/index.js.map +1 -0
- package/dist/tool-name-CQf_IqAj.d.cts +47 -0
- package/dist/tool-name-DlnrBsZ6.d.ts +47 -0
- package/dist/transports/index.cjs +183 -0
- package/dist/transports/index.cjs.map +1 -0
- package/dist/transports/index.d.cts +13 -0
- package/dist/transports/index.d.ts +13 -0
- package/dist/transports/index.js +3 -0
- package/dist/transports/index.js.map +1 -0
- package/package.json +125 -0
|
@@ -0,0 +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-events.ts","../../../src/modules/vibecontrols/tools/analytics.ts","../../../src/modules/vibecontrols/tools/audit.ts","../../../src/modules/vibecontrols/tools/configuration.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/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"],"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 agentId sessionId localPort publicUrl status isPrimary errorMessage createdAt agentName\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\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\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\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 VibecontrolsAgentTunnels {\n vibecontrolsAgentTunnels {\n tunnels { ${TUNNEL_FIELDS} }\n agentStatuses { agentId agentName connected errorMessage tunnelUrl }\n error\n }\n }\n`;\n\nexport const CREATE_TUNNEL = `\n mutation CreateAgentTunnel($input: CreateAgentTunnelInput!) {\n createAgentTunnel(input: $input) { ${TUNNEL_FIELDS} }\n }\n`;\n\nexport const STOP_TUNNEL = `\n mutation StopAgentTunnel($agentId: ID!, $tunnelId: ID!) {\n stopAgentTunnel(agentId: $agentId, tunnelId: $tunnelId)\n }\n`;\n\nexport const DELETE_TUNNEL = `\n mutation DeleteAgentTunnel($agentId: ID!, $tunnelId: ID!) {\n deleteAgentTunnel(agentId: $agentId, tunnelId: $tunnelId)\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 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\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","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 { 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","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} 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","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} from '../operations.js';\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","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 { LIST_TUNNELS, CREATE_TUNNEL, STOP_TUNNEL, DELETE_TUNNEL } from '../operations.js';\n\nexport function registerTunnelTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tunnels_list')),\n {\n title: 'List Tunnels',\n description: 'List all agent tunnels.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ vibecontrolsAgentTunnels: unknown }>(\n LIST_TUNNELS,\n );\n return jsonResult(data.vibecontrolsAgentTunnels);\n } catch (error) {\n ctx.logger.error('vibecontrols_tunnels_list failed', { error });\n return errorResult(\n `Failed to list tunnels: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tunnels_create')),\n {\n title: 'Create Tunnel',\n description: 'Create a new agent tunnel for remote access.',\n inputSchema: {\n agentId: z.string().describe('Agent ID to create the tunnel for'),\n provider: z.string().optional().describe('Tunnel provider (e.g., cloudflare)'),\n },\n },\n async ({ agentId, provider }) => {\n try {\n const input: Record<string, unknown> = { agentId };\n if (provider !== undefined) input.provider = provider;\n\n const data = await ctx.gql.workspace.request<{ createAgentTunnel: unknown }>(\n CREATE_TUNNEL,\n {\n input,\n },\n );\n return jsonResult(data.createAgentTunnel);\n } catch (error) {\n ctx.logger.error('vibecontrols_tunnels_create failed', { error });\n return errorResult(\n `Failed to create tunnel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tunnels_stop')),\n {\n title: 'Stop Tunnel',\n description: 'Stop a running tunnel.',\n inputSchema: {\n agentId: z.string().describe('Agent ID that owns the tunnel'),\n tunnelId: z.string().describe('Tunnel ID to stop'),\n },\n },\n async ({ agentId, tunnelId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ stopAgentTunnel: boolean }>(STOP_TUNNEL, {\n agentId,\n tunnelId,\n });\n return jsonResult({ stopped: data.stopAgentTunnel, agentId, tunnelId });\n } catch (error) {\n ctx.logger.error('vibecontrols_tunnels_stop failed', { error });\n return errorResult(\n `Failed to stop tunnel: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tunnels_delete')),\n {\n title: 'Delete Tunnel',\n description: 'Permanently delete a tunnel.',\n inputSchema: {\n agentId: z.string().describe('Agent ID that owns the tunnel'),\n tunnelId: z.string().describe('Tunnel ID to delete'),\n },\n },\n async ({ agentId, tunnelId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteAgentTunnel: boolean }>(\n DELETE_TUNNEL,\n {\n agentId,\n tunnelId,\n },\n );\n return jsonResult({ deleted: data.deleteAgentTunnel, agentId, tunnelId });\n } catch (error) {\n ctx.logger.error('vibecontrols_tunnels_delete failed', { error });\n return errorResult(\n `Failed to delete tunnel: ${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 { 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 VIBE_HIERARCHY,\n SEARCH_VIBES,\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","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 { 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 { 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 { 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 registerWebhookTools(server, ctx, trackTool);\n registerTunnelTools(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 registerAnalyticsTools(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"]}
|