@burdenoff/mcp-libs 2026.704.1 → 2026.719.2
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/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
- package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
- package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
- package/dist/chunk-YOSQUY3M.js.map +1 -0
- package/dist/core/index.cjs +101 -32
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +97 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modules/adaptercloud/index.cjs +14 -14
- package/dist/modules/adaptercloud/index.cjs.map +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +14 -14
- package/dist/modules/artistrybase/index.cjs.map +1 -1
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +14 -14
- package/dist/modules/assethandler/index.cjs.map +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +14 -14
- package/dist/modules/atheletebridge/index.cjs.map +1 -1
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +14 -14
- package/dist/modules/auth/index.cjs.map +1 -1
- package/dist/modules/auth/index.js +3 -3
- package/dist/modules/billing/index.cjs +14 -14
- package/dist/modules/billing/index.cjs.map +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +14 -14
- package/dist/modules/brainyrich/index.cjs.map +1 -1
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +14 -14
- package/dist/modules/buildmyiq/index.cjs.map +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +14 -14
- package/dist/modules/channels/index.cjs.map +1 -1
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.cjs +14 -14
- package/dist/modules/collabkin/index.cjs.map +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +14 -14
- package/dist/modules/comradecircle/index.cjs.map +1 -1
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.cjs +14 -14
- package/dist/modules/conversations/index.cjs.map +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.cjs +14 -14
- package/dist/modules/coolandlovely/index.cjs.map +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +14 -14
- package/dist/modules/cosmicintersection/index.cjs.map +1 -1
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +14 -14
- package/dist/modules/crewfoundry/index.cjs.map +1 -1
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +14 -14
- package/dist/modules/devportal/index.cjs.map +1 -1
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +14 -14
- package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.cjs +14 -14
- package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +14 -14
- package/dist/modules/export/index.cjs.map +1 -1
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +14 -14
- package/dist/modules/files/index.cjs.map +1 -1
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs +14 -14
- package/dist/modules/ggnomad/index.cjs.map +1 -1
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +14 -14
- package/dist/modules/govcitizenhub/index.cjs.map +1 -1
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.cjs +14 -14
- package/dist/modules/groups/index.cjs.map +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.cjs +14 -14
- package/dist/modules/headshotmarketing/index.cjs.map +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/health/index.cjs +21 -19
- package/dist/modules/health/index.cjs.map +1 -1
- package/dist/modules/health/index.js +1 -1
- package/dist/modules/hookmovies/index.cjs +14 -14
- package/dist/modules/hookmovies/index.cjs.map +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +14 -14
- package/dist/modules/housingvista/index.cjs.map +1 -1
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +14 -14
- package/dist/modules/integrations/index.cjs.map +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +14 -14
- package/dist/modules/intelwatchtower/index.cjs.map +1 -1
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.cjs +14 -14
- package/dist/modules/kadaikodi/index.cjs.map +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +14 -14
- package/dist/modules/labsofscience/index.cjs.map +1 -1
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.cjs +14 -14
- package/dist/modules/manufacturedops/index.cjs.map +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.cjs +16 -42
- package/dist/modules/movethewheels/index.cjs.map +1 -1
- package/dist/modules/movethewheels/index.js +3 -29
- package/dist/modules/movethewheels/index.js.map +1 -1
- package/dist/modules/mybodyshield/index.cjs +14 -14
- package/dist/modules/mybodyshield/index.cjs.map +1 -1
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +14 -14
- package/dist/modules/notifications/index.cjs.map +1 -1
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.cjs +14 -14
- package/dist/modules/organizations/index.cjs.map +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.cjs +14 -14
- package/dist/modules/planmagnet/index.cjs.map +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +14 -14
- package/dist/modules/products/index.cjs.map +1 -1
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.cjs +14 -14
- package/dist/modules/proserviceworld/index.cjs.map +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.cjs +14 -14
- package/dist/modules/rbac/index.cjs.map +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +14 -14
- package/dist/modules/sandbox/index.cjs.map +1 -1
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +14 -14
- package/dist/modules/scheduler/index.cjs.map +1 -1
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +14 -14
- package/dist/modules/security/index.cjs.map +1 -1
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.cjs +14 -14
- package/dist/modules/semanticfed/index.cjs.map +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +14 -14
- package/dist/modules/store/index.cjs.map +1 -1
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.cjs +14 -14
- package/dist/modules/subscriberbot/index.cjs.map +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.cjs +14 -14
- package/dist/modules/support/index.cjs.map +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +14 -14
- package/dist/modules/tags/index.cjs.map +1 -1
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +14 -14
- package/dist/modules/technospam/index.cjs.map +1 -1
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.cjs +14 -14
- package/dist/modules/theculturepost/index.cjs.map +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.cjs +14 -14
- package/dist/modules/theglobalfuel/index.cjs.map +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.cjs +21 -16
- package/dist/modules/timecampus/index.cjs.map +1 -1
- package/dist/modules/timecampus/index.js +8 -3
- package/dist/modules/timecampus/index.js.map +1 -1
- package/dist/modules/tours/index.cjs +14 -14
- package/dist/modules/tours/index.cjs.map +1 -1
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.cjs +14 -14
- package/dist/modules/vibecontrols/index.cjs.map +1 -1
- package/dist/modules/vibecontrols/index.js +2 -2
- package/dist/modules/workspaces/index.cjs +14 -14
- package/dist/modules/workspaces/index.cjs.map +1 -1
- package/dist/modules/workspaces/index.js +1 -1
- package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
- package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
- package/package.json +1 -1
- package/dist/chunk-H2OYWLOA.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/intelwatchtower/operations.ts","../../../src/modules/intelwatchtower/tools/shared.ts","../../../src/modules/intelwatchtower/tools/sources.ts","../../../src/modules/intelwatchtower/tools/feeds.ts","../../../src/modules/intelwatchtower/tools/requirements.ts","../../../src/modules/intelwatchtower/tools/tasks.ts","../../../src/modules/intelwatchtower/tools/observations.ts","../../../src/modules/intelwatchtower/tools/missions.ts","../../../src/modules/intelwatchtower/tools/entities.ts","../../../src/modules/intelwatchtower/tools/indicators.ts","../../../src/modules/intelwatchtower/tools/alerts.ts","../../../src/modules/intelwatchtower/tools/cases.ts","../../../src/modules/intelwatchtower/tools/reports.ts","../../../src/modules/intelwatchtower/tools/health.ts","../../../src/modules/intelwatchtower/resources.ts","../../../src/modules/intelwatchtower/prompts.ts","../../../src/modules/intelwatchtower/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\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 IntelWatchtower MCP module.\n *\n * IntelWatchtower is the unified military & intelligence platform (future-products\n * ecosystem). Backend subgraph:\n * ~/products/wspace/intelwatchtower/wspace-intelwatchtower-svc/ (Hive service\n * name `intelwatchtower`).\n *\n * Two domains:\n * - collection — sources, collection requirements, tasking, feeds, observations\n * - fusion — missions, tracked entities, indicators, threat alerts,\n * investigation cases, intelligence reports\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is carried\n * by the gateway headers (x-workspace-id / X-Workspace-Authorization) issued by\n * the auth module — IntelWatchtower inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field carries the `int` prefix and every type/enum/\n * input the `Int` prefix (the subgraph's collision-avoidance contract); each is\n * called here by its REAL server-side name.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi / crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Shared fragments\n// ---------------------------------------------------------------------------\n\nconst PAGE_INFO = `pageInfo { cursor hasMore }`;\n\n// ---------------------------------------------------------------------------\n// Collection-domain field fragments\n// ---------------------------------------------------------------------------\n\nexport const SOURCE_FIELDS = `\n id name codename description discipline status classification region reliability\n operatorId lastSeenAt tags createdAt updatedAt workspaceId\n`;\n\nexport const FEED_FIELDS = `\n id name endpoint format status ingestCount lastIngestAt sourceId\n createdAt updatedAt workspaceId\n`;\n\nexport const REQUIREMENT_FIELDS = `\n id title description classification priority status dueDate satisfiedAt\n missionId requestedById tags createdAt updatedAt workspaceId\n`;\n\nexport const TASK_FIELDS = `\n id status instructions sourceId requirementId resultSummary\n startAt endAt dispatchedAt completedAt createdAt updatedAt workspaceId\n`;\n\nexport const OBSERVATION_FIELDS = `\n id summary classification observedAt latitude longitude payload\n entityId sourceId taskId createdAt updatedAt workspaceId\n`;\n\n// ---------------------------------------------------------------------------\n// Fusion-domain field fragments\n// ---------------------------------------------------------------------------\n\nexport const MISSION_FIELDS = `\n id name codename objective classification status commanderId\n startAt endAt tags createdAt updatedAt workspaceId\n`;\n\nexport const ENTITY_FIELDS = `\n id name type classification confidence description aliases threatScore\n latitude longitude lastSeenAt attributes tags createdAt updatedAt workspaceId\n`;\n\nexport const INDICATOR_FIELDS = `\n id type value classification confidence description isActive entityId\n validFrom validUntil createdAt updatedAt workspaceId\n`;\n\nexport const ALERT_FIELDS = `\n id title description classification severity status detectedAt resolvedAt\n entityId indicatorId missionId caseId assignedToId triageNotes\n createdAt updatedAt workspaceId\n`;\n\nexport const CASE_ENTRY_FIELDS = `\n id caseId kind body createdAt updatedAt workspaceId file { id }\n`;\n\nexport const CASE_FIELDS = `\n id title summary reference classification priority status missionId\n leadAnalystId tags openedAt closedAt createdAt updatedAt workspaceId\n`;\n\nexport const REPORT_FIELDS = `\n id title summary body type status classification authorId caseId missionId\n tags releasedAt createdAt updatedAt workspaceId file { id }\n`;\n\n// ---------------------------------------------------------------------------\n// Sources (collection)\n// ---------------------------------------------------------------------------\n\nexport const GET_SOURCE = `\n query IntelwatchtowerGetSource($id: ID!) {\n intSource(id: $id) {\n ${SOURCE_FIELDS}\n feeds { ${FEED_FIELDS} }\n tasks { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const LIST_SOURCES = `\n query IntelwatchtowerListSources(\n $discipline: IntSourceDiscipline\n $status: IntSourceStatus\n $pagination: PaginationInput\n ) {\n intListSources(discipline: $discipline, status: $status, pagination: $pagination) {\n items { ${SOURCE_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_SOURCE = `\n mutation IntelwatchtowerCreateSource($input: IntCreateSourceInput!) {\n intCreateSource(input: $input) { ${SOURCE_FIELDS} }\n }\n`;\n\nexport const UPDATE_SOURCE = `\n mutation IntelwatchtowerUpdateSource($id: ID!, $input: IntUpdateSourceInput!) {\n intUpdateSource(id: $id, input: $input) { ${SOURCE_FIELDS} }\n }\n`;\n\nexport const RETIRE_SOURCE = `\n mutation IntelwatchtowerRetireSource($id: ID!) {\n intRetireSource(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Feeds (collection)\n// ---------------------------------------------------------------------------\n\nexport const CREATE_FEED = `\n mutation IntelwatchtowerCreateFeed($input: IntCreateFeedInput!) {\n intCreateFeed(input: $input) { ${FEED_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collection requirements\n// ---------------------------------------------------------------------------\n\nexport const LIST_REQUIREMENTS = `\n query IntelwatchtowerListRequirements($missionId: ID, $status: IntRequirementStatus) {\n intListRequirements(missionId: $missionId, status: $status) {\n ${REQUIREMENT_FIELDS}\n tasks { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_REQUIREMENT = `\n mutation IntelwatchtowerCreateRequirement($input: IntCreateRequirementInput!) {\n intCreateRequirement(input: $input) { ${REQUIREMENT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collection tasks (tasking)\n// ---------------------------------------------------------------------------\n\nexport const LIST_TASKS = `\n query IntelwatchtowerListTasks(\n $requirementId: ID\n $sourceId: ID\n $status: IntTaskStatus\n $pagination: PaginationInput\n ) {\n intListTasks(\n requirementId: $requirementId\n sourceId: $sourceId\n status: $status\n pagination: $pagination\n ) {\n items { ${TASK_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_TASK = `\n mutation IntelwatchtowerCreateTask($input: IntCreateTaskInput!) {\n intCreateTask(input: $input) { ${TASK_FIELDS} }\n }\n`;\n\nexport const TRANSITION_TASK = `\n mutation IntelwatchtowerTransitionTask($id: ID!, $status: IntTaskStatus!) {\n intTransitionTask(id: $id, status: $status) { ${TASK_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Observations (collection)\n// ---------------------------------------------------------------------------\n\nexport const LIST_OBSERVATIONS = `\n query IntelwatchtowerListObservations(\n $entityId: ID\n $sourceId: ID\n $taskId: ID\n $pagination: PaginationInput\n ) {\n intListObservations(\n entityId: $entityId\n sourceId: $sourceId\n taskId: $taskId\n pagination: $pagination\n ) {\n items { ${OBSERVATION_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const RECORD_OBSERVATION = `\n mutation IntelwatchtowerRecordObservation($input: IntRecordObservationInput!) {\n intRecordObservation(input: $input) { ${OBSERVATION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Missions (fusion)\n// ---------------------------------------------------------------------------\n\nexport const GET_MISSION = `\n query IntelwatchtowerGetMission($id: ID!) {\n intMission(id: $id) {\n ${MISSION_FIELDS}\n cases { ${CASE_FIELDS} }\n reports { ${REPORT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_MISSIONS = `\n query IntelwatchtowerListMissions($status: IntMissionStatus) {\n intListMissions(status: $status) { ${MISSION_FIELDS} }\n }\n`;\n\nexport const CREATE_MISSION = `\n mutation IntelwatchtowerCreateMission($input: IntCreateMissionInput!) {\n intCreateMission(input: $input) { ${MISSION_FIELDS} }\n }\n`;\n\nexport const TRANSITION_MISSION = `\n mutation IntelwatchtowerTransitionMission($id: ID!, $status: IntMissionStatus!) {\n intTransitionMission(id: $id, status: $status) { ${MISSION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Tracked entities (fusion)\n// ---------------------------------------------------------------------------\n\nexport const GET_ENTITY = `\n query IntelwatchtowerGetEntity($id: ID!) {\n intEntity(id: $id) {\n ${ENTITY_FIELDS}\n indicators { ${INDICATOR_FIELDS} }\n alerts { ${ALERT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_ENTITIES = `\n query IntelwatchtowerListEntities(\n $type: IntEntityType\n $confidence: IntConfidence\n $pagination: PaginationInput\n ) {\n intListEntities(type: $type, confidence: $confidence, pagination: $pagination) {\n items { ${ENTITY_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_ENTITY = `\n mutation IntelwatchtowerCreateEntity($input: IntCreateEntityInput!) {\n intCreateEntity(input: $input) { ${ENTITY_FIELDS} }\n }\n`;\n\nexport const UPDATE_ENTITY = `\n mutation IntelwatchtowerUpdateEntity($id: ID!, $input: IntUpdateEntityInput!) {\n intUpdateEntity(id: $id, input: $input) { ${ENTITY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Indicators (fusion)\n// ---------------------------------------------------------------------------\n\nexport const LIST_INDICATORS = `\n query IntelwatchtowerListIndicators(\n $entityId: ID\n $type: IntIndicatorType\n $isActive: Boolean\n ) {\n intListIndicators(entityId: $entityId, type: $type, isActive: $isActive) {\n ${INDICATOR_FIELDS}\n }\n }\n`;\n\nexport const CREATE_INDICATOR = `\n mutation IntelwatchtowerCreateIndicator($input: IntCreateIndicatorInput!) {\n intCreateIndicator(input: $input) { ${INDICATOR_FIELDS} }\n }\n`;\n\nexport const DEACTIVATE_INDICATOR = `\n mutation IntelwatchtowerDeactivateIndicator($id: ID!) {\n intDeactivateIndicator(id: $id) { ${INDICATOR_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Threat alerts (fusion)\n// ---------------------------------------------------------------------------\n\nexport const LIST_ALERTS = `\n query IntelwatchtowerListAlerts(\n $entityId: ID\n $severity: IntAlertSeverity\n $status: IntAlertStatus\n $pagination: PaginationInput\n ) {\n intListAlerts(\n entityId: $entityId\n severity: $severity\n status: $status\n pagination: $pagination\n ) {\n items { ${ALERT_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const RAISE_ALERT = `\n mutation IntelwatchtowerRaiseAlert($input: IntRaiseAlertInput!) {\n intRaiseAlert(input: $input) { ${ALERT_FIELDS} }\n }\n`;\n\nexport const TRANSITION_ALERT = `\n mutation IntelwatchtowerTransitionAlert(\n $id: ID!\n $status: IntAlertStatus!\n $triageNotes: String\n ) {\n intTransitionAlert(id: $id, status: $status, triageNotes: $triageNotes) {\n ${ALERT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Investigation cases (fusion)\n// ---------------------------------------------------------------------------\n\nexport const GET_CASE = `\n query IntelwatchtowerGetCase($id: ID!) {\n intCase(id: $id) {\n ${CASE_FIELDS}\n alerts { ${ALERT_FIELDS} }\n entries { ${CASE_ENTRY_FIELDS} }\n }\n }\n`;\n\nexport const LIST_CASES = `\n query IntelwatchtowerListCases(\n $missionId: ID\n $status: IntCaseStatus\n $pagination: PaginationInput\n ) {\n intListCases(missionId: $missionId, status: $status, pagination: $pagination) {\n items { ${CASE_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_CASE = `\n mutation IntelwatchtowerCreateCase($input: IntCreateCaseInput!) {\n intCreateCase(input: $input) { ${CASE_FIELDS} }\n }\n`;\n\nexport const ADD_CASE_ENTRY = `\n mutation IntelwatchtowerAddCaseEntry($input: IntAddCaseEntryInput!) {\n intAddCaseEntry(input: $input) { ${CASE_ENTRY_FIELDS} }\n }\n`;\n\nexport const CLOSE_CASE = `\n mutation IntelwatchtowerCloseCase($id: ID!) {\n intCloseCase(id: $id) { ${CASE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Intelligence reports (fusion)\n// ---------------------------------------------------------------------------\n\nexport const LIST_REPORTS = `\n query IntelwatchtowerListReports(\n $missionId: ID\n $type: IntReportType\n $status: IntReportStatus\n $pagination: PaginationInput\n ) {\n intListReports(\n missionId: $missionId\n type: $type\n status: $status\n pagination: $pagination\n ) {\n items { ${REPORT_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_REPORT = `\n mutation IntelwatchtowerCreateReport($input: IntCreateReportInput!) {\n intCreateReport(input: $input) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const RELEASE_REPORT = `\n mutation IntelwatchtowerReleaseReport($id: ID!) {\n intReleaseReport(id: $id) { ${REPORT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query IntelwatchtowerHealth {\n intHealth\n }\n`;\n","/**\n * Shared zod schemas for the IntelWatchtower tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. JSON scalar inputs (entity\n * attributes, observation payload) are modelled as permissive object records —\n * the backend accepts arbitrary JSON, but a record shape gives the LLM a typed\n * hint.\n */\n\nimport { z } from 'zod';\n\nexport const ClassificationEnum = z\n .enum(['CONFIDENTIAL', 'SECRET', 'TOP_SECRET', 'UNCLASSIFIED'])\n .describe('Security classification of an intelligence object');\n\nexport const ConfidenceEnum = z\n .enum(['CONFIRMED', 'HIGH', 'LOW', 'MODERATE'])\n .describe('Analyst confidence in an entity/indicator');\n\nexport const PriorityEnum = z\n .enum(['FLASH', 'IMMEDIATE', 'PRIORITY', 'ROUTINE'])\n .describe('Precedence/priority of a case or requirement');\n\nexport const AlertSeverityEnum = z\n .enum(['CRITICAL', 'HIGH', 'INFO', 'LOW', 'MEDIUM'])\n .describe('Severity of a threat alert');\n\nexport const AlertStatusEnum = z\n .enum(['ESCALATED', 'FALSE_POSITIVE', 'OPEN', 'RESOLVED', 'SUPPRESSED', 'TRIAGED'])\n .describe('Triage lifecycle status of a threat alert');\n\nexport const CaseStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'CLOSED', 'OPEN', 'PENDING_REVIEW'])\n .describe('Lifecycle status of an investigation case');\n\nexport const EntityTypeEnum = z\n .enum([\n 'AIRCRAFT',\n 'EVENT',\n 'FACILITY',\n 'LOCATION',\n 'NETWORK_NODE',\n 'ORGANIZATION',\n 'PERSON',\n 'VEHICLE',\n 'VESSEL',\n ])\n .describe('Type of a tracked entity');\n\nexport const FeedStatusEnum = z\n .enum(['CONNECTED', 'DISCONNECTED', 'ERROR', 'STALE'])\n .describe('Connection status of a collection feed');\n\nexport const IndicatorTypeEnum = z\n .enum([\n 'BEHAVIOR',\n 'DOMAIN',\n 'EMAIL',\n 'FILE_HASH',\n 'GEO_COORDINATE',\n 'IP_ADDRESS',\n 'SIGNATURE',\n 'URL',\n ])\n .describe('Type of an indicator of compromise / observable');\n\nexport const MissionStatusEnum = z\n .enum(['ABORTED', 'ACTIVE', 'COMPLETED', 'PAUSED', 'PLANNING', 'READY'])\n .describe('Lifecycle status of a mission');\n\nexport const ReportStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'IN_REVIEW', 'RECALLED', 'RELEASED'])\n .describe('Lifecycle status of an intelligence report');\n\nexport const ReportTypeEnum = z\n .enum(['ASSESSMENT', 'INTSUM', 'SITREP', 'SPOT_REPORT', 'WARNING'])\n .describe('Product type of an intelligence report');\n\nexport const RequirementStatusEnum = z\n .enum(['APPROVED', 'CANCELLED', 'DRAFT', 'SATISFIED', 'SUBMITTED', 'TASKED'])\n .describe('Lifecycle status of a collection requirement');\n\nexport const SourceDisciplineEnum = z\n .enum(['CYBER', 'GEOINT', 'HUMINT', 'IMINT', 'MASINT', 'OSINT', 'SIGINT'])\n .describe('Collection discipline of a source/sensor');\n\nexport const SourceStatusEnum = z\n .enum(['ACTIVE', 'DEGRADED', 'OFFLINE', 'PROVISIONING', 'RETIRED'])\n .describe('Operational status of a source/sensor');\n\nexport const TaskStatusEnum = z\n .enum(['CANCELLED', 'COLLECTING', 'COMPLETED', 'DISPATCHED', 'FAILED', 'PENDING'])\n .describe('Lifecycle status of a collection (tasking) order');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** ISO-8601 DateTime string (the backend `DateTime` scalar). */\nexport const IsoDateTime = z\n .string()\n .describe('ISO-8601 timestamp (DateTime scalar), e.g. \"2026-06-27T12:00:00.000Z\"');\n\n/** Build a `PaginationInput` from optional limit/offset, or `undefined` if neither set. */\nexport function buildPagination(\n limit?: number,\n offset?: number,\n): { limit?: number; offset?: number } | undefined {\n const pagination: { limit?: number; offset?: number } = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * IntelWatchtower source/sensor tools — collection-source registry CRUD.\n *\n * Surface (5): sources_{get,list,create,update,retire}.\n * Maps to real root fields intSource / intListSources / intCreateSource /\n * intUpdateSource / intRetireSource.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ClassificationEnum,\n SourceDisciplineEnum,\n SourceStatusEnum,\n buildPagination,\n} from './shared.js';\n\nexport function registerSourceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_get')),\n {\n title: 'Get Source',\n description:\n 'Fetch a single collection source/sensor by ID, including its feeds and tasking orders.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intSource: Record<string, unknown> | null;\n }>(ops.GET_SOURCE, { id });\n if (!data.intSource) return errorResult(`Source ${id} not found`);\n return jsonResult(data.intSource);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_get failed', { error: String(error) });\n return errorResult(\n `Failed to get source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_list')),\n {\n title: 'List Sources',\n description:\n 'List collection sources/sensors in the bound workspace, optionally filtered by discipline and/or status, with pagination.',\n inputSchema: {\n discipline: SourceDisciplineEnum.optional().describe('Filter by collection discipline'),\n status: SourceStatusEnum.optional().describe('Filter by operational status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ discipline, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListSources: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SOURCES, {\n discipline,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListSources);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sources: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_create')),\n {\n title: 'Create Source',\n description:\n 'Register a new collection source/sensor. `discipline` is required; `reliability` is an analyst-assigned score.',\n inputSchema: {\n name: z.string().min(1).describe('Source display name'),\n discipline: SourceDisciplineEnum.describe('Collection discipline (HUMINT, SIGINT, ...)'),\n codename: z.string().optional().describe('Operational codename'),\n description: z.string().optional().describe('Source description'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n region: z.string().optional().describe('Geographic region of operation'),\n reliability: z.number().int().optional().describe('Reliability score (analyst-assigned)'),\n operatorId: z.string().optional().describe('User ID of the controlling operator'),\n status: SourceStatusEnum.optional().describe('Initial status (default PROVISIONING)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n name,\n discipline,\n codename,\n description,\n classification,\n region,\n reliability,\n operatorId,\n status,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name, discipline };\n if (codename !== undefined) input.codename = codename;\n if (description !== undefined) input.description = description;\n if (classification !== undefined) input.classification = classification;\n if (region !== undefined) input.region = region;\n if (reliability !== undefined) input.reliability = reliability;\n if (operatorId !== undefined) input.operatorId = operatorId;\n if (status !== undefined) input.status = status;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateSource: Record<string, unknown>;\n }>(ops.CREATE_SOURCE, { input });\n return jsonResult(data.intCreateSource);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_create failed', { error: String(error) });\n return errorResult(\n `Failed to create source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_update')),\n {\n title: 'Update Source',\n description:\n 'Update a collection source. At least one mutable field must be provided. Use `status` to activate/degrade/take a source offline.',\n inputSchema: {\n id: z.string().describe('Source ID'),\n name: z.string().optional().describe('Updated display name'),\n codename: z.string().optional().describe('Updated codename'),\n description: z.string().optional().describe('Updated description'),\n discipline: SourceDisciplineEnum.optional().describe('Updated discipline'),\n classification: ClassificationEnum.optional().describe('Updated classification'),\n region: z.string().optional().describe('Updated region'),\n reliability: z.number().int().optional().describe('Updated reliability score'),\n operatorId: z.string().optional().describe('Updated operator user ID'),\n status: SourceStatusEnum.optional().describe('Updated operational status'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n codename,\n description,\n discipline,\n classification,\n region,\n reliability,\n operatorId,\n status,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (codename !== undefined) input.codename = codename;\n if (description !== undefined) input.description = description;\n if (discipline !== undefined) input.discipline = discipline;\n if (classification !== undefined) input.classification = classification;\n if (region !== undefined) input.region = region;\n if (reliability !== undefined) input.reliability = reliability;\n if (operatorId !== undefined) input.operatorId = operatorId;\n if (status !== undefined) input.status = status;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable source field');\n }\n\n const data = await ctx.gql.workspace.request<{\n intUpdateSource: Record<string, unknown>;\n }>(ops.UPDATE_SOURCE, { id, input });\n return jsonResult(data.intUpdateSource);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_update failed', { error: String(error) });\n return errorResult(\n `Failed to update source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_retire')),\n {\n title: 'Retire Source',\n description: 'Retire (decommission) a collection source/sensor.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ intRetireSource: boolean }>(\n ops.RETIRE_SOURCE,\n { id },\n );\n return jsonResult({ ok: data.intRetireSource, id });\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_retire failed', { error: String(error) });\n return errorResult(\n `Failed to retire source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower feed tools — collection feeds attached to a source.\n *\n * Surface (1): feeds_create. The backend exposes feeds only through\n * IntSource.feeds (no root list); creation maps to intCreateFeed.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { FeedStatusEnum } from './shared.js';\n\nexport function registerFeedTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'feeds_create')),\n {\n title: 'Create Feed',\n description:\n 'Attach a new ingest feed to a collection source. `sourceId` is required; `endpoint`/`format` describe the upstream connection.',\n inputSchema: {\n sourceId: z.string().min(1).describe('Owning source ID'),\n name: z.string().min(1).describe('Feed display name'),\n endpoint: z.string().optional().describe('Upstream endpoint URL/URI'),\n format: z.string().optional().describe('Wire format, e.g. \"stix\", \"json\", \"csv\"'),\n status: FeedStatusEnum.optional().describe(\n 'Initial connection status (default DISCONNECTED)',\n ),\n },\n },\n async ({ sourceId, name, endpoint, format, status }) => {\n try {\n const input: Record<string, unknown> = { sourceId, name };\n if (endpoint !== undefined) input.endpoint = endpoint;\n if (format !== undefined) input.format = format;\n if (status !== undefined) input.status = status;\n\n const data = await ctx.gql.workspace.request<{\n intCreateFeed: Record<string, unknown>;\n }>(ops.CREATE_FEED, { input });\n return jsonResult(data.intCreateFeed);\n } catch (error) {\n ctx.logger.error('intelwatchtower feeds_create failed', { error: String(error) });\n return errorResult(\n `Failed to create feed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower collection-requirement tools.\n *\n * Surface (2): requirements_{list,create}. Maps to intListRequirements (a plain\n * array, no pagination) and intCreateRequirement.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, PriorityEnum, RequirementStatusEnum, IsoDateTime } from './shared.js';\n\nexport function registerRequirementTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'requirements_list')),\n {\n title: 'List Collection Requirements',\n description:\n 'List collection requirements (intelligence-gap statements), optionally filtered by mission and/or status. Each includes its tasking orders.',\n inputSchema: {\n missionId: z.string().optional().describe('Filter by owning mission ID'),\n status: RequirementStatusEnum.optional().describe('Filter by requirement status'),\n },\n },\n async ({ missionId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListRequirements: Array<Record<string, unknown>>;\n }>(ops.LIST_REQUIREMENTS, { missionId, status });\n return jsonResult(data.intListRequirements);\n } catch (error) {\n ctx.logger.error('intelwatchtower requirements_list failed', { error: String(error) });\n return errorResult(\n `Failed to list requirements: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'requirements_create')),\n {\n title: 'Create Collection Requirement',\n description:\n 'Raise a new collection requirement (an intelligence gap to be satisfied through tasking).',\n inputSchema: {\n title: z.string().min(1).describe('Requirement title'),\n description: z.string().optional().describe('Detailed requirement description'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n priority: PriorityEnum.optional().describe('Precedence (default ROUTINE)'),\n missionId: z.string().optional().describe('Owning mission ID'),\n requestedById: z.string().optional().describe('User ID of the requester'),\n dueDate: IsoDateTime.optional().describe('Due date (ISO-8601)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n title,\n description,\n classification,\n priority,\n missionId,\n requestedById,\n dueDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (description !== undefined) input.description = description;\n if (classification !== undefined) input.classification = classification;\n if (priority !== undefined) input.priority = priority;\n if (missionId !== undefined) input.missionId = missionId;\n if (requestedById !== undefined) input.requestedById = requestedById;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateRequirement: Record<string, unknown>;\n }>(ops.CREATE_REQUIREMENT, { input });\n return jsonResult(data.intCreateRequirement);\n } catch (error) {\n ctx.logger.error('intelwatchtower requirements_create failed', { error: String(error) });\n return errorResult(\n `Failed to create requirement: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower tasking (collection-task) tools.\n *\n * Surface (3): tasks_{list,create,transition}. Maps to intListTasks (a\n * connection), intCreateTask, and intTransitionTask (validated lifecycle).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { TaskStatusEnum, IsoDateTime, buildPagination } from './shared.js';\n\nexport function registerTaskTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_list')),\n {\n title: 'List Tasking Orders',\n description:\n 'List collection tasking orders, optionally filtered by requirement, source, and/or status, with pagination.',\n inputSchema: {\n requirementId: z.string().optional().describe('Filter by parent requirement ID'),\n sourceId: z.string().optional().describe('Filter by tasked source ID'),\n status: TaskStatusEnum.optional().describe('Filter by task status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ requirementId, sourceId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListTasks: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_TASKS, {\n requirementId,\n sourceId,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListTasks);\n } catch (error) {\n ctx.logger.error('intelwatchtower tasks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_create')),\n {\n title: 'Create Tasking Order',\n description:\n 'Dispatch a collection tasking order to a source. `sourceId` is required; optionally bind it to a requirement and set a collection window.',\n inputSchema: {\n sourceId: z.string().min(1).describe('Source to task'),\n requirementId: z.string().optional().describe('Parent requirement ID'),\n instructions: z.string().optional().describe('Collection instructions'),\n startAt: IsoDateTime.optional().describe('Collection-window start (ISO-8601)'),\n endAt: IsoDateTime.optional().describe('Collection-window end (ISO-8601)'),\n },\n },\n async ({ sourceId, requirementId, instructions, startAt, endAt }) => {\n try {\n const input: Record<string, unknown> = { sourceId };\n if (requirementId !== undefined) input.requirementId = requirementId;\n if (instructions !== undefined) input.instructions = instructions;\n if (startAt !== undefined) input.startAt = startAt;\n if (endAt !== undefined) input.endAt = endAt;\n\n const data = await ctx.gql.workspace.request<{\n intCreateTask: Record<string, unknown>;\n }>(ops.CREATE_TASK, { input });\n return jsonResult(data.intCreateTask);\n } catch (error) {\n ctx.logger.error('intelwatchtower tasks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_transition')),\n {\n title: 'Transition Tasking Order',\n description:\n 'Advance a tasking order through its lifecycle (validated transitions: PENDING → DISPATCHED → COLLECTING → COMPLETED, or CANCELLED/FAILED).',\n inputSchema: {\n id: z.string().describe('Task ID'),\n status: TaskStatusEnum.describe('New task status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intTransitionTask: Record<string, unknown>;\n }>(ops.TRANSITION_TASK, { id, status });\n return jsonResult(data.intTransitionTask);\n } catch (error) {\n ctx.logger.error('intelwatchtower tasks_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower observation tools — raw collected reporting.\n *\n * Surface (2): observations_{list,record}. Maps to intListObservations (a\n * connection) and intRecordObservation.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, IsoDateTime, JsonObject, buildPagination } from './shared.js';\n\nexport function registerObservationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'observations_list')),\n {\n title: 'List Observations',\n description:\n 'List raw observations (collected reporting), optionally filtered by entity, source, and/or task, with pagination.',\n inputSchema: {\n entityId: z.string().optional().describe('Filter by associated entity ID'),\n sourceId: z.string().optional().describe('Filter by reporting source ID'),\n taskId: z.string().optional().describe('Filter by originating task ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ entityId, sourceId, taskId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListObservations: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_OBSERVATIONS, {\n entityId,\n sourceId,\n taskId,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListObservations);\n } catch (error) {\n ctx.logger.error('intelwatchtower observations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list observations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'observations_record')),\n {\n title: 'Record Observation',\n description:\n 'Record a raw observation from a source. `sourceId`, `summary`, and `observedAt` are required; optionally geo-locate it and attach a structured payload.',\n inputSchema: {\n sourceId: z.string().min(1).describe('Reporting source ID'),\n summary: z.string().min(1).describe('Human-readable observation summary'),\n observedAt: IsoDateTime.describe('When the observation occurred (ISO-8601)'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n entityId: z.string().optional().describe('Associated tracked entity ID'),\n taskId: z.string().optional().describe('Originating tasking order ID'),\n latitude: z.number().optional().describe('Observation latitude'),\n longitude: z.number().optional().describe('Observation longitude'),\n payload: JsonObject.optional().describe('Structured observation payload JSON'),\n },\n },\n async ({\n sourceId,\n summary,\n observedAt,\n classification,\n entityId,\n taskId,\n latitude,\n longitude,\n payload,\n }) => {\n try {\n const input: Record<string, unknown> = { sourceId, summary, observedAt };\n if (classification !== undefined) input.classification = classification;\n if (entityId !== undefined) input.entityId = entityId;\n if (taskId !== undefined) input.taskId = taskId;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (payload !== undefined) input.payload = payload;\n\n const data = await ctx.gql.workspace.request<{\n intRecordObservation: Record<string, unknown>;\n }>(ops.RECORD_OBSERVATION, { input });\n return jsonResult(data.intRecordObservation);\n } catch (error) {\n ctx.logger.error('intelwatchtower observations_record failed', { error: String(error) });\n return errorResult(\n `Failed to record observation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower mission tools — fusion-domain operation tasking.\n *\n * Surface (4): missions_{get,list,create,transition}. Maps to intMission /\n * intListMissions (a plain array) / intCreateMission / intTransitionMission.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, MissionStatusEnum, IsoDateTime } from './shared.js';\n\nexport function registerMissionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_get')),\n {\n title: 'Get Mission',\n description: 'Fetch a single mission by ID, including its cases and reports.',\n inputSchema: { id: z.string().describe('Mission ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intMission: Record<string, unknown> | null;\n }>(ops.GET_MISSION, { id });\n if (!data.intMission) return errorResult(`Mission ${id} not found`);\n return jsonResult(data.intMission);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get mission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_list')),\n {\n title: 'List Missions',\n description: 'List missions in the bound workspace, optionally filtered by status.',\n inputSchema: {\n status: MissionStatusEnum.optional().describe('Filter by mission status'),\n },\n },\n async ({ status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListMissions: Array<Record<string, unknown>>;\n }>(ops.LIST_MISSIONS, { status });\n return jsonResult(data.intListMissions);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list missions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_create')),\n {\n title: 'Create Mission',\n description: 'Stand up a new mission. `name` is required.',\n inputSchema: {\n name: z.string().min(1).describe('Mission name'),\n codename: z.string().optional().describe('Operational codename'),\n objective: z.string().optional().describe('Mission objective statement'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n commanderId: z.string().optional().describe('User ID of the mission commander'),\n startAt: IsoDateTime.optional().describe('Planned start (ISO-8601)'),\n endAt: IsoDateTime.optional().describe('Planned end (ISO-8601)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({ name, codename, objective, classification, commanderId, startAt, endAt, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (codename !== undefined) input.codename = codename;\n if (objective !== undefined) input.objective = objective;\n if (classification !== undefined) input.classification = classification;\n if (commanderId !== undefined) input.commanderId = commanderId;\n if (startAt !== undefined) input.startAt = startAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateMission: Record<string, unknown>;\n }>(ops.CREATE_MISSION, { input });\n return jsonResult(data.intCreateMission);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_create failed', { error: String(error) });\n return errorResult(\n `Failed to create mission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_transition')),\n {\n title: 'Transition Mission',\n description:\n 'Advance a mission through its lifecycle (PLANNING → READY → ACTIVE → PAUSED/COMPLETED/ABORTED).',\n inputSchema: {\n id: z.string().describe('Mission ID'),\n status: MissionStatusEnum.describe('New mission status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intTransitionMission: Record<string, unknown>;\n }>(ops.TRANSITION_MISSION, { id, status });\n return jsonResult(data.intTransitionMission);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition mission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower tracked-entity tools — fusion-domain entity registry.\n *\n * Surface (4): entities_{get,list,create,update}. Maps to intEntity /\n * intListEntities (a connection) / intCreateEntity / intUpdateEntity.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ClassificationEnum,\n ConfidenceEnum,\n EntityTypeEnum,\n JsonObject,\n buildPagination,\n} from './shared.js';\n\nexport function registerEntityTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_get')),\n {\n title: 'Get Entity',\n description:\n 'Fetch a single tracked entity by ID, including its indicators and threat alerts.',\n inputSchema: { id: z.string().describe('Entity ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intEntity: Record<string, unknown> | null;\n }>(ops.GET_ENTITY, { id });\n if (!data.intEntity) return errorResult(`Entity ${id} not found`);\n return jsonResult(data.intEntity);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_get failed', { error: String(error) });\n return errorResult(\n `Failed to get entity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_list')),\n {\n title: 'List Entities',\n description:\n 'List tracked entities in the bound workspace, optionally filtered by type and/or confidence, with pagination.',\n inputSchema: {\n type: EntityTypeEnum.optional().describe('Filter by entity type'),\n confidence: ConfidenceEnum.optional().describe('Filter by analyst confidence'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ type, confidence, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListEntities: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ENTITIES, {\n type,\n confidence,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListEntities);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_list failed', { error: String(error) });\n return errorResult(\n `Failed to list entities: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_create')),\n {\n title: 'Create Entity',\n description:\n 'Register a new tracked entity (person, organization, vessel, facility, ...). `name` and `type` are required.',\n inputSchema: {\n name: z.string().min(1).describe('Entity display name'),\n type: EntityTypeEnum.describe('Entity type'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n confidence: ConfidenceEnum.optional().describe('Analyst confidence (default LOW)'),\n description: z.string().optional().describe('Entity description'),\n aliases: z.array(z.string()).optional().describe('Known aliases'),\n threatScore: z.number().int().optional().describe('Threat score'),\n latitude: z.number().optional().describe('Last-known latitude'),\n longitude: z.number().optional().describe('Last-known longitude'),\n attributes: JsonObject.optional().describe('Arbitrary structured attributes JSON'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n name,\n type,\n classification,\n confidence,\n description,\n aliases,\n threatScore,\n latitude,\n longitude,\n attributes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (classification !== undefined) input.classification = classification;\n if (confidence !== undefined) input.confidence = confidence;\n if (description !== undefined) input.description = description;\n if (aliases !== undefined) input.aliases = aliases;\n if (threatScore !== undefined) input.threatScore = threatScore;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (attributes !== undefined) input.attributes = attributes;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateEntity: Record<string, unknown>;\n }>(ops.CREATE_ENTITY, { input });\n return jsonResult(data.intCreateEntity);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_create failed', { error: String(error) });\n return errorResult(\n `Failed to create entity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_update')),\n {\n title: 'Update Entity',\n description: 'Update a tracked entity. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Entity ID'),\n name: z.string().optional().describe('Updated display name'),\n classification: ClassificationEnum.optional().describe('Updated classification'),\n confidence: ConfidenceEnum.optional().describe('Updated confidence'),\n description: z.string().optional().describe('Updated description'),\n aliases: z.array(z.string()).optional().describe('Updated aliases'),\n threatScore: z.number().int().optional().describe('Updated threat score'),\n latitude: z.number().optional().describe('Updated latitude'),\n longitude: z.number().optional().describe('Updated longitude'),\n attributes: JsonObject.optional().describe('Updated attributes JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n classification,\n confidence,\n description,\n aliases,\n threatScore,\n latitude,\n longitude,\n attributes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (classification !== undefined) input.classification = classification;\n if (confidence !== undefined) input.confidence = confidence;\n if (description !== undefined) input.description = description;\n if (aliases !== undefined) input.aliases = aliases;\n if (threatScore !== undefined) input.threatScore = threatScore;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (attributes !== undefined) input.attributes = attributes;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable entity field');\n }\n\n const data = await ctx.gql.workspace.request<{\n intUpdateEntity: Record<string, unknown>;\n }>(ops.UPDATE_ENTITY, { id, input });\n return jsonResult(data.intUpdateEntity);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_update failed', { error: String(error) });\n return errorResult(\n `Failed to update entity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower indicator tools — observables / indicators of interest.\n *\n * Surface (3): indicators_{list,create,deactivate}. Maps to intListIndicators\n * (a plain array), intCreateIndicator, and intDeactivateIndicator.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, ConfidenceEnum, IndicatorTypeEnum, IsoDateTime } from './shared.js';\n\nexport function registerIndicatorTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'indicators_list')),\n {\n title: 'List Indicators',\n description:\n 'List indicators (observables), optionally filtered by entity, type, and/or active state.',\n inputSchema: {\n entityId: z.string().optional().describe('Filter by associated entity ID'),\n type: IndicatorTypeEnum.optional().describe('Filter by indicator type'),\n isActive: z.boolean().optional().describe('Filter by active state'),\n },\n },\n async ({ entityId, type, isActive }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListIndicators: Array<Record<string, unknown>>;\n }>(ops.LIST_INDICATORS, { entityId, type, isActive });\n return jsonResult(data.intListIndicators);\n } catch (error) {\n ctx.logger.error('intelwatchtower indicators_list failed', { error: String(error) });\n return errorResult(\n `Failed to list indicators: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'indicators_create')),\n {\n title: 'Create Indicator',\n description:\n 'Register a new indicator (observable). `type` and `value` are required; optionally bind it to an entity and a validity window.',\n inputSchema: {\n type: IndicatorTypeEnum.describe('Indicator type (IP_ADDRESS, DOMAIN, FILE_HASH, ...)'),\n value: z.string().min(1).describe('Indicator value'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n confidence: ConfidenceEnum.optional().describe('Analyst confidence (default LOW)'),\n description: z.string().optional().describe('Indicator description'),\n entityId: z.string().optional().describe('Associated entity ID'),\n validFrom: IsoDateTime.optional().describe('Validity-window start (ISO-8601)'),\n validUntil: IsoDateTime.optional().describe('Validity-window end (ISO-8601)'),\n },\n },\n async ({\n type,\n value,\n classification,\n confidence,\n description,\n entityId,\n validFrom,\n validUntil,\n }) => {\n try {\n const input: Record<string, unknown> = { type, value };\n if (classification !== undefined) input.classification = classification;\n if (confidence !== undefined) input.confidence = confidence;\n if (description !== undefined) input.description = description;\n if (entityId !== undefined) input.entityId = entityId;\n if (validFrom !== undefined) input.validFrom = validFrom;\n if (validUntil !== undefined) input.validUntil = validUntil;\n\n const data = await ctx.gql.workspace.request<{\n intCreateIndicator: Record<string, unknown>;\n }>(ops.CREATE_INDICATOR, { input });\n return jsonResult(data.intCreateIndicator);\n } catch (error) {\n ctx.logger.error('intelwatchtower indicators_create failed', { error: String(error) });\n return errorResult(\n `Failed to create indicator: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'indicators_deactivate')),\n {\n title: 'Deactivate Indicator',\n description: 'Deactivate (expire) an indicator so it no longer matches new reporting.',\n inputSchema: { id: z.string().describe('Indicator ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intDeactivateIndicator: Record<string, unknown>;\n }>(ops.DEACTIVATE_INDICATOR, { id });\n return jsonResult(data.intDeactivateIndicator);\n } catch (error) {\n ctx.logger.error('intelwatchtower indicators_deactivate failed', { error: String(error) });\n return errorResult(\n `Failed to deactivate indicator: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower threat-alert tools.\n *\n * Surface (3): alerts_{list,raise,transition}. Maps to intListAlerts (a\n * connection), intRaiseAlert, and intTransitionAlert (validated triage\n * lifecycle, with optional triage notes).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ClassificationEnum,\n AlertSeverityEnum,\n AlertStatusEnum,\n buildPagination,\n} from './shared.js';\n\nexport function registerAlertTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'alerts_list')),\n {\n title: 'List Alerts',\n description:\n 'List threat alerts, optionally filtered by entity, severity, and/or status, with pagination.',\n inputSchema: {\n entityId: z.string().optional().describe('Filter by associated entity ID'),\n severity: AlertSeverityEnum.optional().describe('Filter by severity'),\n status: AlertStatusEnum.optional().describe('Filter by triage status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ entityId, severity, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListAlerts: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ALERTS, {\n entityId,\n severity,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListAlerts);\n } catch (error) {\n ctx.logger.error('intelwatchtower alerts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list alerts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'alerts_raise')),\n {\n title: 'Raise Alert',\n description:\n 'Raise a new threat alert. `title` is required; optionally bind it to an entity, indicator, and/or mission and set severity.',\n inputSchema: {\n title: z.string().min(1).describe('Alert title'),\n description: z.string().optional().describe('Alert description'),\n severity: AlertSeverityEnum.optional().describe('Severity (default MEDIUM)'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n entityId: z.string().optional().describe('Associated entity ID'),\n indicatorId: z.string().optional().describe('Triggering indicator ID'),\n missionId: z.string().optional().describe('Associated mission ID'),\n assignedToId: z.string().optional().describe('User ID to assign the alert to'),\n },\n },\n async ({\n title,\n description,\n severity,\n classification,\n entityId,\n indicatorId,\n missionId,\n assignedToId,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (description !== undefined) input.description = description;\n if (severity !== undefined) input.severity = severity;\n if (classification !== undefined) input.classification = classification;\n if (entityId !== undefined) input.entityId = entityId;\n if (indicatorId !== undefined) input.indicatorId = indicatorId;\n if (missionId !== undefined) input.missionId = missionId;\n if (assignedToId !== undefined) input.assignedToId = assignedToId;\n\n const data = await ctx.gql.workspace.request<{\n intRaiseAlert: Record<string, unknown>;\n }>(ops.RAISE_ALERT, { input });\n return jsonResult(data.intRaiseAlert);\n } catch (error) {\n ctx.logger.error('intelwatchtower alerts_raise failed', { error: String(error) });\n return errorResult(\n `Failed to raise alert: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'alerts_transition')),\n {\n title: 'Transition Alert',\n description:\n 'Triage an alert through its lifecycle (validated transitions: OPEN → TRIAGED → ESCALATED/RESOLVED/FALSE_POSITIVE/SUPPRESSED), optionally recording triage notes.',\n inputSchema: {\n id: z.string().describe('Alert ID'),\n status: AlertStatusEnum.describe('New alert status'),\n triageNotes: z.string().optional().describe('Triage notes to record on the transition'),\n },\n },\n async ({ id, status, triageNotes }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intTransitionAlert: Record<string, unknown>;\n }>(ops.TRANSITION_ALERT, { id, status, triageNotes });\n return jsonResult(data.intTransitionAlert);\n } catch (error) {\n ctx.logger.error('intelwatchtower alerts_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition alert: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower investigation-case tools.\n *\n * Surface (5): cases_{get,list,create,add_entry,close}. Maps to intCase /\n * intListCases (a connection) / intCreateCase / intAddCaseEntry / intCloseCase.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, PriorityEnum, CaseStatusEnum, buildPagination } from './shared.js';\n\nexport function registerCaseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_get')),\n {\n title: 'Get Case',\n description:\n 'Fetch a single investigation case by ID, including its alerts and case entries.',\n inputSchema: { id: z.string().describe('Case ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intCase: Record<string, unknown> | null;\n }>(ops.GET_CASE, { id });\n if (!data.intCase) return errorResult(`Case ${id} not found`);\n return jsonResult(data.intCase);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_get failed', { error: String(error) });\n return errorResult(\n `Failed to get case: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_list')),\n {\n title: 'List Cases',\n description:\n 'List investigation cases, optionally filtered by mission and/or status, with pagination.',\n inputSchema: {\n missionId: z.string().optional().describe('Filter by owning mission ID'),\n status: CaseStatusEnum.optional().describe('Filter by case status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ missionId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListCases: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_CASES, {\n missionId,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListCases);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_list failed', { error: String(error) });\n return errorResult(\n `Failed to list cases: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_create')),\n {\n title: 'Create Case',\n description: 'Open a new investigation case. `title` is required.',\n inputSchema: {\n title: z.string().min(1).describe('Case title'),\n summary: z.string().optional().describe('Case summary'),\n reference: z.string().optional().describe('External reference number'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n priority: PriorityEnum.optional().describe('Precedence (default ROUTINE)'),\n missionId: z.string().optional().describe('Owning mission ID'),\n leadAnalystId: z.string().optional().describe('User ID of the lead analyst'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n title,\n summary,\n reference,\n classification,\n priority,\n missionId,\n leadAnalystId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (summary !== undefined) input.summary = summary;\n if (reference !== undefined) input.reference = reference;\n if (classification !== undefined) input.classification = classification;\n if (priority !== undefined) input.priority = priority;\n if (missionId !== undefined) input.missionId = missionId;\n if (leadAnalystId !== undefined) input.leadAnalystId = leadAnalystId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateCase: Record<string, unknown>;\n }>(ops.CREATE_CASE, { input });\n return jsonResult(data.intCreateCase);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_create failed', { error: String(error) });\n return errorResult(\n `Failed to create case: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_add_entry')),\n {\n title: 'Add Case Entry',\n description:\n 'Append an entry (note, finding, or evidence reference) to a case. `kind` and `body` are required; attach evidence via `fileId` (wspace-files-svc File).',\n inputSchema: {\n caseId: z.string().min(1).describe('Case ID'),\n kind: z.string().min(1).describe('Entry kind, e.g. \"note\", \"finding\", \"evidence\"'),\n body: z.string().min(1).describe('Entry body text'),\n fileId: z.string().optional().describe('Evidence attachment File ID (wspace-files-svc)'),\n },\n },\n async ({ caseId, kind, body, fileId }) => {\n try {\n const input: Record<string, unknown> = { caseId, kind, body };\n if (fileId !== undefined) input.fileId = fileId;\n\n const data = await ctx.gql.workspace.request<{\n intAddCaseEntry: Record<string, unknown>;\n }>(ops.ADD_CASE_ENTRY, { input });\n return jsonResult(data.intAddCaseEntry);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_add_entry failed', { error: String(error) });\n return errorResult(\n `Failed to add case entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_close')),\n {\n title: 'Close Case',\n description: 'Close an investigation case.',\n inputSchema: { id: z.string().describe('Case ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intCloseCase: Record<string, unknown>;\n }>(ops.CLOSE_CASE, { id });\n return jsonResult(data.intCloseCase);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_close failed', { error: String(error) });\n return errorResult(\n `Failed to close case: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower intelligence-report tools.\n *\n * Surface (3): reports_{list,create,release}. Maps to intListReports (a\n * connection), intCreateReport, and intReleaseReport.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, ReportStatusEnum, ReportTypeEnum, buildPagination } from './shared.js';\n\nexport function registerReportTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_list')),\n {\n title: 'List Reports',\n description:\n 'List intelligence reports, optionally filtered by mission, type, and/or status, with pagination.',\n inputSchema: {\n missionId: z.string().optional().describe('Filter by owning mission ID'),\n type: ReportTypeEnum.optional().describe('Filter by report product type'),\n status: ReportStatusEnum.optional().describe('Filter by report status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ missionId, type, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListReports: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_REPORTS, {\n missionId,\n type,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListReports);\n } catch (error) {\n ctx.logger.error('intelwatchtower reports_list failed', { error: String(error) });\n return errorResult(\n `Failed to list reports: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_create')),\n {\n title: 'Create Report',\n description:\n 'Draft a new intelligence report (SITREP, INTSUM, ASSESSMENT, ...). `title` is required; reference the rendered product via `fileId` (wspace-files-svc File).',\n inputSchema: {\n title: z.string().min(1).describe('Report title'),\n type: ReportTypeEnum.optional().describe('Report product type (default SITREP)'),\n summary: z.string().optional().describe('Report summary / BLUF'),\n body: z.string().optional().describe('Report body text'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n authorId: z.string().optional().describe('User ID of the report author'),\n caseId: z.string().optional().describe('Associated case ID'),\n missionId: z.string().optional().describe('Associated mission ID'),\n fileId: z.string().optional().describe('Rendered-product File ID (wspace-files-svc)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n title,\n type,\n summary,\n body,\n classification,\n authorId,\n caseId,\n missionId,\n fileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (type !== undefined) input.type = type;\n if (summary !== undefined) input.summary = summary;\n if (body !== undefined) input.body = body;\n if (classification !== undefined) input.classification = classification;\n if (authorId !== undefined) input.authorId = authorId;\n if (caseId !== undefined) input.caseId = caseId;\n if (missionId !== undefined) input.missionId = missionId;\n if (fileId !== undefined) input.fileId = fileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateReport: Record<string, unknown>;\n }>(ops.CREATE_REPORT, { input });\n return jsonResult(data.intCreateReport);\n } catch (error) {\n ctx.logger.error('intelwatchtower reports_create failed', { error: String(error) });\n return errorResult(\n `Failed to create report: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_release')),\n {\n title: 'Release Report',\n description: 'Release (publish/disseminate) an intelligence report.',\n inputSchema: { id: z.string().describe('Report ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intReleaseReport: Record<string, unknown>;\n }>(ops.RELEASE_REPORT, { id });\n return jsonResult(data.intReleaseReport);\n } catch (error) {\n ctx.logger.error('intelwatchtower reports_release failed', { error: String(error) });\n return errorResult(\n `Failed to release report: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower health tool.\n *\n * Surface (1): health. Maps to the @public intHealth query (no auth required) —\n * a liveness/identity probe for the IntelWatchtower subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'IntelWatchtower Health Check',\n description:\n 'Public liveness/identity probe for the IntelWatchtower subgraph (intHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ intHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.intHealth });\n } catch (error) {\n ctx.logger.error('intelwatchtower health failed', { error: String(error) });\n return errorResult(\n `IntelWatchtower health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_SOURCES, LIST_MISSIONS, LIST_ALERTS } from './operations.js';\n\n/**\n * Read-only IntelWatchtower MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerIntelwatchtowerResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const sourcesUri = track(mcpResourceUri(ctx.productName, 'sources'));\n const missionsUri = track(mcpResourceUri(ctx.productName, 'missions'));\n const alertsUri = track(mcpResourceUri(ctx.productName, 'alerts'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'intelwatchtower-schema',\n schemaUri,\n {\n title: 'IntelWatchtower Domain Schema',\n description:\n 'Overview of the IntelWatchtower military & intelligence domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# IntelWatchtower Domain (Overview)\n\nUnified military & intelligence platform: multi-source collection + all-source\nfusion powering a real-time common operating picture.\n\n## Collection domain\n- IntSource — a collection source/sensor (has feeds + tasking orders)\n- IntFeed — an ingest feed attached to a source\n- IntCollectionRequirement — an intelligence gap to be satisfied (has tasks)\n- IntCollectionTask — a tasking order dispatched to a source\n- IntObservation — raw collected reporting\n\n## Fusion domain\n- IntMission — an operation (has cases + reports)\n- IntEntity — a tracked entity (has indicators + alerts)\n- IntIndicator — an observable / indicator of interest\n- IntAlert — a threat alert (triage lifecycle)\n- IntCase (+IntCaseEntry) — an investigation case + entries\n- IntReport — an intelligence report\n\n## Key enums\n- IntClassification: UNCLASSIFIED, CONFIDENTIAL, SECRET, TOP_SECRET\n- IntConfidence: LOW, MODERATE, HIGH, CONFIRMED\n- IntPriority: ROUTINE, PRIORITY, IMMEDIATE, FLASH\n- IntSourceDiscipline: HUMINT, SIGINT, GEOINT, IMINT, MASINT, OSINT, CYBER\n- IntSourceStatus: PROVISIONING, ACTIVE, DEGRADED, OFFLINE, RETIRED\n- IntTaskStatus: PENDING, DISPATCHED, COLLECTING, COMPLETED, CANCELLED, FAILED\n- IntEntityType: PERSON, ORGANIZATION, LOCATION, FACILITY, VESSEL, AIRCRAFT, VEHICLE, NETWORK_NODE, EVENT\n- IntIndicatorType: IP_ADDRESS, DOMAIN, URL, EMAIL, FILE_HASH, SIGNATURE, BEHAVIOR, GEO_COORDINATE\n- IntAlertSeverity: INFO, LOW, MEDIUM, HIGH, CRITICAL\n- IntAlertStatus: OPEN, TRIAGED, ESCALATED, RESOLVED, FALSE_POSITIVE, SUPPRESSED\n- IntMissionStatus: PLANNING, READY, ACTIVE, PAUSED, COMPLETED, ABORTED\n- IntCaseStatus: OPEN, ACTIVE, PENDING_REVIEW, CLOSED, ARCHIVED\n- IntReportType: SITREP, INTSUM, SPOT_REPORT, ASSESSMENT, WARNING\n- IntReportStatus: DRAFT, IN_REVIEW, RELEASED, RECALLED, ARCHIVED\n- IntRequirementStatus: DRAFT, SUBMITTED, APPROVED, TASKED, SATISFIED, CANCELLED\n\n## Tool groups\nsources, feeds, requirements, tasks, observations (collection);\nmissions, entities, indicators, alerts, cases, reports (fusion); plus a public health probe.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://sources — collection-source registry\n server.registerResource(\n 'intelwatchtower-sources',\n sourcesUri,\n {\n title: 'IntelWatchtower Source Registry',\n description: 'The first 50 collection sources/sensors in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${sourcesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ intListSources: unknown }>(LIST_SOURCES, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: sourcesUri,\n text: JSON.stringify(data.intListSources, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: sourcesUri,\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 // <product>://missions — mission roster\n server.registerResource(\n 'intelwatchtower-missions',\n missionsUri,\n {\n title: 'IntelWatchtower Mission Roster',\n description: 'All missions in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${missionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ intListMissions: unknown }>(\n LIST_MISSIONS,\n {},\n );\n return {\n contents: [\n {\n uri: missionsUri,\n text: JSON.stringify(data.intListMissions, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: missionsUri,\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 // <product>://alerts — open threat alerts\n server.registerResource(\n 'intelwatchtower-alerts',\n alertsUri,\n {\n title: 'IntelWatchtower Open Alerts',\n description: 'The first 50 OPEN threat alerts in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${alertsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ intListAlerts: unknown }>(LIST_ALERTS, {\n status: 'OPEN',\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: alertsUri,\n text: JSON.stringify(data.intListAlerts, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: alertsUri,\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 { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * IntelWatchtower MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerIntelwatchtowerPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const collectionName = track(mcpPromptName(p, 'collection-setup'));\n const triageName = track(mcpPromptName(p, 'fusion-triage'));\n\n // <product>-collection-setup — stand up the collection pipeline\n server.registerPrompt(\n collectionName,\n {\n title: 'Collection Setup',\n description:\n 'Guide for standing up a collection pipeline end to end: register a source, raise a requirement, dispatch a tasking order, and record the resulting observation.',\n argsSchema: {\n discipline: z.string().optional().describe('Collection discipline (HUMINT, SIGINT, ...)'),\n missionId: z.string().optional().describe('Mission to bind the requirement to'),\n },\n },\n ({ discipline, missionId }) => {\n ctx.logger.debug(`Prompt ${collectionName} called`, { discipline, missionId });\n const disciplineNote = discipline\n ? `Use discipline ${discipline}.`\n : 'Help the user pick an IntSourceDiscipline.';\n const missionNote = missionId\n ? `Bind the requirement to mission \"${missionId}\".`\n : `Optionally create or pick a mission first with ${p}_missions_create / ${p}_missions_list.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me stand up an IntelWatchtower collection pipeline.\n\n1. **Register Source**: Use ${p}_sources_create. ${disciplineNote} Set a name, classification, region, and reliability.\n2. **(Optional) Attach Feed**: Use ${p}_feeds_create to wire an ingest feed (endpoint + format) to the source.\n3. **Raise Requirement**: Use ${p}_requirements_create. ${missionNote} Set a title, priority, and dueDate.\n4. **Dispatch Tasking**: Use ${p}_tasks_create with the source and requirement IDs and a collection window.\n5. **Advance Tasking**: Use ${p}_tasks_transition to move the task PENDING → DISPATCHED → COLLECTING → COMPLETED.\n6. **Record Observation**: Use ${p}_observations_record with the source/task IDs, a summary, and observedAt.\n\nShow results at each step and confirm before dispatching tasking.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-fusion-triage — all-source fusion + alert triage\n server.registerPrompt(\n triageName,\n {\n title: 'Fusion & Alert Triage',\n description:\n 'All-source fusion workflow: review tracked entities and indicators, triage open threat alerts, open an investigation case, and disseminate a report.',\n argsSchema: {\n entityId: z.string().optional().describe('Entity to focus the triage on'),\n },\n },\n ({ entityId }) => {\n ctx.logger.debug(`Prompt ${triageName} called`, { entityId });\n const entityNote = entityId\n ? `Focus on entity \"${entityId}\" (use ${p}_entities_get for its indicators + alerts).`\n : `First list entities with ${p}_entities_list and pick one to focus on.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run IntelWatchtower all-source fusion + alert triage. ${entityNote}\n\n1. **Entities & Indicators**: Use ${p}_entities_list and ${p}_indicators_list to review tracked entities and their observables.\n2. **Open Alerts**: Use ${p}_alerts_list filtered by status=OPEN (and severity) to find what needs triage.\n3. **Triage**: For each alert use ${p}_alerts_transition (OPEN → TRIAGED → ESCALATED/RESOLVED/FALSE_POSITIVE), recording triageNotes.\n4. **Open a Case**: For escalations, use ${p}_cases_create, then ${p}_cases_add_entry to log findings/evidence.\n5. **Report**: Use ${p}_reports_create to draft an INTSUM/ASSESSMENT, then ${p}_reports_release to disseminate.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * IntelWatchtower module — domain module for the future-products ecosystem program.\n *\n * Covers all 11 @key entities of wspace-intelwatchtower-svc grouped into\n * per-entity sub-APIs across two domains:\n * - collection: sources, feeds, requirements, tasks, observations\n * - fusion: missions, entities, indicators, alerts, cases, reports\n * Mirrors the rich kadaikodi/crewfoundry modules' structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/wspace/intelwatchtower/wspace-intelwatchtower-svc/\n * (Hive service name `intelwatchtower`). All operations run against the\n * WORKSPACE gateway; the @public intHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSourceTools } from './tools/sources.js';\nimport { registerFeedTools } from './tools/feeds.js';\nimport { registerRequirementTools } from './tools/requirements.js';\nimport { registerTaskTools } from './tools/tasks.js';\nimport { registerObservationTools } from './tools/observations.js';\nimport { registerMissionTools } from './tools/missions.js';\nimport { registerEntityTools } from './tools/entities.js';\nimport { registerIndicatorTools } from './tools/indicators.js';\nimport { registerAlertTools } from './tools/alerts.js';\nimport { registerCaseTools } from './tools/cases.js';\nimport { registerReportTools } from './tools/reports.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerIntelwatchtowerResources } from './resources.js';\nimport { registerIntelwatchtowerPrompts } from './prompts.js';\n\nconst intelwatchtowerModule: McpModule = {\n id: 'intelwatchtower',\n version: '0.0.1',\n displayName: 'IntelWatchtower',\n dependsOn: ['auth'],\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 registerSourceTools(server, ctx, trackTool);\n registerFeedTools(server, ctx, trackTool);\n registerRequirementTools(server, ctx, trackTool);\n registerTaskTools(server, ctx, trackTool);\n registerObservationTools(server, ctx, trackTool);\n registerMissionTools(server, ctx, trackTool);\n registerEntityTools(server, ctx, trackTool);\n registerIndicatorTools(server, ctx, trackTool);\n registerAlertTools(server, ctx, trackTool);\n registerCaseTools(server, ctx, trackTool);\n registerReportTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerIntelwatchtowerResources(server, ctx, trackResource);\n registerIntelwatchtowerPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default intelwatchtowerModule;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/intelwatchtower/operations.ts","../../../src/modules/intelwatchtower/tools/shared.ts","../../../src/modules/intelwatchtower/tools/sources.ts","../../../src/modules/intelwatchtower/tools/feeds.ts","../../../src/modules/intelwatchtower/tools/requirements.ts","../../../src/modules/intelwatchtower/tools/tasks.ts","../../../src/modules/intelwatchtower/tools/observations.ts","../../../src/modules/intelwatchtower/tools/missions.ts","../../../src/modules/intelwatchtower/tools/entities.ts","../../../src/modules/intelwatchtower/tools/indicators.ts","../../../src/modules/intelwatchtower/tools/alerts.ts","../../../src/modules/intelwatchtower/tools/cases.ts","../../../src/modules/intelwatchtower/tools/reports.ts","../../../src/modules/intelwatchtower/tools/health.ts","../../../src/modules/intelwatchtower/resources.ts","../../../src/modules/intelwatchtower/prompts.ts","../../../src/modules/intelwatchtower/index.ts"],"names":["z"],"mappings":";;;;;;;;;;;AA8BO,IAAM,gBAAA,GAAN,cAA+B,KAAA,CAAM;AAAA,EACjB,KAAA;AAAA,EAEzB,WAAA,CAAY,SAAiB,KAAA,EAAiB;AAC5C,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AACZ,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AACF,CAAA;;;AC1BA,IAAM,oBAAA,GAAuB,EAAA;AAE7B,SAAS,cAAA,CAAe,MAAc,IAAA,EAA8C;AAClF,EAAA,IAAuB,IAAA,CAAK,MAAA,GAAS,oBAAA,EAAsB;AACzD,IAAA,MAAM,IAAI,gBAAA;AAAA,MACR,CAAA,WAAA,EAAc,IAAI,CAAA,UAAA,EAAa,oBAAoB,CAAA,8CAAA;AAAA,KACrD;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAMO,SAAS,WAAA,CAAY,gBAAwB,KAAA,EAAyB;AAC3E,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,iBAAiB,sCAAsC,CAAA;AAAA,EACnE;AACA,EAAA,MAAM,IAAA,GAAO,CAAC,WAAA,EAAa,GAAG,KAAK,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC7D,EAAA,OAAO,cAAA,CAAe,IAAY,CAAA;AACpC;AAMO,SAAS,cAAA,CAAe,gBAAwB,KAAA,EAAyB;AAC9E,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,iBAAiB,yCAAyC,CAAA;AAAA,EACtE;AACA,EAAA,OAAO,CAAA,EAAG,WAAW,CAAA,GAAA,EAAM,KAAA,CAAM,OAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAC5D;AAMO,SAAS,aAAA,CAAc,gBAAwB,KAAA,EAAyB;AAC7E,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,iBAAiB,wCAAwC,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,CAAC,aAAa,GAAG,KAAK,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACzD;;;ACfO,SAAS,UAAA,CAAW,MAAe,UAAA,EAAkD;AAC1F,EAAA,MAAM,MAAA,GAAqB;AAAA,IACzB,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA,EAAG;AAAA,GACjE;AAIA,EAAA,OAAO,MAAA;AACT;AAaO,SAAS,WAAA,CAAY,SAAiB,IAAA,EAA2B;AACtE,EAAA,MAAM,IAAA,GAAO,IAAA,GAAO,CAAA,EAAG,OAAO;;AAAA,MAAA,EAAa,IAAI,CAAA,CAAA,GAAK,OAAA;AACpD,EAAA,OAAO,EAAE,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,IAAA,EAAK;AAC5D;;;ACnCA,IAAM,SAAA,GAAY,CAAA,2BAAA,CAAA;AAMX,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA,CAAA;AAKtB,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA,CAAA;AAK3B,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA,CAAA;AAS3B,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,CAAA;AAKvB,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA,CAAA;AAKtB,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA,CAAA;AAKzB,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA,CAAA;AAMrB,IAAM,iBAAA,GAAoB;AAAA;AAAA,CAAA;AAI1B,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA,CAAA;AAStB,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA,MAAA,EAGlB,aAAa;AAAA,cAAA,EACL,WAAW,CAAA;AAAA,cAAA,EACX,WAAW,CAAA;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOZ,aAAa,CAAA;AAAA,MAAA,EACrB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,aAAA,GAAgB;AAAA;AAAA,qCAAA,EAEU,aAAa,CAAA;AAAA;AAAA,CAAA;AAI7C,IAAM,aAAA,GAAgB;AAAA;AAAA,8CAAA,EAEmB,aAAa,CAAA;AAAA;AAAA,CAAA;AAItD,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA,CAAA;AAUtB,IAAM,WAAA,GAAc;AAAA;AAAA,mCAAA,EAEU,WAAW,CAAA;AAAA;AAAA,CAAA;AAQzC,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA,MAAA,EAGzB,kBAAkB;AAAA,cAAA,EACV,WAAW,CAAA;AAAA;AAAA;AAAA,CAAA;AAKpB,IAAM,kBAAA,GAAqB;AAAA;AAAA,0CAAA,EAEU,kBAAkB,CAAA;AAAA;AAAA,CAAA;AAQvD,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAaV,WAAW,CAAA;AAAA,MAAA,EACnB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,WAAA,GAAc;AAAA;AAAA,mCAAA,EAEU,WAAW,CAAA;AAAA;AAAA,CAAA;AAIzC,IAAM,eAAA,GAAkB;AAAA;AAAA,kDAAA,EAEqB,WAAW,CAAA;AAAA;AAAA,CAAA;AAQxD,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAajB,kBAAkB,CAAA;AAAA,MAAA,EAC1B,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,kBAAA,GAAqB;AAAA;AAAA,0CAAA,EAEU,kBAAkB,CAAA;AAAA;AAAA,CAAA;AAQvD,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA,MAAA,EAGnB,cAAc;AAAA,cAAA,EACN,WAAW,CAAA;AAAA,gBAAA,EACT,aAAa,CAAA;AAAA;AAAA;AAAA,CAAA;AAKxB,IAAM,aAAA,GAAgB;AAAA;AAAA,uCAAA,EAEY,cAAc,CAAA;AAAA;AAAA,CAAA;AAIhD,IAAM,cAAA,GAAiB;AAAA;AAAA,sCAAA,EAEU,cAAc,CAAA;AAAA;AAAA,CAAA;AAI/C,IAAM,kBAAA,GAAqB;AAAA;AAAA,qDAAA,EAEqB,cAAc,CAAA;AAAA;AAAA,CAAA;AAQ9D,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA,MAAA,EAGlB,aAAa;AAAA,mBAAA,EACA,gBAAgB,CAAA;AAAA,eAAA,EACpB,YAAY,CAAA;AAAA;AAAA;AAAA,CAAA;AAKtB,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOb,aAAa,CAAA;AAAA,MAAA,EACrB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,aAAA,GAAgB;AAAA;AAAA,qCAAA,EAEU,aAAa,CAAA;AAAA;AAAA,CAAA;AAI7C,IAAM,aAAA,GAAgB;AAAA;AAAA,8CAAA,EAEmB,aAAa,CAAA;AAAA;AAAA,CAAA;AAQtD,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,EAOvB,gBAAgB;AAAA;AAAA;AAAA,CAAA;AAKjB,IAAM,gBAAA,GAAmB;AAAA;AAAA,wCAAA,EAEU,gBAAgB,CAAA;AAAA;AAAA,CAAA;AAInD,IAAM,oBAAA,GAAuB;AAAA;AAAA,sCAAA,EAEI,gBAAgB,CAAA;AAAA;AAAA,CAAA;AAQjD,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAaX,YAAY,CAAA;AAAA,MAAA,EACpB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,WAAA,GAAc;AAAA;AAAA,mCAAA,EAEU,YAAY,CAAA;AAAA;AAAA,CAAA;AAI1C,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,EAOxB,YAAY;AAAA;AAAA;AAAA,CAAA;AASb,IAAM,QAAA,GAAW;AAAA;AAAA;AAAA,MAAA,EAGhB,WAAW;AAAA,eAAA,EACF,YAAY,CAAA;AAAA,gBAAA,EACX,iBAAiB,CAAA;AAAA;AAAA;AAAA,CAAA;AAK5B,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOV,WAAW,CAAA;AAAA,MAAA,EACnB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,WAAA,GAAc;AAAA;AAAA,mCAAA,EAEU,WAAW,CAAA;AAAA;AAAA,CAAA;AAIzC,IAAM,cAAA,GAAiB;AAAA;AAAA,qCAAA,EAES,iBAAiB,CAAA;AAAA;AAAA,CAAA;AAIjD,IAAM,UAAA,GAAa;AAAA;AAAA,4BAAA,EAEI,WAAW,CAAA;AAAA;AAAA,CAAA;AAQlC,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAaZ,aAAa,CAAA;AAAA,MAAA,EACrB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,aAAA,GAAgB;AAAA;AAAA,qCAAA,EAEU,aAAa,CAAA;AAAA;AAAA,CAAA;AAI7C,IAAM,cAAA,GAAiB;AAAA;AAAA,gCAAA,EAEI,aAAa,CAAA;AAAA;AAAA,CAAA;AAQxC,IAAM,MAAA,GAAS;AAAA;AAAA;AAAA;AAAA,CAAA;ACjcf,IAAM,kBAAA,GAAqBA,KAAAA,CAC/B,IAAA,CAAK,CAAC,cAAA,EAAgB,QAAA,EAAU,YAAA,EAAc,cAAc,CAAC,CAAA,CAC7D,QAAA,CAAS,mDAAmD,CAAA;AAExD,IAAM,cAAA,GAAiBA,KAAAA,CAC3B,IAAA,CAAK,CAAC,WAAA,EAAa,MAAA,EAAQ,KAAA,EAAO,UAAU,CAAC,CAAA,CAC7C,QAAA,CAAS,2CAA2C,CAAA;AAEhD,IAAM,YAAA,GAAeA,KAAAA,CACzB,IAAA,CAAK,CAAC,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,SAAS,CAAC,CAAA,CAClD,QAAA,CAAS,8CAA8C,CAAA;AAEnD,IAAM,iBAAA,GAAoBA,KAAAA,CAC9B,IAAA,CAAK,CAAC,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA,CAClD,QAAA,CAAS,4BAA4B,CAAA;AAEjC,IAAM,eAAA,GAAkBA,KAAAA,CAC5B,IAAA,CAAK,CAAC,WAAA,EAAa,gBAAA,EAAkB,MAAA,EAAQ,UAAA,EAAY,YAAA,EAAc,SAAS,CAAC,CAAA,CACjF,SAAS,2CAA2C,CAAA;AAEhD,IAAM,cAAA,GAAiBA,KAAAA,CAC3B,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,gBAAgB,CAAC,CAAA,CAC/D,QAAA,CAAS,2CAA2C,CAAA;AAEhD,IAAM,cAAA,GAAiBA,MAC3B,IAAA,CAAK;AAAA,EACJ,UAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,0BAA0B,CAAA;AAE/B,IAAM,cAAA,GAAiBA,KAAAA,CAC3B,IAAA,CAAK,CAAC,WAAA,EAAa,cAAA,EAAgB,OAAA,EAAS,OAAO,CAAC,CAAA,CACpD,QAAA,CAAS,wCAAwC,CAAA;AAE7C,IAAM,iBAAA,GAAoBA,MAC9B,IAAA,CAAK;AAAA,EACJ,UAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,iDAAiD,CAAA;AAEtD,IAAM,iBAAA,GAAoBA,KAAAA,CAC9B,IAAA,CAAK,CAAC,SAAA,EAAW,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,UAAA,EAAY,OAAO,CAAC,CAAA,CACtE,SAAS,+BAA+B,CAAA;AAEpC,IAAM,gBAAA,GAAmBA,KAAAA,CAC7B,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,UAAU,CAAC,CAAA,CAC/D,QAAA,CAAS,4CAA4C,CAAA;AAEjD,IAAM,cAAA,GAAiBA,KAAAA,CAC3B,IAAA,CAAK,CAAC,YAAA,EAAc,QAAA,EAAU,QAAA,EAAU,aAAA,EAAe,SAAS,CAAC,CAAA,CACjE,QAAA,CAAS,wCAAwC,CAAA;AAE7C,IAAM,qBAAA,GAAwBA,KAAAA,CAClC,IAAA,CAAK,CAAC,UAAA,EAAY,WAAA,EAAa,OAAA,EAAS,WAAA,EAAa,WAAA,EAAa,QAAQ,CAAC,CAAA,CAC3E,SAAS,8CAA8C,CAAA;AAEnD,IAAM,oBAAA,GAAuBA,KAAAA,CACjC,IAAA,CAAK,CAAC,SAAS,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,QAAQ,CAAC,CAAA,CACxE,SAAS,0CAA0C,CAAA;AAE/C,IAAM,gBAAA,GAAmBA,KAAAA,CAC7B,IAAA,CAAK,CAAC,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,cAAA,EAAgB,SAAS,CAAC,CAAA,CACjE,QAAA,CAAS,uCAAuC,CAAA;AAE5C,IAAM,cAAA,GAAiBA,KAAAA,CAC3B,IAAA,CAAK,CAAC,WAAA,EAAa,YAAA,EAAc,WAAA,EAAa,YAAA,EAAc,QAAA,EAAU,SAAS,CAAC,CAAA,CAChF,SAAS,kDAAkD,CAAA;AAGvD,IAAM,UAAA,GAAaA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAGnD,IAAM,WAAA,GAAcA,KAAAA,CACxB,MAAA,EAAO,CACP,SAAS,uEAAuE,CAAA;AAG5E,SAAS,eAAA,CACd,OACA,MAAA,EACiD;AACjD,EAAA,MAAM,aAAkD,EAAC;AACzD,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,UAAA,CAAW,KAAA,GAAQ,KAAA;AAC5C,EAAA,IAAI,MAAA,KAAW,MAAA,EAAW,UAAA,CAAW,MAAA,GAAS,MAAA;AAC9C,EAAA,OAAO,OAAO,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA,GAAS,IAAI,UAAA,GAAa,MAAA;AAC3D;;;AC7FO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAAA,IACjD;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EACE,wFAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,WAAW,CAAA;AAAE,KACtD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,UAAA,EAAY,EAAE,EAAA,EAAI,CAAA;AACzB,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,SAAkB,WAAA,CAAY,CAAA,OAAA,EAAU,EAAE,CAAA,UAAA,CAAY,CAAA;AAChE,QAAA,OAAO,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,MAClC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,2HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAA,EAAY,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,QACtF,MAAA,EAAQ,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QAC3E,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AAC/C,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc;AAAA,UACnB,UAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EACE,gHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACtD,UAAA,EAAY,oBAAA,CAAqB,QAAA,CAAS,6CAA6C,CAAA;AAAA,QACvF,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC/D,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAChE,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QACvE,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sCAAsC,CAAA;AAAA,QACxF,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QAChF,MAAA,EAAQ,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,QACpF,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB;AAAA;AACvE,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAM,UAAA,EAAW;AAC1D,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,aAAA,EAAe,EAAE,KAAA,EAAO,CAAA;AAC/B,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EACE,kIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,WAAW,CAAA;AAAA,QACnC,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC3D,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QAC3D,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,UAAA,EAAY,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QACzE,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QAC/E,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,QACvD,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2BAA2B,CAAA;AAAA,QAC7E,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACrE,MAAA,EAAQ,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACzE,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc;AAAA;AAC9D,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,YAAY,uEAAkE,CAAA;AAAA,QACvF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,aAAA,EAAe,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AACnC,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EAAa,mDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,WAAW,CAAA;AAAE,KACtD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,aAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,WAAW,EAAE,EAAA,EAAI,IAAA,CAAK,eAAA,EAAiB,IAAI,CAAA;AAAA,MACpD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACjNO,SAAS,iBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,gIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAAA,QACvD,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,mBAAmB,CAAA;AAAA,QACpD,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QACpE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,QAChF,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAS,CAAE,QAAA;AAAA,UAChC;AAAA;AACF;AACF,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,MAAM,QAAA,EAAU,MAAA,EAAQ,QAAO,KAAM;AACtD,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,QAAA,EAAU,IAAA,EAAK;AACxD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AAEzC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACxCO,SAAS,wBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,IACvD;AAAA,MACE,KAAA,EAAO,8BAAA;AAAA,MACP,WAAA,EACE,6IAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACvE,MAAA,EAAQ,qBAAA,CAAsB,QAAA,EAAS,CAAE,SAAS,8BAA8B;AAAA;AAClF,KACF;AAAA,IACA,OAAO,EAAE,SAAA,EAAW,MAAA,EAAO,KAAM;AAC/B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,iBAAA,EAAmB,EAAE,SAAA,EAAW,MAAA,EAAQ,CAAA;AAC/C,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,gCAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,+BAAA;AAAA,MACP,WAAA,EACE,2FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,mBAAmB,CAAA;AAAA,QACrD,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAC9E,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACzE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC7D,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACxE,OAAA,EAAS,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QAC9D,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB;AAAA;AACvE,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,kBAAA,EAAoB,EAAE,KAAA,EAAO,CAAA;AACpC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4CAAA,EAA8C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvF,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AClFO,SAAS,iBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,YAAY,CAAC,CAAA;AAAA,IAChD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EACE,6GAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,QAC/E,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACrE,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QAClE,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,aAAA,EAAe,UAAU,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AAC5D,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,UAAA,EAAY;AAAA,UACjB,aAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EACE,2IAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,gBAAgB,CAAA;AAAA,QACrD,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACrE,cAAcA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACtE,OAAA,EAAS,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,QAC7E,KAAA,EAAO,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,kCAAkC;AAAA;AAC3E,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,eAAe,YAAA,EAAc,OAAA,EAAS,OAAM,KAAM;AACnE,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,QAAA,EAAS;AAClD,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AAEvC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EACE,2JAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,SAAS,CAAA;AAAA,QACjC,MAAA,EAAQ,cAAA,CAAe,QAAA,CAAS,iBAAiB;AAAA;AACnD,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,eAAA,EAAiB,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAA;AACtC,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,yCAAA,EAA2C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACpF,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACnGO,SAAS,wBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,IACvD;AAAA,MACE,KAAA,EAAO,mBAAA;AAAA,MACP,WAAA,EACE,mHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QACzE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,QACxE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,QACtE,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,UAAU,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACvD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,iBAAA,EAAmB;AAAA,UACxB,QAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,gCAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EACE,yJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,QAC1D,OAAA,EAASA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,oCAAoC,CAAA;AAAA,QACxE,UAAA,EAAY,WAAA,CAAY,QAAA,CAAS,0CAA0C,CAAA;AAAA,QAC3E,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACvE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACrE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC/D,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACjE,OAAA,EAAS,UAAA,CAAW,QAAA,EAAS,CAAE,SAAS,qCAAqC;AAAA;AAC/E,KACF;AAAA,IACA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,QAAA,EAAU,OAAA,EAAS,UAAA,EAAW;AACvE,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAE3C,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,kBAAA,EAAoB,EAAE,KAAA,EAAO,CAAA;AACpC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4CAAA,EAA8C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvF,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AC3FO,SAAS,oBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EAAa,gEAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,YAAY,CAAA;AAAE,KACvD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,EAAA,EAAI,CAAA;AAC1B,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,SAAmB,WAAA,CAAY,CAAA,QAAA,EAAW,EAAE,CAAA,UAAA,CAAY,CAAA;AAClE,QAAA,OAAO,UAAA,CAAW,KAAK,UAAU,CAAA;AAAA,MACnC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EAAa,sEAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,MAAA,EAAQ,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA;AAC1E,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAO,KAAM;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,aAAA,EAAe,EAAE,MAAA,EAAQ,CAAA;AAChC,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EAAa,6CAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,cAAc,CAAA;AAAA,QAC/C,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC/D,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACvE,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAC9E,OAAA,EAAS,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACnE,KAAA,EAAO,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QAC/D,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB;AAAA;AACvE,KACF;AAAA,IACA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,gBAAgB,WAAA,EAAa,OAAA,EAAS,KAAA,EAAO,IAAA,EAAK,KAAM;AAC1F,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAK;AAC9C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,KAAA,EAAO,CAAA;AAChC,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EACE,gHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,YAAY,CAAA;AAAA,QACpC,MAAA,EAAQ,iBAAA,CAAkB,QAAA,CAAS,oBAAoB;AAAA;AACzD,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,kBAAA,EAAoB,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAA;AACzC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4CAAA,EAA8C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvF,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACjHO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EACE,kFAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,WAAW,CAAA;AAAE,KACtD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,UAAA,EAAY,EAAE,EAAA,EAAI,CAAA;AACzB,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,SAAkB,WAAA,CAAY,CAAA,OAAA,EAAU,EAAE,CAAA,UAAA,CAAY,CAAA;AAChE,QAAA,OAAO,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,MAClC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EACE,+GAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QAChE,UAAA,EAAY,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QAC7E,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,QAAO,KAAM;AAC7C,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,aAAA,EAAe;AAAA,UACpB,IAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EACE,8GAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACtD,IAAA,EAAM,cAAA,CAAe,QAAA,CAAS,aAAa,CAAA;AAAA,QAC3C,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,UAAA,EAAY,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QACjF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAChE,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,eAAe,CAAA;AAAA,QAChE,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc,CAAA;AAAA,QAChE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QAC9D,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAChE,UAAA,EAAY,UAAA,CAAW,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,QACjF,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB;AAAA;AACvE,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,IAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAM,IAAA,EAAK;AACpD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,aAAA,EAAe,EAAE,KAAA,EAAO,CAAA;AAC/B,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EAAa,uEAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,WAAW,CAAA;AAAA,QACnC,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC3D,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QAC/E,UAAA,EAAY,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QACnE,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iBAAiB,CAAA;AAAA,QAClE,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,QACxE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QAC3D,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC7D,UAAA,EAAY,UAAA,CAAW,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACpE,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc;AAAA;AAC9D,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,IAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,YAAY,uEAAkE,CAAA;AAAA,QACvF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,aAAA,EAAe,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AACnC,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AC5LO,SAAS,sBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EACE,0FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QACzE,IAAA,EAAM,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACtE,UAAUA,KAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wBAAwB;AAAA;AACpE,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,IAAA,EAAM,UAAS,KAAM;AACtC,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA,CAE9B,eAAA,EAAiB,EAAE,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,CAAA;AACpD,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,IACvD;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,gIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,iBAAA,CAAkB,QAAA,CAAS,qDAAqD,CAAA;AAAA,QACtF,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA,QACnD,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,UAAA,EAAY,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QACjF,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACnE,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC/D,SAAA,EAAW,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAC7E,UAAA,EAAY,WAAA,CAAY,QAAA,EAAS,CAAE,SAAS,gCAAgC;AAAA;AAC9E,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAM,KAAA,EAAM;AACrD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,gBAAA,EAAkB,EAAE,KAAA,EAAO,CAAA;AAClC,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,uBAAuB,CAAC,CAAA;AAAA,IAC3D;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EAAa,yEAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,cAAc,CAAA;AAAE,KACzD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,oBAAA,EAAsB,EAAE,EAAA,EAAI,CAAA;AACnC,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,8CAAA,EAAgD,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACzF,QAAA,OAAO,WAAA;AAAA,UACL,mCAAmC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AClGO,SAAS,kBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAAA,IACjD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,8FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QACzE,QAAA,EAAU,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QACpE,MAAA,EAAQ,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACrE,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,UAAU,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACvD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,WAAA,EAAa;AAAA,UAClB,QAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,6HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,aAAa,CAAA;AAAA,QAC/C,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC/D,QAAA,EAAU,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QAC3E,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC/D,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACrE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACjE,cAAcA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC;AAAA;AAC/E,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AAErD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,IACvD;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,4KAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,QAClC,MAAA,EAAQ,eAAA,CAAgB,QAAA,CAAS,kBAAkB,CAAA;AAAA,QACnD,aAAaA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C;AAAA;AACxF,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAQ,aAAY,KAAM;AACrC,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA,CAE9B,gBAAA,EAAkB,EAAE,EAAA,EAAI,MAAA,EAAQ,WAAA,EAAa,CAAA;AACpD,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AC3HO,SAAS,iBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,IAC/C;AAAA,MACE,KAAA,EAAO,UAAA;AAAA,MACP,WAAA,EACE,iFAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,SAAS,CAAA;AAAE,KACpD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,QAAA,EAAU,EAAE,EAAA,EAAI,CAAA;AACvB,QAAA,IAAI,CAAC,IAAA,CAAK,OAAA,SAAgB,WAAA,CAAY,CAAA,KAAA,EAAQ,EAAE,CAAA,UAAA,CAAY,CAAA;AAC5D,QAAA,OAAO,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,MAChC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,uBAAuB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC/E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,YAAY,CAAC,CAAA;AAAA,IAChD;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EACE,0FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACvE,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QAClE,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AAC9C,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,UAAA,EAAY;AAAA,UACjB,SAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EAAa,qDAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,YAAY,CAAA;AAAA,QAC9C,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,QACtD,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QACrE,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,QAAA,EAAU,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACzE,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC7D,eAAeA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QAC3E,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB;AAAA;AACvE,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,aAAA,KAAkB,KAAA,CAAA,EAAW,KAAA,CAAM,aAAA,GAAgB,aAAA;AACvD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EACE,yJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,SAAS,CAAA;AAAA,QAC5C,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,gDAAgD,CAAA;AAAA,QACjF,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA,QAClD,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gDAAgD;AAAA;AACzF,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,QAAO,KAAM;AACxC,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAK;AAC5D,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AAEzC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,KAAA,EAAO,CAAA;AAChC,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAAA,IACjD;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EAAa,8BAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,SAAS,CAAA;AAAE,KACpD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,UAAA,EAAY,EAAE,EAAA,EAAI,CAAA;AACzB,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACpKO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,kGAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACvE,IAAA,EAAM,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,QACxE,MAAA,EAAQ,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACtE,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QACpE,MAAA,EAAQA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAAA;AAC9E,KACF;AAAA,IACA,OAAO,EAAE,SAAA,EAAW,MAAM,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACpD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc;AAAA,UACnB,SAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA,EAAY,eAAA,CAAgB,KAAA,EAAO,MAAM;AAAA,SAC1C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EACE,8JAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,cAAc,CAAA;AAAA,QAChD,IAAA,EAAM,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,QAC/E,SAASA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QAC/D,MAAMA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QACvD,cAAA,EAAgB,kBAAA,CAAmB,QAAA,EAAS,CAAE,QAAA;AAAA,UAC5C;AAAA,SACF;AAAA,QACA,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACvE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAC3D,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACjE,QAAQA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,QACpF,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB;AAAA;AACvE,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,aAAA,EAAe,EAAE,KAAA,EAAO,CAAA;AAC/B,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EAAa,uDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,WAAW,CAAA;AAAE,KACtD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,EAAA,EAAI,CAAA;AAC7B,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;ACxHO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,IAC5C;AAAA,MACE,KAAA,EAAO,8BAAA;AAAA,MACP,WAAA,EACE,0GAAA;AAAA,MACF,aAAa;AAAC,KAChB;AAAA,IACA,YAAY;AACV,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAAmC,MAAA,EAAQ,EAAE,CAAA;AAClF,QAAA,OAAO,WAAW,EAAE,EAAA,EAAI,MAAM,MAAA,EAAQ,IAAA,CAAK,WAAW,CAAA;AAAA,MACxD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,+BAAA,EAAiC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC1E,QAAA,OAAO,WAAA;AAAA,UACL,wCAAwC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAChG;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;AC1BO,SAAS,gCAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,YAAY,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AACjE,EAAA,MAAM,aAAa,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,SAAS,CAAC,CAAA;AACnE,EAAA,MAAM,cAAc,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,UAAU,CAAC,CAAA;AACrE,EAAA,MAAM,YAAY,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AAGjE,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,wBAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,+BAAA;AAAA,MACP,WAAA,EACE,yHAAA;AAAA,MACF,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,SAAS,CAAA,UAAA,CAAY,CAAA;AAClD,MAAA,MAAM,MAAA,GAAS,CAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AA0Cf,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,CAAC,EAAE,GAAA,EAAK,WAAW,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,YAAA,EAAc;AAAA,OACrE;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,yBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,iCAAA;AAAA,MACP,WAAA,EAAa,iEAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,UAAU,CAAA,UAAA,CAAY,CAAA;AACnD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAqC,YAAA,EAAc;AAAA,UACtF,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AAAE,SACpC,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,UAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,cAAA,EAAgB,MAAM,CAAC,CAAA;AAAA,cACjD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,UAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,0BAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,gCAAA;AAAA,MACP,WAAA,EAAa,sCAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,WAAW,CAAA,UAAA,CAAY,CAAA;AACpD,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UACnC,aAAA;AAAA,UACA;AAAC,SACH;AACA,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,WAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,eAAA,EAAiB,MAAM,CAAC,CAAA;AAAA,cAClD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,WAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,wBAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,6BAAA;AAAA,MACP,WAAA,EAAa,yDAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,SAAS,CAAA,UAAA,CAAY,CAAA;AAClD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAoC,WAAA,EAAa;AAAA,UACpF,MAAA,EAAQ,MAAA;AAAA,UACR,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AAAE,SACpC,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,SAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,aAAA,EAAe,MAAM,CAAC,CAAA;AAAA,cAChD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,SAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACjMO,SAAS,8BAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,IAAI,GAAA,CAAI,WAAA;AACd,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,aAAA,CAAc,CAAA,EAAG,kBAAkB,CAAC,CAAA;AACjE,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,aAAA,CAAc,CAAA,EAAG,eAAe,CAAC,CAAA;AAG1D,EAAA,MAAA,CAAO,cAAA;AAAA,IACL,cAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,iKAAA;AAAA,MACF,UAAA,EAAY;AAAA,QACV,YAAYA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,QACxF,WAAWA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC;AAAA;AAChF,KACF;AAAA,IACA,CAAC,EAAE,UAAA,EAAY,SAAA,EAAU,KAAM;AAC7B,MAAA,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,OAAA,EAAU,cAAc,WAAW,EAAE,UAAA,EAAY,WAAW,CAAA;AAC7E,MAAA,MAAM,cAAA,GAAiB,UAAA,GACnB,CAAA,eAAA,EAAkB,UAAU,CAAA,CAAA,CAAA,GAC5B,4CAAA;AACJ,MAAA,MAAM,WAAA,GAAc,YAChB,CAAA,iCAAA,EAAoC,SAAS,OAC7C,CAAA,+CAAA,EAAkD,CAAC,sBAAsB,CAAC,CAAA,eAAA,CAAA;AAC9E,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAM,CAAA;;AAAA,4BAAA,EAEU,CAAC,oBAAoB,cAAc,CAAA;AAAA,mCAAA,EAC5B,CAAC,CAAA;AAAA,8BAAA,EACN,CAAC,yBAAyB,WAAW,CAAA;AAAA,6BAAA,EACtC,CAAC,CAAA;AAAA,4BAAA,EACF,CAAC,CAAA;AAAA,+BAAA,EACE,CAAC,CAAA;;AAAA,iEAAA;AAAA;AAGtB;AACF;AACF,OACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,cAAA;AAAA,IACL,UAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EACE,sJAAA;AAAA,MACF,UAAA,EAAY;AAAA,QACV,UAAUA,KAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+BAA+B;AAAA;AAC1E,KACF;AAAA,IACA,CAAC,EAAE,QAAA,EAAS,KAAM;AAChB,MAAA,GAAA,CAAI,OAAO,KAAA,CAAM,CAAA,OAAA,EAAU,UAAU,CAAA,OAAA,CAAA,EAAW,EAAE,UAAU,CAAA;AAC5D,MAAA,MAAM,UAAA,GAAa,WACf,CAAA,iBAAA,EAAoB,QAAQ,UAAU,CAAC,CAAA,2CAAA,CAAA,GACvC,4BAA4B,CAAC,CAAA,wCAAA,CAAA;AACjC,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAM,yDAAyD,UAAU;;AAAA,kCAAA,EAEnD,CAAC,sBAAsB,CAAC,CAAA;AAAA,wBAAA,EAClC,CAAC,CAAA;AAAA,kCAAA,EACS,CAAC,CAAA;AAAA,yCAAA,EACM,CAAC,uBAAuB,CAAC,CAAA;AAAA,mBAAA,EAC/C,CAAC,uDAAuD,CAAC,CAAA;;AAAA,+CAAA;AAAA;AAGlE;AACF;AACF,OACF;AAAA,IACF;AAAA,GACF;AACF;;;AChEA,IAAM,qBAAA,GAAmC;AAAA,EACvC,EAAA,EAAI,iBAAA;AAAA,EACJ,OAAA,EAAS,OAAA;AAAA,EACT,WAAA,EAAa,iBAAA;AAAA,EACb,SAAA,EAAW,CAAC,MAAM,CAAA;AAAA,EAClB,YAAA,EAAc,EAAE,KAAA,EAAO,EAAC,EAAG,WAAW,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAAA,EAEtD,QAAA,CAAS,QAAmB,GAAA,EAAqC;AAC/D,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,YAAsB,EAAC;AAC7B,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAsB;AACvC,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KAAwB;AAC7C,MAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAClB,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAsB;AACzC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AACd,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAEA,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC1C,IAAA,iBAAA,CAAkB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACxC,IAAA,wBAAA,CAAyB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC/C,IAAA,iBAAA,CAAkB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACxC,IAAA,wBAAA,CAAyB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC/C,IAAA,oBAAA,CAAqB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC3C,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC1C,IAAA,sBAAA,CAAuB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC7C,IAAA,kBAAA,CAAmB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACzC,IAAA,iBAAA,CAAkB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACxC,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC1C,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAE1C,IAAA,gCAAA,CAAiC,MAAA,EAAQ,KAAK,aAAa,CAAA;AAC3D,IAAA,8BAAA,CAA+B,MAAA,EAAQ,KAAK,WAAW,CAAA;AAEvD,IAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAQ;AAAA,EACrC;AACF,CAAA;AAEA,IAAO,uBAAA,GAAQ","file":"index.cjs","sourcesContent":["/**\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 * 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/**\n * Name-based hint heuristics for MCP `annotations` (readOnlyHint /\n * destructiveHint). Used by tool-governance.ts to auto-fill annotations for\n * the fleet of product modules that call `server.registerTool` directly\n * (bypassing the `registerTool()` core helper) and so never set them\n * explicitly today (BOFF-3903). Deliberately conservative — matched against\n * whole `_`-delimited segments so e.g. `timeentries_delete` and\n * `pomodoro_delete_goal` match, but a hypothetical `undeletable_check`\n * would not.\n *\n * A module can always override the inference by passing an explicit\n * `annotations` object to `registerTool()` / `server.registerTool()`.\n */\nconst DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;\nconst READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;\n\n/** True when a tool name looks destructive (irreversibly deletes data) by naming convention. */\nexport function inferDestructiveHint(toolName: string): boolean {\n return DESTRUCTIVE_NAME_SEGMENT.test(toolName);\n}\n\n/**\n * True when a tool name looks read-only by naming convention. Never true for\n * a name that also looks destructive (a tool can't be both).\n */\nexport function inferReadOnlyHint(toolName: string): boolean {\n return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);\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';\nimport type { ToolAnnotations } from './tool-governance.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 * Explicit MCP annotations (readOnlyHint / destructiveHint / ...). Optional\n * — when omitted, `wrapServerWithToolGovernance` (applied centrally in\n * `createMcpServer`) infers them from the tool name. Set this to override\n * the inference for a tool whose name doesn't match the naming convention.\n */\n annotations?: ToolAnnotations;\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 ...(metadata.annotations ? { annotations: metadata.annotations } : {}),\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 * Centralized GraphQL operations for the IntelWatchtower MCP module.\n *\n * IntelWatchtower is the unified military & intelligence platform (future-products\n * ecosystem). Backend subgraph:\n * ~/products/wspace/intelwatchtower/wspace-intelwatchtower-svc/ (Hive service\n * name `intelwatchtower`).\n *\n * Two domains:\n * - collection — sources, collection requirements, tasking, feeds, observations\n * - fusion — missions, tracked entities, indicators, threat alerts,\n * investigation cases, intelligence reports\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is carried\n * by the gateway headers (x-workspace-id / X-Workspace-Authorization) issued by\n * the auth module — IntelWatchtower inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field carries the `int` prefix and every type/enum/\n * input the `Int` prefix (the subgraph's collision-avoidance contract); each is\n * called here by its REAL server-side name.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi / crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Shared fragments\n// ---------------------------------------------------------------------------\n\nconst PAGE_INFO = `pageInfo { cursor hasMore }`;\n\n// ---------------------------------------------------------------------------\n// Collection-domain field fragments\n// ---------------------------------------------------------------------------\n\nexport const SOURCE_FIELDS = `\n id name codename description discipline status classification region reliability\n operatorId lastSeenAt tags createdAt updatedAt workspaceId\n`;\n\nexport const FEED_FIELDS = `\n id name endpoint format status ingestCount lastIngestAt sourceId\n createdAt updatedAt workspaceId\n`;\n\nexport const REQUIREMENT_FIELDS = `\n id title description classification priority status dueDate satisfiedAt\n missionId requestedById tags createdAt updatedAt workspaceId\n`;\n\nexport const TASK_FIELDS = `\n id status instructions sourceId requirementId resultSummary\n startAt endAt dispatchedAt completedAt createdAt updatedAt workspaceId\n`;\n\nexport const OBSERVATION_FIELDS = `\n id summary classification observedAt latitude longitude payload\n entityId sourceId taskId createdAt updatedAt workspaceId\n`;\n\n// ---------------------------------------------------------------------------\n// Fusion-domain field fragments\n// ---------------------------------------------------------------------------\n\nexport const MISSION_FIELDS = `\n id name codename objective classification status commanderId\n startAt endAt tags createdAt updatedAt workspaceId\n`;\n\nexport const ENTITY_FIELDS = `\n id name type classification confidence description aliases threatScore\n latitude longitude lastSeenAt attributes tags createdAt updatedAt workspaceId\n`;\n\nexport const INDICATOR_FIELDS = `\n id type value classification confidence description isActive entityId\n validFrom validUntil createdAt updatedAt workspaceId\n`;\n\nexport const ALERT_FIELDS = `\n id title description classification severity status detectedAt resolvedAt\n entityId indicatorId missionId caseId assignedToId triageNotes\n createdAt updatedAt workspaceId\n`;\n\nexport const CASE_ENTRY_FIELDS = `\n id caseId kind body createdAt updatedAt workspaceId file { id }\n`;\n\nexport const CASE_FIELDS = `\n id title summary reference classification priority status missionId\n leadAnalystId tags openedAt closedAt createdAt updatedAt workspaceId\n`;\n\nexport const REPORT_FIELDS = `\n id title summary body type status classification authorId caseId missionId\n tags releasedAt createdAt updatedAt workspaceId file { id }\n`;\n\n// ---------------------------------------------------------------------------\n// Sources (collection)\n// ---------------------------------------------------------------------------\n\nexport const GET_SOURCE = `\n query IntelwatchtowerGetSource($id: ID!) {\n intSource(id: $id) {\n ${SOURCE_FIELDS}\n feeds { ${FEED_FIELDS} }\n tasks { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const LIST_SOURCES = `\n query IntelwatchtowerListSources(\n $discipline: IntSourceDiscipline\n $status: IntSourceStatus\n $pagination: PaginationInput\n ) {\n intListSources(discipline: $discipline, status: $status, pagination: $pagination) {\n items { ${SOURCE_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_SOURCE = `\n mutation IntelwatchtowerCreateSource($input: IntCreateSourceInput!) {\n intCreateSource(input: $input) { ${SOURCE_FIELDS} }\n }\n`;\n\nexport const UPDATE_SOURCE = `\n mutation IntelwatchtowerUpdateSource($id: ID!, $input: IntUpdateSourceInput!) {\n intUpdateSource(id: $id, input: $input) { ${SOURCE_FIELDS} }\n }\n`;\n\nexport const RETIRE_SOURCE = `\n mutation IntelwatchtowerRetireSource($id: ID!) {\n intRetireSource(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Feeds (collection)\n// ---------------------------------------------------------------------------\n\nexport const CREATE_FEED = `\n mutation IntelwatchtowerCreateFeed($input: IntCreateFeedInput!) {\n intCreateFeed(input: $input) { ${FEED_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collection requirements\n// ---------------------------------------------------------------------------\n\nexport const LIST_REQUIREMENTS = `\n query IntelwatchtowerListRequirements($missionId: ID, $status: IntRequirementStatus) {\n intListRequirements(missionId: $missionId, status: $status) {\n ${REQUIREMENT_FIELDS}\n tasks { ${TASK_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_REQUIREMENT = `\n mutation IntelwatchtowerCreateRequirement($input: IntCreateRequirementInput!) {\n intCreateRequirement(input: $input) { ${REQUIREMENT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collection tasks (tasking)\n// ---------------------------------------------------------------------------\n\nexport const LIST_TASKS = `\n query IntelwatchtowerListTasks(\n $requirementId: ID\n $sourceId: ID\n $status: IntTaskStatus\n $pagination: PaginationInput\n ) {\n intListTasks(\n requirementId: $requirementId\n sourceId: $sourceId\n status: $status\n pagination: $pagination\n ) {\n items { ${TASK_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_TASK = `\n mutation IntelwatchtowerCreateTask($input: IntCreateTaskInput!) {\n intCreateTask(input: $input) { ${TASK_FIELDS} }\n }\n`;\n\nexport const TRANSITION_TASK = `\n mutation IntelwatchtowerTransitionTask($id: ID!, $status: IntTaskStatus!) {\n intTransitionTask(id: $id, status: $status) { ${TASK_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Observations (collection)\n// ---------------------------------------------------------------------------\n\nexport const LIST_OBSERVATIONS = `\n query IntelwatchtowerListObservations(\n $entityId: ID\n $sourceId: ID\n $taskId: ID\n $pagination: PaginationInput\n ) {\n intListObservations(\n entityId: $entityId\n sourceId: $sourceId\n taskId: $taskId\n pagination: $pagination\n ) {\n items { ${OBSERVATION_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const RECORD_OBSERVATION = `\n mutation IntelwatchtowerRecordObservation($input: IntRecordObservationInput!) {\n intRecordObservation(input: $input) { ${OBSERVATION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Missions (fusion)\n// ---------------------------------------------------------------------------\n\nexport const GET_MISSION = `\n query IntelwatchtowerGetMission($id: ID!) {\n intMission(id: $id) {\n ${MISSION_FIELDS}\n cases { ${CASE_FIELDS} }\n reports { ${REPORT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_MISSIONS = `\n query IntelwatchtowerListMissions($status: IntMissionStatus) {\n intListMissions(status: $status) { ${MISSION_FIELDS} }\n }\n`;\n\nexport const CREATE_MISSION = `\n mutation IntelwatchtowerCreateMission($input: IntCreateMissionInput!) {\n intCreateMission(input: $input) { ${MISSION_FIELDS} }\n }\n`;\n\nexport const TRANSITION_MISSION = `\n mutation IntelwatchtowerTransitionMission($id: ID!, $status: IntMissionStatus!) {\n intTransitionMission(id: $id, status: $status) { ${MISSION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Tracked entities (fusion)\n// ---------------------------------------------------------------------------\n\nexport const GET_ENTITY = `\n query IntelwatchtowerGetEntity($id: ID!) {\n intEntity(id: $id) {\n ${ENTITY_FIELDS}\n indicators { ${INDICATOR_FIELDS} }\n alerts { ${ALERT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_ENTITIES = `\n query IntelwatchtowerListEntities(\n $type: IntEntityType\n $confidence: IntConfidence\n $pagination: PaginationInput\n ) {\n intListEntities(type: $type, confidence: $confidence, pagination: $pagination) {\n items { ${ENTITY_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_ENTITY = `\n mutation IntelwatchtowerCreateEntity($input: IntCreateEntityInput!) {\n intCreateEntity(input: $input) { ${ENTITY_FIELDS} }\n }\n`;\n\nexport const UPDATE_ENTITY = `\n mutation IntelwatchtowerUpdateEntity($id: ID!, $input: IntUpdateEntityInput!) {\n intUpdateEntity(id: $id, input: $input) { ${ENTITY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Indicators (fusion)\n// ---------------------------------------------------------------------------\n\nexport const LIST_INDICATORS = `\n query IntelwatchtowerListIndicators(\n $entityId: ID\n $type: IntIndicatorType\n $isActive: Boolean\n ) {\n intListIndicators(entityId: $entityId, type: $type, isActive: $isActive) {\n ${INDICATOR_FIELDS}\n }\n }\n`;\n\nexport const CREATE_INDICATOR = `\n mutation IntelwatchtowerCreateIndicator($input: IntCreateIndicatorInput!) {\n intCreateIndicator(input: $input) { ${INDICATOR_FIELDS} }\n }\n`;\n\nexport const DEACTIVATE_INDICATOR = `\n mutation IntelwatchtowerDeactivateIndicator($id: ID!) {\n intDeactivateIndicator(id: $id) { ${INDICATOR_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Threat alerts (fusion)\n// ---------------------------------------------------------------------------\n\nexport const LIST_ALERTS = `\n query IntelwatchtowerListAlerts(\n $entityId: ID\n $severity: IntAlertSeverity\n $status: IntAlertStatus\n $pagination: PaginationInput\n ) {\n intListAlerts(\n entityId: $entityId\n severity: $severity\n status: $status\n pagination: $pagination\n ) {\n items { ${ALERT_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const RAISE_ALERT = `\n mutation IntelwatchtowerRaiseAlert($input: IntRaiseAlertInput!) {\n intRaiseAlert(input: $input) { ${ALERT_FIELDS} }\n }\n`;\n\nexport const TRANSITION_ALERT = `\n mutation IntelwatchtowerTransitionAlert(\n $id: ID!\n $status: IntAlertStatus!\n $triageNotes: String\n ) {\n intTransitionAlert(id: $id, status: $status, triageNotes: $triageNotes) {\n ${ALERT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Investigation cases (fusion)\n// ---------------------------------------------------------------------------\n\nexport const GET_CASE = `\n query IntelwatchtowerGetCase($id: ID!) {\n intCase(id: $id) {\n ${CASE_FIELDS}\n alerts { ${ALERT_FIELDS} }\n entries { ${CASE_ENTRY_FIELDS} }\n }\n }\n`;\n\nexport const LIST_CASES = `\n query IntelwatchtowerListCases(\n $missionId: ID\n $status: IntCaseStatus\n $pagination: PaginationInput\n ) {\n intListCases(missionId: $missionId, status: $status, pagination: $pagination) {\n items { ${CASE_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_CASE = `\n mutation IntelwatchtowerCreateCase($input: IntCreateCaseInput!) {\n intCreateCase(input: $input) { ${CASE_FIELDS} }\n }\n`;\n\nexport const ADD_CASE_ENTRY = `\n mutation IntelwatchtowerAddCaseEntry($input: IntAddCaseEntryInput!) {\n intAddCaseEntry(input: $input) { ${CASE_ENTRY_FIELDS} }\n }\n`;\n\nexport const CLOSE_CASE = `\n mutation IntelwatchtowerCloseCase($id: ID!) {\n intCloseCase(id: $id) { ${CASE_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Intelligence reports (fusion)\n// ---------------------------------------------------------------------------\n\nexport const LIST_REPORTS = `\n query IntelwatchtowerListReports(\n $missionId: ID\n $type: IntReportType\n $status: IntReportStatus\n $pagination: PaginationInput\n ) {\n intListReports(\n missionId: $missionId\n type: $type\n status: $status\n pagination: $pagination\n ) {\n items { ${REPORT_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_REPORT = `\n mutation IntelwatchtowerCreateReport($input: IntCreateReportInput!) {\n intCreateReport(input: $input) { ${REPORT_FIELDS} }\n }\n`;\n\nexport const RELEASE_REPORT = `\n mutation IntelwatchtowerReleaseReport($id: ID!) {\n intReleaseReport(id: $id) { ${REPORT_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query IntelwatchtowerHealth {\n intHealth\n }\n`;\n","/**\n * Shared zod schemas for the IntelWatchtower tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. JSON scalar inputs (entity\n * attributes, observation payload) are modelled as permissive object records —\n * the backend accepts arbitrary JSON, but a record shape gives the LLM a typed\n * hint.\n */\n\nimport { z } from 'zod';\n\nexport const ClassificationEnum = z\n .enum(['CONFIDENTIAL', 'SECRET', 'TOP_SECRET', 'UNCLASSIFIED'])\n .describe('Security classification of an intelligence object');\n\nexport const ConfidenceEnum = z\n .enum(['CONFIRMED', 'HIGH', 'LOW', 'MODERATE'])\n .describe('Analyst confidence in an entity/indicator');\n\nexport const PriorityEnum = z\n .enum(['FLASH', 'IMMEDIATE', 'PRIORITY', 'ROUTINE'])\n .describe('Precedence/priority of a case or requirement');\n\nexport const AlertSeverityEnum = z\n .enum(['CRITICAL', 'HIGH', 'INFO', 'LOW', 'MEDIUM'])\n .describe('Severity of a threat alert');\n\nexport const AlertStatusEnum = z\n .enum(['ESCALATED', 'FALSE_POSITIVE', 'OPEN', 'RESOLVED', 'SUPPRESSED', 'TRIAGED'])\n .describe('Triage lifecycle status of a threat alert');\n\nexport const CaseStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'CLOSED', 'OPEN', 'PENDING_REVIEW'])\n .describe('Lifecycle status of an investigation case');\n\nexport const EntityTypeEnum = z\n .enum([\n 'AIRCRAFT',\n 'EVENT',\n 'FACILITY',\n 'LOCATION',\n 'NETWORK_NODE',\n 'ORGANIZATION',\n 'PERSON',\n 'VEHICLE',\n 'VESSEL',\n ])\n .describe('Type of a tracked entity');\n\nexport const FeedStatusEnum = z\n .enum(['CONNECTED', 'DISCONNECTED', 'ERROR', 'STALE'])\n .describe('Connection status of a collection feed');\n\nexport const IndicatorTypeEnum = z\n .enum([\n 'BEHAVIOR',\n 'DOMAIN',\n 'EMAIL',\n 'FILE_HASH',\n 'GEO_COORDINATE',\n 'IP_ADDRESS',\n 'SIGNATURE',\n 'URL',\n ])\n .describe('Type of an indicator of compromise / observable');\n\nexport const MissionStatusEnum = z\n .enum(['ABORTED', 'ACTIVE', 'COMPLETED', 'PAUSED', 'PLANNING', 'READY'])\n .describe('Lifecycle status of a mission');\n\nexport const ReportStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'IN_REVIEW', 'RECALLED', 'RELEASED'])\n .describe('Lifecycle status of an intelligence report');\n\nexport const ReportTypeEnum = z\n .enum(['ASSESSMENT', 'INTSUM', 'SITREP', 'SPOT_REPORT', 'WARNING'])\n .describe('Product type of an intelligence report');\n\nexport const RequirementStatusEnum = z\n .enum(['APPROVED', 'CANCELLED', 'DRAFT', 'SATISFIED', 'SUBMITTED', 'TASKED'])\n .describe('Lifecycle status of a collection requirement');\n\nexport const SourceDisciplineEnum = z\n .enum(['CYBER', 'GEOINT', 'HUMINT', 'IMINT', 'MASINT', 'OSINT', 'SIGINT'])\n .describe('Collection discipline of a source/sensor');\n\nexport const SourceStatusEnum = z\n .enum(['ACTIVE', 'DEGRADED', 'OFFLINE', 'PROVISIONING', 'RETIRED'])\n .describe('Operational status of a source/sensor');\n\nexport const TaskStatusEnum = z\n .enum(['CANCELLED', 'COLLECTING', 'COMPLETED', 'DISPATCHED', 'FAILED', 'PENDING'])\n .describe('Lifecycle status of a collection (tasking) order');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** ISO-8601 DateTime string (the backend `DateTime` scalar). */\nexport const IsoDateTime = z\n .string()\n .describe('ISO-8601 timestamp (DateTime scalar), e.g. \"2026-06-27T12:00:00.000Z\"');\n\n/** Build a `PaginationInput` from optional limit/offset, or `undefined` if neither set. */\nexport function buildPagination(\n limit?: number,\n offset?: number,\n): { limit?: number; offset?: number } | undefined {\n const pagination: { limit?: number; offset?: number } = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * IntelWatchtower source/sensor tools — collection-source registry CRUD.\n *\n * Surface (5): sources_{get,list,create,update,retire}.\n * Maps to real root fields intSource / intListSources / intCreateSource /\n * intUpdateSource / intRetireSource.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ClassificationEnum,\n SourceDisciplineEnum,\n SourceStatusEnum,\n buildPagination,\n} from './shared.js';\n\nexport function registerSourceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_get')),\n {\n title: 'Get Source',\n description:\n 'Fetch a single collection source/sensor by ID, including its feeds and tasking orders.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intSource: Record<string, unknown> | null;\n }>(ops.GET_SOURCE, { id });\n if (!data.intSource) return errorResult(`Source ${id} not found`);\n return jsonResult(data.intSource);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_get failed', { error: String(error) });\n return errorResult(\n `Failed to get source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_list')),\n {\n title: 'List Sources',\n description:\n 'List collection sources/sensors in the bound workspace, optionally filtered by discipline and/or status, with pagination.',\n inputSchema: {\n discipline: SourceDisciplineEnum.optional().describe('Filter by collection discipline'),\n status: SourceStatusEnum.optional().describe('Filter by operational status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ discipline, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListSources: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SOURCES, {\n discipline,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListSources);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sources: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_create')),\n {\n title: 'Create Source',\n description:\n 'Register a new collection source/sensor. `discipline` is required; `reliability` is an analyst-assigned score.',\n inputSchema: {\n name: z.string().min(1).describe('Source display name'),\n discipline: SourceDisciplineEnum.describe('Collection discipline (HUMINT, SIGINT, ...)'),\n codename: z.string().optional().describe('Operational codename'),\n description: z.string().optional().describe('Source description'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n region: z.string().optional().describe('Geographic region of operation'),\n reliability: z.number().int().optional().describe('Reliability score (analyst-assigned)'),\n operatorId: z.string().optional().describe('User ID of the controlling operator'),\n status: SourceStatusEnum.optional().describe('Initial status (default PROVISIONING)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n name,\n discipline,\n codename,\n description,\n classification,\n region,\n reliability,\n operatorId,\n status,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name, discipline };\n if (codename !== undefined) input.codename = codename;\n if (description !== undefined) input.description = description;\n if (classification !== undefined) input.classification = classification;\n if (region !== undefined) input.region = region;\n if (reliability !== undefined) input.reliability = reliability;\n if (operatorId !== undefined) input.operatorId = operatorId;\n if (status !== undefined) input.status = status;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateSource: Record<string, unknown>;\n }>(ops.CREATE_SOURCE, { input });\n return jsonResult(data.intCreateSource);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_create failed', { error: String(error) });\n return errorResult(\n `Failed to create source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_update')),\n {\n title: 'Update Source',\n description:\n 'Update a collection source. At least one mutable field must be provided. Use `status` to activate/degrade/take a source offline.',\n inputSchema: {\n id: z.string().describe('Source ID'),\n name: z.string().optional().describe('Updated display name'),\n codename: z.string().optional().describe('Updated codename'),\n description: z.string().optional().describe('Updated description'),\n discipline: SourceDisciplineEnum.optional().describe('Updated discipline'),\n classification: ClassificationEnum.optional().describe('Updated classification'),\n region: z.string().optional().describe('Updated region'),\n reliability: z.number().int().optional().describe('Updated reliability score'),\n operatorId: z.string().optional().describe('Updated operator user ID'),\n status: SourceStatusEnum.optional().describe('Updated operational status'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n codename,\n description,\n discipline,\n classification,\n region,\n reliability,\n operatorId,\n status,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (codename !== undefined) input.codename = codename;\n if (description !== undefined) input.description = description;\n if (discipline !== undefined) input.discipline = discipline;\n if (classification !== undefined) input.classification = classification;\n if (region !== undefined) input.region = region;\n if (reliability !== undefined) input.reliability = reliability;\n if (operatorId !== undefined) input.operatorId = operatorId;\n if (status !== undefined) input.status = status;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable source field');\n }\n\n const data = await ctx.gql.workspace.request<{\n intUpdateSource: Record<string, unknown>;\n }>(ops.UPDATE_SOURCE, { id, input });\n return jsonResult(data.intUpdateSource);\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_update failed', { error: String(error) });\n return errorResult(\n `Failed to update source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_retire')),\n {\n title: 'Retire Source',\n description: 'Retire (decommission) a collection source/sensor.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ intRetireSource: boolean }>(\n ops.RETIRE_SOURCE,\n { id },\n );\n return jsonResult({ ok: data.intRetireSource, id });\n } catch (error) {\n ctx.logger.error('intelwatchtower sources_retire failed', { error: String(error) });\n return errorResult(\n `Failed to retire source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower feed tools — collection feeds attached to a source.\n *\n * Surface (1): feeds_create. The backend exposes feeds only through\n * IntSource.feeds (no root list); creation maps to intCreateFeed.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { FeedStatusEnum } from './shared.js';\n\nexport function registerFeedTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'feeds_create')),\n {\n title: 'Create Feed',\n description:\n 'Attach a new ingest feed to a collection source. `sourceId` is required; `endpoint`/`format` describe the upstream connection.',\n inputSchema: {\n sourceId: z.string().min(1).describe('Owning source ID'),\n name: z.string().min(1).describe('Feed display name'),\n endpoint: z.string().optional().describe('Upstream endpoint URL/URI'),\n format: z.string().optional().describe('Wire format, e.g. \"stix\", \"json\", \"csv\"'),\n status: FeedStatusEnum.optional().describe(\n 'Initial connection status (default DISCONNECTED)',\n ),\n },\n },\n async ({ sourceId, name, endpoint, format, status }) => {\n try {\n const input: Record<string, unknown> = { sourceId, name };\n if (endpoint !== undefined) input.endpoint = endpoint;\n if (format !== undefined) input.format = format;\n if (status !== undefined) input.status = status;\n\n const data = await ctx.gql.workspace.request<{\n intCreateFeed: Record<string, unknown>;\n }>(ops.CREATE_FEED, { input });\n return jsonResult(data.intCreateFeed);\n } catch (error) {\n ctx.logger.error('intelwatchtower feeds_create failed', { error: String(error) });\n return errorResult(\n `Failed to create feed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower collection-requirement tools.\n *\n * Surface (2): requirements_{list,create}. Maps to intListRequirements (a plain\n * array, no pagination) and intCreateRequirement.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, PriorityEnum, RequirementStatusEnum, IsoDateTime } from './shared.js';\n\nexport function registerRequirementTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'requirements_list')),\n {\n title: 'List Collection Requirements',\n description:\n 'List collection requirements (intelligence-gap statements), optionally filtered by mission and/or status. Each includes its tasking orders.',\n inputSchema: {\n missionId: z.string().optional().describe('Filter by owning mission ID'),\n status: RequirementStatusEnum.optional().describe('Filter by requirement status'),\n },\n },\n async ({ missionId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListRequirements: Array<Record<string, unknown>>;\n }>(ops.LIST_REQUIREMENTS, { missionId, status });\n return jsonResult(data.intListRequirements);\n } catch (error) {\n ctx.logger.error('intelwatchtower requirements_list failed', { error: String(error) });\n return errorResult(\n `Failed to list requirements: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'requirements_create')),\n {\n title: 'Create Collection Requirement',\n description:\n 'Raise a new collection requirement (an intelligence gap to be satisfied through tasking).',\n inputSchema: {\n title: z.string().min(1).describe('Requirement title'),\n description: z.string().optional().describe('Detailed requirement description'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n priority: PriorityEnum.optional().describe('Precedence (default ROUTINE)'),\n missionId: z.string().optional().describe('Owning mission ID'),\n requestedById: z.string().optional().describe('User ID of the requester'),\n dueDate: IsoDateTime.optional().describe('Due date (ISO-8601)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n title,\n description,\n classification,\n priority,\n missionId,\n requestedById,\n dueDate,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (description !== undefined) input.description = description;\n if (classification !== undefined) input.classification = classification;\n if (priority !== undefined) input.priority = priority;\n if (missionId !== undefined) input.missionId = missionId;\n if (requestedById !== undefined) input.requestedById = requestedById;\n if (dueDate !== undefined) input.dueDate = dueDate;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateRequirement: Record<string, unknown>;\n }>(ops.CREATE_REQUIREMENT, { input });\n return jsonResult(data.intCreateRequirement);\n } catch (error) {\n ctx.logger.error('intelwatchtower requirements_create failed', { error: String(error) });\n return errorResult(\n `Failed to create requirement: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower tasking (collection-task) tools.\n *\n * Surface (3): tasks_{list,create,transition}. Maps to intListTasks (a\n * connection), intCreateTask, and intTransitionTask (validated lifecycle).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { TaskStatusEnum, IsoDateTime, buildPagination } from './shared.js';\n\nexport function registerTaskTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_list')),\n {\n title: 'List Tasking Orders',\n description:\n 'List collection tasking orders, optionally filtered by requirement, source, and/or status, with pagination.',\n inputSchema: {\n requirementId: z.string().optional().describe('Filter by parent requirement ID'),\n sourceId: z.string().optional().describe('Filter by tasked source ID'),\n status: TaskStatusEnum.optional().describe('Filter by task status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ requirementId, sourceId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListTasks: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_TASKS, {\n requirementId,\n sourceId,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListTasks);\n } catch (error) {\n ctx.logger.error('intelwatchtower tasks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list tasks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_create')),\n {\n title: 'Create Tasking Order',\n description:\n 'Dispatch a collection tasking order to a source. `sourceId` is required; optionally bind it to a requirement and set a collection window.',\n inputSchema: {\n sourceId: z.string().min(1).describe('Source to task'),\n requirementId: z.string().optional().describe('Parent requirement ID'),\n instructions: z.string().optional().describe('Collection instructions'),\n startAt: IsoDateTime.optional().describe('Collection-window start (ISO-8601)'),\n endAt: IsoDateTime.optional().describe('Collection-window end (ISO-8601)'),\n },\n },\n async ({ sourceId, requirementId, instructions, startAt, endAt }) => {\n try {\n const input: Record<string, unknown> = { sourceId };\n if (requirementId !== undefined) input.requirementId = requirementId;\n if (instructions !== undefined) input.instructions = instructions;\n if (startAt !== undefined) input.startAt = startAt;\n if (endAt !== undefined) input.endAt = endAt;\n\n const data = await ctx.gql.workspace.request<{\n intCreateTask: Record<string, unknown>;\n }>(ops.CREATE_TASK, { input });\n return jsonResult(data.intCreateTask);\n } catch (error) {\n ctx.logger.error('intelwatchtower tasks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'tasks_transition')),\n {\n title: 'Transition Tasking Order',\n description:\n 'Advance a tasking order through its lifecycle (validated transitions: PENDING → DISPATCHED → COLLECTING → COMPLETED, or CANCELLED/FAILED).',\n inputSchema: {\n id: z.string().describe('Task ID'),\n status: TaskStatusEnum.describe('New task status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intTransitionTask: Record<string, unknown>;\n }>(ops.TRANSITION_TASK, { id, status });\n return jsonResult(data.intTransitionTask);\n } catch (error) {\n ctx.logger.error('intelwatchtower tasks_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition task: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower observation tools — raw collected reporting.\n *\n * Surface (2): observations_{list,record}. Maps to intListObservations (a\n * connection) and intRecordObservation.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, IsoDateTime, JsonObject, buildPagination } from './shared.js';\n\nexport function registerObservationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'observations_list')),\n {\n title: 'List Observations',\n description:\n 'List raw observations (collected reporting), optionally filtered by entity, source, and/or task, with pagination.',\n inputSchema: {\n entityId: z.string().optional().describe('Filter by associated entity ID'),\n sourceId: z.string().optional().describe('Filter by reporting source ID'),\n taskId: z.string().optional().describe('Filter by originating task ID'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ entityId, sourceId, taskId, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListObservations: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_OBSERVATIONS, {\n entityId,\n sourceId,\n taskId,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListObservations);\n } catch (error) {\n ctx.logger.error('intelwatchtower observations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list observations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'observations_record')),\n {\n title: 'Record Observation',\n description:\n 'Record a raw observation from a source. `sourceId`, `summary`, and `observedAt` are required; optionally geo-locate it and attach a structured payload.',\n inputSchema: {\n sourceId: z.string().min(1).describe('Reporting source ID'),\n summary: z.string().min(1).describe('Human-readable observation summary'),\n observedAt: IsoDateTime.describe('When the observation occurred (ISO-8601)'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n entityId: z.string().optional().describe('Associated tracked entity ID'),\n taskId: z.string().optional().describe('Originating tasking order ID'),\n latitude: z.number().optional().describe('Observation latitude'),\n longitude: z.number().optional().describe('Observation longitude'),\n payload: JsonObject.optional().describe('Structured observation payload JSON'),\n },\n },\n async ({\n sourceId,\n summary,\n observedAt,\n classification,\n entityId,\n taskId,\n latitude,\n longitude,\n payload,\n }) => {\n try {\n const input: Record<string, unknown> = { sourceId, summary, observedAt };\n if (classification !== undefined) input.classification = classification;\n if (entityId !== undefined) input.entityId = entityId;\n if (taskId !== undefined) input.taskId = taskId;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (payload !== undefined) input.payload = payload;\n\n const data = await ctx.gql.workspace.request<{\n intRecordObservation: Record<string, unknown>;\n }>(ops.RECORD_OBSERVATION, { input });\n return jsonResult(data.intRecordObservation);\n } catch (error) {\n ctx.logger.error('intelwatchtower observations_record failed', { error: String(error) });\n return errorResult(\n `Failed to record observation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower mission tools — fusion-domain operation tasking.\n *\n * Surface (4): missions_{get,list,create,transition}. Maps to intMission /\n * intListMissions (a plain array) / intCreateMission / intTransitionMission.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, MissionStatusEnum, IsoDateTime } from './shared.js';\n\nexport function registerMissionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_get')),\n {\n title: 'Get Mission',\n description: 'Fetch a single mission by ID, including its cases and reports.',\n inputSchema: { id: z.string().describe('Mission ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intMission: Record<string, unknown> | null;\n }>(ops.GET_MISSION, { id });\n if (!data.intMission) return errorResult(`Mission ${id} not found`);\n return jsonResult(data.intMission);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get mission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_list')),\n {\n title: 'List Missions',\n description: 'List missions in the bound workspace, optionally filtered by status.',\n inputSchema: {\n status: MissionStatusEnum.optional().describe('Filter by mission status'),\n },\n },\n async ({ status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListMissions: Array<Record<string, unknown>>;\n }>(ops.LIST_MISSIONS, { status });\n return jsonResult(data.intListMissions);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list missions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_create')),\n {\n title: 'Create Mission',\n description: 'Stand up a new mission. `name` is required.',\n inputSchema: {\n name: z.string().min(1).describe('Mission name'),\n codename: z.string().optional().describe('Operational codename'),\n objective: z.string().optional().describe('Mission objective statement'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n commanderId: z.string().optional().describe('User ID of the mission commander'),\n startAt: IsoDateTime.optional().describe('Planned start (ISO-8601)'),\n endAt: IsoDateTime.optional().describe('Planned end (ISO-8601)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({ name, codename, objective, classification, commanderId, startAt, endAt, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (codename !== undefined) input.codename = codename;\n if (objective !== undefined) input.objective = objective;\n if (classification !== undefined) input.classification = classification;\n if (commanderId !== undefined) input.commanderId = commanderId;\n if (startAt !== undefined) input.startAt = startAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateMission: Record<string, unknown>;\n }>(ops.CREATE_MISSION, { input });\n return jsonResult(data.intCreateMission);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_create failed', { error: String(error) });\n return errorResult(\n `Failed to create mission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'missions_transition')),\n {\n title: 'Transition Mission',\n description:\n 'Advance a mission through its lifecycle (PLANNING → READY → ACTIVE → PAUSED/COMPLETED/ABORTED).',\n inputSchema: {\n id: z.string().describe('Mission ID'),\n status: MissionStatusEnum.describe('New mission status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intTransitionMission: Record<string, unknown>;\n }>(ops.TRANSITION_MISSION, { id, status });\n return jsonResult(data.intTransitionMission);\n } catch (error) {\n ctx.logger.error('intelwatchtower missions_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition mission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower tracked-entity tools — fusion-domain entity registry.\n *\n * Surface (4): entities_{get,list,create,update}. Maps to intEntity /\n * intListEntities (a connection) / intCreateEntity / intUpdateEntity.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ClassificationEnum,\n ConfidenceEnum,\n EntityTypeEnum,\n JsonObject,\n buildPagination,\n} from './shared.js';\n\nexport function registerEntityTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_get')),\n {\n title: 'Get Entity',\n description:\n 'Fetch a single tracked entity by ID, including its indicators and threat alerts.',\n inputSchema: { id: z.string().describe('Entity ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intEntity: Record<string, unknown> | null;\n }>(ops.GET_ENTITY, { id });\n if (!data.intEntity) return errorResult(`Entity ${id} not found`);\n return jsonResult(data.intEntity);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_get failed', { error: String(error) });\n return errorResult(\n `Failed to get entity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_list')),\n {\n title: 'List Entities',\n description:\n 'List tracked entities in the bound workspace, optionally filtered by type and/or confidence, with pagination.',\n inputSchema: {\n type: EntityTypeEnum.optional().describe('Filter by entity type'),\n confidence: ConfidenceEnum.optional().describe('Filter by analyst confidence'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ type, confidence, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListEntities: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ENTITIES, {\n type,\n confidence,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListEntities);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_list failed', { error: String(error) });\n return errorResult(\n `Failed to list entities: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_create')),\n {\n title: 'Create Entity',\n description:\n 'Register a new tracked entity (person, organization, vessel, facility, ...). `name` and `type` are required.',\n inputSchema: {\n name: z.string().min(1).describe('Entity display name'),\n type: EntityTypeEnum.describe('Entity type'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n confidence: ConfidenceEnum.optional().describe('Analyst confidence (default LOW)'),\n description: z.string().optional().describe('Entity description'),\n aliases: z.array(z.string()).optional().describe('Known aliases'),\n threatScore: z.number().int().optional().describe('Threat score'),\n latitude: z.number().optional().describe('Last-known latitude'),\n longitude: z.number().optional().describe('Last-known longitude'),\n attributes: JsonObject.optional().describe('Arbitrary structured attributes JSON'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n name,\n type,\n classification,\n confidence,\n description,\n aliases,\n threatScore,\n latitude,\n longitude,\n attributes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name, type };\n if (classification !== undefined) input.classification = classification;\n if (confidence !== undefined) input.confidence = confidence;\n if (description !== undefined) input.description = description;\n if (aliases !== undefined) input.aliases = aliases;\n if (threatScore !== undefined) input.threatScore = threatScore;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (attributes !== undefined) input.attributes = attributes;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateEntity: Record<string, unknown>;\n }>(ops.CREATE_ENTITY, { input });\n return jsonResult(data.intCreateEntity);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_create failed', { error: String(error) });\n return errorResult(\n `Failed to create entity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'entities_update')),\n {\n title: 'Update Entity',\n description: 'Update a tracked entity. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Entity ID'),\n name: z.string().optional().describe('Updated display name'),\n classification: ClassificationEnum.optional().describe('Updated classification'),\n confidence: ConfidenceEnum.optional().describe('Updated confidence'),\n description: z.string().optional().describe('Updated description'),\n aliases: z.array(z.string()).optional().describe('Updated aliases'),\n threatScore: z.number().int().optional().describe('Updated threat score'),\n latitude: z.number().optional().describe('Updated latitude'),\n longitude: z.number().optional().describe('Updated longitude'),\n attributes: JsonObject.optional().describe('Updated attributes JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n name,\n classification,\n confidence,\n description,\n aliases,\n threatScore,\n latitude,\n longitude,\n attributes,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (classification !== undefined) input.classification = classification;\n if (confidence !== undefined) input.confidence = confidence;\n if (description !== undefined) input.description = description;\n if (aliases !== undefined) input.aliases = aliases;\n if (threatScore !== undefined) input.threatScore = threatScore;\n if (latitude !== undefined) input.latitude = latitude;\n if (longitude !== undefined) input.longitude = longitude;\n if (attributes !== undefined) input.attributes = attributes;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable entity field');\n }\n\n const data = await ctx.gql.workspace.request<{\n intUpdateEntity: Record<string, unknown>;\n }>(ops.UPDATE_ENTITY, { id, input });\n return jsonResult(data.intUpdateEntity);\n } catch (error) {\n ctx.logger.error('intelwatchtower entities_update failed', { error: String(error) });\n return errorResult(\n `Failed to update entity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower indicator tools — observables / indicators of interest.\n *\n * Surface (3): indicators_{list,create,deactivate}. Maps to intListIndicators\n * (a plain array), intCreateIndicator, and intDeactivateIndicator.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, ConfidenceEnum, IndicatorTypeEnum, IsoDateTime } from './shared.js';\n\nexport function registerIndicatorTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'indicators_list')),\n {\n title: 'List Indicators',\n description:\n 'List indicators (observables), optionally filtered by entity, type, and/or active state.',\n inputSchema: {\n entityId: z.string().optional().describe('Filter by associated entity ID'),\n type: IndicatorTypeEnum.optional().describe('Filter by indicator type'),\n isActive: z.boolean().optional().describe('Filter by active state'),\n },\n },\n async ({ entityId, type, isActive }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListIndicators: Array<Record<string, unknown>>;\n }>(ops.LIST_INDICATORS, { entityId, type, isActive });\n return jsonResult(data.intListIndicators);\n } catch (error) {\n ctx.logger.error('intelwatchtower indicators_list failed', { error: String(error) });\n return errorResult(\n `Failed to list indicators: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'indicators_create')),\n {\n title: 'Create Indicator',\n description:\n 'Register a new indicator (observable). `type` and `value` are required; optionally bind it to an entity and a validity window.',\n inputSchema: {\n type: IndicatorTypeEnum.describe('Indicator type (IP_ADDRESS, DOMAIN, FILE_HASH, ...)'),\n value: z.string().min(1).describe('Indicator value'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n confidence: ConfidenceEnum.optional().describe('Analyst confidence (default LOW)'),\n description: z.string().optional().describe('Indicator description'),\n entityId: z.string().optional().describe('Associated entity ID'),\n validFrom: IsoDateTime.optional().describe('Validity-window start (ISO-8601)'),\n validUntil: IsoDateTime.optional().describe('Validity-window end (ISO-8601)'),\n },\n },\n async ({\n type,\n value,\n classification,\n confidence,\n description,\n entityId,\n validFrom,\n validUntil,\n }) => {\n try {\n const input: Record<string, unknown> = { type, value };\n if (classification !== undefined) input.classification = classification;\n if (confidence !== undefined) input.confidence = confidence;\n if (description !== undefined) input.description = description;\n if (entityId !== undefined) input.entityId = entityId;\n if (validFrom !== undefined) input.validFrom = validFrom;\n if (validUntil !== undefined) input.validUntil = validUntil;\n\n const data = await ctx.gql.workspace.request<{\n intCreateIndicator: Record<string, unknown>;\n }>(ops.CREATE_INDICATOR, { input });\n return jsonResult(data.intCreateIndicator);\n } catch (error) {\n ctx.logger.error('intelwatchtower indicators_create failed', { error: String(error) });\n return errorResult(\n `Failed to create indicator: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'indicators_deactivate')),\n {\n title: 'Deactivate Indicator',\n description: 'Deactivate (expire) an indicator so it no longer matches new reporting.',\n inputSchema: { id: z.string().describe('Indicator ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intDeactivateIndicator: Record<string, unknown>;\n }>(ops.DEACTIVATE_INDICATOR, { id });\n return jsonResult(data.intDeactivateIndicator);\n } catch (error) {\n ctx.logger.error('intelwatchtower indicators_deactivate failed', { error: String(error) });\n return errorResult(\n `Failed to deactivate indicator: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower threat-alert tools.\n *\n * Surface (3): alerts_{list,raise,transition}. Maps to intListAlerts (a\n * connection), intRaiseAlert, and intTransitionAlert (validated triage\n * lifecycle, with optional triage notes).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ClassificationEnum,\n AlertSeverityEnum,\n AlertStatusEnum,\n buildPagination,\n} from './shared.js';\n\nexport function registerAlertTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'alerts_list')),\n {\n title: 'List Alerts',\n description:\n 'List threat alerts, optionally filtered by entity, severity, and/or status, with pagination.',\n inputSchema: {\n entityId: z.string().optional().describe('Filter by associated entity ID'),\n severity: AlertSeverityEnum.optional().describe('Filter by severity'),\n status: AlertStatusEnum.optional().describe('Filter by triage status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ entityId, severity, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListAlerts: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ALERTS, {\n entityId,\n severity,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListAlerts);\n } catch (error) {\n ctx.logger.error('intelwatchtower alerts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list alerts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'alerts_raise')),\n {\n title: 'Raise Alert',\n description:\n 'Raise a new threat alert. `title` is required; optionally bind it to an entity, indicator, and/or mission and set severity.',\n inputSchema: {\n title: z.string().min(1).describe('Alert title'),\n description: z.string().optional().describe('Alert description'),\n severity: AlertSeverityEnum.optional().describe('Severity (default MEDIUM)'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n entityId: z.string().optional().describe('Associated entity ID'),\n indicatorId: z.string().optional().describe('Triggering indicator ID'),\n missionId: z.string().optional().describe('Associated mission ID'),\n assignedToId: z.string().optional().describe('User ID to assign the alert to'),\n },\n },\n async ({\n title,\n description,\n severity,\n classification,\n entityId,\n indicatorId,\n missionId,\n assignedToId,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (description !== undefined) input.description = description;\n if (severity !== undefined) input.severity = severity;\n if (classification !== undefined) input.classification = classification;\n if (entityId !== undefined) input.entityId = entityId;\n if (indicatorId !== undefined) input.indicatorId = indicatorId;\n if (missionId !== undefined) input.missionId = missionId;\n if (assignedToId !== undefined) input.assignedToId = assignedToId;\n\n const data = await ctx.gql.workspace.request<{\n intRaiseAlert: Record<string, unknown>;\n }>(ops.RAISE_ALERT, { input });\n return jsonResult(data.intRaiseAlert);\n } catch (error) {\n ctx.logger.error('intelwatchtower alerts_raise failed', { error: String(error) });\n return errorResult(\n `Failed to raise alert: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'alerts_transition')),\n {\n title: 'Transition Alert',\n description:\n 'Triage an alert through its lifecycle (validated transitions: OPEN → TRIAGED → ESCALATED/RESOLVED/FALSE_POSITIVE/SUPPRESSED), optionally recording triage notes.',\n inputSchema: {\n id: z.string().describe('Alert ID'),\n status: AlertStatusEnum.describe('New alert status'),\n triageNotes: z.string().optional().describe('Triage notes to record on the transition'),\n },\n },\n async ({ id, status, triageNotes }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intTransitionAlert: Record<string, unknown>;\n }>(ops.TRANSITION_ALERT, { id, status, triageNotes });\n return jsonResult(data.intTransitionAlert);\n } catch (error) {\n ctx.logger.error('intelwatchtower alerts_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition alert: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower investigation-case tools.\n *\n * Surface (5): cases_{get,list,create,add_entry,close}. Maps to intCase /\n * intListCases (a connection) / intCreateCase / intAddCaseEntry / intCloseCase.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, PriorityEnum, CaseStatusEnum, buildPagination } from './shared.js';\n\nexport function registerCaseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_get')),\n {\n title: 'Get Case',\n description:\n 'Fetch a single investigation case by ID, including its alerts and case entries.',\n inputSchema: { id: z.string().describe('Case ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intCase: Record<string, unknown> | null;\n }>(ops.GET_CASE, { id });\n if (!data.intCase) return errorResult(`Case ${id} not found`);\n return jsonResult(data.intCase);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_get failed', { error: String(error) });\n return errorResult(\n `Failed to get case: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_list')),\n {\n title: 'List Cases',\n description:\n 'List investigation cases, optionally filtered by mission and/or status, with pagination.',\n inputSchema: {\n missionId: z.string().optional().describe('Filter by owning mission ID'),\n status: CaseStatusEnum.optional().describe('Filter by case status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ missionId, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListCases: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_CASES, {\n missionId,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListCases);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_list failed', { error: String(error) });\n return errorResult(\n `Failed to list cases: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_create')),\n {\n title: 'Create Case',\n description: 'Open a new investigation case. `title` is required.',\n inputSchema: {\n title: z.string().min(1).describe('Case title'),\n summary: z.string().optional().describe('Case summary'),\n reference: z.string().optional().describe('External reference number'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n priority: PriorityEnum.optional().describe('Precedence (default ROUTINE)'),\n missionId: z.string().optional().describe('Owning mission ID'),\n leadAnalystId: z.string().optional().describe('User ID of the lead analyst'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n title,\n summary,\n reference,\n classification,\n priority,\n missionId,\n leadAnalystId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (summary !== undefined) input.summary = summary;\n if (reference !== undefined) input.reference = reference;\n if (classification !== undefined) input.classification = classification;\n if (priority !== undefined) input.priority = priority;\n if (missionId !== undefined) input.missionId = missionId;\n if (leadAnalystId !== undefined) input.leadAnalystId = leadAnalystId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateCase: Record<string, unknown>;\n }>(ops.CREATE_CASE, { input });\n return jsonResult(data.intCreateCase);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_create failed', { error: String(error) });\n return errorResult(\n `Failed to create case: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_add_entry')),\n {\n title: 'Add Case Entry',\n description:\n 'Append an entry (note, finding, or evidence reference) to a case. `kind` and `body` are required; attach evidence via `fileId` (wspace-files-svc File).',\n inputSchema: {\n caseId: z.string().min(1).describe('Case ID'),\n kind: z.string().min(1).describe('Entry kind, e.g. \"note\", \"finding\", \"evidence\"'),\n body: z.string().min(1).describe('Entry body text'),\n fileId: z.string().optional().describe('Evidence attachment File ID (wspace-files-svc)'),\n },\n },\n async ({ caseId, kind, body, fileId }) => {\n try {\n const input: Record<string, unknown> = { caseId, kind, body };\n if (fileId !== undefined) input.fileId = fileId;\n\n const data = await ctx.gql.workspace.request<{\n intAddCaseEntry: Record<string, unknown>;\n }>(ops.ADD_CASE_ENTRY, { input });\n return jsonResult(data.intAddCaseEntry);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_add_entry failed', { error: String(error) });\n return errorResult(\n `Failed to add case entry: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cases_close')),\n {\n title: 'Close Case',\n description: 'Close an investigation case.',\n inputSchema: { id: z.string().describe('Case ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intCloseCase: Record<string, unknown>;\n }>(ops.CLOSE_CASE, { id });\n return jsonResult(data.intCloseCase);\n } catch (error) {\n ctx.logger.error('intelwatchtower cases_close failed', { error: String(error) });\n return errorResult(\n `Failed to close case: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower intelligence-report tools.\n *\n * Surface (3): reports_{list,create,release}. Maps to intListReports (a\n * connection), intCreateReport, and intReleaseReport.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { ClassificationEnum, ReportStatusEnum, ReportTypeEnum, buildPagination } from './shared.js';\n\nexport function registerReportTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_list')),\n {\n title: 'List Reports',\n description:\n 'List intelligence reports, optionally filtered by mission, type, and/or status, with pagination.',\n inputSchema: {\n missionId: z.string().optional().describe('Filter by owning mission ID'),\n type: ReportTypeEnum.optional().describe('Filter by report product type'),\n status: ReportStatusEnum.optional().describe('Filter by report status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n },\n },\n async ({ missionId, type, status, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intListReports: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_REPORTS, {\n missionId,\n type,\n status,\n pagination: buildPagination(limit, offset),\n });\n return jsonResult(data.intListReports);\n } catch (error) {\n ctx.logger.error('intelwatchtower reports_list failed', { error: String(error) });\n return errorResult(\n `Failed to list reports: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_create')),\n {\n title: 'Create Report',\n description:\n 'Draft a new intelligence report (SITREP, INTSUM, ASSESSMENT, ...). `title` is required; reference the rendered product via `fileId` (wspace-files-svc File).',\n inputSchema: {\n title: z.string().min(1).describe('Report title'),\n type: ReportTypeEnum.optional().describe('Report product type (default SITREP)'),\n summary: z.string().optional().describe('Report summary / BLUF'),\n body: z.string().optional().describe('Report body text'),\n classification: ClassificationEnum.optional().describe(\n 'Security classification (default UNCLASSIFIED)',\n ),\n authorId: z.string().optional().describe('User ID of the report author'),\n caseId: z.string().optional().describe('Associated case ID'),\n missionId: z.string().optional().describe('Associated mission ID'),\n fileId: z.string().optional().describe('Rendered-product File ID (wspace-files-svc)'),\n tags: z.array(z.string()).optional().describe('Discovery/triage tags'),\n },\n },\n async ({\n title,\n type,\n summary,\n body,\n classification,\n authorId,\n caseId,\n missionId,\n fileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (type !== undefined) input.type = type;\n if (summary !== undefined) input.summary = summary;\n if (body !== undefined) input.body = body;\n if (classification !== undefined) input.classification = classification;\n if (authorId !== undefined) input.authorId = authorId;\n if (caseId !== undefined) input.caseId = caseId;\n if (missionId !== undefined) input.missionId = missionId;\n if (fileId !== undefined) input.fileId = fileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n intCreateReport: Record<string, unknown>;\n }>(ops.CREATE_REPORT, { input });\n return jsonResult(data.intCreateReport);\n } catch (error) {\n ctx.logger.error('intelwatchtower reports_create failed', { error: String(error) });\n return errorResult(\n `Failed to create report: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reports_release')),\n {\n title: 'Release Report',\n description: 'Release (publish/disseminate) an intelligence report.',\n inputSchema: { id: z.string().describe('Report ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n intReleaseReport: Record<string, unknown>;\n }>(ops.RELEASE_REPORT, { id });\n return jsonResult(data.intReleaseReport);\n } catch (error) {\n ctx.logger.error('intelwatchtower reports_release failed', { error: String(error) });\n return errorResult(\n `Failed to release report: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * IntelWatchtower health tool.\n *\n * Surface (1): health. Maps to the @public intHealth query (no auth required) —\n * a liveness/identity probe for the IntelWatchtower subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'IntelWatchtower Health Check',\n description:\n 'Public liveness/identity probe for the IntelWatchtower subgraph (intHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ intHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.intHealth });\n } catch (error) {\n ctx.logger.error('intelwatchtower health failed', { error: String(error) });\n return errorResult(\n `IntelWatchtower health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_SOURCES, LIST_MISSIONS, LIST_ALERTS } from './operations.js';\n\n/**\n * Read-only IntelWatchtower MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerIntelwatchtowerResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const sourcesUri = track(mcpResourceUri(ctx.productName, 'sources'));\n const missionsUri = track(mcpResourceUri(ctx.productName, 'missions'));\n const alertsUri = track(mcpResourceUri(ctx.productName, 'alerts'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'intelwatchtower-schema',\n schemaUri,\n {\n title: 'IntelWatchtower Domain Schema',\n description:\n 'Overview of the IntelWatchtower military & intelligence domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# IntelWatchtower Domain (Overview)\n\nUnified military & intelligence platform: multi-source collection + all-source\nfusion powering a real-time common operating picture.\n\n## Collection domain\n- IntSource — a collection source/sensor (has feeds + tasking orders)\n- IntFeed — an ingest feed attached to a source\n- IntCollectionRequirement — an intelligence gap to be satisfied (has tasks)\n- IntCollectionTask — a tasking order dispatched to a source\n- IntObservation — raw collected reporting\n\n## Fusion domain\n- IntMission — an operation (has cases + reports)\n- IntEntity — a tracked entity (has indicators + alerts)\n- IntIndicator — an observable / indicator of interest\n- IntAlert — a threat alert (triage lifecycle)\n- IntCase (+IntCaseEntry) — an investigation case + entries\n- IntReport — an intelligence report\n\n## Key enums\n- IntClassification: UNCLASSIFIED, CONFIDENTIAL, SECRET, TOP_SECRET\n- IntConfidence: LOW, MODERATE, HIGH, CONFIRMED\n- IntPriority: ROUTINE, PRIORITY, IMMEDIATE, FLASH\n- IntSourceDiscipline: HUMINT, SIGINT, GEOINT, IMINT, MASINT, OSINT, CYBER\n- IntSourceStatus: PROVISIONING, ACTIVE, DEGRADED, OFFLINE, RETIRED\n- IntTaskStatus: PENDING, DISPATCHED, COLLECTING, COMPLETED, CANCELLED, FAILED\n- IntEntityType: PERSON, ORGANIZATION, LOCATION, FACILITY, VESSEL, AIRCRAFT, VEHICLE, NETWORK_NODE, EVENT\n- IntIndicatorType: IP_ADDRESS, DOMAIN, URL, EMAIL, FILE_HASH, SIGNATURE, BEHAVIOR, GEO_COORDINATE\n- IntAlertSeverity: INFO, LOW, MEDIUM, HIGH, CRITICAL\n- IntAlertStatus: OPEN, TRIAGED, ESCALATED, RESOLVED, FALSE_POSITIVE, SUPPRESSED\n- IntMissionStatus: PLANNING, READY, ACTIVE, PAUSED, COMPLETED, ABORTED\n- IntCaseStatus: OPEN, ACTIVE, PENDING_REVIEW, CLOSED, ARCHIVED\n- IntReportType: SITREP, INTSUM, SPOT_REPORT, ASSESSMENT, WARNING\n- IntReportStatus: DRAFT, IN_REVIEW, RELEASED, RECALLED, ARCHIVED\n- IntRequirementStatus: DRAFT, SUBMITTED, APPROVED, TASKED, SATISFIED, CANCELLED\n\n## Tool groups\nsources, feeds, requirements, tasks, observations (collection);\nmissions, entities, indicators, alerts, cases, reports (fusion); plus a public health probe.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://sources — collection-source registry\n server.registerResource(\n 'intelwatchtower-sources',\n sourcesUri,\n {\n title: 'IntelWatchtower Source Registry',\n description: 'The first 50 collection sources/sensors in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${sourcesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ intListSources: unknown }>(LIST_SOURCES, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: sourcesUri,\n text: JSON.stringify(data.intListSources, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: sourcesUri,\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 // <product>://missions — mission roster\n server.registerResource(\n 'intelwatchtower-missions',\n missionsUri,\n {\n title: 'IntelWatchtower Mission Roster',\n description: 'All missions in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${missionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ intListMissions: unknown }>(\n LIST_MISSIONS,\n {},\n );\n return {\n contents: [\n {\n uri: missionsUri,\n text: JSON.stringify(data.intListMissions, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: missionsUri,\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 // <product>://alerts — open threat alerts\n server.registerResource(\n 'intelwatchtower-alerts',\n alertsUri,\n {\n title: 'IntelWatchtower Open Alerts',\n description: 'The first 50 OPEN threat alerts in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${alertsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ intListAlerts: unknown }>(LIST_ALERTS, {\n status: 'OPEN',\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: alertsUri,\n text: JSON.stringify(data.intListAlerts, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: alertsUri,\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 { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * IntelWatchtower MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerIntelwatchtowerPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const collectionName = track(mcpPromptName(p, 'collection-setup'));\n const triageName = track(mcpPromptName(p, 'fusion-triage'));\n\n // <product>-collection-setup — stand up the collection pipeline\n server.registerPrompt(\n collectionName,\n {\n title: 'Collection Setup',\n description:\n 'Guide for standing up a collection pipeline end to end: register a source, raise a requirement, dispatch a tasking order, and record the resulting observation.',\n argsSchema: {\n discipline: z.string().optional().describe('Collection discipline (HUMINT, SIGINT, ...)'),\n missionId: z.string().optional().describe('Mission to bind the requirement to'),\n },\n },\n ({ discipline, missionId }) => {\n ctx.logger.debug(`Prompt ${collectionName} called`, { discipline, missionId });\n const disciplineNote = discipline\n ? `Use discipline ${discipline}.`\n : 'Help the user pick an IntSourceDiscipline.';\n const missionNote = missionId\n ? `Bind the requirement to mission \"${missionId}\".`\n : `Optionally create or pick a mission first with ${p}_missions_create / ${p}_missions_list.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me stand up an IntelWatchtower collection pipeline.\n\n1. **Register Source**: Use ${p}_sources_create. ${disciplineNote} Set a name, classification, region, and reliability.\n2. **(Optional) Attach Feed**: Use ${p}_feeds_create to wire an ingest feed (endpoint + format) to the source.\n3. **Raise Requirement**: Use ${p}_requirements_create. ${missionNote} Set a title, priority, and dueDate.\n4. **Dispatch Tasking**: Use ${p}_tasks_create with the source and requirement IDs and a collection window.\n5. **Advance Tasking**: Use ${p}_tasks_transition to move the task PENDING → DISPATCHED → COLLECTING → COMPLETED.\n6. **Record Observation**: Use ${p}_observations_record with the source/task IDs, a summary, and observedAt.\n\nShow results at each step and confirm before dispatching tasking.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-fusion-triage — all-source fusion + alert triage\n server.registerPrompt(\n triageName,\n {\n title: 'Fusion & Alert Triage',\n description:\n 'All-source fusion workflow: review tracked entities and indicators, triage open threat alerts, open an investigation case, and disseminate a report.',\n argsSchema: {\n entityId: z.string().optional().describe('Entity to focus the triage on'),\n },\n },\n ({ entityId }) => {\n ctx.logger.debug(`Prompt ${triageName} called`, { entityId });\n const entityNote = entityId\n ? `Focus on entity \"${entityId}\" (use ${p}_entities_get for its indicators + alerts).`\n : `First list entities with ${p}_entities_list and pick one to focus on.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run IntelWatchtower all-source fusion + alert triage. ${entityNote}\n\n1. **Entities & Indicators**: Use ${p}_entities_list and ${p}_indicators_list to review tracked entities and their observables.\n2. **Open Alerts**: Use ${p}_alerts_list filtered by status=OPEN (and severity) to find what needs triage.\n3. **Triage**: For each alert use ${p}_alerts_transition (OPEN → TRIAGED → ESCALATED/RESOLVED/FALSE_POSITIVE), recording triageNotes.\n4. **Open a Case**: For escalations, use ${p}_cases_create, then ${p}_cases_add_entry to log findings/evidence.\n5. **Report**: Use ${p}_reports_create to draft an INTSUM/ASSESSMENT, then ${p}_reports_release to disseminate.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * IntelWatchtower module — domain module for the future-products ecosystem program.\n *\n * Covers all 11 @key entities of wspace-intelwatchtower-svc grouped into\n * per-entity sub-APIs across two domains:\n * - collection: sources, feeds, requirements, tasks, observations\n * - fusion: missions, entities, indicators, alerts, cases, reports\n * Mirrors the rich kadaikodi/crewfoundry modules' structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/wspace/intelwatchtower/wspace-intelwatchtower-svc/\n * (Hive service name `intelwatchtower`). All operations run against the\n * WORKSPACE gateway; the @public intHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSourceTools } from './tools/sources.js';\nimport { registerFeedTools } from './tools/feeds.js';\nimport { registerRequirementTools } from './tools/requirements.js';\nimport { registerTaskTools } from './tools/tasks.js';\nimport { registerObservationTools } from './tools/observations.js';\nimport { registerMissionTools } from './tools/missions.js';\nimport { registerEntityTools } from './tools/entities.js';\nimport { registerIndicatorTools } from './tools/indicators.js';\nimport { registerAlertTools } from './tools/alerts.js';\nimport { registerCaseTools } from './tools/cases.js';\nimport { registerReportTools } from './tools/reports.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerIntelwatchtowerResources } from './resources.js';\nimport { registerIntelwatchtowerPrompts } from './prompts.js';\n\nconst intelwatchtowerModule: McpModule = {\n id: 'intelwatchtower',\n version: '0.0.1',\n displayName: 'IntelWatchtower',\n dependsOn: ['auth'],\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 registerSourceTools(server, ctx, trackTool);\n registerFeedTools(server, ctx, trackTool);\n registerRequirementTools(server, ctx, trackTool);\n registerTaskTools(server, ctx, trackTool);\n registerObservationTools(server, ctx, trackTool);\n registerMissionTools(server, ctx, trackTool);\n registerEntityTools(server, ctx, trackTool);\n registerIndicatorTools(server, ctx, trackTool);\n registerAlertTools(server, ctx, trackTool);\n registerCaseTools(server, ctx, trackTool);\n registerReportTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerIntelwatchtowerResources(server, ctx, trackResource);\n registerIntelwatchtowerPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default intelwatchtowerModule;\n"]}
|