@lexq/cli 0.1.6 → 0.1.7

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mcp/tools/status.ts","../../src/mcp/tools/groups.ts","../../src/lib/config.ts","../../src/mcp/tools/_shared.ts","../../src/mcp/tools/versions.ts","../../src/mcp/tools/rules.ts","../../src/mcp/tools/facts.ts","../../src/mcp/tools/deploy.ts","../../src/mcp/tools/analytics.ts","../../src/mcp/tools/history.ts","../../src/mcp/tools/integrations.ts","../../src/mcp/tools/logs.ts","../../src/types/enums.ts","../../src/mcp/register.ts"],"sourcesContent":["import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { CallApi } from './_shared';\n\nexport function registerStatusTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_whoami',\n {\n title: 'Who Am I',\n description: 'Show current authentication info (tenant name, role, API key mask).',\n inputSchema: {},\n },\n async () => callApi('GET', 'whoami')\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerGroupTools(server: McpServer, callApi: CallApi): void {\n // ── CRUD ──\n\n server.registerTool(\n 'lexq_groups_list',\n {\n title: 'List Policy Groups',\n description:\n 'List all policy groups. Supports pagination and optional status/keyword filters.',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number (0-indexed)'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n status: z\n .enum(['ACTIVE', 'DISABLED', 'ARCHIVED'])\n .optional()\n .describe('Filter by status'),\n keyword: z.string().optional().describe('Search keyword'),\n },\n },\n async ({ page, size, status, keyword }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (status) params.status = status;\n if (keyword) params.keyword = keyword;\n return callApi('GET', 'policy-groups', { params });\n }\n );\n\n server.registerTool(\n 'lexq_groups_get',\n {\n title: 'Get Policy Group',\n description: 'Get a single policy group by ID.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n },\n },\n async ({ groupId }) => callApi('GET', `policy-groups/${groupId}`)\n );\n\n server.registerTool(\n 'lexq_groups_create',\n {\n title: 'Create Policy Group',\n description:\n 'Create a new policy group. Requires name and priority. Optionally set conflict resolution, activation group, and description.',\n inputSchema: {\n name: z.string().describe('Group name (unique among non-ARCHIVED)'),\n priority: z.number().int().min(0).describe('Execution priority (lower = higher)'),\n description: z.string().optional().describe('Group description'),\n conflictResolutionMode: z\n .enum(['NONE', 'EXCLUSIVE', 'MAX_N'])\n .optional()\n .describe('Conflict resolution mode'),\n conflictResolutionStrategy: z\n .enum(['FIRST_MATCH', 'HIGHEST_PRIORITY', 'MAX_BENEFIT'])\n .optional()\n .describe('Strategy when mode is EXCLUSIVE or MAX_N'),\n maxSelections: z\n .number()\n .int()\n .min(1)\n .optional()\n .describe('Max selections (required when mode is MAX_N)'),\n activationGroupId: z.string().uuid().optional().describe('Activation group ID'),\n },\n },\n async (args) => {\n const body: Record<string, unknown> = {\n name: args.name,\n priority: args.priority,\n };\n if (args.description !== undefined) body.description = args.description;\n if (args.conflictResolutionMode !== undefined)\n body.conflictResolutionMode = args.conflictResolutionMode;\n if (args.conflictResolutionStrategy !== undefined)\n body.conflictResolutionStrategy = args.conflictResolutionStrategy;\n if (args.maxSelections !== undefined) body.maxSelections = args.maxSelections;\n if (args.activationGroupId !== undefined)\n body.activationGroupId = args.activationGroupId;\n return callApi('POST', 'policy-groups', { body });\n }\n );\n\n server.registerTool(\n 'lexq_groups_update',\n {\n title: 'Update Policy Group',\n description: 'Update an existing policy group. Only provided fields are updated.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n name: z.string().optional().describe('New name'),\n priority: z.number().int().min(0).optional().describe('New priority'),\n description: z.string().optional().describe('New description'),\n status: z\n .enum(['ACTIVE', 'DISABLED'])\n .optional()\n .describe('Status (DISABLED = emergency stop)'),\n conflictResolutionMode: z\n .enum(['NONE', 'EXCLUSIVE', 'MAX_N'])\n .optional()\n .describe('Conflict resolution mode'),\n conflictResolutionStrategy: z\n .enum(['FIRST_MATCH', 'HIGHEST_PRIORITY', 'MAX_BENEFIT'])\n .optional()\n .describe('Strategy'),\n maxSelections: z.number().int().min(1).optional().describe('Max selections'),\n },\n },\n async ({ groupId, ...body }) =>\n callApi('PATCH', `policy-groups/${groupId}`, { body })\n );\n\n server.registerTool(\n 'lexq_groups_delete',\n {\n title: 'Delete Policy Group',\n description:\n 'Archive a policy group. Only non-live groups can be deleted. This is irreversible.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n },\n },\n async ({ groupId }) => callApi('DELETE', `policy-groups/${groupId}`)\n );\n\n // ── A/B Test ──\n\n server.registerTool(\n 'lexq_ab_test_start',\n {\n title: 'Start A/B Test',\n description:\n 'Start an A/B test on a policy group. Requires a challenger version ID and traffic split percentages.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n challengerVersionId: z.string().uuid().describe('Challenger version ID'),\n controlWeight: z\n .number()\n .int()\n .min(1)\n .max(99)\n .describe('Control traffic weight (%)'),\n challengerWeight: z\n .number()\n .int()\n .min(1)\n .max(99)\n .describe('Challenger traffic weight (%)'),\n identityKey: z\n .string()\n .optional()\n .describe('Fact key for sticky assignment (e.g. customer_id)'),\n },\n },\n async ({ groupId, ...body }) =>\n callApi('POST', `policy-groups/${groupId}/ab-test/start`, { body })\n );\n\n server.registerTool(\n 'lexq_ab_test_stop',\n {\n title: 'Stop A/B Test',\n description: 'Stop a running A/B test. Specify which version to keep.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n winnerVersionId: z.string().uuid().describe('Version ID to keep as live'),\n },\n },\n async ({ groupId, ...body }) =>\n callApi('POST', `policy-groups/${groupId}/ab-test/stop`, { body })\n );\n\n server.registerTool(\n 'lexq_ab_test_adjust',\n {\n title: 'Adjust A/B Test',\n description: 'Adjust traffic weights of a running A/B test.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n controlWeight: z.number().int().min(1).max(99).describe('New control weight (%)'),\n challengerWeight: z\n .number()\n .int()\n .min(1)\n .max(99)\n .describe('New challenger weight (%)'),\n },\n },\n async ({ groupId, ...body }) =>\n callApi('POST', `policy-groups/${groupId}/ab-test/adjust`, { body })\n );\n}","import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nexport interface LexqConfig {\n apiKey?: string;\n baseUrl: string;\n format: 'json' | 'table';\n}\n\nconst CONFIG_DIR = join(homedir(), '.lexq');\nconst CONFIG_FILE = join(CONFIG_DIR, 'config.json');\n\nconst DEFAULT_CONFIG: LexqConfig = {\n baseUrl: 'https://api.lexq.io/api/v1/partners',\n format: 'json',\n};\n\nexport function loadConfig(): LexqConfig {\n if (!existsSync(CONFIG_FILE)) return { ...DEFAULT_CONFIG };\n\n try {\n const raw = readFileSync(CONFIG_FILE, 'utf-8');\n return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };\n } catch {\n return { ...DEFAULT_CONFIG };\n }\n}\n\nexport function saveConfig(config: Partial<LexqConfig>): void {\n if (!existsSync(CONFIG_DIR)) {\n mkdirSync(CONFIG_DIR, { recursive: true });\n }\n\n const current = loadConfig();\n const merged = { ...current, ...config };\n writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2), 'utf-8');\n}\n\nexport function deleteConfig(): void {\n if (existsSync(CONFIG_FILE)) {\n unlinkSync(CONFIG_FILE);\n }\n}\n\nexport function getConfigPath(): string {\n return CONFIG_FILE;\n}","import { apiRequest, type ApiClientOptions } from '@/lib/api-client';\nimport { loadConfig } from '@/lib/config';\n\nexport interface McpToolResult {\n [key: string]: unknown;\n content: Array<{ type: 'text'; text: string }>;\n isError?: boolean;\n}\n\n/**\n * Function signature for making API calls.\n * Injected into tool registration functions for testability and reuse.\n *\n * - lexq-cli (stdio): uses createCallApiFromConfig() — reads ~/.lexq/config.json\n * - lexq-mcp (HTTP): uses createApiCaller(apiKey) — Bearer token from request\n */\nexport type CallApi = (\n method: string,\n path: string,\n opts?: { body?: unknown; params?: Record<string, string> },\n) => Promise<McpToolResult>;\n\n/**\n * Creates a CallApi bound to the local config file (~/.lexq/config.json).\n * Used by the CLI's stdio MCP server.\n */\nexport function createCallApiFromConfig(): CallApi {\n return async (method, path, opts) => {\n try {\n const config = loadConfig();\n const clientOpts: ApiClientOptions = {\n apiKey: config.apiKey,\n baseUrl: config.baseUrl,\n };\n const data = await apiRequest(method, path, {\n ...clientOpts,\n body: opts?.body,\n params: opts?.params,\n });\n return {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n content: [{ type: 'text', text: JSON.stringify({ error: message }) }],\n isError: true,\n };\n }\n };\n}\n\nexport function paginationParams(\n page?: number,\n size?: number,\n): Record<string, string> {\n const params: Record<string, string> = {};\n if (page !== undefined) params.page = String(page);\n if (size !== undefined) params.size = String(size);\n return params;\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerVersionTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_versions_list',\n {\n title: 'List Policy Versions',\n description: 'List all versions of a policy group.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n },\n },\n async ({ groupId, page, size }) =>\n callApi('GET', `policy-groups/${groupId}/versions`, {\n params: paginationParams(page, size),\n })\n );\n\n server.registerTool(\n 'lexq_versions_get',\n {\n title: 'Get Policy Version',\n description: 'Get a single version by ID, including its rules and fact requirements.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n },\n },\n async ({ groupId, versionId }) =>\n callApi('GET', `policy-groups/${groupId}/versions/${versionId}`)\n );\n\n server.registerTool(\n 'lexq_versions_create',\n {\n title: 'Create Policy Version',\n description:\n 'Create a new DRAFT version in a policy group. Provide a commit message and optional effective date range.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n commitMessage: z.string().describe('Commit message describing this version'),\n effectiveFrom: z\n .string()\n .optional()\n .describe('Effective start date (ISO 8601)'),\n effectiveTo: z\n .string()\n .optional()\n .describe('Effective end date (ISO 8601)'),\n },\n },\n async ({ groupId, ...body }) =>\n callApi('POST', `policy-groups/${groupId}/versions`, { body })\n );\n\n server.registerTool(\n 'lexq_versions_update',\n {\n title: 'Update Policy Version',\n description: 'Update a DRAFT version. Only DRAFT versions can be modified.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n commitMessage: z.string().optional().describe('New commit message'),\n effectiveFrom: z.string().optional().describe('New effective start date'),\n effectiveTo: z.string().optional().describe('New effective end date'),\n },\n },\n async ({ groupId, versionId, ...body }) =>\n callApi('PATCH', `policy-groups/${groupId}/versions/${versionId}`, { body })\n );\n\n server.registerTool(\n 'lexq_versions_delete',\n {\n title: 'Delete Policy Version',\n description: 'Delete a DRAFT version. Only DRAFT versions can be deleted.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n },\n },\n async ({ groupId, versionId }) =>\n callApi('DELETE', `policy-groups/${groupId}/versions/${versionId}`)\n );\n\n server.registerTool(\n 'lexq_versions_clone',\n {\n title: 'Clone Policy Version',\n description:\n 'Clone an existing version to create a new DRAFT. Useful when the source version is already published.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Source version ID to clone'),\n commitMessage: z\n .string()\n .optional()\n .describe('Commit message for the cloned version'),\n },\n },\n async ({ groupId, versionId, commitMessage }) => {\n const body: Record<string, unknown> = {};\n if (commitMessage !== undefined) body.commitMessage = commitMessage;\n return callApi('POST', `policy-groups/${groupId}/versions/${versionId}/clone`, {\n body,\n });\n }\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\n// Condition/Action are deeply nested JSON — accept as opaque object via z.record.\n// The engine validates structure. MCP schema describes the shape in descriptions.\n\nexport function registerRuleTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_rules_list',\n {\n title: 'List Rules',\n description: 'List all rules in a version. Returns summary with conditionSummary and actionSummary.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n },\n },\n async ({ groupId, versionId, page, size }) =>\n callApi('GET', `policy-groups/${groupId}/versions/${versionId}/rules`, {\n params: paginationParams(page, size),\n })\n );\n\n server.registerTool(\n 'lexq_rules_get',\n {\n title: 'Get Rule Detail',\n description:\n 'Get full rule detail including condition tree and action definitions.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n ruleId: z.string().uuid().describe('Rule ID'),\n },\n },\n async ({ groupId, versionId, ruleId }) =>\n callApi(\n 'GET',\n `policy-groups/${groupId}/versions/${versionId}/rules/${ruleId}`\n )\n );\n\n server.registerTool(\n 'lexq_rules_create',\n {\n title: 'Create Rule',\n description: `Create a rule in a DRAFT version. Requires name, priority, condition tree, and actions array.\n\nCondition: { type: \"SINGLE\", field, operator, value, valueType } or { type: \"GROUP\", operator: \"AND\"|\"OR\", children: [...] }\nOperators: EQUALS, NOT_EQUALS, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, CONTAINS, IN, NOT_IN\nValue types: STRING, NUMBER, BOOLEAN, LIST_STRING, LIST_NUMBER\n\nActions: [{ type, parameters }]\nTypes: DISCOUNT, POINT, COUPON_ISSUE, BLOCK, NOTIFICATION, WEBHOOK, SET_FACT, ADD_TAG`,\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n rule: z\n .string()\n .describe(\n 'JSON string of CreateRuleRequest: { name, priority, condition, actions, mutexGroup?, mutexMode?, mutexStrategy?, mutexLimit?, isEnabled? }'\n ),\n },\n },\n async ({ groupId, versionId, rule }) => {\n const body: unknown = JSON.parse(rule);\n return callApi(\n 'POST',\n `policy-groups/${groupId}/versions/${versionId}/rules`,\n { body }\n );\n }\n );\n\n server.registerTool(\n 'lexq_rules_update',\n {\n title: 'Update Rule',\n description:\n 'Update an existing rule in a DRAFT version. Only provided fields are changed.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n ruleId: z.string().uuid().describe('Rule ID'),\n rule: z\n .string()\n .describe(\n 'JSON string of UpdateRuleRequest: { name?, priority?, condition?, actions?, mutexGroup?, mutexMode?, mutexStrategy?, mutexLimit?, isEnabled? }'\n ),\n },\n },\n async ({ groupId, versionId, ruleId, rule }) => {\n const body: unknown = JSON.parse(rule);\n return callApi(\n 'PATCH',\n `policy-groups/${groupId}/versions/${versionId}/rules/${ruleId}`,\n { body }\n );\n }\n );\n\n server.registerTool(\n 'lexq_rules_delete',\n {\n title: 'Delete Rule',\n description: 'Delete a rule from a DRAFT version.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n ruleId: z.string().uuid().describe('Rule ID'),\n force: z\n .boolean()\n .default(false)\n .describe('Skip confirmation (for the last rule in a version)'),\n },\n },\n async ({ groupId, versionId, ruleId, force }) => {\n const params: Record<string, string> = {};\n if (force) params.force = 'true';\n return callApi(\n 'DELETE',\n `policy-groups/${groupId}/versions/${versionId}/rules/${ruleId}`,\n { params }\n );\n }\n );\n\n server.registerTool(\n 'lexq_rules_reorder',\n {\n title: 'Reorder Rules',\n description:\n 'Reorder rules by specifying rule IDs and their new priorities. Array index 0 = highest priority.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n ruleIds: z\n .array(z.string().uuid())\n .describe('Rule IDs in desired priority order'),\n },\n },\n async ({ groupId, versionId, ruleIds }) => {\n const rules = ruleIds.map((ruleId: string, index: number) => ({\n ruleId,\n priority: index,\n }));\n return callApi(\n 'PUT',\n `policy-groups/${groupId}/versions/${versionId}/rules/reorder`,\n { body: { rules } }\n );\n }\n );\n\n server.registerTool(\n 'lexq_rules_toggle',\n {\n title: 'Toggle Rule',\n description: 'Enable or disable a rule without deleting it.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n ruleId: z.string().uuid().describe('Rule ID'),\n isEnabled: z.boolean().describe('true to enable, false to disable'),\n },\n },\n async ({ groupId, versionId, ruleId, isEnabled }) =>\n callApi(\n 'PATCH',\n `policy-groups/${groupId}/versions/${versionId}/rules/${ruleId}/toggle`,\n { body: { isEnabled } }\n )\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerFactTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_facts_list',\n {\n title: 'List Fact Definitions',\n description:\n 'List all fact definitions (input variable schema). Shows key, type, and required status. Always check this before creating rules.',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n keyword: z.string().optional().describe('Search keyword'),\n },\n },\n async ({ page, size, keyword }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (keyword) params.keyword = keyword;\n return callApi('GET', 'schema/facts', { params });\n }\n );\n\n server.registerTool(\n 'lexq_facts_create',\n {\n title: 'Create Fact Definition',\n description:\n 'Register a new input variable. Key must be lowercase with underscores (e.g. payment_amount). Types: STRING, NUMBER, BOOLEAN, LIST_STRING, LIST_NUMBER.',\n inputSchema: {\n key: z\n .string()\n .regex(/^[a-z][a-z0-9_]*$/)\n .describe('Variable key (snake_case)'),\n name: z.string().describe('Display name'),\n type: z\n .enum(['STRING', 'NUMBER', 'BOOLEAN', 'LIST_STRING', 'LIST_NUMBER'])\n .describe('Value type'),\n description: z.string().optional().describe('Description'),\n isRequired: z\n .boolean()\n .default(false)\n .describe('Whether this fact is required for rule evaluation'),\n },\n },\n async (args) => callApi('POST', 'schema/facts', { body: args })\n );\n\n server.registerTool(\n 'lexq_facts_update',\n {\n title: 'Update Fact Definition',\n description:\n 'Update a fact definition. Key and type cannot be changed. System facts only allow name and description changes.',\n inputSchema: {\n factId: z.string().uuid().describe('Fact definition ID'),\n name: z.string().describe('Display name'),\n description: z.string().optional().describe('Description'),\n isRequired: z.boolean().describe('Required flag'),\n },\n },\n async ({ factId, ...body }) =>\n callApi('PATCH', `schema/facts/${factId}`, { body })\n );\n\n server.registerTool(\n 'lexq_facts_delete',\n {\n title: 'Delete Fact Definition',\n description:\n 'Delete a fact definition. System facts cannot be deleted.',\n inputSchema: {\n factId: z.string().uuid().describe('Fact definition ID'),\n },\n },\n async ({ factId }) => callApi('DELETE', `schema/facts/${factId}`)\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerDeployTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_deploy_publish',\n {\n title: 'Publish Version',\n description:\n 'Publish a DRAFT version (DRAFT → ACTIVE). Locks the version from further edits. Must have at least one rule.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID to publish'),\n memo: z.string().default('').describe('Deployment memo'),\n },\n },\n async ({ groupId, versionId, memo }) =>\n callApi(\n 'POST',\n `policy-groups/${groupId}/versions/${versionId}/publish`,\n { body: { memo } }\n )\n );\n\n server.registerTool(\n 'lexq_deploy_live',\n {\n title: 'Deploy to Live',\n description:\n 'Deploy an ACTIVE (published) version to live traffic. Takes effect immediately.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID to deploy'),\n memo: z.string().default('').describe('Deployment memo'),\n },\n },\n async ({ groupId, versionId, memo }) =>\n callApi('POST', `policy-groups/${groupId}/deploy`, {\n body: { versionId, memo },\n })\n );\n\n server.registerTool(\n 'lexq_deploy_rollback',\n {\n title: 'Rollback Deployment',\n description:\n 'Rollback to the previous deployed version. Only available if there is a previous version.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n memo: z.string().default('').describe('Rollback reason'),\n },\n },\n async ({ groupId, memo }) =>\n callApi('POST', `policy-groups/${groupId}/rollback`, {\n body: { memo },\n })\n );\n\n server.registerTool(\n 'lexq_deploy_undeploy',\n {\n title: 'Undeploy',\n description:\n 'Remove the live version from traffic. The version stays ACTIVE but no longer serves requests.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n memo: z.string().default('').describe('Undeploy reason'),\n },\n },\n async ({ groupId, memo }) =>\n callApi('POST', `policy-groups/${groupId}/undeploy`, {\n body: { memo },\n })\n );\n\n server.registerTool(\n 'lexq_deploy_history',\n {\n title: 'Deployment History',\n description: 'List deployment history across all groups.',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n groupId: z.string().uuid().optional().describe('Filter by group ID'),\n type: z\n .enum(['PUBLISH', 'DEPLOY', 'ROLLBACK', 'UNDEPLOY'])\n .optional()\n .describe('Filter by deployment type'),\n },\n },\n async ({ page, size, groupId, type }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (groupId) params.groupId = groupId;\n if (type) params.type = type;\n return callApi('GET', 'deployments', { params });\n }\n );\n\n server.registerTool(\n 'lexq_deploy_detail',\n {\n title: 'Deployment Detail',\n description:\n 'Get detailed info about a specific deployment including snapshot hash and integrity check.',\n inputSchema: {\n deploymentId: z.string().uuid().describe('Deployment ID'),\n },\n },\n async ({ deploymentId }) =>\n callApi('GET', `deployments/${deploymentId}`)\n );\n\n server.registerTool(\n 'lexq_deploy_overview',\n {\n title: 'Deployment Overview',\n description:\n 'Show current deployment status of all groups — which version is live, last deployment type, and deployer.',\n inputSchema: {},\n },\n async () => callApi('GET', 'deployments/overview')\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerAnalyticsTools(server: McpServer, callApi: CallApi): void {\n // ── Dry Run ──\n\n server.registerTool(\n 'lexq_dry_run',\n {\n title: 'Dry Run',\n description: `Execute a single dry run against a version. Tests how rules evaluate given input facts without side effects.\n\nExample input: { \"facts\": { \"payment_amount\": 100000, \"customer_tier\": \"VIP\" } }\n\nAlways dry-run before publishing to validate rule behavior.`,\n inputSchema: {\n versionId: z.string().uuid().describe('Policy version ID to test against'),\n facts: z\n .string()\n .describe('JSON string of facts object, e.g. {\"payment_amount\":100000}'),\n includeDebugInfo: z\n .boolean()\n .default(true)\n .describe('Include execution and decision traces'),\n mockExternalCalls: z\n .boolean()\n .default(true)\n .describe('Mock external integration calls'),\n },\n },\n async ({ versionId, facts, includeDebugInfo, mockExternalCalls }) => {\n const parsedFacts: unknown = JSON.parse(facts);\n return callApi('POST', `analytics/dry-run/versions/${versionId}`, {\n body: { facts: parsedFacts, includeDebugInfo, mockExternalCalls },\n });\n }\n );\n\n // ── Dry Run Compare ──\n\n server.registerTool(\n 'lexq_dry_run_compare',\n {\n title: 'Dry Run Compare',\n description:\n 'Compare dry run results between two versions using the same input facts. Useful for validating changes.',\n inputSchema: {\n versionIdA: z.string().uuid().describe('Baseline version ID'),\n versionIdB: z.string().uuid().describe('Candidate version ID'),\n facts: z\n .string()\n .describe('JSON string of facts object'),\n },\n },\n async ({ versionIdA, versionIdB, facts }) => {\n const parsedFacts: unknown = JSON.parse(facts);\n return callApi('POST', 'analytics/dry-run/compare', {\n body: { versionIdA, versionIdB, facts: parsedFacts },\n });\n }\n );\n\n // ── Requirements ──\n\n server.registerTool(\n 'lexq_requirements',\n {\n title: 'Analyze Requirements',\n description:\n 'Analyze which input facts a version requires. Returns required keys, types, and an example request body.',\n inputSchema: {\n groupId: z.string().uuid().describe('Policy group ID'),\n versionId: z.string().uuid().describe('Version ID'),\n },\n },\n async ({ groupId, versionId }) =>\n callApi(\n 'GET',\n `analytics/groups/${groupId}/versions/${versionId}/requirements`\n )\n );\n\n // ── Simulation ──\n\n server.registerTool(\n 'lexq_simulation_start',\n {\n title: 'Start Simulation',\n description: `Start a batch simulation against historical execution data.\n\nExample body:\n{\n \"policyVersionId\": \"<uuid>\",\n \"dataset\": { \"type\": \"HISTORICAL\", \"source\": \"EXECUTION_LOGS\", \"from\": \"2025-01-01\", \"to\": \"2025-01-31\" },\n \"options\": { \"baselinePolicyVersionId\": \"<uuid>\", \"includeRuleStats\": true, \"maxRecords\": 10000 }\n}`,\n inputSchema: {\n body: z\n .string()\n .describe('JSON string of SimulationRequest'),\n },\n },\n async ({ body }) => {\n const parsed: unknown = JSON.parse(body);\n return callApi('POST', 'analytics/simulations', { body: parsed });\n }\n );\n\n server.registerTool(\n 'lexq_simulation_status',\n {\n title: 'Simulation Status',\n description:\n 'Get simulation status and results. Poll until status is COMPLETED or FAILED.',\n inputSchema: {\n simulationId: z.string().uuid().describe('Simulation ID'),\n },\n },\n async ({ simulationId }) =>\n callApi('GET', `analytics/simulations/${simulationId}`)\n );\n\n server.registerTool(\n 'lexq_simulation_list',\n {\n title: 'List Simulations',\n description: 'List simulation history with optional filters.',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n status: z\n .enum(['PENDING', 'RUNNING', 'COMPLETED', 'FAILED', 'CANCELLED'])\n .optional()\n .describe('Filter by status'),\n from: z.string().optional().describe('Start date (yyyy-MM-dd)'),\n to: z.string().optional().describe('End date (yyyy-MM-dd)'),\n },\n },\n async ({ page, size, status, from, to }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (status) params.status = status;\n if (from) params.from = from;\n if (to) params.to = to;\n return callApi('GET', 'analytics/simulations', { params });\n }\n );\n\n server.registerTool(\n 'lexq_simulation_cancel',\n {\n title: 'Cancel Simulation',\n description: 'Cancel a running or pending simulation.',\n inputSchema: {\n simulationId: z.string().uuid().describe('Simulation ID'),\n },\n },\n async ({ simulationId }) =>\n callApi('DELETE', `analytics/simulations/${simulationId}`)\n );\n\n server.registerTool(\n 'lexq_simulation_export',\n {\n title: 'Export Simulation',\n description:\n 'Export simulation results as JSON or CSV. Returns the raw data.',\n inputSchema: {\n simulationId: z.string().uuid().describe('Simulation ID'),\n format: z\n .enum(['json', 'csv'])\n .default('json')\n .describe('Export format'),\n },\n },\n async ({ simulationId, format }) =>\n callApi('GET', `analytics/simulations/${simulationId}/export`, {\n params: { format },\n })\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerHistoryTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_history_list',\n {\n title: 'List Execution History',\n description:\n 'List policy execution history. Shows trace ID, group, version, status, match result, and latency.',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n traceId: z.string().optional().describe('Filter by trace ID'),\n groupId: z.string().uuid().optional().describe('Filter by policy group'),\n versionId: z.string().uuid().optional().describe('Filter by version'),\n status: z\n .enum(['SUCCESS', 'NO_MATCH', 'ERROR', 'TIMEOUT'])\n .optional()\n .describe('Filter by execution status'),\n startDate: z.string().optional().describe('Start date (yyyy-MM-dd)'),\n endDate: z.string().optional().describe('End date (yyyy-MM-dd)'),\n },\n },\n async ({ page, size, traceId, groupId, versionId, status, startDate, endDate }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (traceId) params.traceId = traceId;\n if (groupId) params.policyGroupId = groupId;\n if (versionId) params.versionId = versionId;\n if (status) params.status = status;\n if (startDate) params.startDate = startDate;\n if (endDate) params.endDate = endDate;\n return callApi('GET', 'execution/history', { params });\n }\n );\n\n server.registerTool(\n 'lexq_history_get',\n {\n title: 'Get Execution Detail',\n description:\n 'Get full execution detail including request facts, result traces, and decision traces.',\n inputSchema: {\n executionId: z.string().uuid().describe('Execution history ID'),\n },\n },\n async ({ executionId }) =>\n callApi('GET', `execution/history/${executionId}`)\n );\n\n server.registerTool(\n 'lexq_history_stats',\n {\n title: 'Execution Statistics',\n description:\n 'Get execution KPIs: total executions, success/failure counts, success rate, and average latency.',\n inputSchema: {\n groupId: z.string().uuid().optional().describe('Filter by policy group'),\n startDate: z.string().optional().describe('Start date (yyyy-MM-dd)'),\n endDate: z.string().optional().describe('End date (yyyy-MM-dd)'),\n },\n },\n async ({ groupId, startDate, endDate }) => {\n const params: Record<string, string> = {};\n if (groupId) params.policyGroupId = groupId;\n if (startDate) params.startDate = startDate;\n if (endDate) params.endDate = endDate;\n return callApi('GET', 'execution/history/stats', { params });\n }\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\n\nexport function registerIntegrationTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_integrations_list',\n {\n title: 'List Integrations',\n description: 'List all external integrations (webhooks, CRM, notification, etc.).',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n type: z\n .enum(['COUPON', 'POINT', 'NOTIFICATION', 'CRM', 'MESSENGER', 'WEBHOOK'])\n .optional()\n .describe('Filter by integration type'),\n },\n },\n async ({ page, size, type }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (type) params.type = type;\n return callApi('GET', 'integrations', { params });\n }\n );\n\n server.registerTool(\n 'lexq_integrations_get',\n {\n title: 'Get Integration',\n description: 'Get integration detail by ID.',\n inputSchema: {\n integrationId: z.string().uuid().describe('Integration ID'),\n },\n },\n async ({ integrationId }) =>\n callApi('GET', `integrations/${integrationId}`)\n );\n\n server.registerTool(\n 'lexq_integrations_save',\n {\n title: 'Save Integration',\n description:\n 'Create or update an integration. Types: COUPON, POINT, NOTIFICATION, CRM, MESSENGER, WEBHOOK.',\n inputSchema: {\n type: z\n .enum(['COUPON', 'POINT', 'NOTIFICATION', 'CRM', 'MESSENGER', 'WEBHOOK'])\n .describe('Integration type'),\n name: z.string().describe('Integration name'),\n baseUrl: z.string().describe('Base URL of the external service'),\n apiKey: z.string().optional().describe('API key or token for the service'),\n isActive: z.boolean().default(true).describe('Whether the integration is active'),\n config: z\n .string()\n .optional()\n .describe('JSON string of additional config key-value pairs'),\n },\n },\n async ({ config, ...rest }) => {\n const body: Record<string, unknown> = { ...rest };\n if (config) body.config = JSON.parse(config);\n return callApi('POST', 'integrations', { body });\n }\n );\n\n server.registerTool(\n 'lexq_integrations_delete',\n {\n title: 'Delete Integration',\n description: 'Delete an integration by ID.',\n inputSchema: {\n integrationId: z.string().uuid().describe('Integration ID'),\n },\n },\n async ({ integrationId }) =>\n callApi('DELETE', `integrations/${integrationId}`)\n );\n\n server.registerTool(\n 'lexq_integrations_config_spec',\n {\n title: 'Integration Config Spec',\n description:\n 'Show available integration types and their required configuration fields.',\n inputSchema: {},\n },\n async () => callApi('GET', 'integrations/config-spec')\n );\n}","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { z } from 'zod';\nimport type { CallApi } from './_shared';\nimport { paginationParams } from './_shared';\nimport {FailureAction, FailureStatus, TaskCategory, TaskType} from '@/types/enums'\n\nexport function registerLogTools(server: McpServer, callApi: CallApi): void {\n server.registerTool(\n 'lexq_logs_list',\n {\n title: 'List Failure Logs',\n description:\n 'List system failure logs from background tasks (webhook calls, coupon issuance, etc.).',\n inputSchema: {\n page: z.number().int().min(0).default(0).describe('Page number'),\n size: z.number().int().min(1).max(100).default(20).describe('Page size'),\n category: z\n .enum(TaskCategory)\n .optional()\n .describe('Task category'),\n taskType: z\n .enum(TaskType)\n .optional()\n .describe('Task type'),\n status: z\n .enum(FailureStatus)\n .optional()\n .describe('Log status'),\n keyword: z\n .string()\n .optional()\n .describe('Search in refId, refSubId, errorMessage'),\n startDate: z.string().optional().describe('Start date (yyyy-MM-dd)'),\n endDate: z.string().optional().describe('End date (yyyy-MM-dd)'),\n },\n },\n async ({ page, size, category, taskType, status, keyword, startDate, endDate }) => {\n const params: Record<string, string> = paginationParams(page, size);\n if (category) params.category = category;\n if (taskType) params.taskType = taskType;\n if (status) params.status = status;\n if (keyword) params.keyword = keyword;\n if (startDate) params.startDate = startDate;\n if (endDate) params.endDate = endDate;\n return callApi('GET', 'failure-logs', { params });\n }\n );\n\n server.registerTool(\n 'lexq_logs_get',\n {\n title: 'Get Failure Log',\n description: 'Get failure log detail by ID.',\n inputSchema: {\n logId: z.string().uuid().describe('Failure log ID'),\n },\n },\n async ({ logId }) => callApi('GET', `failure-logs/${logId}`)\n );\n\n server.registerTool(\n 'lexq_logs_action',\n {\n title: 'Process Failure Log',\n description: 'Process a single failure log: RETRY, RESOLVE, or IGNORE.',\n inputSchema: {\n logId: z.string().uuid().describe('Failure log ID'),\n action: z\n .enum(FailureAction)\n .describe('Action to take'),\n },\n },\n async ({ logId, action }) =>\n callApi('POST', `failure-logs/${logId}/actions`, {\n body: { action },\n })\n );\n\n server.registerTool(\n 'lexq_logs_bulk_action',\n {\n title: 'Bulk Process Failure Logs',\n description:\n 'Process multiple failure logs at once. Provide an array of log IDs and the action.',\n inputSchema: {\n logIds: z\n .array(z.string().uuid())\n .describe('Array of failure log IDs'),\n action: z\n .enum(FailureAction)\n .describe('Action to apply to all logs'),\n },\n },\n async ({ logIds, action }) =>\n callApi('POST', 'failure-logs/bulk-actions', {\n body: { logIds, action },\n })\n );\n}","// ── Policy Engine ──\nexport const PolicyGroupStatus = ['ACTIVE', 'DISABLED', 'ARCHIVED'] as const;\nexport type PolicyGroupStatus = (typeof PolicyGroupStatus)[number];\n\nexport const PolicyVersionStatus = ['DRAFT', 'ACTIVE', 'ARCHIVED', 'EXPIRED'] as const;\nexport type PolicyVersionStatus = (typeof PolicyVersionStatus)[number];\n\n// ── Condition & Action ──\nexport const ConditionOperator = [\n 'EQUALS', 'NOT_EQUALS',\n 'GREATER_THAN', 'GREATER_THAN_OR_EQUAL',\n 'LESS_THAN', 'LESS_THAN_OR_EQUAL',\n 'CONTAINS', 'IN', 'NOT_IN',\n] as const;\nexport type ConditionOperator = (typeof ConditionOperator)[number];\n\nexport const LogicalOperator = ['AND', 'OR'] as const;\nexport type LogicalOperator = (typeof LogicalOperator)[number];\n\nexport const ActionType = [\n 'DISCOUNT', 'POINT', 'COUPON_ISSUE', 'BLOCK',\n 'NOTIFICATION', 'WEBHOOK', 'SET_FACT', 'ADD_TAG',\n 'UNKNOWN',\n] as const;\nexport type ActionType = (typeof ActionType)[number];\n\nexport const ValueType = ['STRING', 'NUMBER', 'BOOLEAN', 'LIST_STRING', 'LIST_NUMBER'] as const;\nexport type ValueType = (typeof ValueType)[number];\n\n// ── Conflict Resolution ──\nexport const ConflictResolutionMode = ['NONE', 'EXCLUSIVE', 'MAX_N'] as const;\nexport type ConflictResolutionMode = (typeof ConflictResolutionMode)[number];\n\nexport const ConflictResolutionStrategy = ['FIRST_MATCH', 'HIGHEST_PRIORITY', 'MAX_BENEFIT'] as const;\nexport type ConflictResolutionStrategy = (typeof ConflictResolutionStrategy)[number];\n\n// ── Deployment ──\nexport const DeploymentType = ['PUBLISH', 'DEPLOY', 'ROLLBACK', 'UNDEPLOY'] as const;\nexport type DeploymentType = (typeof DeploymentType)[number];\n\n// ── Execution ──\nexport const ApiExecutionStatus = ['SUCCESS', 'NO_MATCH', 'ERROR', 'TIMEOUT'] as const;\nexport type ApiExecutionStatus = (typeof ApiExecutionStatus)[number];\n\nexport const ApiExecutionType = ['SINGLE_GROUP', 'SPECIFIC_VERSION', 'BATCH', 'COMPOSITE'] as const;\nexport type ApiExecutionType = (typeof ApiExecutionType)[number];\n\n// ── Decision ──\nexport const DecisionStatus = [\n 'SELECTED', 'NO_MATCH', 'NOT_SELECTED',\n 'BLOCKED_MUTEX', 'LOST_PRIORITY', 'DROPPED_LIMIT', 'ERROR',\n] as const;\nexport type DecisionStatus = (typeof DecisionStatus)[number];\n\nexport const DecisionReasonCode = [\n 'FINAL_WINNER',\n 'VERSION_MISMATCH',\n 'EFFECTIVE_DATE_INVALID',\n 'CONDITION_MISMATCH',\n 'MUTEX_PRIORITY_LOST',\n 'MUTEX_LIMIT_REACHED',\n 'GROUP_LIMIT_REACHED',\n 'TOTAL_LIMIT_REACHED',\n 'ACTION_ERROR',\n 'ENGINE_ERROR',\n] as const;\nexport type DecisionReasonCode = (typeof DecisionReasonCode)[number];\n\n// ── Simulation ──\nexport const SimulationStatus = ['PENDING', 'RUNNING', 'COMPLETED', 'FAILED', 'CANCELLED'] as const;\nexport type SimulationStatus = (typeof SimulationStatus)[number];\n\nexport const SimulationDatasetType = ['EXECUTION_LOG', 'MANUAL'] as const;\nexport type SimulationDatasetType = (typeof SimulationDatasetType)[number];\n\nexport const SimulationDatasetSource = ['RECENT', 'DATE_RANGE', 'MANUAL'] as const;\nexport type SimulationDatasetSource = (typeof SimulationDatasetSource)[number];\n\nexport const SimulationMetricType = ['COUNT', 'SUM', 'AVG'] as const;\nexport type SimulationMetricType = (typeof SimulationMetricType)[number];\n\n// ── Auth ──\nexport const Role = ['ADMIN', 'USER', 'VIEWER', 'API_CLIENT'] as const;\nexport type Role = (typeof Role)[number];\n\n// ── Integration ──\nexport const IntegrationType = ['COUPON', 'POINT', 'NOTIFICATION', 'CRM', 'MESSENGER', 'WEBHOOK'] as const;\nexport type IntegrationType = (typeof IntegrationType)[number];\n\n// ── Failure Log ──\nexport const FailureStatus = ['PENDING', 'RESOLVED', 'IGNORED'] as const;\nexport type FailureStatus = (typeof FailureStatus)[number];\n\nexport const FailureAction = ['RETRY', 'IGNORE', 'RESOLVE'] as const;\nexport type FailureAction = (typeof FailureAction)[number];\n\nexport const TaskCategory = ['INTEGRATION', 'INTERNAL'] as const;\nexport type TaskCategory = (typeof TaskCategory)[number];\n\nexport const TaskType = [\n // Integration\n 'COUPON_ISSUE', 'COUPON_CANCEL',\n 'POINT_EARN', 'POINT_USE', 'POINT_REFUND',\n 'NOTIFICATION_SEND',\n 'CRM_SYNC_USER', 'CRM_ADD_TAG',\n 'WEBHOOK_EXECUTE',\n // Internal\n 'IMAGE_PROCESSING', 'DAILY_SETTLEMENT',\n] as const;\nexport type TaskType = (typeof TaskType)[number];","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { CallApi } from './tools/_shared';\n\nimport { registerStatusTools } from './tools/status';\nimport { registerGroupTools } from './tools/groups';\nimport { registerVersionTools } from './tools/versions';\nimport { registerRuleTools } from './tools/rules';\nimport { registerFactTools } from './tools/facts';\nimport { registerDeployTools } from './tools/deploy';\nimport { registerAnalyticsTools } from './tools/analytics';\nimport { registerHistoryTools } from './tools/history';\nimport { registerIntegrationTools } from './tools/integrations';\nimport { registerLogTools } from './tools/logs';\n\n/**\n * Registers all 53 MCP tools on the given server.\n *\n * @param server - McpServer instance\n * @param callApi - API caller function (config-based for CLI, Bearer-based for HTTP)\n */\nexport function registerAllTools(server: McpServer, callApi: CallApi): void {\n registerStatusTools(server, callApi);\n registerGroupTools(server, callApi);\n registerVersionTools(server, callApi);\n registerRuleTools(server, callApi);\n registerFactTools(server, callApi);\n registerDeployTools(server, callApi);\n registerAnalyticsTools(server, callApi);\n registerHistoryTools(server, callApi);\n registerIntegrationTools(server, callApi);\n registerLogTools(server, callApi);\n}\n\n// Re-exports for external consumers (lexq-mcp)\nexport type { CallApi, McpToolResult } from './tools/_shared';\nexport { paginationParams } from './tools/_shared';\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z"]}
package/package.json CHANGED
@@ -1,11 +1,18 @@
1
1
  {
2
2
  "name": "@lexq/cli",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "LexQ CLI — manage policies, simulate rules, and deploy from the terminal. Built for humans and AI agents.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "lexq": "./dist/index.js"
8
8
  },
9
+ "exports": {
10
+ ".": "./dist/index.js",
11
+ "./mcp": {
12
+ "types": "./dist/mcp/register.d.ts",
13
+ "import": "./dist/mcp/register.js"
14
+ }
15
+ },
9
16
  "files": [
10
17
  "dist",
11
18
  "schemas",